179 lines
4.1 KiB
Lua
179 lines
4.1 KiB
Lua
local PlayerData = class("PlayerData", BaseData)
|
|
|
|
function PlayerData:ctor()
|
|
self.data.dirty = false
|
|
end
|
|
|
|
function PlayerData:clear()
|
|
DataManager:unregisterCrossDayFunc("PlayerData")
|
|
end
|
|
|
|
function PlayerData:init(data)
|
|
local basicInfo = data.basic_info 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 = basicInfo.pay_amount or 0
|
|
|
|
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:markDirty()
|
|
end)
|
|
self.createTime = basicInfo.create_at or 0 -- 创角时间
|
|
self:initModuleUnlockInfo()
|
|
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
|
|
end
|
|
|
|
function PlayerData:markDirty()
|
|
self.data.dirty = not self.data.dirty
|
|
end
|
|
|
|
function PlayerData:setVit(vit)
|
|
self.vit = vit
|
|
end
|
|
|
|
function PlayerData:getVit()
|
|
return self.vit or 0
|
|
end
|
|
|
|
function PlayerData:getMaxVit()
|
|
if self.maxVit == nil then
|
|
self.maxVit = ConfigManager:getConfig("recovery")[GConst.ItemConst.ITEM_ID_VIT].limit
|
|
end
|
|
return self.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:markDirty()
|
|
end
|
|
|
|
function PlayerData:setLv(level, exp)
|
|
self.data.level = level
|
|
self.data.exp = exp
|
|
self.lvUpNeedExp = self:getNextExp(self.data.level)
|
|
self:markDirty()
|
|
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
|
|
end
|
|
|
|
-- 获取创角时间
|
|
function PlayerData:getCreateTime()
|
|
return self.createTime
|
|
end
|
|
|
|
-- 获取玩家是否可以显示功能解锁
|
|
function PlayerData:getIfCanShowModuleUnlock()
|
|
return self.showModuleUnlockChapter > 0
|
|
end
|
|
|
|
function PlayerData:markShowModuleUnlock()
|
|
self.showModuleUnlockChapter = 0
|
|
end
|
|
|
|
function PlayerData:getModuleUnlockChapter()
|
|
return self.showModuleUnlockChapter
|
|
end
|
|
|
|
function PlayerData:checkIfCanShowModuleUnlock(chapterId)
|
|
if self.moduleUnlockChapterMap == nil then
|
|
return
|
|
end
|
|
if not self.moduleUnlockChapterMap[chapterId] then
|
|
return
|
|
end
|
|
self.showModuleUnlockChapter = chapterId
|
|
end
|
|
|
|
return PlayerData |