コード例 #1
0
    def process(self):
        args = self.getUrlArgs('/promotiontop/')
        appname = args.get(0)
        is_recipient = bool(int(self.request.get(Defines.URLQUERY_FLAG, '0')))
        self.html_param['is_recipient'] = is_recipient
        
        model_mgr = self.getModelMgr()
        v_player = self.getViewerPlayer()
        if PlayerCrossPromotion.is_session():
            self.html_param['is_pc'] = self.is_pc
            if self.is_pc:
                # self.html_param['url_goh'] = 'http://rcv.ixd.dmm.com/api/surl?urid=NmcO0Hxz'
                # self.html_param['url_harepai'] = 'http://rcv.ixd.dmm.com/api/surl?urid=XzIUBerr'
                # self.html_param['url_sengoku'] = 'http://www.dmm.co.jp/netgame/feature/sengokuaibu.html'
                self.html_param['url_avst'] = 'http://www.dmm.co.jp/netgame/social/-/gadgets/=/app_id=445699/'
                self.html_param['url_noahs_gate'] = 'http://www.dmm.co.jp/netgame/social/-/gadgets/=/app_id=223705/'
            else:
                # self.html_param['url_goh'] = 'http://rcv.ixd.dmm.com/api/surl?urid=t6vJmS4X'
                # self.html_param['url_harepai'] = 'http://rcv.ixd.dmm.com/api/surl?urid=j9mnDsZP'
                # self.html_param['url_sengoku'] = 'http://www.dmm.co.jp/netgame/feature/sengokuaibu.html'
                self.html_param['url_avst'] = 'http://www.dmm.co.jp/netgame_s/avstrikers/'
                self.html_param['url_noahs_gate'] = 'http://sp.dmm.co.jp/netgame/gadgets/index/app_id/223705/'
            url_base = UrlMaker.promotion_top(appname)
            if is_recipient:
                self.html_param['url_cabaret'] = self.makeAppLinkUrl(url_base)
            else:
                self.html_param['url_recipient'] = self.makeAppLinkUrl(
                    OSAUtil.addQuery(url_base, Defines.URLQUERY_FLAG, '1'))

            # set display information for start time and end time of cross promotion
            start_date = '{d.month}/{d.day} {d.hour}:{d.minute:02}'.format(d=Defines.CROSS_PROMO_START_TIME)
            end_date = '{d.month}/{d.day} {d.hour}:{d.minute:02}'.format(d=Defines.CROSS_PROMO_END_TIME)
            self.html_param['cross_promo_time_limit'] = start_date + '〜' + end_date

            self.html_param['url_treasurelist'] = self.makeAppLinkUrl(UrlMaker.treasurelist())
            self.html_param['url_cabaclubtop'] = self.makeAppLinkUrl(UrlMaker.cabaclubtop())
            self.html_param['url_trade'] = self.makeAppLinkUrl(UrlMaker.trade())
            self.html_param['url_scout'] = self.makeAppLinkUrl(UrlMaker.scout())
            self.html_param['url_battle'] = self.makeAppLinkUrl(UrlMaker.battle())
            self.html_param['url_gacha'] = self.makeAppLinkUrl(
                OSAUtil.addQuery(
                    UrlMaker.gacha(),
                    Defines.URLQUERY_GTYPE,
                    Defines.GachaConsumeType.GTYPE_NAMES[Defines.GachaConsumeType.STEPUP2]
                )
            )

            player_cross_promotion = model_mgr.get_model(PlayerCrossPromotion, v_player.id)
            if player_cross_promotion:
                self.html_param['total_login_count'] = player_cross_promotion.total_login_count
            else:
                self.html_param['total_login_count'] = 0
            self.writeAppHtml('promotion/{0}/top'.format(appname))
            return
        else:
            # 開催期間外ならTopに飛ばす
            self.appRedirect(self.makeAppLinkUrlRedirect(UrlMaker.mypage()))
            return
コード例 #2
0
ファイル: anim.py プロジェクト: hitandaway100/caba
 def process(self):
     
     model_mgr = self.getModelMgr()
     v_player = self.getViewerPlayer()
     
     # 結果データ.
     battleresult = BackendApi.get_battleresult(model_mgr, v_player.id, using=settings.DB_READONLY)
     if battleresult is None or not battleresult.anim:
         # 結果が存在しない.
         if settings_sub.IS_LOCAL:
             raise CabaretError(u'結果がない')
         url = UrlMaker.battle()
         self.appRedirect(self.makeAppLinkUrlRedirect(url))
         return
     
     # 演出用パラメータ.
     dataUrl = self.makeAppLinkUrlEffectParamGet('battle')
     self.appRedirectToEffect2('battle2/effect2.html', dataUrl)
