199 lines
No EOL
6.8 KiB
Lua
199 lines
No EOL
6.8 KiB
Lua
XFubenResourceManagerCreator = function()
|
|
|
|
local XFubenResourceManager = {}
|
|
|
|
local PREFS_LEVEL_KEY = "FunbenResourceLastLevel"
|
|
-- local PREFS_REWARD_KEY = "FunbenResourceLastReward"
|
|
-- local TABLE_LEVEL_SECTION = "Share/Fuben/FubenResource/FubenResourceLevelSection.tab"
|
|
-- local TABLE_RESOURCE_CHAPTER = "Share/Fuben/FubenResource/FubenResourceChapter.tab"
|
|
--资源副本配置表
|
|
-- local LevelSectionCfg = {}
|
|
--挑战副本入口表的子表
|
|
local FubenResourceChapter = {}
|
|
--当天副本数据
|
|
local CurrentSectionData = nil
|
|
local NextRefreshTime = nil
|
|
local LastPlayerLevel = nil
|
|
local TopRewardList = nil
|
|
local TempTopRewardList = nil
|
|
|
|
local ResourceType = {
|
|
Coin = 1,
|
|
Skill = 2,
|
|
}
|
|
|
|
--读取玩家本地缓存
|
|
local function InitPrefs()
|
|
local lastLevel = XSaveTool.GetData(XPlayer.Id .. PREFS_LEVEL_KEY)
|
|
if lastLevel then
|
|
LastPlayerLevel = lastLevel
|
|
else
|
|
LastPlayerLevel = XPlayer.Level
|
|
XSaveTool.SaveData(XPlayer.Id .. PREFS_LEVEL_KEY, LastPlayerLevel)
|
|
end
|
|
end
|
|
|
|
function XFubenResourceManager.Init()
|
|
-- LevelSectionCfg = XTableManager.ReadByIntKey(TABLE_LEVEL_SECTION, XTable.XTableFubenResourceLevelSection, "Id")
|
|
-- FubenResourceChapter = XTableManager.ReadByIntKey(TABLE_RESOURCE_CHAPTER, XTable.XFubenResourceChapter, "Id")
|
|
end
|
|
|
|
function XFubenResourceManager.InitStageInfo()
|
|
-- for sectionId, sectionCfg in pairs(LevelSectionCfg) do
|
|
-- for _, stageId in pairs(sectionCfg.StageList) do
|
|
-- local stageInfo = XDataCenter.FubenManager.GetStageInfo(stageId)
|
|
-- stageInfo.ResourceType = sectionCfg.Type
|
|
-- stageInfo.Type = XDataCenter.FubenManager.StageType.Resource
|
|
-- end
|
|
-- end
|
|
end
|
|
|
|
--从服务器获取相关数据
|
|
function XFubenResourceManager.InitFubenResourceData()
|
|
-- CurrentSectionData = {}
|
|
-- for _, data in pairs(stageMaps) do
|
|
-- local cfg = LevelSectionCfg[data.ConfigId]
|
|
-- local index = data.Index + 1
|
|
-- local typeId = cfg.Type
|
|
-- local localTable = {
|
|
-- Type = typeId,
|
|
-- Difficulty = cfg.DifficultyList[index],
|
|
-- ColorChallenge = cfg.ColorChallengeList[index],
|
|
-- ColorReward = cfg.ColorRewardList[index],
|
|
-- StageId = cfg.StageList[index],
|
|
-- LeftCount = data.LeftCount,
|
|
-- MaxCount = cfg.DaliyCount,
|
|
-- }
|
|
-- CurrentSectionData[typeId] = localTable
|
|
-- end
|
|
end
|
|
|
|
function XFubenResourceManager.CheckPreFight(stage)
|
|
local stageInfo = XDataCenter.FubenManager.GetStageInfo(stage.StageId)
|
|
local resourceData = XFubenResourceManager.GetSectionDataByTypeId(stageInfo.ResourceType)
|
|
if resourceData.LeftCount <= 0 then
|
|
local msg = CS.XTextManager.GetText("FubenChallengeCountNotEnough")
|
|
XUiManager.TipMsg(msg)
|
|
return false
|
|
end
|
|
return true
|
|
end
|
|
|
|
--更新资源副本剩余挑战次数
|
|
function XFubenResourceManager.FubenLeftCountUpdate(data)
|
|
CurrentSectionData[data.Type].LeftCount = data.LeftCount
|
|
end
|
|
|
|
--更新资源副本通关收益
|
|
function XFubenResourceManager.FubenRewardUpdate(data)
|
|
local maxRewards = {
|
|
[ResourceType.Coin] = data.CoinRewardNum,
|
|
[ResourceType.Skill] = data.SkillRewardNum,
|
|
}
|
|
if not TopRewardList then
|
|
TopRewardList = maxRewards
|
|
return
|
|
end
|
|
TempTopRewardList = maxRewards
|
|
end
|
|
|
|
--检查最高奖励是否有变化
|
|
function XFubenResourceManager.CheckRewradChange(typeId)
|
|
if not TempTopRewardList or not TempTopRewardList[typeId] then
|
|
return false
|
|
end
|
|
|
|
if not TopRewardList then
|
|
TopRewardList = {}
|
|
end
|
|
|
|
return TempTopRewardList[typeId] > (TopRewardList[typeId] or 0)
|
|
end
|
|
|
|
--将缓存数据更换到实际记录数据
|
|
function XFubenResourceManager.UpdateRewardFromTemp()
|
|
if TempTopRewardList then
|
|
TopRewardList = TempTopRewardList
|
|
end
|
|
TempTopRewardList = nil
|
|
end
|
|
|
|
--获取玩家上次的等级和当前的等级
|
|
function XFubenResourceManager.GetPlayerLevelInfo()
|
|
if not LastPlayerLevel then
|
|
InitPrefs()
|
|
end
|
|
local nowLevel = XPlayer.Level
|
|
local lastLevel = nil
|
|
if XPlayer.Level ~= LastPlayerLevel then
|
|
if XPlayer.Level > LastPlayerLevel then
|
|
lastLevel = LastPlayerLevel
|
|
else
|
|
XLog.Error("XFubenResourceManager.LastPlayerLevel is Wrong!")
|
|
end
|
|
LastPlayerLevel = XPlayer.Level
|
|
XSaveTool.SaveData(XPlayer.Id .. PREFS_LEVEL_KEY, LastPlayerLevel)
|
|
end
|
|
return nowLevel, lastLevel
|
|
end
|
|
|
|
function XFubenResourceManager.GetTopRewardByTypeId(typeId)
|
|
if TempTopRewardList and TempTopRewardList[typeId] then
|
|
return TempTopRewardList[typeId]
|
|
else
|
|
return TopRewardList[typeId] or 0
|
|
end
|
|
end
|
|
|
|
function XFubenResourceManager.GetResourceChapters()
|
|
return FubenResourceChapter
|
|
end
|
|
|
|
--获取资源副本数据
|
|
function XFubenResourceManager.GetSectionDatas()
|
|
return CurrentSectionData
|
|
end
|
|
|
|
--根据资源副本类型ID获取资源副本Cfg
|
|
function XFubenResourceManager.GetSectionDataByTypeId(typeId)
|
|
return CurrentSectionData[typeId]
|
|
end
|
|
|
|
function XFubenResourceManager.GetRemainingTime()
|
|
local timeNow = XTime.GetServerNowTimestamp()
|
|
if NextRefreshTime < timeNow then
|
|
return 0
|
|
end
|
|
return (NextRefreshTime - timeNow)
|
|
end
|
|
|
|
--服务端协议
|
|
function XFubenResourceManager.GetCurrentSectionData()
|
|
-- XNetwork.Call("ResourceStageDataRequest", nil, function(res)
|
|
-- if res.Code ~= XCode.Success then
|
|
-- XUiManager.TipCode(res.Code)
|
|
-- return
|
|
-- end
|
|
-- NextRefreshTime = res.NextRefreshTime
|
|
-- local stageMaps = {
|
|
-- [ResourceType.Coin] = res.CoinStageData;
|
|
-- [ResourceType.Skill] = res.SkillStageData;
|
|
-- }
|
|
-- XFubenResourceManager.InitFubenResourceData(stageMaps)
|
|
-- if callback then
|
|
-- callback(CurrentSectionData)
|
|
-- end
|
|
-- end)
|
|
end
|
|
|
|
XFubenResourceManager.Init()
|
|
return XFubenResourceManager
|
|
end
|
|
|
|
XRpc.NotifyResourceStageSingleData = function(data)
|
|
XDataCenter.FubenResourceManager.FubenLeftCountUpdate(data)
|
|
end
|
|
|
|
XRpc.NotifyResourceStageRewardIds = function(data)
|
|
XDataCenter.FubenResourceManager.FubenRewardUpdate(data)
|
|
end |