730 lines
20 KiB
Lua
730 lines
20 KiB
Lua
local PlayerData = class("PlayerData", BaseData)
|
|
local RECHARGE_CFG = ConfigManager:getConfig("recharge")
|
|
|
|
local PlayerExpCfg = ConfigManager:getConfig("player_exp")
|
|
|
|
function PlayerData:ctor()
|
|
self.data.isDirty = false
|
|
end
|
|
|
|
function PlayerData:clear()
|
|
DataManager:unregisterCrossDayFunc("PlayerData")
|
|
end
|
|
|
|
function PlayerData:init(data)
|
|
local basicInfo = data.basic_info or GConst.EMPTY_TABLE
|
|
local stat = data.stat or GConst.EMPTY_TABLE
|
|
self.data.level = basicInfo.level or 1
|
|
self.data.exp = basicInfo.exp or 0
|
|
self.lvUpNeedExp = self:getNextExp(self.data.level)
|
|
self.data.payAmount = 0
|
|
self.data.payCount = 0
|
|
self.data.adCount = stat.ad_count or 0
|
|
self.pay_counts = stat.pay_counts or {}
|
|
self.register_ts = GFunc.formatTimeStep(stat.register_ts or Time:getServerTime())
|
|
if stat.pay_counts then
|
|
for id, count in pairs(stat.pay_counts) do
|
|
if RECHARGE_CFG[id] then
|
|
self.data.payAmount = self.data.payAmount + (RECHARGE_CFG[id].price or 0) * count
|
|
self.data.payCount = self.data.payCount + count
|
|
end
|
|
end
|
|
end
|
|
if stat.internal ~= nil then
|
|
self.internal = stat.internal
|
|
end
|
|
if data.game_version then
|
|
self.game_version = data.game_version
|
|
end
|
|
|
|
if self.data.playInfo == nil then
|
|
self.data.playInfo = {}
|
|
end
|
|
self.data.playInfo.nickName = basicInfo.name
|
|
self.data.playInfo.nameChanged = basicInfo.name_changed
|
|
self.data.playInfo.usingAvatarId = basicInfo.avatar
|
|
self.data.playInfo.usingFrameId = basicInfo.avatar_frame
|
|
self.data.playInfo.unlockAvatar = data.bag.avatars
|
|
self.data.playInfo.unlockFrame = data.bag.avatar_frames
|
|
if EDITOR_MODE then
|
|
Logger.printTable(self.data.playInfo)
|
|
end
|
|
|
|
-- 体力购买情况初始化
|
|
local energyLimit = data.energy_limit or GConst.EMPTY_TABLE
|
|
self.data.vitGemCount = energyLimit.diamond_count or 0
|
|
self.data.vitADCount = energyLimit.ad_count or 0
|
|
|
|
self.lastLoginTime = basicInfo.lastLoginTime or Time:getBeginningOfServerToday()
|
|
DataManager:registerCrossDayFunc("PlayerData", function()
|
|
self:resetOnCrossDay()
|
|
self:setDirty()
|
|
end)
|
|
self.createTime = (basicInfo.create_at or 0) // 1000 -- 创角时间
|
|
|
|
local time = (data.now_ts or 0) // 1000
|
|
if math.abs(self.createTime - time) <= 3000 then -- 认为是新号初次登录
|
|
local vit = self:getMaxVit()
|
|
BIReport:postVitGet(vit, BIReport.ITEM_GET_TYPE.NEW_PLAYER_INITIAL, vit)
|
|
end
|
|
self:initModuleUnlockInfo()
|
|
end
|
|
|
|
-- 竞技场入场券购买情况初始化
|
|
function PlayerData:initArena(gemCount, adCount)
|
|
self.data.arenaTicketGemCount = gemCount or 0
|
|
self.data.arenaTicketADCount = adCount or 0
|
|
end
|
|
|
|
function PlayerData:initModuleUnlockInfo()
|
|
self.showModuleUnlockChapter = 0
|
|
if self.moduleUnlockChapterMap then
|
|
return
|
|
end
|
|
self.moduleUnlockChapterMap = {}
|
|
local cfg = ConfigManager:getConfig("func_open")
|
|
for _, info in pairs(cfg) do
|
|
if info.pop_ups == nil and info.stage then
|
|
self.moduleUnlockChapterMap[info.stage] = true
|
|
end
|
|
end
|
|
Logger.printTable(self.moduleUnlockChapterMap)
|
|
end
|
|
|
|
function PlayerData:resetOnCrossDay()
|
|
self.data.vitGemCount = 0
|
|
self.data.vitADCount = 0
|
|
self.data.arenaTicketGemCount = 0
|
|
self.data.arenaTicketADCount = 0
|
|
end
|
|
|
|
function PlayerData:setDirty()
|
|
self.data.dirty = not self.data.dirty
|
|
end
|
|
|
|
function PlayerData:getAuthInfo()
|
|
return self.auth
|
|
end
|
|
|
|
function PlayerData:setAuthInfo(authInfo)
|
|
self.auth = authInfo or {}
|
|
self:setDirty()
|
|
end
|
|
|
|
function PlayerData:setVit(vit)
|
|
self.vit = vit
|
|
end
|
|
|
|
function PlayerData:getVit()
|
|
return self.vit or 0
|
|
end
|
|
|
|
function PlayerData:getMaxVit()
|
|
local isCardOpen = DataManager.PrivilegeCardData:getIsMonthlyCardActive()
|
|
local cfg = ConfigManager:getConfig("recovery")[GConst.ItemConst.ITEM_ID_VIT]
|
|
local maxVit = isCardOpen and cfg.monthly_card or cfg.limit
|
|
return maxVit
|
|
end
|
|
|
|
function PlayerData:getMaxLv()
|
|
return ConfigManager:getConfigNum("player_exp")
|
|
end
|
|
|
|
function PlayerData:addExp(exp)
|
|
self.data.exp = self.data.exp + exp
|
|
if self.data.level >= self:getMaxLv() then
|
|
return
|
|
end
|
|
self:setDirty()
|
|
end
|
|
|
|
function PlayerData:setLv(level, exp)
|
|
local beforeLv = self.data.level or 0
|
|
self.data.level = level
|
|
self.data.exp = exp
|
|
self.lvUpNeedExp = self:getNextExp(self.data.level)
|
|
self:setDirty()
|
|
|
|
local data = {}
|
|
data.player_level = self.data.level
|
|
CS.ThinkingAnalytics.ThinkingAnalyticsAPI.UserSet(data)
|
|
BIReport:postLvEvent(beforeLv, level)
|
|
end
|
|
|
|
function PlayerData:getLv()
|
|
return self.data.level
|
|
end
|
|
|
|
function PlayerData:getNextExp(lv)
|
|
lv = lv or self.data.level
|
|
local cfg = ConfigManager:getConfig("player_exp")
|
|
if not cfg[lv] then
|
|
return 1
|
|
end
|
|
return cfg[lv].need_exp
|
|
end
|
|
|
|
function PlayerData:getExpPercent()
|
|
return self.data.exp / self.lvUpNeedExp
|
|
end
|
|
|
|
function PlayerData:getIfCanLevelUp()
|
|
if self.data.level >= self:getMaxLv() then
|
|
return false
|
|
end
|
|
return self.data.exp >= self.lvUpNeedExp
|
|
end
|
|
|
|
function PlayerData:getAccountInfo()
|
|
if not self.accountInfo then
|
|
self.accountInfo = LocalData:getAccountInfo()
|
|
end
|
|
return self.accountInfo
|
|
end
|
|
|
|
function PlayerData:getAcountId()
|
|
return self:getAccountInfo().id or GConst.EMPTY_STRING
|
|
end
|
|
|
|
function PlayerData:addVitGemBuyCount()
|
|
self.data.vitGemCount = self.data.vitGemCount + 1
|
|
end
|
|
|
|
function PlayerData:addVitAdBuyCount()
|
|
self.data.vitADCount = self.data.vitADCount + 1
|
|
end
|
|
|
|
function PlayerData:getVitGemBuyCount()
|
|
return self.data.vitGemCount
|
|
end
|
|
|
|
function PlayerData:getVitAdBuyCount()
|
|
return self.data.vitADCount
|
|
end
|
|
|
|
-- 获取玩家支付总额
|
|
function PlayerData:getTotalPayAmount()
|
|
return self.data.payAmount or 0
|
|
end
|
|
|
|
-- 支付回调中调用
|
|
function PlayerData:addPayment(rechargeId)
|
|
local cfg = ConfigManager:getConfig("recharge")[rechargeId]
|
|
self.data.payAmount = self.data.payAmount + cfg.price
|
|
self.data.payCount = self.data.payCount + 1
|
|
self.pay_counts[rechargeId] = (self.pay_counts[rechargeId] or 0) + 1
|
|
ModuleManager.TaskManager:addTaskProgress(GConst.TaskConst.TASK_TYPE.X_BUY_ANYONE)
|
|
end
|
|
|
|
function PlayerData:getPayCount()
|
|
return self.data.payCount
|
|
end
|
|
|
|
function PlayerData:getPayCounts(rechargeId)
|
|
return self.pay_counts[rechargeId] or 0
|
|
end
|
|
|
|
function PlayerData:addPayCount()
|
|
self.data.payCount = self.data.payCount + 1
|
|
end
|
|
|
|
function PlayerData:getAdCount()
|
|
return self.data.adCount
|
|
end
|
|
|
|
function PlayerData:addAdCount()
|
|
self.data.adCount = self.data.adCount + 1
|
|
end
|
|
|
|
-- 获取创角时间
|
|
function PlayerData:getCreateTime()
|
|
return self.createTime
|
|
end
|
|
|
|
-- 玩家创建角色以来的天数
|
|
function PlayerData:getCreateDay()
|
|
local time = self:getCreateTime()
|
|
time = Time:getDayBeginTimeStamp(time)
|
|
return (Time:getServerTime() - time) // GConst.SECONDS_PRE_DAY + 1
|
|
end
|
|
|
|
-- 头像------------------------------------------------------------------------------------
|
|
|
|
-- 获取玩家昵称
|
|
function PlayerData:getNickname()
|
|
if self.data.playInfo.nickName == nil or #self.data.playInfo.nickName == 0 then
|
|
return I18N:getGlobalText(I18N.GlobalConst.NEW_PLAYER)
|
|
end
|
|
return self.data.playInfo.nickName
|
|
end
|
|
|
|
-- 设置玩家昵称
|
|
function PlayerData:setNickname(name)
|
|
self.data.playInfo.nickName = name
|
|
self.data.playInfo.nameChanged = true
|
|
self:setDirty()
|
|
end
|
|
|
|
-- 是否可以免费修改昵称
|
|
function PlayerData:isFreeRename()
|
|
return not self.data.playInfo.nameChanged
|
|
end
|
|
|
|
-- 获取修改昵称的花费
|
|
function PlayerData:getRenameCost()
|
|
return GFunc.getConstReward("change_name_cost")
|
|
end
|
|
|
|
-- 头像------------------------------------------------------------------------------------
|
|
|
|
-- 获取玩家当前使用的头像
|
|
function PlayerData:getUsingAvatarId()
|
|
return self.data.playInfo.usingAvatarId
|
|
end
|
|
|
|
-- 设置玩家使用的头像
|
|
function PlayerData:setAvatarUsing(id)
|
|
self.data.playInfo.usingAvatarId = id
|
|
self:setDirty()
|
|
end
|
|
|
|
-- 获取头像icon id
|
|
function PlayerData:getAvatarIconId(id)
|
|
local cfg = ConfigManager:getConfig("avatar")[id]
|
|
if cfg then
|
|
return cfg.iconId
|
|
end
|
|
end
|
|
|
|
-- 头像是否解锁
|
|
function PlayerData:isAvatarUnlock(id)
|
|
if self.data.playInfo.unlockAvatar == nil then
|
|
return false
|
|
end
|
|
return self.data.playInfo.unlockAvatar[id] ~= nil
|
|
end
|
|
|
|
-- 设置头像解锁
|
|
function PlayerData:setAvatarUnlock(id)
|
|
Logger.logHighlight("解锁头像:"..id)
|
|
if self.data.playInfo.unlockAvatar == nil then
|
|
self.data.playInfo.unlockAvatar = {}
|
|
end
|
|
self.data.playInfo.unlockAvatar[id] = Time:getServerTime()
|
|
self:setNewAvatarStatus(id, true)
|
|
end
|
|
|
|
-- 获取头像描述
|
|
function PlayerData:getAvatarDesc(id)
|
|
return I18N:getText("avatar", id, "desc")
|
|
end
|
|
|
|
-- 是否有新头像
|
|
function PlayerData:hasNewAvatar()
|
|
local newIds = LocalData:getNewAvatarAndFrame()
|
|
if newIds.avatar == nil or #newIds.avatar == 0 then
|
|
return false
|
|
end
|
|
return true
|
|
end
|
|
|
|
-- 是否是新头像
|
|
function PlayerData:isNewAvatar(id)
|
|
local newIds = LocalData:getNewAvatarAndFrame()
|
|
if newIds.avatar ~= nil then
|
|
return table.containValue(newIds.avatar, id)
|
|
end
|
|
return false
|
|
end
|
|
|
|
-- 设置新头像状态
|
|
function PlayerData:setNewAvatarStatus(id, isNew)
|
|
local newIds = LocalData:getNewAvatarAndFrame()
|
|
if newIds.avatar == nil then
|
|
newIds.avatar = {}
|
|
end
|
|
|
|
if isNew then
|
|
table.insert(newIds.avatar, id)
|
|
else
|
|
table.removebyvalue(newIds.avatar, id, true)
|
|
end
|
|
LocalData:setNewAvatarAndFrame(newIds)
|
|
self:setDirty()
|
|
end
|
|
|
|
-- 是否显示头像(已解锁+未解锁可显示)
|
|
function PlayerData:isShowAvatar(id)
|
|
if self:isAvatarUnlock(id) then
|
|
return true
|
|
end
|
|
-- 判断未解锁时是否显示
|
|
return not ConfigManager:getConfig("avatar")[id].unlock_show
|
|
end
|
|
|
|
-- 获取可以显示的所有头像id
|
|
function PlayerData:getShowAvatarIds()
|
|
local unlockIds = table.keys(self.data.playInfo.unlockAvatar)
|
|
local lockIds = {}
|
|
for id, data in pairs(ConfigManager:getConfig("avatar")) do
|
|
if (not self:isAvatarUnlock(id)) and self:isShowAvatar(id) then
|
|
table.insert(lockIds, id)
|
|
end
|
|
end
|
|
table.sort(unlockIds, function(a, b)
|
|
return a < b
|
|
end)
|
|
table.sort(lockIds, function(a, b)
|
|
return a < b
|
|
end)
|
|
return table.addArray(unlockIds, lockIds)
|
|
end
|
|
|
|
-- 获取可解锁的头像id列表
|
|
function PlayerData:getCanUnlockAvatarIds(checkData)
|
|
local ids = {}
|
|
if type(checkData) == "table" then
|
|
-- 判断items解锁
|
|
for index, reward in ipairs(checkData) do
|
|
if reward.type == GConst.REWARD_TYPE.ITEM then
|
|
local itemCfg = ConfigManager:getConfig("item")[reward.item.id]
|
|
-- 头像道具、皮肤道具可解锁头像
|
|
if itemCfg.type == GConst.ItemConst.ITEM_TYPE.AVATAR or itemCfg.type == GConst.ItemConst.ITEM_TYPE.SKIN then
|
|
for id, data in pairs(ConfigManager:getConfig("avatar")) do
|
|
if not self:isAvatarUnlock(id) and data.item == reward.item.id then
|
|
table.insert(ids, id)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif type(checkData) == "number" then
|
|
-- 判断hero解锁
|
|
for id, data in pairs(ConfigManager:getConfig("avatar")) do
|
|
if not self:isAvatarUnlock(id) and data.hero == checkData then
|
|
table.insert(ids, id)
|
|
end
|
|
end
|
|
end
|
|
return ids
|
|
end
|
|
|
|
-- 获取头像背景
|
|
function PlayerData:getAvatarBg(id)
|
|
local cfg = ConfigManager:getConfig("avatar")[id]
|
|
if cfg and cfg.hero then
|
|
-- hero来源
|
|
local hero = ConfigManager:getConfig("hero")[cfg.hero]
|
|
return hero and GConst.HERO_SMALL_FRAME_QLT[hero.qlt]
|
|
elseif cfg and cfg.item then
|
|
-- item来源
|
|
local item = ConfigManager:getConfig("item")[cfg.item]
|
|
return item and GConst.HERO_SMALL_FRAME_QLT[item.qlt]
|
|
end
|
|
return nil
|
|
end
|
|
|
|
-- 头像框-----------------------------------------------------------------------------------
|
|
|
|
-- 获取玩家当前使用的头像框
|
|
function PlayerData:getUsingFrameId()
|
|
return self.data.playInfo.usingFrameId
|
|
end
|
|
|
|
-- 设置玩家使用的头像框
|
|
function PlayerData:setFrameUsing(id)
|
|
self.data.playInfo.usingFrameId = id
|
|
self:setDirty()
|
|
end
|
|
|
|
-- 获取框icon id
|
|
function PlayerData:getFrameIconId(id)
|
|
local cfg = ConfigManager:getConfig("avatar_frame")[id]
|
|
if cfg then
|
|
return cfg.iconId
|
|
end
|
|
end
|
|
|
|
-- 头像框是否解锁
|
|
function PlayerData:isFrameUnlock(id)
|
|
if self.data.playInfo.unlockFrame == nil then
|
|
return false
|
|
end
|
|
return self.data.playInfo.unlockFrame[id] ~= nil
|
|
end
|
|
|
|
-- 设置头像框解锁
|
|
function PlayerData:setFrameUnlock(id)
|
|
Logger.logHighlight("解锁头像框:"..id)
|
|
if self.data.playInfo.unlockFrame == nil then
|
|
self.data.playInfo.unlockFrame = {}
|
|
end
|
|
self.data.playInfo.unlockFrame[id] = Time:getServerTime()
|
|
self:setNewFrameStatus(id, true)
|
|
end
|
|
|
|
-- 获取头像框描述
|
|
function PlayerData:getFrameDesc(id)
|
|
return I18N:getText("avatar_frame", id, "desc")
|
|
end
|
|
|
|
-- 是否有新头像框
|
|
function PlayerData:hasNewFrame()
|
|
local newIds = LocalData:getNewAvatarAndFrame()
|
|
if newIds.frame == nil or #newIds.frame == 0 then
|
|
return false
|
|
end
|
|
return true
|
|
end
|
|
|
|
-- 是否是新头像框
|
|
function PlayerData:isNewFrame(id)
|
|
local newIds = LocalData:getNewAvatarAndFrame()
|
|
if newIds.frame ~= nil then
|
|
return table.containValue(newIds.frame, id)
|
|
end
|
|
return false
|
|
end
|
|
|
|
-- 设置新头像框状态
|
|
function PlayerData:setNewFrameStatus(id, isNew)
|
|
local newIds = LocalData:getNewAvatarAndFrame()
|
|
if newIds.frame == nil then
|
|
newIds.frame = {}
|
|
end
|
|
|
|
if isNew then
|
|
table.insert(newIds.frame, id)
|
|
else
|
|
table.removebyvalue(newIds.frame, id, true)
|
|
end
|
|
LocalData:setNewAvatarAndFrame(newIds)
|
|
self:setDirty()
|
|
end
|
|
|
|
-- 是否显示头像框(已解锁+未解锁可显示)
|
|
function PlayerData:isShowFrame(id)
|
|
if self:isFrameUnlock(id) then
|
|
return true
|
|
end
|
|
-- 判断未解锁时是否显示
|
|
local lock_show = ConfigManager:getConfig("avatar_frame")[id].unlock_show
|
|
if lock_show ~= nil then
|
|
return not lock_show
|
|
else
|
|
return true
|
|
end
|
|
end
|
|
|
|
-- 获取可以显示的所有头像框id(已解锁小id>已解锁大id>未解锁小id>未解锁大id)
|
|
function PlayerData:getShowFrameIds()
|
|
local unlockIds = table.keys(self.data.playInfo.unlockFrame)
|
|
local lockIds = {}
|
|
for id, data in pairs(ConfigManager:getConfig("avatar_frame")) do
|
|
if (not self:isFrameUnlock(id)) and self:isShowFrame(id) then
|
|
table.insert(lockIds, id)
|
|
end
|
|
end
|
|
table.sort(unlockIds, function(a, b)
|
|
return a < b
|
|
end)
|
|
table.sort(lockIds, function(a, b)
|
|
return a < b
|
|
end)
|
|
return table.addArray(unlockIds, lockIds)
|
|
end
|
|
|
|
-- 获取可解锁的头像框id列表
|
|
function PlayerData:getCanUnlockFrameIds(checkData)
|
|
local ids = {}
|
|
if type(checkData) == "table" then
|
|
-- 判断items解锁
|
|
for index, reward in ipairs(checkData) do
|
|
if reward.type == GConst.REWARD_TYPE.ITEM and ConfigManager:getConfig("item")[reward.item.id].type == GConst.ItemConst.ITEM_TYPE.FRAME then
|
|
for id, data in pairs(ConfigManager:getConfig("avatar_frame")) do
|
|
if not self:isFrameUnlock(id) and data.item == reward.item.id then
|
|
table.insert(ids, id)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
return ids
|
|
end
|
|
|
|
-- 竞技场入场券
|
|
|
|
function PlayerData:getArenaTicket()
|
|
return self.arenaTicket or 0
|
|
end
|
|
|
|
function PlayerData:getArenaTicketGemBuyCount()
|
|
return self.data.arenaTicketGemCount
|
|
end
|
|
|
|
function PlayerData:getArenaTicketAdBuyCount()
|
|
return self.data.arenaTicketADCount
|
|
end
|
|
|
|
function PlayerData:setArenaTicket(ticket)
|
|
self.arenaTicket = ticket
|
|
end
|
|
|
|
function PlayerData:getMaxArenaTicket()
|
|
if self.maxArenaTicket == nil then
|
|
self.maxArenaTicket = ConfigManager:getConfig("recovery")[GConst.ItemConst.ITEM_ID_ARENA_TICKET].limit
|
|
end
|
|
return self.maxArenaTicket
|
|
end
|
|
|
|
function PlayerData:addArenaTicketGemBuyCount()
|
|
self.data.arenaTicketGemCount = self.data.arenaTicketGemCount + 1
|
|
end
|
|
|
|
function PlayerData:addArenaTicketAdBuyCount()
|
|
self.data.arenaTicketADCount = self.data.arenaTicketADCount + 1
|
|
end
|
|
|
|
function PlayerData:getRegisterTs()
|
|
return self.register_ts or Time:getServerTime()
|
|
end
|
|
|
|
function PlayerData:getIsInternal()
|
|
return self.internal
|
|
end
|
|
|
|
-- 服务器下发的版本号,跟客户端版本号不一致
|
|
function PlayerData:getGameVersion()
|
|
return self.game_version
|
|
end
|
|
|
|
--region 特权卡
|
|
-- 免广告卡相关
|
|
function PlayerData:getNoAdFuncOpen()
|
|
return ModuleManager:getIsOpen(ModuleManager.MODULE_KEY.CARD_AD, true)
|
|
end
|
|
function PlayerData:getNoAdActive()
|
|
return DataManager.PrivilegeCardData:getIsCardActive(GConst.ShopConst.PRIVILEGE_CARD_ID.CARD_AD)
|
|
end
|
|
function PlayerData:getNoAdPrice()
|
|
local cfg = DataManager.ShopData:getActGiftConfig(GConst.ShopConst.PRIVILEGE_CARD_ID.CARD_AD)
|
|
if cfg == nil then
|
|
return
|
|
end
|
|
return GFunc.getFormatPrice(cfg.recharge_id)
|
|
end
|
|
--endregion
|
|
|
|
--@region 玩家经验
|
|
function PlayerData:getPlayerExpCfg()
|
|
return PlayerExpCfg
|
|
end
|
|
--@endregion
|
|
|
|
--@region 战斗力
|
|
function PlayerData:getShowPower()
|
|
if self.curPower == nil then
|
|
self:calcPower()
|
|
end
|
|
return self.curPower
|
|
end
|
|
|
|
function PlayerData:getLastPower()
|
|
return self.lastPower or 0
|
|
end
|
|
|
|
function PlayerData:clearLastPower()
|
|
self.lastPower = nil
|
|
end
|
|
|
|
-- 计算战斗力
|
|
function PlayerData:calcPower()
|
|
if self.lastPower then
|
|
self.lastPower = self.curPower
|
|
end
|
|
|
|
local attrPower = 0
|
|
local formation = DataManager.FormationData:getStageFormation()
|
|
for matchType, heroEntity in pairs(formation) do
|
|
-- 属性战力
|
|
for attrName, value in pairs(heroEntity:getAllAttr()) do
|
|
local cfg = GFunc.getAttrNameCfg()[attrName]
|
|
if cfg and cfg.power then
|
|
-- 特殊处理,玩家基础暴击伤害不算
|
|
if attrName == GConst.BattleConst.ATTR_NAME.CRIT_TIME then
|
|
value = value - 15000
|
|
end
|
|
attrPower = attrPower + math.floor(value * cfg.power / GConst.DEFAULT_FACTOR + 0.0000001)
|
|
end
|
|
end
|
|
end
|
|
|
|
-- -- 天赋战力
|
|
-- local talentPower = DataManager.TalentData:getPower()
|
|
-- -- 英雄战力
|
|
-- local forcePower = DataManager.ForceData:getPower()
|
|
-- -- 英雄皮肤战力
|
|
-- local forceSkinPower = DataManager.ForceData:getSkinPower()
|
|
-- -- 英雄装备战力
|
|
-- local equipPower = DataManager.ForceEquipData:getPower()
|
|
-- -- 领主时装战力
|
|
-- local skinPower = DataManager.SkinData:getPower()
|
|
-- -- 宝物战力
|
|
-- local collectionPower = DataManager.CollectionData:getPower()
|
|
-- -- 防线战力
|
|
-- local defenseLinePower = DataManager.DefenseLineData:getPower()
|
|
-- -- 防线皮肤战力
|
|
-- local defenseLineSkinPower = DataManager.DefenseLineData:getSkinPower()
|
|
-- -- 宠物战力
|
|
-- local petPower = DataManager.PetData:getPower()
|
|
-- -- 魔法书战力
|
|
-- local magicBookPower = DataManager.MagicBookData:getPower()
|
|
-- -- 魔法阵战力
|
|
-- local magicCirclePower = DataManager.MagicCircleData:getPower()
|
|
|
|
self.curPower = 0
|
|
self.curPower = self.curPower + attrPower
|
|
-- self.curPower = self.curPower + talentPower
|
|
-- self.curPower = self.curPower + forcePower
|
|
-- self.curPower = self.curPower + forceSkinPower
|
|
-- self.curPower = self.curPower + equipPower
|
|
-- self.curPower = self.curPower + skinPower
|
|
-- self.curPower = self.curPower + collectionPower
|
|
-- self.curPower = self.curPower + defenseLinePower
|
|
-- self.curPower = self.curPower + defenseLineSkinPower
|
|
-- self.curPower = self.curPower + petPower
|
|
-- self.curPower = self.curPower + magicBookPower
|
|
-- self.curPower = self.curPower + magicCirclePower
|
|
|
|
-- if EDITOR_MODE and self:getIsSelf() then
|
|
-- Logger.logHighlight("PlayerEntity 总战力:" .. self.curPower)
|
|
-- Logger.logHighlight("PlayerEntity 属性战力:" .. attrPower)
|
|
-- Logger.logHighlight("PlayerEntity 天赋战力:" .. talentPower)
|
|
-- Logger.logHighlight("PlayerEntity 英雄战力:" .. forcePower)
|
|
-- Logger.logHighlight("PlayerEntity 英雄皮肤战力:" .. forceSkinPower)
|
|
-- Logger.logHighlight("PlayerEntity 英雄装备战力:" .. equipPower)
|
|
-- Logger.logHighlight("PlayerEntity 领主时装战力:" .. skinPower)
|
|
-- Logger.logHighlight("PlayerEntity 宝物战力:" .. collectionPower)
|
|
-- Logger.logHighlight("PlayerEntity 防线战力:" .. defenseLinePower)
|
|
-- Logger.logHighlight("PlayerEntity 防线皮肤战力:" .. defenseLineSkinPower)
|
|
-- Logger.logHighlight("PlayerEntity 宠物战力:" .. petPower)
|
|
-- Logger.logHighlight("PlayerEntity 魔法书战力:" .. magicBookPower)
|
|
-- Logger.logHighlight("PlayerEntity 魔法阵战力:" .. magicCirclePower)
|
|
-- end
|
|
|
|
if self:getIsSelf() then
|
|
if not self.lastPower then
|
|
self.lastPower = self.curPower
|
|
end
|
|
if self.lastPower ~= self.curPower then
|
|
self:setPowerDirty()
|
|
end
|
|
end
|
|
end
|
|
|
|
function PlayerData:setPowerDirty()
|
|
self.data.isPowerDirty = not self.data.isPowerDirty
|
|
end
|
|
--@endregion
|
|
|
|
return PlayerData |