210 lines
5.2 KiB
Lua
210 lines
5.2 KiB
Lua
local DungeonBaseEntity = require "app/userdata/dungeon/dungeon_base_entity"
|
|
local DungeonWeaponEntity = class("DungeonWeaponEntity", DungeonBaseEntity)
|
|
|
|
local GET_PASS_INFO_INTERVAL = 600
|
|
-- 支线副本数据
|
|
|
|
function DungeonWeaponEntity:clear()
|
|
DataManager:unregisterCrossDayFunc("DungeonWeaponEntity")
|
|
end
|
|
|
|
function DungeonWeaponEntity:init(data)
|
|
self.maxPassedId = data.max_challenge_id or 0
|
|
self.farmCount = data.farm_count or 0
|
|
self.heroes = data.heroes or {}
|
|
self.totalChallengeCount = data.total_challenge_count or {}
|
|
self.data.isDirty = not self.data.isDirty
|
|
|
|
self:updateGift(data.gift_info)
|
|
DataManager.FormationData:initDungeonWeapon(self.heroes)
|
|
|
|
DataManager:registerCrossDayFunc("DungeonWeaponEntity", function()
|
|
self.farmCount = 0
|
|
self:setDirty()
|
|
end)
|
|
end
|
|
|
|
function DungeonWeaponEntity:refreshInfoOnSettlement(chapterId, result)
|
|
self.totalChallengeCount[chapterId] = (self.totalChallengeCount[chapterId] or 0) + 1
|
|
self.maxPassedId = result.max_id
|
|
self:updateGift(result.gift_info)
|
|
self:setDirty()
|
|
end
|
|
|
|
function DungeonWeaponEntity:refreshInfoOnFarm(result)
|
|
self.farmCount = self.farmCount + 1
|
|
self:updateGift(result.gift_info)
|
|
self:setDirty()
|
|
end
|
|
|
|
-- 更新礼包状态
|
|
function DungeonWeaponEntity:updateGift(giftInfo)
|
|
DataManager.ShopData:initGift(PayManager.PURCHARSE_ACT_TYPE.WEAPON_GIFT, giftInfo)
|
|
end
|
|
|
|
function DungeonWeaponEntity:setDirty()
|
|
self.data.isDirty = not self.data.isDirty
|
|
end
|
|
|
|
function DungeonWeaponEntity:getTotalChallengeCount()
|
|
local count = 0
|
|
for _, c in pairs(self.totalChallengeCount) do
|
|
count = count + 1
|
|
end
|
|
return count
|
|
end
|
|
|
|
function DungeonWeaponEntity:getTodayChallengeCount()
|
|
return 0
|
|
end
|
|
|
|
function DungeonWeaponEntity:getPassedMaxId()
|
|
return self.maxPassedId
|
|
end
|
|
|
|
function DungeonWeaponEntity:getIsAllTimeOpen()
|
|
return true
|
|
end
|
|
|
|
function DungeonWeaponEntity:getModuleKey()
|
|
return ModuleManager.MODULE_KEY.DUNGEON_WEAPON
|
|
end
|
|
|
|
function DungeonWeaponEntity:getConfigName()
|
|
return "chapter_dungeon_equip"
|
|
end
|
|
|
|
function DungeonWeaponEntity:getTitleString()
|
|
return I18N:getGlobalText(I18N.GlobalConst.DUNGEON_WEAPON_DESC_1)
|
|
end
|
|
|
|
function DungeonWeaponEntity:getRuleString()
|
|
return I18N:getGlobalText(I18N.GlobalConst.DUNGEON_WEAPON_DESC_2)
|
|
end
|
|
|
|
function DungeonWeaponEntity:getOpenWeekString()
|
|
return I18N:getGlobalText(I18N.GlobalConst.DUNGEON_WEAPON_DESC_3)
|
|
end
|
|
|
|
function DungeonWeaponEntity:getBanner()
|
|
return "assets/arts/textures/background/dungeon/dungeon_bg_3.png"
|
|
end
|
|
|
|
function DungeonWeaponEntity:getOpenTextColor()
|
|
return "#FFEDC5"
|
|
end
|
|
|
|
function DungeonWeaponEntity:getChallengeHpCost()
|
|
return GFunc.getConstReward("dungeon_armor_limit")
|
|
end
|
|
|
|
function DungeonWeaponEntity:isNoTotalLimit()
|
|
return true
|
|
end
|
|
|
|
function DungeonWeaponEntity:onClickFight()
|
|
ModuleManager.DungeonWeaponManager:showMainUI()
|
|
end
|
|
|
|
function DungeonWeaponEntity:getDialyFarmLimit()
|
|
return GFunc.getConstIntValue("dungeon_equip_limit")
|
|
end
|
|
|
|
function DungeonWeaponEntity:getFarmCount()
|
|
return self.farmCount
|
|
end
|
|
|
|
function DungeonWeaponEntity:getRemianFarmCount()
|
|
local count = self:getDialyFarmLimit() - self:getFarmCount()
|
|
if count < 0 then
|
|
count = 0
|
|
end
|
|
return count
|
|
end
|
|
|
|
function DungeonWeaponEntity:getTodayRemainLimitCount()
|
|
return self:getRemianFarmCount()
|
|
end
|
|
|
|
function DungeonWeaponEntity:getLevelEnough(chapterId)
|
|
local config = ConfigManager:getConfig(self:getConfigName())[chapterId]
|
|
if not config then
|
|
return false
|
|
end
|
|
if config.level > DataManager.PlayerData:getLv() then
|
|
return false
|
|
end
|
|
|
|
return true
|
|
end
|
|
|
|
function DungeonWeaponEntity:canFightChapter(chapterId)
|
|
if not chapterId then
|
|
return false
|
|
end
|
|
|
|
if chapterId <= self.maxPassedId + 1 then
|
|
if self:getLevelEnough(chapterId) then
|
|
return true
|
|
end
|
|
end
|
|
|
|
return false
|
|
end
|
|
|
|
function DungeonWeaponEntity:canFarmChapter(chapterId)
|
|
if not chapterId then
|
|
return false
|
|
end
|
|
|
|
return self.maxPassedId >= chapterId
|
|
end
|
|
|
|
function DungeonWeaponEntity:doCachePassInfo(chapterId, info)
|
|
if not self.cachePassInfo then
|
|
self.cachePassInfo = {}
|
|
end
|
|
if not info then
|
|
return
|
|
end
|
|
if not self.cachePassInfo[chapterId] then
|
|
self.cachePassInfo[chapterId] = {
|
|
info = info,
|
|
getTime = Time:getServerTime()
|
|
}
|
|
else
|
|
self.cachePassInfo[chapterId].info = info
|
|
self.cachePassInfo[chapterId].getTime = Time:getServerTime()
|
|
end
|
|
self:setDirty()
|
|
end
|
|
|
|
function DungeonBaseEntity:getCachePassInfo(chapterId)
|
|
if not self.cachePassInfo then
|
|
self.cachePassInfo = {}
|
|
end
|
|
|
|
if not self.cachePassInfo[chapterId] then
|
|
return
|
|
end
|
|
|
|
if self.cachePassInfo[chapterId].getTime + GET_PASS_INFO_INTERVAL < Time:getServerTime() then -- 过期
|
|
return
|
|
end
|
|
|
|
return self.cachePassInfo[chapterId].info
|
|
end
|
|
|
|
function DungeonWeaponEntity:setCurFightChapterId(chapterId)
|
|
self.curFightchapterId = chapterId or 1
|
|
end
|
|
|
|
function DungeonWeaponEntity:getCurFightChapterId()
|
|
return self.curFightchapterId or 1
|
|
end
|
|
|
|
function DungeonWeaponEntity:getChapterFightCount(chapterId)
|
|
return self.totalChallengeCount[chapterId] or 0
|
|
end
|
|
|
|
return DungeonWeaponEntity |