def process(self): # 現在時刻. now = OSAUtil.get_now() # ModelRequestMgr. model_mgr = self.getModelMgr() # ユーザ情報. v_player = self.getViewerPlayer() uid = v_player.id # 経営情報. scoredata = BackendApi.get_cabaretclub_scoreplayerdata( model_mgr, uid, using=settings.DB_READONLY) obj_cabaclub_management_info = Objects.cabaclub_management_info( self, scoredata) # 現在の称号. title_playerdata = BackendApi.get_title_playerdata( model_mgr, uid, using=settings.DB_READONLY) current_title_id = title_playerdata.title if title_playerdata else 0 obj_title = None # 称号一覧. titlemaster_list = BackendApi.get_title_master_all( model_mgr, using=settings.DB_READONLY) obj_titlemaster_list = [] for titlemaster in titlemaster_list: if current_title_id == titlemaster.id and now < ( title_playerdata.stime + datetime.timedelta(days=titlemaster.days)): obj_title = Objects.title(self, titlemaster, title_playerdata) obj_titlemaster_list.append(Objects.titlemaster(self, titlemaster)) # HTML書き込み. self.html_param.update( cabaclub_management_info=obj_cabaclub_management_info, titlemaster_list=obj_titlemaster_list, title=obj_title, ) self.writeAppHtml('title/top')
def putRaidEventParams(self, eventmaster=None): """レイドイベント用の交換パラメータ. """ model_mgr = self.getModelMgr() if eventmaster is None: eventmaster = self.getCurrentEventMaster() if eventmaster: v_player = self.getViewerPlayer() uid = v_player.id # イベント情報. config = BackendApi.get_current_raideventconfig( model_mgr, using=settings.DB_READONLY) self.html_param['raidevent'] = Objects.raidevent( self, eventmaster, config) # スコア. scorerecord = BackendApi.get_raidevent_scorerecord( model_mgr, eventmaster.id, uid, using=settings.DB_READONLY) rank = BackendApi.get_raidevent_rank(eventmaster.id, uid) self.html_param['raideventscore'] = Objects.raidevent_score( eventmaster, scorerecord, rank) return eventmaster
def getObjPlayerList(self, playerlist): obj_list = [] if playerlist: model_mgr = self.getModelMgr() persons = BackendApi.get_dmmplayers(self, playerlist, using=settings.DB_READONLY, do_execute=False) self.execute_api() for player in playerlist: deck = BackendApi.get_deck(player.id, arg_model_mgr=model_mgr, using=settings.DB_READONLY) cardsetlist = BackendApi.get_cards(deck.to_array(), arg_model_mgr=model_mgr, using=settings.DB_READONLY) leader = cardsetlist[0] obj_player = Objects.player(self, player, persons.get(player.dmmid), leader) power_total = leader.power deckmember = [] for cardset in cardsetlist[1:]: obj_card = Objects.card(self, cardset) power_total += obj_card['power'] deckmember.append(obj_card) obj_player['deckmember'] = deckmember obj_player['power_total'] = power_total obj_list.append(obj_player) return obj_list
def procHappening(self, mid, stagemaster, playdata, event): """ハプニング発生. """ model_mgr = self.getModelMgr() happeningid = BackendApi.get_current_producehappeningid( model_mgr, playdata.uid, using=playdata.current_db, reflesh=True) happeningset = BackendApi.get_producehappening( model_mgr, happeningid, using=playdata.current_db) if happeningset is None: if settings_sub.IS_LOCAL: raise CabaretError(u'ハプニングが発生していません') url = UrlMaker.produceevent_top() self.appRedirect(self.makeAppLinkUrlRedirect(url)) return happeningraidset = HappeningRaidSet(happeningset) self.html_param['happening'] = Objects.producehappening( self, happeningraidset) # レイドボス raidmaster = BackendApi.get_raid_master(model_mgr, happeningset.master.boss, using=settings.DB_READONLY) self.html_param['boss'] = Objects.raidmaster(self, raidmaster, is_produceevent=True) self.setFromPage( Defines.FromPages.PRODUCEEVENTSCOUT, (stagemaster.id, urllib.quote(playdata.confirmkey, ''))) url = UrlMaker.producehappening() self.html_param['url_happening'] = self.makeAppLinkUrl(url) self.writeHtml(self.eventmaster, 'scout/happening')
def process(self): args = self.getUrlArgs('/scoutcardgetresult/') try: scoutid = int(args.get(0)) except: raise CabaretError(u'引数が想定外です', CabaretError.Code.ILLEGAL_ARGS) v_player = self.getViewerPlayer() model_mgr = self.getModelMgr() using = settings.DB_READONLY # 進行情報. playdata = BackendApi.get_scoutprogress(model_mgr, v_player.id, [scoutid], using=using).get(scoutid, None) target_event = BackendApi.find_scout_event(playdata, Defines.ScoutEventType.GET_CARD) if target_event is None: if settings_sub.IS_LOCAL: raise CabaretError(u'女の子を発見していません') url = self.makeAppLinkUrlRedirect(UrlMaker.scout()) self.appRedirect(url) return elif not target_event.is_received: if settings_sub.IS_LOCAL: raise CabaretError(u'まだ女の子をスカウトしていません') url = self.makeAppLinkUrlRedirect(UrlMaker.scoutresult(scoutid, playdata.alreadykey)) self.appRedirect(url) return # プレイヤー. self.html_param['player'] = Objects.player(self, v_player) # 獲得したカード. cardmaster = BackendApi.get_cardmasters([target_event.card], arg_model_mgr=model_mgr, using=using).get(target_event.card) card = BackendApi.create_card_by_master(cardmaster) cardset = CardSet(card, cardmaster) self.html_param['card'] = Objects.card(self, cardset, is_new=target_event.is_new) # スカウト. arr = BackendApi.get_scouts(model_mgr, [scoutid], using=using) scoutmaster = arr[0] if arr else None self.html_param['scout'] = self.makeScoutObj(scoutmaster, playdata) # スカウト結果. resultlist = playdata.result.get('result', []) self.html_param['scoutresultinfo'] = BackendApi.make_scoutresult_info(resultlist) # レイドイベント. BackendApi.put_raidevent_champagnedata(self, v_player.id) if target_event.is_success: if target_event.autosell: # 自動退店. self.html_param['autosell'] = target_event.autosell self.html_param['_gold_add'] = target_event.sellprice self.html_param['_ckt'] = getattr(target_event, 'sellprice_treasure', 0) self.writeAppHtml('scout/cardgetresult_success') else: self.writeAppHtml('scout/cardgetresult_failed')
def process(self): self.__cardlist_all = None self.__cardlist = None self.__filtered_by_skill_cardlist = None self.__skilllist = None model_mgr = self.getModelMgr() self.loadSortParams() # プレイヤー情報. v_player = self.getViewerPlayer() self.html_param['player'] = Objects.player(self, v_player) # カード所持数. cardnum = BackendApi.get_cardnum(v_player.id, model_mgr, using=settings.DB_READONLY) self.html_param['cardnum'] = cardnum # カード. self.putCardList() # スキル一覧. skilllist = self.getSkillMasterList() self.html_param['skillmasterlist'] = [ Objects.skillmaster(skill) for skill in skilllist ] self.writeCompositionHtml('composition/baseselect')
def process(self): # 現在時刻. now = OSAUtil.get_now() # 各店舗の更新. self.updateStore(now) # ModelRequestMgr. model_mgr = self.getModelMgr() # ユーザ情報. v_player = self.getViewerPlayer() uid = v_player.id if BackendApi.check_cabaclub_lead_resultanim( model_mgr, uid, now, using=settings.DB_READONLY): # 結果演出へ. self.setFromPage(Defines.FromPages.CABACLUB_STORE) self.appRedirect( self.makeAppLinkUrlRedirect(UrlMaker.cabaclubresultanim())) return # 経営情報. scoredata = BackendApi.get_cabaretclub_scoreplayerdata( model_mgr, uid, using=settings.DB_READONLY) scoredata_weekly = BackendApi.get_cabaretclub_scoreplayerdata_weekly( model_mgr, uid, now, using=settings.DB_READONLY) obj_cabaclub_management_info = Objects.cabaclub_management_info( self, scoredata, scoredata_weekly) # 店舗のイベント発生情報. BackendApi.put_cabaretclub_eventinfo(self, uid, now, using=settings.DB_READONLY) # 次の集計時間. section_endtime = BackendApi.to_cabaretclub_section_endtime(now) # 開催中または最新の開催したイベントの開催情報 event_config = BackendApi.get_current_cabaclubrankeventconfig( model_mgr, using=settings.DB_READONLY) if BackendApi.is_cabaclubrankevent_open(model_mgr): # 経営イベントのランキングURL cabaclub_event_ranking_url = UrlMaker.cabaclubrank( event_config.mid) else: cabaclub_event_ranking_url = UrlMaker.cabaclubrank( event_config.previous_mid) self.set_event_period(model_mgr, self.html_param, event_config) if self.html_param['is_event_open']: self.html_param[ 'eventmaster'] = BackendApi.get_cabaclubrankeventmaster( model_mgr, event_config.mid, using=settings.DB_READONLY) # HTML書き込み. self.html_param.update( cabaclub_management_info=obj_cabaclub_management_info, url_store=self.makeAppLinkUrl(UrlMaker.cabaclubstore()), url_title=self.makeAppLinkUrl(UrlMaker.titletop()), url_current_week_rank=self.makeAppLinkUrl( cabaclub_event_ranking_url), section_timelimit=Objects.timelimit(section_endtime, now), ) self.writeAppHtml('cabaclub/top')
def process(self): args = self.getUrlArgs('/evolutionyesno/') try: self.__baseid = int(args.get(0)) self.__materialid = self.getMaterialId() except: raise CabaretError(u'引数が想定外です', CabaretError.Code.ILLEGAL_ARGS) v_player = self.getViewerPlayer() model_mgr = self.getModelMgr() # ベースカード. basecard = BackendApi.get_cards([self.__baseid], model_mgr, using=settings.DB_READONLY) basecard = basecard[0] if len(basecard) else None if not self.checkBaseCard(basecard): return evolmaster = BackendApi.get_evolution_cardmaster(model_mgr, basecard.master, using=settings.DB_READONLY) if evolmaster is None: raise CabaretError(u'ハメ管理後のキャストが設定されていません.', CabaretError.Code.INVALID_MASTERDATA) self.html_param['basecard'] = Objects.card(self, basecard) self.__basecard = basecard # プレイヤー情報. self.html_param['player'] = Objects.player(self, v_player) # デッキ情報. deck = BackendApi.get_deck(v_player.id, model_mgr, using=settings.DB_READONLY) basecard_post = CardSet(basecard.card, evolmaster) cost_over, deck_none = BackendApi.check_evol_deckcost(model_mgr, v_player, basecard_post, using=settings.DB_READONLY) self.html_param['deckcapacity_over'] = cost_over self.html_param['deck_none'] = deck_none # 素材カード. materialcard = BackendApi.get_cards([self.__materialid], model_mgr, using=settings.DB_READONLY) materialcard = materialcard[0] if len(materialcard) else None if not self.checkMaterialCard(basecard, materialcard, deck): return self.html_param['materialcard'] = Objects.card(self, materialcard) self.__materialcard = materialcard # 消費ゴールド. cost = evolmaster.evolcost self.html_param['cost'] = cost self.html_param['cost_over'] = v_player.gold < cost self.html_param['gold_post'] = v_player.gold - cost self.html_param['cardnum'] = BackendApi.get_cardnum(v_player.id, model_mgr, using=settings.DB_READONLY) BackendApi.get_evolutiondata(model_mgr, v_player.id, using=settings.DB_READONLY) # 書き込みへのURL. url = UrlMaker.evolutiondo(self.__baseid, v_player.req_confirmkey) self.html_param['url_do'] = self.makeAppLinkUrl(OSAUtil.addQuery(url, Defines.URLQUERY_CARD, self.__materialcard.id)) self.writeAppHtml('evolution/yesno')
def proc_BOSS01_PRE(self, area, boss, deckcardlist): """ボス戦確認. """ self.html_param['area'] = Objects.area(self, area, None) self.html_param['boss'] = Objects.boss(self, boss) self.__putBossResultDeck(deckcardlist) self.html_param['url_bossbattle'] = self.makeAppLinkUrl( self.makeUrlNext()) self.writeAppHtml('tutorial/boss_tuto2')
def putCardInfo(self, o_player): """カードの情報. """ model_mgr = self.getModelMgr() deck = BackendApi.get_deck(o_player.id, model_mgr, using=settings.DB_READONLY) leader = BackendApi.get_cards([deck.leader], model_mgr, using=settings.DB_READONLY)[0] # リーダー情報. self.html_param['leader'] = Objects.card(self, leader) cardlist = BackendApi.get_profile_newbie_cardlist(model_mgr, o_player.id, excludes=[deck.leader], using=settings.DB_READONLY) self.html_param['newbie_cardlist'] = [Objects.card(self, card) for card in cardlist]
def proc_BOSS00_RESULT(self, area, boss, deckcardlist): """ボス戦結果 敗北. """ self.html_param['area'] = Objects.area(self, area, None) self.html_param['boss'] = Objects.boss(self, boss, self.__getBossHp(boss, False)) self.__putBossResultDeck(deckcardlist) self.html_param['url_composition_material'] = self.makeAppLinkUrl( self.makeUrlNext()) self.writeAppHtml('boss/bosslose')
def putDeck(self): """ロードしたデッキを埋め込む. """ if self.__v_deck: self.html_param['v_deck'] = [ Objects.card(self, cardset) for cardset in self.__v_deck ] if self.__o_deck: self.html_param['o_deck'] = [ Objects.card(self, cardset) for cardset in self.__o_deck ]
def process(self): args = self.getUrlArgs('/raideventexplain/') str_eventid = str(args.get(0)) ope = args.get(1) model_mgr = self.getModelMgr() eventmaster = None mid = None if str_eventid.isdigit(): mid = int(str_eventid) eventmaster = BackendApi.get_raideventmaster( model_mgr, mid, using=settings.DB_READONLY) if eventmaster is None: raise CabaretError(u'閲覧できないイベントです', CabaretError.Code.ILLEGAL_ARGS) # 開催中判定. cur_eventmaster = self.getCurrentRaidEvent(quiet=True) if cur_eventmaster and cur_eventmaster.id == mid: is_opened = True else: is_opened = False self.html_param['is_opened'] = is_opened # イベント情報. config = BackendApi.get_current_raideventconfig( model_mgr, using=settings.DB_READONLY) self.html_param['raidevent'] = Objects.raidevent( self, eventmaster, config) # スコア. v_player = self.getViewerPlayer() scorerecord = BackendApi.get_raidevent_scorerecord( model_mgr, eventmaster.id, v_player.id, using=settings.DB_READONLY) rank = BackendApi.get_raidevent_rank(eventmaster.id, v_player.id) self.html_param['raideventscore'] = Objects.raidevent_score( eventmaster, scorerecord, rank) self.putEventTopic(mid, 'explain') self.html_param['current_topic'] = ope table = { 'detail': self.__proc_detail, 'prizes': self.__proc_prizes, 'nomination': self.__proc_nomination, 'faq': self.__proc_faq, } for k in table.keys(): self.html_param['url_explain_%s' % k] = self.makeAppLinkUrl( UrlMaker.raidevent_explain(mid, k)) table.get(ope, self.__proc_detail)(eventmaster, is_opened)
def processTutorialCompleted(self): """チュートリアル完了済みのユーザー. """ # 課金チェック. self.checkPayment() # スライドバナー. slidebanners = BackendApi.get_topbanners(self, using=settings.DB_READONLY) if slidebanners: obj_slidebanners = [] for banner in slidebanners: obj_banner = Objects.topbanner(self, banner) if not obj_banner['is_external_link']: # 外部リンクじゃない時だけにしておく. obj_slidebanners.append(object) self.html_param['slidebanners'] = obj_slidebanners # イベントバナー. self.html_param['groups'] = BackendApi.get_tabeventbanners( self, using=settings.DB_READONLY) # 更新情報. if self.is_pc: infomations = BackendApi.get_infomation_all( self, using=settings.DB_READONLY)[:20] self.html_param['infomations'] = [ Objects.infomation(self, infomation) for infomation in infomations ] else: infomations, _ = BackendApi.get_infomations( self, 0, using=settings.DB_READONLY) if 0 < len(infomations): arr = [] date_new = None for infomation in infomations[:2]: obj = Objects.infomation(self, infomation) date_new = date_new or obj['date'] obj['is_new'] = date_new == obj['date'] arr.append(obj) self.html_param['infomations'] = arr url = UrlMaker.mypage() self.html_param['url_enter'] = self.makeAppLinkUrl(url) # if settings_sub.IS_LOCAL: # self.html_param['slidebanners'] = [Objects.topbanner(self, topbanner)] # self.html_param['eventbanners'] = [Objects.eventbanner(self, eventbanner)] # self.html_param['infomation'] = [Objects.infomation(self, infomation)] # top.html self.writeAppHtml('top/top')
def proc_EVOL00_ALBUM(self, basecard, materialcard): """思い出アルバム. """ model_mgr = self.getModelMgr() basecard_post, _ = BackendApi.tutorial_evolution( model_mgr, basecard, materialcard, using=settings.DB_READONLY) v_player = self.getViewerPlayer(True) mid = basecard_post.master.id memoriesmaster = None if self.is_pc: memoriesmaster = BackendApi.get_tutorial_pcmemories( model_mgr, v_player.ptype, using=settings.DB_READONLY) else: memoriesmaster = BackendApi.get_tutorial_memories( model_mgr, v_player.ptype, using=settings.DB_READONLY) card_acquisition = CardAcquisition.makeInstance( CardAcquisition.makeID(basecard_post.card.uid, mid)) self.html_param['cardmaster'] = Objects.cardmaster( self, basecard_post.master) self.html_param['album'] = Objects.memoriesmaster( self, memoriesmaster, card_acquisition) memories_list = [] movie_list = [] pcmovie_list = [] for obj_memories in BackendApi.get_album_memories_list( self, basecard_post.card.uid, basecard_post.master.album, using=settings.DB_READONLY): if obj_memories['contenttype'] == Defines.MemoryContentType.MOVIE: movie_list.append(obj_memories) elif obj_memories[ 'contenttype'] == Defines.MemoryContentType.MOVIE_PC: pcmovie_list.append(obj_memories) else: memories_list.append(obj_memories) self.html_param['memories_list'] = memories_list self.html_param['movie_list'] = movie_list self.html_param['pcmovie_list'] = pcmovie_list self.html_param['url_next'] = self.makeAppLinkUrl(self.makeUrlNext()) # 動画閲覧用のキーを保存. remote_addr = self.request.remote_addr if remote_addr: key = '%s##%s' % (remote_addr, self.osa_util.useragent.browser) MemoriesSession.create(v_player.id, memoriesmaster.id, key).save() self.writeAppHtml('album/memories')
def process(self): battleplayer = self.getBattlePlayer() if battleplayer is None or battleplayer.opponent == 0: # 対戦相手設定へ. self.redirectToOppSelect() return obj_list = self.getObjPlayerListByID([battleplayer.opponent]) if not obj_list: # これも飛ばしておく. self.redirectToOppSelect() return self.setFromPage(Defines.FromPages.BATTLEPRE) v_player = self.getViewerPlayer() rankmaster = self.getBattleRankMaster() self.html_param['o_player'] = obj_list[0] self.html_param['player'] = Objects.player(self, v_player) self.html_param['battleplayer'] = Objects.battleplayer(self, battleplayer, rankmaster) # 最大ランク. model_mgr = self.getModelMgr() self.html_param['max_rank'] = BackendApi.get_battlerank_max(model_mgr, using=settings.DB_READONLY) # 残り対戦相手変更回数. self.html_param['opponent_change_restnum'] = BackendApi.get_battle_opponent_change_restcnt(model_mgr, battleplayer, rankmaster, using=settings.DB_READONLY) # アイテム. BackendApi.put_bprecover_uselead_info(self) # バトル開始URL. battleplayer = self.getBattlePlayer() url = UrlMaker.battledo(battleplayer.result) self.html_param['url_battle_do'] = self.makeAppLinkUrl(url) # 相手変更URL. url = UrlMaker.battleoppselect(battleplayer.change_cnt + 1) self.html_param['url_battle_oppselect'] = self.makeAppLinkUrl(url) # 金の鍵の獲得率. self.html_param['goldkey_rate'] = BackendApi.get_battle_goldkey_rate(model_mgr, battleplayer, rankmaster, using=settings.DB_READONLY) # 書き込み. if v_player.get_bp() < rankmaster.bpcost: self.writeAppHtml('battle/battleapnone') else: self.writeAppHtml('battle/battleselect')
def proc_SCOUT00_TOP(self, area, scout, scout_cnt): """スカウトTop. """ v_player = self.getViewerPlayer(True) self.html_param['area'] = Objects.area(self, area, None) obj_scout = Objects.scout(self, v_player, scout, scout_cnt, []) obj_scout['url_exec'] = self.makeAppLinkUrl(self.makeUrlNext()) self.html_param['scoutlist'] = [obj_scout] self.putPlayerInfo(scout_cnt=scout_cnt) self.writeAppHtml('scout/scout')
def process(self): self.__cardlist = None args = self.getUrlArgs('/compositionmaterial/') try: self.__baseid = int(args.get(0)) except: if settings_sub.IS_LOCAL: raise CabaretError(u'引数が想定外です', CabaretError.Code.ILLEGAL_ARGS) url = UrlMaker.composition() self.appRedirect(self.makeAppLinkUrlRedirect(url)) return v_player = self.getViewerPlayer() model_mgr = self.getModelMgr() # ベースカード. basecard = BackendApi.get_cards([self.__baseid], model_mgr, using=settings.DB_READONLY) if not basecard or basecard[0].card.uid != v_player.id: if settings_sub.IS_LOCAL: raise CabaretError(u'不正なキャストです.%d' % self.__baseid) url = UrlMaker.composition() self.appRedirect(self.makeAppLinkUrlRedirect(url)) return basecard = basecard[0] self.html_param['basecard'] = Objects.card(self, basecard) self.__basecard = basecard self.loadSortParams( default_sortby=Defines.CardSortType.RARE, default_ckind_type=Defines.CardKind.ListFilterType.ALL_KIND) # プレイヤー情報. self.html_param['player'] = Objects.player(self, v_player) # カード所持数. cardnum = BackendApi.get_cardnum(v_player.id, model_mgr, using=settings.DB_READONLY) self.html_param['cardnum'] = cardnum # カード. self.putCardList() # 確認ページのUrl. url = UrlMaker.compositionyesno(self.__baseid) self.html_param['url_yesno'] = self.makeAppLinkUrl(url) self.writeCompositionHtml('composition/materialselect')
def proc_SCOUT00_CARDGET(self, area, scout, scout_cnt): """スカウト実行アニメーション(スカウト成功). """ v_player = self.getViewerPlayer(True) card = self.getLeaderCard() obj_scout = Objects.scout(self, v_player, scout, scout_cnt, []) obj_scout['url_exec'] = self.makeAppLinkUrl(self.makeUrlNext()) self.html_param['scout'] = obj_scout self.html_param['card'] = Objects.card(self, card, is_new=True) self.putPlayerInfo(scout_cnt=scout_cnt) self.writeAppHtml('scout/cardgetresult_success')
def process(self): v_player = self.getViewerPlayer() model_mgr = self.getModelMgr() # 合成結果. evolutiondata = BackendApi.get_evolutiondata( model_mgr, v_player.id, using=settings.DB_READONLY) # ベースカード. basecardset = BackendApi.get_cards([evolutiondata.result_baseid], model_mgr, using=settings.DB_READONLY) if not basecardset: if settings_sub.IS_LOCAL: raise CabaretError(u'ハメ管理したキャストが見つかりません.') url = UrlMaker.evolution() self.appRedirect(self.makeAppLinkUrlRedirect(url)) return basecardset = basecardset[0] self.html_param['basecard_post'] = Objects.card(self, basecardset) pre_master = BackendApi.get_cardmasters( [evolutiondata.mid], model_mgr, using=settings.DB_READONLY).get(evolutiondata.mid) if pre_master is None or (pre_master.albumhklevel + 1) != basecardset.master.albumhklevel: if settings_sub.IS_LOCAL: raise CabaretError(u'ハメ管理前のキャストが見つかりません.') url = UrlMaker.evolution() self.appRedirect(self.makeAppLinkUrlRedirect(url)) return pre_card = copy(basecardset.card) evolutiondata.set_to_card(pre_card) pre_cardset = CardSet(pre_card, pre_master) self.html_param['basecard_pre'] = Objects.card(self, pre_cardset) # 素材カード. materialcard = BackendApi.get_cards([evolutiondata.result_materialid], model_mgr, using=settings.DB_READONLY, deleted=True) if not materialcard: if settings_sub.IS_LOCAL: raise CabaretError(u'ハメ管理に使用したキャストが見つかりません.') url = UrlMaker.evolution() self.appRedirect(self.makeAppLinkUrlRedirect(url)) return self.html_param['materialcard'] = Objects.card(self, materialcard[0]) self.writeAppHtml('evolution/complete')
def process(self): args = self.getUrlArgs('/battleeventexplain/') eventid = args.getInt(0) ope = args.get(1) model_mgr = self.getModelMgr() eventmaster = None if eventid: eventmaster = BackendApi.get_battleevent_master(model_mgr, eventid, using=settings.DB_READONLY) if eventmaster is None: raise CabaretError(u'閲覧できないイベントです', CabaretError.Code.ILLEGAL_ARGS) v_player = self.getViewerPlayer() uid = v_player.id # 開催中判定. cur_eventmaster = self.getCurrentBattleEvent(quiet=True) if cur_eventmaster and cur_eventmaster.id == eventid: is_opened = True do_check_loginbonus = not cur_eventmaster.is_goukon if not self.checkBattleEventUser(do_check_battle_open=False, do_check_regist=False, do_check_emergency=False, do_check_loginbonus=do_check_loginbonus): return else: is_opened = False self.html_param['is_opened'] = is_opened # イベント情報. self.html_param['battleevent'] = Objects.battleevent(self, eventmaster) # スコア. scorerecord = BackendApi.get_battleevent_scorerecord(model_mgr, eventid, uid, using=settings.DB_READONLY) rank = BackendApi.get_battleevent_rank(eventid, uid) self.html_param['battleevent_score'] = Objects.battleevent_score(self, scorerecord, rank) self.putEventTopic(eventid, 'explain') self.html_param['current_topic'] = ope table = { 'detail' : self.__proc_detail, 'prizes' : self.__proc_prizes, 'nomination' : self.__proc_nomination, 'faq' : self.__proc_faq, } for k in table.keys(): self.html_param['url_explain_%s' % k] = self.makeAppLinkUrl(UrlMaker.battleevent_explain(eventid, k)) table.get(ope, self.__proc_detail)(eventmaster, is_opened)
def proc_SCOUT02_RESULT(self, area, scout, scout_cnt): """宝箱獲得結果. """ v_player = self.getViewerPlayer(True) self.html_param['area'] = Objects.area(self, area, None) self.html_param['scout'] = Objects.scout(self, v_player, scout, scout_cnt, []) self.html_param['url_next'] = self.makeAppLinkUrl(self.makeUrlNext()) self.html_param['treasure_view'] = Objects.treasure_view( self, Defines.TreasureType.SILVER) self.putPlayerInfo(scout_cnt=scout_cnt) self.writeAppHtml('scout/treasureget')
def makeobj(self, trademaster, playerdata=None): # model_mgr. model_mgr = self.getModelMgr() v_player = self.getViewerPlayer() presentlist = BackendApi.create_present(model_mgr, 0, v_player.id, trademaster.itype, trademaster.itemid, trademaster.itemnum, do_set_save=False) presentset = PresentSet.presentToPresentSet( model_mgr, [presentlist[0]], using=settings.DB_READONLY)[0] obj_trade = Objects.trade(self, trademaster, presentset) if playerdata is not None: trade_cnt = BackendApi.get_trade_cnt(model_mgr, trademaster, playerdata, using=settings.DB_READONLY) obj_trade['trade_cnt'] = trade_cnt return obj_trade
def proc_SCOUT01_CARDGET(self, area, scout, scout_cnt): """スカウト実行アニメーション(スカウト成功). """ model_mgr = self.getModelMgr() v_player = self.getViewerPlayer(True) card = BackendApi.get_tutorial_scoutdropcard( model_mgr, v_player.ptype, using=settings.DB_READONLY) obj_scout = Objects.scout(self, v_player, scout, scout_cnt, []) obj_scout['url_exec'] = self.makeAppLinkUrl(self.makeUrlNext()) self.html_param['scout'] = obj_scout self.html_param['card'] = Objects.card(self, card, is_new=True) self.putPlayerInfo(scout_cnt=scout_cnt) self.writeAppHtml('scout/cardgetresult_success')
def __proc_nominatecast(self, eventmaster, is_opened): """特効キャスト一覧. """ model_mgr = self.getModelMgr() # 特効カードのマスター. specialcard = dict(eventmaster.specialcard) midlist = specialcard.keys() cardmasters = BackendApi.get_cardmasters(midlist, model_mgr, using=settings.DB_READONLY) # 埋め込み用パラメータ作成. obj_cardlist = [] for mid, cardmaster in cardmasters.items(): rate = specialcard[mid] obj = Objects.cardmaster(self, cardmaster) obj['specialpowup'] = rate obj_cardlist.append(obj) obj_cardlist.sort(key=lambda x: (x['rare'] << 32) + (Defines.HKLEVEL_MAX - x['hklevel']), reverse=True) self.html_param['specialcardlist'] = obj_cardlist self.writeHtml(eventmaster, 'nominatecast')
def procGetTreasure(self, mid, stagemaster, playdata, event): """宝箱発見. """ self.html_param['treasure_view'] = Objects.treasure_view( self, event.treasuretype) self.writeHtml(self.eventmaster, 'scout/treasureget')
def __putCompleteData(self, model_mgr, playdata, stagemaster): if 0 < stagemaster.boss and BackendApi.check_event_boss_playable( playdata, stagemaster): # ボス出現. boss = BackendApi.get_boss(model_mgr, stagemaster.boss, using=settings.DB_READONLY) self.html_param['boss'] = Objects.boss(self, boss) self.setFromPage(Defines.FromPages.PRODUCEEVENTSCOUT, stagemaster.id) url = UrlMaker.bosspre(stagemaster.id) self.html_param['url_bossbattle'] = self.makeAppLinkUrl(url) else: nextstagemaster = BackendApi.get_produceevent_next_stagemaster( model_mgr, playdata.mid, stagemaster, using=settings.DB_READONLY) if nextstagemaster and nextstagemaster.stage != stagemaster.stage: if nextstagemaster.area == stagemaster.area: self.html_param['next_stage'] = nextstagemaster.name else: self.html_param['next_area'] = nextstagemaster.areaname url = UrlMaker.produceevent_scoutdo(nextstagemaster.id, playdata.confirmkey) else: url = UrlMaker.produceevent_scoutdo(stagemaster.id, playdata.confirmkey) self.html_param['url_next'] = self.makeAppLinkUrl(url)
def putHelpFriend(self, raidboss): """助けを借りるフレンド. """ model_mgr = self.getModelMgr() v_player = self.getViewerPlayer() params = {} func_put_playerlist = None if self.request.get(Defines.URLQUERY_REM) == '1': # フレンドを外す. BackendApi.cancel_raidhelpcard(v_player.id, raidboss.id) else: helpleader = self.getSelectedFriendCard(raidboss.id) if helpleader: func_put_playerlist = self.putPlayerListByLeaderList(raidboss.id, [helpleader]) friend_callopentime = BackendApi.get_raid_callfriend_opentime(v_player.id) if friend_callopentime: params['friend_call_opentime'] = Objects.timelimit(friend_callopentime) else: friend_num = BackendApi.get_friend_num(v_player.id, model_mgr, using=settings.DB_READONLY) if 0 < friend_num: url = UrlMaker.raidfriendselect(raidboss.id) params['url_friendselect'] = self.makeAppLinkUrl(url) # フレンドを外すリンク. url = self.request.url.replace(self.url_cgi, '') url = OSAUtil.addQuery(url, Defines.URLQUERY_REM, 1) params['url_helpfriend_cancel'] = self.makeAppLinkUrl(url) self.html_param.update(**params) return func_put_playerlist
def process(self): v_player = self.getViewerPlayer() self.getBattlePlayer(get_instance=True) rankmaster = self.getBattleRankMaster() self.setFromPage(Defines.FromPages.BATTLE) self.html_param['player'] = Objects.player(self, v_player) self.html_param['rankmaster'] = Objects.battlerank(self, rankmaster) # アイテム. BackendApi.put_bprecover_uselead_info(self) # 書き込み. self.writeAppHtml('battle/battleaprecover')
def get_obj_playerlist(self, uidscoresetlist): model_mgr = self.getModelMgr() obj_playerlist = [] uidscoreset = dict(uidscoresetlist) uidscoreset_keys = uidscoreset.keys() playerlist = BackendApi.get_players(self, uidscoreset_keys, using=settings.DB_READONLY) persons = BackendApi.get_dmmplayers(self, playerlist, using=settings.DB_READONLY, do_execute=False) self.execute_api() leaders = BackendApi.get_leaders(uidscoreset_keys, arg_model_mgr=model_mgr, using=settings.DB_READONLY) for player in playerlist: obj_player = Objects.player(self, player, persons.get(player.dmmid), leaders.get(player.id)) score, rank = uidscoreset[player.id] obj_player['event_score'] = score obj_player['event_rank'] = rank obj_playerlist.append(obj_player) obj_playerlist.sort(key=lambda x: x['event_score'], reverse=True) return obj_playerlist