def process(self): self.setFromPage(None) v_player = self.getViewerPlayer() battleplayer = self.getBattlePlayer() if battleplayer is None or not battleplayer.lpvtime or OSAUtil.get_now( ) <= battleplayer.lpvtime: self.appRedirect(self.makeAppLinkUrlRedirect(UrlMaker.battlelp())) return # 現在のランク. rankmaster = self.getBattleRankMaster() # プレイヤー. self.html_param['player'] = Objects.player(self, v_player) # バトル情報. self.html_param['battleplayer'] = Objects.battleplayer( self, battleplayer, rankmaster) # 対戦相手検索のUrl. self.html_param['url_battlepre'] = self.makeAppLinkUrl( UrlMaker.battlepre()) # 気力回復のUrl. self.html_param['url_bprecover'] = self.makeAppLinkUrl( UrlMaker.bprecover()) # 最大ランク. model_mgr = self.getModelMgr() self.html_param['max_rank'] = BackendApi.get_battlerank_max( model_mgr, using=settings.DB_READONLY) # 鍵情報. self.html_param['treasurekey'] = Objects.key(self, v_player) # イベント開催中判定. cur_eventmaster = BackendApi.get_current_battleevent_master( model_mgr, using=settings.DB_READONLY) self.html_param['battleevent'] = Objects.battleevent( self, cur_eventmaster) if cur_eventmaster else None self.html_param['url_battleevent_top'] = self.makeAppLinkUrl( UrlMaker.battleevent_top()) # 書き込み. self.writeAppHtml('battle/battle')
def putTreasureListParams(self, ttype, do_check_all=False, using=settings.DB_READONLY): target_obj = self.html_param model_mgr = self.getModelMgr() # プレイヤー情報. v_player = self.getViewerPlayer() # カード上限. overlimit = v_player.cardlimit <= BackendApi.get_cardnum( v_player.id, model_mgr, using=settings.DB_READONLY) target_obj['overlimit'] = overlimit # 宝箱を開けられるか. openable = BackendApi.check_treasure_openable( model_mgr, v_player, ttype, using=settings.DB_READONLY) target_obj['is_openable'] = openable # 宝箱名前. target_obj['treasure_name'] = Defines.TreasureType.NAMES[ttype] # 宝箱の数. treasure_nums = {} for treasure_type in Defines.TreasureType.NAMES.keys(): treasure_nums[treasure_type] = BackendApi.get_treasure_num( model_mgr, treasure_type, v_player.id, using=using) target_obj['treasure_nums'] = treasure_nums # 宝箱のデータ. treasurelist_dict = {} if do_check_all: ttype_list = Defines.TreasureType.NAMES.keys() else: ttype_list = [ttype] for tt in ttype_list: treasure_num = treasure_nums[tt] pool_limit = Defines.TreasureType.POOL_LIMIT[tt] if 0 < treasure_num: treasureidlist = BackendApi.get_treasure_idlist(model_mgr, tt, v_player.id, 0, treasure_num, using=using) treasurelist = BackendApi.get_treasure_list(model_mgr, tt, treasureidlist, using=using) if len(treasureidlist) != len(treasurelist): # ずれてる. treasure_num = len( BackendApi._save_treasureidlist(model_mgr, v_player.id, tt, using=using)) treasureidlist = BackendApi.get_treasure_idlist( model_mgr, tt, v_player.id, 0, treasure_num, using=using) treasurelist = BackendApi.get_treasure_list(model_mgr, tt, treasureidlist, using=using) treasure_nums[tt] = treasure_num treasurelist_dict[tt] = treasurelist[:pool_limit] treasure_nums[tt] = min(pool_limit, treasure_nums[tt]) # 鍵情報. treasurekey = Objects.key(self, v_player) self.html_param['treasurekey'] = treasurekey keydata = treasurekey.get( Defines.TreasureType.STRING.get(ttype, 'unknown')) key_num = None if keydata: key_num = keydata['num'] treasure_num = treasure_nums[ttype] treasurelist = treasurelist_dict.get(ttype) or [] treasurelist.sort(key=lambda x: x.etime) obj_treasurelist = [] str_treasureidlist = [] for treasure in treasurelist: obj_treasurelist.append(Objects.treasure(self, treasure, ttype)) str_treasureidlist.append('%d' % treasure.id) target_obj['treasurelist'] = obj_treasurelist if key_num is not None: str_treasureidlist = str_treasureidlist[:key_num] if str_treasureidlist: # 一括受け取りのURL. url = UrlMaker.treasureget(ttype) self.html_param['allopendata'] = { 'url': self.makeAppLinkUrl(url), 'id': str_treasureidlist, } # 宝箱の中身. masteridlist = BackendApi.get_public_treasuremaster_idlist( model_mgr, ttype, using=settings.DB_READONLY) masterlist = BackendApi.get_treasuremaster_list( model_mgr, ttype, masteridlist, using=settings.DB_READONLY) target_obj[ 'treasure_item_list'] = BackendApi.make_treasureiteminfo_list( self, masterlist) # 選択している宝箱のタイプ. self.html_param['treasure_type'] = ttype self.html_param['str_treasure_type'] = Defines.TreasureType.STRING.get( ttype, None) def makeURL(tt): url = UrlMaker.treasurelist(tt) url = OSAUtil.addQuery(url, Defines.URLQUERY_FLAG, 1) return self.makeAppLinkUrl(url) # 遷移先URL. self.html_param['url_treasure_gold'] = makeURL( Defines.TreasureType.GOLD) self.html_param['url_treasure_silver'] = makeURL( Defines.TreasureType.SILVER) self.html_param['url_treasure_bronze'] = makeURL( Defines.TreasureType.BRONZE)