コード例 #3
0
ファイル: result.py プロジェクト: hitandaway100/caba
    def process(self):

        model_mgr = self.getModelMgr()
        v_player = self.getViewerPlayer()

        self.setFromPage(Defines.FromPages.BATTLE)

        # 結果データ.
        battleresult = BackendApi.get_battleresult(model_mgr,
                                                   v_player.id,
                                                   using=settings.DB_READONLY)
        if battleresult is None:
            # 結果が存在しない.
            if settings_sub.IS_LOCAL:
                raise CabaretError(u'結果がない')
            url = UrlMaker.battle()
            self.appRedirect(self.makeAppLinkUrlRedirect(url))
            return

        # 対戦相手.
        oid = battleresult.oid
        arr = BackendApi.get_players(self, [oid], [PlayerExp],
                                     using=settings.DB_READONLY)
        o_player = arr[0] if arr else None
        if o_player is None:
            # 相手が存在しない.
            if settings_sub.IS_LOCAL:
                raise CabaretError(u'相手が存在しない')
            url = UrlMaker.battle()
            self.appRedirect(self.makeAppLinkUrlRedirect(url))
            return

        obj_v_player, obj_o_player = self.getObjPlayerList(
            [v_player, o_player])

        obj_v_player['power_total'] = battleresult.data['v_power']
        obj_o_player['power_total'] = battleresult.data['o_power']

        obj_v_player['skilllist'] = battleresult.anim.make_html_skilllist(True)
        obj_o_player['skilllist'] = battleresult.anim.make_html_skilllist(
            False)

        self.html_param['player'] = obj_v_player
        self.html_param['o_player'] = obj_o_player

        if BackendApi.check_friend(v_player.id,
                                   oid,
                                   arg_model_mgr=model_mgr,
                                   using=settings.DB_READONLY):
            pass
        elif BackendApi.check_friendrequest_receive(
                v_player.id,
                oid,
                arg_model_mgr=model_mgr,
                using=settings.DB_READONLY):
            pass
        elif BackendApi.check_friendrequest_send(v_player.id,
                                                 oid,
                                                 arg_model_mgr=model_mgr,
                                                 using=settings.DB_READONLY):
            pass
        else:
            self.html_param['is_friendrequest_ok'] = True

        data = battleresult.data
        self.html_param['resultdata'] = data

        # 獲得したアイテム.
        prizes = data.get('prizes')
        if prizes:
            prizelist = BackendApi.get_prizelist(model_mgr,
                                                 prizes,
                                                 using=settings.DB_READONLY)
            self.html_param['prize'] = BackendApi.make_prizeinfo(
                self, prizelist, using=settings.DB_READONLY)

        # レベルアップしたカード.
        obj_lebelupcardlist = []
        levelupcardlist = BackendApi.get_cards(battleresult.levelupcard.keys(),
                                               model_mgr,
                                               using=settings.DB_READONLY)
        for levelupcard in levelupcardlist:
            obj_card = Objects.card(self, levelupcard)
            obj_card['level_add'] = battleresult.levelupcard.get(
                levelupcard.id, 0)
            obj_lebelupcardlist.append(obj_card)
        self.html_param['levelupcardlist'] = obj_lebelupcardlist

        # 回復アイテム.
        BackendApi.put_bprecover_uselead_info(self)

        # 続けて戦う.
        url = UrlMaker.battleoppselect(0)
        self.html_param['url_battlecontinue'] = self.makeAppLinkUrl(url)

        # html書き込み.
        if data['is_win']:
            # 金の鍵の獲得率.
            battleplayer = self.getBattlePlayer()
            rankmaster = self.getBattleRankMaster()
            self.html_param[
                'goldkey_rate'] = BackendApi.get_battle_goldkey_rate(
                    model_mgr,
                    battleplayer,
                    rankmaster,
                    using=settings.DB_READONLY)
            self.writeAppHtml('battle/battlewin')
        else:
            self.writeAppHtml('battle/battlelose')
コード例 #4
0
ファイル: apphandler.py プロジェクト: hitandaway100/caba
 def __makeBackLinkUrlBattle(self, args):
     return {
         'url': self.makeAppLinkUrl(UrlMaker.battle(), add_frompage=False),
         'text': u'キャバ王への道へ戻る'
     }
