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
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)
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')
def __makeBackLinkUrlBattle(self, args): return { 'url': self.makeAppLinkUrl(UrlMaker.battle(), add_frompage=False), 'text': u'キャバ王への道へ戻る' }
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
def _getJumpUrlDoBattle(self, missionmaster): return UrlMaker.battle()
def _getJumpUrlBattleRankUp(self, missionmaster): return UrlMaker.battle()
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