Example #1
0
 def makeStageObj(self, stagemaster, playdata, cur_stagenumber, bossattack=False):
     """ステージ情報作成.
     """
     v_player = self.getViewerPlayer()
     if playdata.stage > stagemaster.stage:
         progress = stagemaster.execution
     else:
         progress = playdata.progress
     obj_stage = Objects.raidevent_stage(self, v_player, cur_stagenumber, stagemaster, progress, playdata.confirmkey, bossattack=bossattack)
     return obj_stage
Example #2
0
 def _makeAreaObj_RAIDEVENTSCOUT(self, areamaster, playdata=None):
     v_player = self.getViewerPlayer()
     if playdata:
         stagenumber = playdata.stage
         progress = playdata.progress
         confirmkey = playdata.req_confirmkey
     else:
         stagenumber = areamaster.stage
         progress = 0
         confirmkey = ''
     return Objects.raidevent_stage(self, v_player, stagenumber, areamaster,
                                    progress, confirmkey)
Example #3
0
 def process(self):
     
     model_mgr = self.getModelMgr()
     
     config = BackendApi.get_current_raideventconfig(model_mgr, using=settings.DB_READONLY)
     
     args = self.getUrlArgs('/raideventtop/')
     mid = str(args.get(0))
     eventmaster = None
     
     if mid and mid.isdigit():
         mid = int(mid)
     elif config:
         mid = config.mid
     
     if mid:
         eventmaster = BackendApi.get_raideventmaster(model_mgr, mid, using=settings.DB_READONLY)
     
     if eventmaster is None:
         raise CabaretError(u'Event Closed.', CabaretError.Code.EVENT_CLOSED)
         return
     
     cur_eventmaster = self.getCurrentRaidEvent(quiet=True)
     
     mid = eventmaster.id
     
     # 開催中判定.
     is_open = cur_eventmaster and cur_eventmaster.id == mid
     
     v_player = self.getViewerPlayer()
     uid = v_player.id
     scorerecord = BackendApi.get_raidevent_scorerecord(model_mgr, mid, uid, using=settings.DB_READONLY)
     flagrecord = BackendApi.get_raidevent_flagrecord(model_mgr, mid, uid, using=settings.DB_READONLY)
     
     # イベント情報.
     self.html_param['raidevent'] = Objects.raidevent(self, eventmaster, config)
     
     # 説明とランキングのリンク.
     self.putEventTopic(mid, 'top')
     
     if is_open:
         # 救援(1件だけ).
         func_raidhelp = self.putRaidHelpList(do_execute=False, limit=1)
         self.html_param['url_raidhelp_list'] = self.makeAppLinkUrl(UrlMaker.raidevent_helplist())
         
         # 履歴(1件だけ).
         raidlogidlist = BackendApi.get_raidlog_idlist(model_mgr, v_player.id, 0, 1, using=settings.DB_READONLY)
         raidloglist = BackendApi.get_raidlogs(model_mgr, raidlogidlist, using=settings.DB_READONLY).values()
         func_raidlog = BackendApi.put_list_raidlog_obj(self, raidloglist)
         self.html_param['url_raidloglist'] = self.makeAppLinkUrl(UrlMaker.raidloglist())
         
         # 発生中のレイド情報.
         happeningraidset = self.getHappeningRaidSet()
         happeningset = None
         if happeningraidset:
             happeningset = happeningraidset.happening
         if happeningset:
             # レイドがある.
             if (happeningset.happening.is_cleared() or happeningset.happening.is_missed_and_not_end()):
                 # 未確認の結果がある.
                 url = UrlMaker.raidresultanim(happeningset.id)
                 self.appRedirect(self.makeAppLinkUrlRedirect(url))
                 return
             elif not happeningset.happening.is_end():
                 obj_happening = Objects.happening(self, happeningraidset)
                 obj_happening['url_battlepre'] = self.makeAppLinkUrl(UrlMaker.raidevent_battlepre())
                 self.html_param['happening'] = obj_happening
         
         # デッキ編成へのリンクを上書き.
         self.setFromPage(Defines.FromPages.RAIDEVENT)
         self.html_param['url_deck_raid'] = self.makeAppLinkUrl(UrlMaker.deck_raid())
     elif BackendApi.check_raidevent_lead_epilogue(model_mgr, uid, mid, using=settings.DB_READONLY):
         # EDを見ないといけない.
         self.appRedirect(self.makeAppLinkUrlRedirect(UrlMaker.raidevent_epilogue()))
         return
     
     # 報酬受取り判定.
     flag = False
     if scorerecord:
         if flagrecord is None:
             flagrecord = BackendApi.update_raideventflagrecord(model_mgr, eventmaster.id, uid, OSAUtil.get_datetime_max())
         if scorerecord.destroy and BackendApi.choice_raidevent_notfixed_destroy_prizeids(eventmaster, scorerecord.destroy, flagrecord, False):
             flag = True
         elif scorerecord.destroy_big and BackendApi.choice_raidevent_notfixed_destroy_prizeids(eventmaster, scorerecord.destroy_big, flagrecord, True):
             flag = True
     if flag:
         self.html_param['url_raidevent_prizereceive'] = self.makeAppLinkUrl(UrlMaker.raidevent_prizereceive_do(mid, v_player.req_confirmkey))
     
     # イベント秘宝所持数.
     # 討伐回数.
     rank = BackendApi.get_raidevent_rank(mid, uid)
     rank_beginer = BackendApi.get_raidevent_rank(mid, uid, is_beginer=True)
     self.html_param['raideventscore'] = Objects.raidevent_score(eventmaster, scorerecord, rank, rank_beginer)
     
     # イベントガチャのリンク.
     self.putEventGachaUrl()
     
     # 初心者フラグ.
     is_beginer = BackendApi.check_raidevent_beginer(model_mgr, uid, eventmaster, config, using=settings.DB_READONLY)
     self.html_param['is_beginer'] = is_beginer
     
     # ランキング.
     view_myrank = False
     view_beginer = self.request.get(Defines.URLQUERY_BEGINER) == "1"
     if not view_beginer or is_beginer:
         view_myrank = self.request.get(Defines.URLQUERY_FLAG) == "1"
     url_ranking = OSAUtil.addQuery(UrlMaker.raidevent_top(mid), Defines.URLQUERY_FLAG, "0")
     url_myrank = OSAUtil.addQuery(UrlMaker.raidevent_top(mid), Defines.URLQUERY_FLAG, "1")
     self.putRanking(uid, mid, view_myrank, url_ranking, url_myrank, view_beginer)
     
     # シャンパン.
     self.putChampagneData()
     
     # 素材.
     self.putMaterialHtml()
     
     # 交換所のURL.
     self.putRecipeUrl()
     
     if eventmaster.flag_dedicated_stage:
         # イベント専用ステージ情報.
         eventstageplaydata = BackendApi.get_raideventstage_playdata(model_mgr, mid, uid, using=settings.DB_READONLY)
         # 現在のステージ.
         cur_stagemaster = BackendApi.get_current_raideventstage_master(model_mgr, eventmaster, eventstageplaydata, using=settings.DB_READONLY)
         if cur_stagemaster is None:
             raise CabaretError(u'ステージが存在いません', CabaretError.Code.INVALID_MASTERDATA)
         
         # 現在のステージ情報.
         progress = eventstageplaydata.progress
         confirmkey = eventstageplaydata.confirmkey
         self.html_param['raideventstage'] = Objects.raidevent_stage(self, v_player, cur_stagemaster.stage, cur_stagemaster, progress, confirmkey)
         
         # イベント専用スカウトのTOPページへのリンク.
         self.html_param['url_raidevent_scouttop'] = self.makeAppLinkUrl(UrlMaker.raidevent_scouttop())
     
     self.execute_api()
     if is_open:
         if func_raidhelp:
             func_raidhelp()
         func_raidlog()
         
         # イベント参加のKPIを保存.
         BackendApi.save_kpi_raidevent_join(uid, self.is_pc)
     
     self.writeHtml(eventmaster, 'top')