コード例 #5
0
    def process(self):

        try:
            args = self.getUrlArgs('/battledo/')
            battleid = int(args.get(0, 0))
        except:
            if settings_sub.IS_LOCAL:
                raise CabaretError(u'引数が正しくありません',
                                   CabaretError.Code.ILLEGAL_ARGS)
            url = UrlMaker.battle()
            self.appRedirect(self.makeAppLinkUrlRedirect(url))
            return

        # バトル情報.
        battleplayer = self.getBattlePlayer(using=settings.DB_DEFAULT)
        if battleplayer is None:
            if settings_sub.IS_LOCAL:
                raise CabaretError(u'対戦相手が見つかりませんでした',
                                   CabaretError.Code.NOT_DATA)
            self.redirectToOppSelect()
            return
        elif battleplayer.result and battleid != battleplayer.result:
            url = self.makeAppLinkUrlRedirect(UrlMaker.battleanim())
            self.appRedirect(url)
            return

        model_mgr = self.getModelMgr()
        v_player = self.getViewerPlayer()

        # 対戦相手.
        oid = battleplayer.opponent
        o_player = None
        if oid and v_player.id != oid:
            arr = BackendApi.get_players(self, [oid], [PlayerExp],
                                         using=settings.DB_READONLY)
            if arr:
                o_player = arr[0]
        if o_player is None:
            if settings_sub.IS_LOCAL:
                raise CabaretError(u'対戦相手が見つかりませんでした',
                                   CabaretError.Code.NOT_DATA)
            self.redirectToOppSelect()
            return

        if battleid == battleplayer.result:
            # お互いのカード.
            v_deck = BackendApi.get_deck(v_player.id,
                                         model_mgr,
                                         using=settings.DB_READONLY)
            o_deck = BackendApi.get_deck(o_player.id,
                                         model_mgr,
                                         using=settings.DB_READONLY)
            v_deck_cardlist = BackendApi.get_cards(v_deck.to_array(),
                                                   model_mgr,
                                                   using=settings.DB_READONLY)
            o_deck_cardlist = BackendApi.get_cards(o_deck.to_array(),
                                                   model_mgr,
                                                   using=settings.DB_READONLY)

            # 計算.
            rand = AppRandom()
            data = BackendApi.battle(v_player, v_deck_cardlist, o_player,
                                     o_deck_cardlist, rand)

            v_deck_cardidlist = v_deck.to_array()
            o_deck_cardidlist = o_deck.to_array()
            try:
                model_mgr, _ = db_util.run_in_transaction(
                    self.tr_write, v_player.id, oid, v_deck_cardidlist,
                    o_deck_cardidlist, data, battleid)
                model_mgr.write_end()
            except CabaretError, err:
                if err.code == CabaretError.Code.ALREADY_RECEIVED:
                    pass
                elif settings_sub.IS_LOCAL:
                    raise err
                else:
                    url = self.makeAppLinkUrlRedirect(UrlMaker.battlepre())
                    self.appRedirect(url)
                    return
コード例 #6
0
ファイル: mission.py プロジェクト: hitandaway100/caba
 def _getJumpUrlDoBattle(self, missionmaster):
     return UrlMaker.battle()
コード例 #7
0
ファイル: mission.py プロジェクト: hitandaway100/caba
 def _getJumpUrlBattleRankUp(self, missionmaster):
     return UrlMaker.battle()
コード例 #8
0
    def process(self):
        def allEnd(url, err=None):
            if err and settings_sub.IS_LOCAL:
                raise err
            else:
                self.appRedirect(self.makeAppLinkUrlRedirect(url))

        try:
            args = self.getUrlArgs('/battleoppselect/')
            postcnt = int(args.get(0))
        except:
            allEnd(
                UrlMaker.battle(),
                CabaretError(u'引数が正しくありません', CabaretError.Code.ILLEGAL_ARGS))
            return

        battleplayer = self.getBattlePlayer(get_instance=False)

        pre_o_player = None
        if battleplayer and battleplayer.opponent:
            arr = BackendApi.get_players(self, [battleplayer.opponent], [],
                                         using=settings.DB_READONLY)
            if arr:
                pre_o_player = arr[0]

        if pre_o_player is None:
            postcnt = 0
            do_remove_count = False
            opplist = []
        else:
            if postcnt == battleplayer.change_cnt:
                # 書き込み済み.
                allEnd(
                    UrlMaker.battlepre(),
                    CabaretError(u'設定済みです',
                                 CabaretError.Code.ALREADY_RECEIVED))
                return
            elif postcnt != (battleplayer.change_cnt + 1):
                # 想定外.
                allEnd(
                    UrlMaker.battle(),
                    CabaretError(u'引数が正しくありません',
                                 CabaretError.Code.ILLEGAL_ARGS))
                return
            opplist = battleplayer.rankopplist[:]
            do_remove_count = True

        model_mgr = self.getModelMgr()
        v_player = self.getViewerPlayer()

        excludes = [v_player.id]
        excludes.extend(opplist)
        excludes.extend(
            BackendApi.get_friend_idlist(v_player.id,
                                         arg_model_mgr=model_mgr,
                                         using=settings.DB_READONLY))

        arr = BackendApi.get_battleopponents_by_levelband(v_player.level,
                                                          num=1,
                                                          excludes=excludes)
        oid = None
        if arr:
            oid = arr[0]
        else:
            if battleplayer:
                while battleplayer.opponent in opplist:
                    opplist.remove(battleplayer.opponent)
            # 見つからなかったので戦ったことのある人を設定しておこう..
            if opplist:
                oid = random.choice(opplist)
        if oid is None:
            # ここは...
            raise CabaretError(u'対戦相手が見つかりませんでした', CabaretError.Code.NOT_DATA)

        try:
            model_mgr = db_util.run_in_transaction(Handler.tr_write,
                                                   v_player.id, oid, postcnt,
                                                   do_remove_count)
            model_mgr.write_end()
        except Exception, err:
            allEnd(UrlMaker.battle(), err)
            return