Update - 1.15.0.134
EN: 1.15.0.134 CN: 1.15.0.133 JP: 1.15.0.137 KR: 1.15.0.139
This commit is contained in:
@@ -5,6 +5,7 @@ function ActivityGroupDataBase:ctor(mapActGroupData)
|
||||
self.actGroupCfg = mapActGroupData
|
||||
self.bRedDot = false
|
||||
self.bBanner = false
|
||||
self.tbActivityEntranceState = {}
|
||||
self.nOpenTime = CS.ClientManager.Instance:ISO8601StrToTimeStamp(self.actGroupCfg.StartTime)
|
||||
self.nEndTime = CS.ClientManager.Instance:ISO8601StrToTimeStamp(self.actGroupCfg.EndTime)
|
||||
self.nEndEnterTime = CS.ClientManager.Instance:ISO8601StrToTimeStamp(self.actGroupCfg.EnterEndTime)
|
||||
@@ -110,4 +111,168 @@ end
|
||||
function ActivityGroupDataBase:IsActivityInActivityGroup(nActivityId)
|
||||
return false
|
||||
end
|
||||
local ActivityState = {
|
||||
NotOpen = 1,
|
||||
Open = 2,
|
||||
Closed = 3
|
||||
}
|
||||
function ActivityGroupDataBase:GetActivityDataByActivityId(nActivityId)
|
||||
if self.tbAllActivity == nil then
|
||||
return nil
|
||||
end
|
||||
for _, activity in pairs(self.tbAllActivity) do
|
||||
if activity.ActivityId == nActivityId then
|
||||
return activity
|
||||
end
|
||||
end
|
||||
end
|
||||
function ActivityGroupDataBase:GetActivityEntranceState(nActivityId)
|
||||
local activityData = ConfigTable.GetData("Activity", nActivityId)
|
||||
local state = ActivityState.NotOpen
|
||||
if activityData ~= nil then
|
||||
local curTime = CS.ClientManager.Instance.serverTimeStamp
|
||||
if activityData.StartTime ~= "" and activityData.EndTime ~= "" then
|
||||
local openTime = CS.ClientManager.Instance:ISO8601StrToTimeStamp(activityData.StartTime)
|
||||
local endTime = CS.ClientManager.Instance:ISO8601StrToTimeStamp(activityData.EndTime)
|
||||
if (activityData.ActivityType == GameEnum.activityType.Story or activityData.ActivityType == GameEnum.activityType.HistoryStory) and activityData.MidGroupId ~= nil and activityData.MidGroupId > 0 then
|
||||
local activityGroupData = ConfigTable.GetData("ActivityGroup", activityData.MidGroupId)
|
||||
if activityGroupData ~= nil and activityGroupData.StoryShowTime ~= nil and activityGroupData.StoryShowTime ~= "" then
|
||||
endTime = CS.ClientManager.Instance:ISO8601StrToTimeStamp(activityGroupData.StoryShowTime)
|
||||
end
|
||||
end
|
||||
if curTime < openTime then
|
||||
state = ActivityState.NotOpen
|
||||
elseif curTime >= openTime and curTime < endTime then
|
||||
state = ActivityState.Open
|
||||
else
|
||||
state = ActivityState.Closed
|
||||
end
|
||||
elseif activityData.EndType == GameEnum.activityEndType.NoLimit then
|
||||
state = ActivityState.Open
|
||||
if activityData.StartTime ~= "" then
|
||||
local openTime = CS.ClientManager.Instance:ISO8601StrToTimeStamp(activityData.StartTime)
|
||||
if curTime < openTime then
|
||||
state = ActivityState.NotOpen
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
self.tbActivityEntranceState[nActivityId] = state
|
||||
return state
|
||||
end
|
||||
function ActivityGroupDataBase:GetActivityEntranceTimerData(nActivityId)
|
||||
local activityData = ConfigTable.GetData("Activity", nActivityId)
|
||||
local state = self:GetActivityEntranceState(nActivityId)
|
||||
local bShowCountDown = false
|
||||
local openTime, endTime
|
||||
if activityData ~= nil and activityData.StartTime ~= "" and activityData.EndTime ~= "" then
|
||||
openTime = CS.ClientManager.Instance:ISO8601StrToTimeStamp(activityData.StartTime)
|
||||
endTime = CS.ClientManager.Instance:ISO8601StrToTimeStamp(activityData.EndTime)
|
||||
if (activityData.ActivityType == GameEnum.activityType.Story or activityData.ActivityType == GameEnum.activityType.HistoryStory) and activityData.MidGroupId ~= nil and activityData.MidGroupId > 0 then
|
||||
local activityGroupData = ConfigTable.GetData("ActivityGroup", activityData.MidGroupId)
|
||||
if activityGroupData ~= nil and activityGroupData.StoryShowTime ~= nil and activityGroupData.StoryShowTime ~= "" then
|
||||
endTime = CS.ClientManager.Instance:ISO8601StrToTimeStamp(activityGroupData.StoryShowTime)
|
||||
end
|
||||
end
|
||||
if state == ActivityState.Open then
|
||||
local curTime = CS.ClientManager.Instance.serverTimeStamp
|
||||
if endTime > self:GetActGroupEndTime() then
|
||||
bShowCountDown = true
|
||||
elseif endTime < self:GetActGroupEndTime() then
|
||||
bShowCountDown = endTime - curTime <= 259200
|
||||
end
|
||||
end
|
||||
end
|
||||
return state, bShowCountDown, openTime, endTime
|
||||
end
|
||||
function ActivityGroupDataBase:GetActivityEntranceStateTip(state)
|
||||
if state == ActivityState.Closed then
|
||||
return ConfigTable.GetUIText("Activity_End_Notice")
|
||||
elseif state == ActivityState.NotOpen then
|
||||
return ConfigTable.GetUIText("Activity_Not_Open")
|
||||
end
|
||||
return ""
|
||||
end
|
||||
function ActivityGroupDataBase:CheckActivityEntranceOpen(nActivityId, nPanelId, bShowTips, bRequiredActData)
|
||||
local actData = self:GetActivityDataByActivityId(nActivityId)
|
||||
if actData == nil or nPanelId ~= nil and actData.PanelId ~= nil and actData.PanelId ~= nPanelId then
|
||||
local sTips = ConfigTable.GetUIText("Activity_Not_Open")
|
||||
if bShowTips then
|
||||
EventManager.Hit(EventId.OpenMessageBox, sTips)
|
||||
end
|
||||
return false, ActivityState.NotOpen, sTips, false
|
||||
end
|
||||
local bUnlock, sUnlockTip = self:IsUnlock()
|
||||
if not bUnlock then
|
||||
if bShowTips then
|
||||
EventManager.Hit(EventId.OpenMessageBox, sUnlockTip or "")
|
||||
end
|
||||
return false, ActivityState.NotOpen, sUnlockTip or "", false
|
||||
end
|
||||
if not self:CheckActGroupShow() then
|
||||
local sTips = ConfigTable.GetUIText("Activity_End_Notice")
|
||||
if bShowTips then
|
||||
EventManager.Hit(EventId.OpenMessageBox, sTips)
|
||||
end
|
||||
return false, ActivityState.Closed, sTips, false
|
||||
end
|
||||
local state = self:GetActivityEntranceState(nActivityId)
|
||||
if state ~= ActivityState.Open then
|
||||
local sTips = self:GetActivityEntranceStateTip(state)
|
||||
if bShowTips then
|
||||
EventManager.Hit(EventId.OpenMessageBox, sTips)
|
||||
end
|
||||
return false, state, sTips, false
|
||||
end
|
||||
local activityData = PlayerData.Activity:GetActivityDataById(nActivityId)
|
||||
if activityData == nil then
|
||||
local bHint = true
|
||||
if actData.Index == AllEnum.ActivityThemeFuncIndex.Story then
|
||||
bHint = not PlayerData.ActivityAvg:HasActivityData(nActivityId)
|
||||
end
|
||||
if bHint then
|
||||
local sTips = ConfigTable.GetUIText(bRequiredActData and "Activity_Data_Refreshing" or "Activity_Not_Open")
|
||||
if bShowTips then
|
||||
EventManager.Hit(EventId.OpenMessageBox, sTips)
|
||||
end
|
||||
return false, state, sTips, not bRequiredActData
|
||||
end
|
||||
elseif type(activityData.CheckActJumpCond) == "function" then
|
||||
local bCanJump, sTips = activityData:CheckActJumpCond(bShowTips)
|
||||
if not bCanJump then
|
||||
return false, state, sTips, false
|
||||
end
|
||||
end
|
||||
return true, state, "", false
|
||||
end
|
||||
function ActivityGroupDataBase:OnOpenMiniGameEntrance(actData)
|
||||
end
|
||||
function ActivityGroupDataBase:OpenActivityEntrance(nActivityId, nPanelId, nMiniGameTransitionId)
|
||||
local actData = self:GetActivityDataByActivityId(nActivityId)
|
||||
if actData == nil then
|
||||
return
|
||||
end
|
||||
nPanelId = nPanelId or actData.PanelId
|
||||
if nPanelId == nil then
|
||||
return
|
||||
end
|
||||
if actData.Index == AllEnum.ActivityThemeFuncIndex.MiniGame then
|
||||
self:OnOpenMiniGameEntrance(actData)
|
||||
if nMiniGameTransitionId ~= nil and 0 < nMiniGameTransitionId then
|
||||
EventManager.Hit(EventId.SetTransition, nMiniGameTransitionId, function()
|
||||
EventManager.Hit(EventId.OpenPanel, nPanelId, nActivityId, self.nActGroupId)
|
||||
end)
|
||||
else
|
||||
EventManager.Hit(EventId.OpenPanel, nPanelId, nActivityId, self.nActGroupId)
|
||||
end
|
||||
return
|
||||
end
|
||||
if self.actGroupCfg.TransitionId ~= nil and 0 < self.actGroupCfg.TransitionId then
|
||||
EventManager.Hit(EventId.SetTransition, self.actGroupCfg.TransitionId, function()
|
||||
EventManager.Hit(EventId.OpenPanel, nPanelId, nActivityId)
|
||||
end)
|
||||
else
|
||||
EventManager.Hit(EventId.OpenPanel, nPanelId, nActivityId)
|
||||
end
|
||||
end
|
||||
return ActivityGroupDataBase
|
||||
|
||||
@@ -10,14 +10,34 @@ function AdvertiseActData:InitConfig()
|
||||
end
|
||||
function AdvertiseActData:RefreshInfinityTowerActData(msgData)
|
||||
end
|
||||
function AdvertiseActData:GetActSortId()
|
||||
function AdvertiseActData:CheckHideFromActList()
|
||||
if self.bIsMove and self:isFinishAllTasks() then
|
||||
return 9999
|
||||
else
|
||||
return self.actCfg.SortId
|
||||
return true
|
||||
end
|
||||
if self.actCfg ~= nil then
|
||||
return self.actCfg.HideFromActivityList
|
||||
end
|
||||
return true
|
||||
end
|
||||
function AdvertiseActData:CheckShowBanner()
|
||||
if self.bIsMove and self:isFinishAllTasks() then
|
||||
return false
|
||||
end
|
||||
return self:CheckActPlay() and self.actCfg.BannerRes ~= "" and self.bBanner == false
|
||||
end
|
||||
function AdvertiseActData:isFinishAllTasks()
|
||||
local nTotalCount, nReceivedCount = PlayerData.TutorialData:GetProgress()
|
||||
local bHasReceiveAllGroup = PlayerData.Quest:CheckTourGroupReward(PlayerData.Quest:GetMaxTourGroupOrderIndex())
|
||||
local nAttrQuestCount = #PlayerData.Quest.tbTeamFormationAttr or 1
|
||||
local nAttrReceivedCount, nAttrTotalCount = 0, 0
|
||||
for i = 1, nAttrQuestCount do
|
||||
local nThisReceivedCount, nThisTotalCount = PlayerData.Quest:GetTeamFormationAttributeProgress(i)
|
||||
nAttrReceivedCount = nAttrReceivedCount + nThisReceivedCount
|
||||
nAttrTotalCount = nAttrTotalCount + nThisTotalCount
|
||||
end
|
||||
if bHasReceiveAllGroup and nTotalCount == nReceivedCount and nAttrReceivedCount == nAttrTotalCount then
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
return AdvertiseActData
|
||||
|
||||
@@ -323,7 +323,7 @@ function BreakOutData:RequestFinishLevel(arrayData, cb)
|
||||
cb()
|
||||
end
|
||||
end
|
||||
EventManager.Hit(EventId.ClosePanel, PanelId.BreakOutLevelDetailPanelS3)
|
||||
EventManager.Hit(EventId.ClosePanel, PanelId.BreakOutLevelDetailPanelS4)
|
||||
HttpNetHandler.SendMsg(NetMsgId.Id.milkout_settle_req, mapMsg, nil, failCallback)
|
||||
return
|
||||
end
|
||||
@@ -336,7 +336,7 @@ function BreakOutData:RequestFinishLevel(arrayData, cb)
|
||||
FirstComplete = arrayData.Win
|
||||
})
|
||||
end
|
||||
EventManager.Hit(EventId.ClosePanel, PanelId.BreakOutLevelDetailPanelS3)
|
||||
EventManager.Hit(EventId.ClosePanel, PanelId.BreakOutLevelDetailPanelS4)
|
||||
HttpNetHandler.SendMsg(NetMsgId.Id.milkout_settle_req, mapMsg, nil, successCallback)
|
||||
end
|
||||
function BreakOutData:CreateTempData(nLevelId, bResult)
|
||||
@@ -390,7 +390,7 @@ function BreakOutData:ShowActivityClosedAlert()
|
||||
EventManager.Hit(EventId.OpenMessageBox, msg)
|
||||
end
|
||||
function BreakOutData:ForceExitOnFinishFail()
|
||||
EventManager.Hit(EventId.ClosePanel, PanelId.BreakOutPlayPanelS3)
|
||||
EventManager.Hit(EventId.ClosePanel, PanelId.BreakOutLevelDetailPanelS3)
|
||||
EventManager.Hit(EventId.ClosePanel, PanelId.BreakOutPlayPanelS4)
|
||||
EventManager.Hit(EventId.ClosePanel, PanelId.BreakOutLevelDetailPanelS4)
|
||||
end
|
||||
return BreakOutData
|
||||
|
||||
@@ -106,7 +106,7 @@ function BreakOutLevelData:GetIsFinishGame()
|
||||
return self.bIsFinishGame
|
||||
end
|
||||
function BreakOutLevelData:OnEvent_AdventureModuleEnter()
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.BreakOutPlayPanelS3, self.nActId, self.nLevelId, self.nCharacterNid)
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.BreakOutPlayPanelS4, self.nActId, self.nLevelId, self.nCharacterNid)
|
||||
end
|
||||
function BreakOutLevelData:GetFloorHasDic(nFloorId)
|
||||
local bResult = true
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
local ActivityGroupDataBase = require("GameCore.Data.DataClass.Activity.ActivityGroupDataBase")
|
||||
local LocalData = require("GameCore.Data.LocalData")
|
||||
local CultivationManual_10111Data = class("CultivationManual_10111Data", ActivityGroupDataBase)
|
||||
function CultivationManual_10111Data:Init()
|
||||
self.tbAllActivity = {}
|
||||
self.nCGActivityId = 0
|
||||
self.sCGPath = ""
|
||||
self.bPlayedCG = false
|
||||
self:ParseActivity()
|
||||
end
|
||||
function CultivationManual_10111Data:ParseActivity()
|
||||
if self.actGroupConfig == nil then
|
||||
self.actGroupConfig = ConfigTable.GetData("ActivityGroup", self.nActGroupId)
|
||||
end
|
||||
if self.actGroupConfig == nil then
|
||||
printError("ActivityGroup config not found for id: " .. tostring(self.nActGroupId))
|
||||
return
|
||||
end
|
||||
local sJson = self.actGroupConfig.Enter
|
||||
local tbJson = decodeJson(sJson)
|
||||
if tbJson == nil then
|
||||
printError("ActivityGroup Enter json is nil for id: " .. tostring(self.nActGroupId))
|
||||
end
|
||||
for _, activity in pairs(tbJson) do
|
||||
local data = {
|
||||
ActivityId = activity[1],
|
||||
Index = activity[2],
|
||||
PanelId = activity[3]
|
||||
}
|
||||
table.insert(self.tbAllActivity, data)
|
||||
end
|
||||
local sCgJson = self.actGroupConfig.CG
|
||||
if sCgJson ~= nil then
|
||||
local tbCGJson = decodeJson(sCgJson)
|
||||
if tbCGJson and 2 <= #tbCGJson then
|
||||
self.nCGActivityId = tonumber(tbCGJson[1])
|
||||
self.sCGPath = tbCGJson[2]
|
||||
end
|
||||
end
|
||||
end
|
||||
function CultivationManual_10111Data:GetActivityDataByIndex(nIndex)
|
||||
for _, activity in pairs(self.tbAllActivity) do
|
||||
if activity.Index == nIndex then
|
||||
return activity
|
||||
end
|
||||
end
|
||||
end
|
||||
function CultivationManual_10111Data:PlayCG()
|
||||
self:SendMsg_CG_READ(self.nCGActivityId)
|
||||
end
|
||||
function CultivationManual_10111Data:GetActivityGroupCGPlayed()
|
||||
if self.bPlayedCG then
|
||||
return true
|
||||
end
|
||||
return PlayerData.Activity:IsCGPlayed(self.nCGActivityId)
|
||||
end
|
||||
function CultivationManual_10111Data:IsActivityInActivityGroup(nActivityId)
|
||||
for _, activity in pairs(self.tbAllActivity) do
|
||||
if activity.ActivityId == nActivityId then
|
||||
return true, self.nActGroupId
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
function CultivationManual_10111Data:OnOpenMiniGameEntrance(actData)
|
||||
LocalData.SetPlayerLocalData("Activity_MiniGame_10111_New", true)
|
||||
RedDotManager.SetValid(RedDotDefine.Activity_GroupNew_MiniGame, {
|
||||
actData.ActivityId
|
||||
}, false)
|
||||
end
|
||||
function CultivationManual_10111Data:SendMsg_CG_READ(nActivityId)
|
||||
local Callback = function()
|
||||
self.bPlayedCG = true
|
||||
end
|
||||
HttpNetHandler.SendMsg(NetMsgId.Id.activity_cg_read_req, {nActivityId}, nil, Callback)
|
||||
end
|
||||
return CultivationManual_10111Data
|
||||
@@ -5,6 +5,7 @@ function LoginRewardActData:Init()
|
||||
self.nActual = 0
|
||||
self.tbRewardList = {}
|
||||
self.loginRewardActCfg = nil
|
||||
self.bIsMove = false
|
||||
self:InitRewardList()
|
||||
end
|
||||
function LoginRewardActData:InitRewardList()
|
||||
@@ -22,6 +23,7 @@ function LoginRewardActData:InitRewardList()
|
||||
return a.Order < b.Order
|
||||
end)
|
||||
self.tbRewardList = tbRewardList
|
||||
self.bIsMove = self.loginRewardActCfg.IsMove or false
|
||||
end
|
||||
function LoginRewardActData:RefreshLoginData(nReceive, nActual)
|
||||
self.nCanReceives = nReceive
|
||||
@@ -54,4 +56,11 @@ end
|
||||
function LoginRewardActData:GetLoginRewardControlCfg()
|
||||
return self.loginRewardActCfg
|
||||
end
|
||||
function LoginRewardActData:GetActSortId()
|
||||
if self.bIsMove and not self:CheckCanReceive() then
|
||||
return 9999
|
||||
else
|
||||
return self.actCfg.SortId
|
||||
end
|
||||
end
|
||||
return LoginRewardActData
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
local ActivityGroupDataBase = require("GameCore.Data.DataClass.Activity.ActivityGroupDataBase")
|
||||
local LocalData = require("GameCore.Data.LocalData")
|
||||
local LongestDay_10112Data = class("LongestDay_10112Data", ActivityGroupDataBase)
|
||||
function LongestDay_10112Data:Init()
|
||||
self.tbAllActivity = {}
|
||||
self.nCGActivityId = 0
|
||||
self.sCGPath = ""
|
||||
self.bPlayedCG = false
|
||||
self:ParseActivity()
|
||||
end
|
||||
function LongestDay_10112Data:ParseActivity()
|
||||
if self.actGroupConfig == nil then
|
||||
self.actGroupConfig = ConfigTable.GetData("ActivityGroup", self.nActGroupId)
|
||||
end
|
||||
if self.actGroupConfig == nil then
|
||||
printError("ActivityGroup config not found for id: " .. tostring(self.nActGroupId))
|
||||
return
|
||||
end
|
||||
local sJson = self.actGroupConfig.Enter
|
||||
local tbJson = decodeJson(sJson)
|
||||
if tbJson == nil then
|
||||
printError("ActivityGroup Enter json is nil for id: " .. tostring(self.nActGroupId))
|
||||
end
|
||||
for _, activity in pairs(tbJson) do
|
||||
local data = {
|
||||
ActivityId = activity[1],
|
||||
Index = activity[2],
|
||||
PanelId = activity[3]
|
||||
}
|
||||
table.insert(self.tbAllActivity, data)
|
||||
end
|
||||
local sCgJson = self.actGroupConfig.CG
|
||||
if sCgJson ~= nil then
|
||||
local tbCGJson = decodeJson(sCgJson)
|
||||
if tbCGJson and 2 <= #tbCGJson then
|
||||
self.nCGActivityId = tonumber(tbCGJson[1])
|
||||
self.sCGPath = tbCGJson[2]
|
||||
end
|
||||
end
|
||||
end
|
||||
function LongestDay_10112Data:GetActivityDataByIndex(nIndex)
|
||||
for _, activity in pairs(self.tbAllActivity) do
|
||||
if activity.Index == nIndex then
|
||||
return activity
|
||||
end
|
||||
end
|
||||
end
|
||||
function LongestDay_10112Data:PlayCG()
|
||||
self:SendMsg_CG_READ(self.nCGActivityId)
|
||||
end
|
||||
function LongestDay_10112Data:GetActivityGroupCGPlayed()
|
||||
if self.bPlayedCG then
|
||||
return true
|
||||
end
|
||||
return PlayerData.Activity:IsCGPlayed(self.nCGActivityId)
|
||||
end
|
||||
function LongestDay_10112Data:IsActivityInActivityGroup(nActivityId)
|
||||
for _, activity in pairs(self.tbAllActivity) do
|
||||
if activity.ActivityId == nActivityId then
|
||||
return true, self.nActGroupId
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
function LongestDay_10112Data:OnOpenMiniGameEntrance(actData)
|
||||
LocalData.SetPlayerLocalData("Activity_MiniGame_10112_New", true)
|
||||
RedDotManager.SetValid(RedDotDefine.Activity_GroupNew_MiniGame, {
|
||||
actData.ActivityId
|
||||
}, false)
|
||||
end
|
||||
function LongestDay_10112Data:SendMsg_CG_READ(nActivityId)
|
||||
local Callback = function()
|
||||
self.bPlayedCG = true
|
||||
end
|
||||
HttpNetHandler.SendMsg(NetMsgId.Id.activity_cg_read_req, {nActivityId}, nil, Callback)
|
||||
end
|
||||
return LongestDay_10112Data
|
||||
@@ -1,7 +1,8 @@
|
||||
local ActivityDataBase = require("GameCore.Data.DataClass.Activity.ActivityDataBase")
|
||||
local PenguinCardActData = class("PenguinCardActData", ActivityDataBase)
|
||||
local LocalData = require("GameCore.Data.LocalData")
|
||||
local PenguinLevel = require("Game.UI.Play_PenguinCard.NormalMode.PenguinLevel_Normal")
|
||||
local PenguinLevel_Normal = require("Game.UI.Play_PenguinCard.NormalMode.PenguinLevel_Normal")
|
||||
local PenguinLevel_Endless = require("Game.UI.Play_PenguinCard.EndlessMode.PenguinLevel_Endless")
|
||||
local ClientManager = CS.ClientManager.Instance
|
||||
local RapidJson = require("rapidjson")
|
||||
function PenguinCardActData:Init()
|
||||
@@ -147,7 +148,9 @@ function PenguinCardActData:CacheLevelData(tbLevel)
|
||||
for _, v in ipairs(tbLevel) do
|
||||
self.mapLevelData[v.Id] = {
|
||||
nScore = v.Score,
|
||||
nStar = v.Star
|
||||
nStar = v.Star,
|
||||
nDifficulty = v.Difficulty,
|
||||
sData = v.Data
|
||||
}
|
||||
end
|
||||
self:RefreshLevelRedDot()
|
||||
@@ -184,7 +187,12 @@ function PenguinCardActData:CheckLevelLockByPrev(nLevelId)
|
||||
return true
|
||||
end
|
||||
function PenguinCardActData:GetLevelData(nId)
|
||||
return self.mapLevelData[nId] or {nScore = 0, nStar = 0}
|
||||
return self.mapLevelData[nId] or {
|
||||
nScore = 0,
|
||||
nStar = 0,
|
||||
nDifficulty = 0,
|
||||
sData = ""
|
||||
}
|
||||
end
|
||||
function PenguinCardActData:GetLevelStartTime(nLevelId)
|
||||
local mapCfg = ConfigTable.GetData("ActivityPenguinCardLevel", nLevelId)
|
||||
@@ -208,8 +216,22 @@ function PenguinCardActData:EnterLevel(nLevelId)
|
||||
if not mapCfg then
|
||||
return
|
||||
end
|
||||
local LevelData = PenguinLevel.new()
|
||||
LevelData:Init(mapCfg.FloorId, nLevelId, self.nActId, mapCfg.StarScore)
|
||||
local mapLevelData = self:GetLevelData(nLevelId)
|
||||
if mapCfg.Type == GameEnum.ActivityPenguinCardLevelType.Endless then
|
||||
local LevelData = PenguinLevel_Endless.new()
|
||||
LevelData:Init(mapCfg.FloorId, nLevelId, self.nActId, mapCfg.StarScore, mapLevelData.sData)
|
||||
elseif mapCfg.Type == GameEnum.ActivityPenguinCardLevelType.Normal then
|
||||
local LevelData = PenguinLevel_Normal.new()
|
||||
LevelData:Init(mapCfg.FloorId, nLevelId, self.nActId, mapCfg.StarScore)
|
||||
end
|
||||
end
|
||||
function PenguinCardActData:GetLevelDataBySave(sData)
|
||||
if sData == "" then
|
||||
return 0, 0, 0
|
||||
end
|
||||
local sAll = NovaAPIHotfix.DecompressString(sData)
|
||||
local mapData = RapidJson.decode(sAll)
|
||||
return mapData.nCacheStar, mapData.nCacheScore, mapData.nEndlessLevel
|
||||
end
|
||||
function PenguinCardActData:RefreshQuestRedDot(nId)
|
||||
local mapCfg = ConfigTable.GetData("ActivityPenguinCardQuest", nId)
|
||||
@@ -260,15 +282,28 @@ function PenguinCardActData:SkipLevelRedDot()
|
||||
end
|
||||
LocalData.SetPlayerLocalData("PenguinCardLevel", RapidJson.encode(self.tbSkipNewLevel))
|
||||
end
|
||||
function PenguinCardActData:SendActivityPenguinCardSettleReq(nLevelId, nStar, nScore, callback)
|
||||
function PenguinCardActData:SendActivityPenguinCardSettleReq(nLevelId, nStar, nScore, nDifficulty, callback)
|
||||
nScore = math.floor(nScore)
|
||||
local msgData = {
|
||||
LevelId = nLevelId,
|
||||
Star = nStar,
|
||||
Score = math.floor(nScore)
|
||||
Score = math.floor(nScore),
|
||||
Difficulty = nDifficulty
|
||||
}
|
||||
local successCallback = function(_, mapMainData)
|
||||
if not self.mapLevelData[nLevelId] or self.mapLevelData[nLevelId] and nScore > self.mapLevelData[nLevelId].nScore then
|
||||
self.mapLevelData[nLevelId] = {nScore = nScore, nStar = nStar}
|
||||
local bEmpty = self.mapLevelData[nLevelId] == nil
|
||||
local bBetterDifficulty = not bEmpty and nDifficulty > self.mapLevelData[nLevelId].nDifficulty
|
||||
local bBetterScore = not bEmpty and nDifficulty == self.mapLevelData[nLevelId].nDifficulty and nScore > self.mapLevelData[nLevelId].nScore
|
||||
if not bEmpty then
|
||||
self.mapLevelData[nLevelId].sData = ""
|
||||
end
|
||||
if bEmpty or bBetterDifficulty or bBetterScore then
|
||||
self.mapLevelData[nLevelId] = {
|
||||
nScore = nScore,
|
||||
nStar = nStar,
|
||||
nDifficulty = nDifficulty,
|
||||
sData = ""
|
||||
}
|
||||
end
|
||||
local mapReward = PlayerData.Item:ProcessRewardChangeInfo(mapMainData)
|
||||
local tbItem = {}
|
||||
@@ -311,4 +346,17 @@ function PenguinCardActData:SendActivityPenguinCardQuestReceiveReq(nQuestId, nGr
|
||||
end
|
||||
HttpNetHandler.SendMsg(NetMsgId.Id.activity_penguin_card_quest_reward_receive_req, msgData, nil, successCallback)
|
||||
end
|
||||
function PenguinCardActData:SendActivityPenguinCardEndlessLevelSaveReq(nLevelId, nScore, sData, callback)
|
||||
local msgData = {
|
||||
LevelId = nLevelId,
|
||||
Data = sData,
|
||||
Score = nScore
|
||||
}
|
||||
local successCallback = function(_, mapMainData)
|
||||
if callback then
|
||||
callback()
|
||||
end
|
||||
end
|
||||
HttpNetHandler.SendMsg(NetMsgId.Id.activity_penguin_card_endless_level_save_req, msgData, nil, successCallback)
|
||||
end
|
||||
return PenguinCardActData
|
||||
|
||||
@@ -33,11 +33,13 @@ local PenguinCardActData = require("GameCore.Data.DataClass.Activity.PenguinCard
|
||||
local GoldenSpyData = require("GameCore.Data.DataClass.Activity.GoldenSpyData")
|
||||
local Solodance_20102Data = require("GameCore.Data.DataClass.Activity.Solodance_20102Data")
|
||||
local SwimTheme_11100Data = require("GameCore.Data.DataClass.Activity.SwimTheme_11100Data")
|
||||
local CultivationManual_10111Data = require("GameCore.Data.DataClass.Activity.CultivationManual_10111Data")
|
||||
local DoubleDropsActData = require("GameCore.Data.DataClass.Activity.DoubleDropsActData")
|
||||
local FollowSocialMediaData = require("GameCore.Data.DataClass.Activity.FollowSocialMediaData")
|
||||
local Summer_20103Data = require("GameCore.Data.DataClass.Activity.Summer_20103Data")
|
||||
local IceCreamActData = require("GameCore.Data.DataClass.Activity.IceCreamActData")
|
||||
local SoldierActData = require("GameCore.Data.DataClass.Activity.SoldierActData")
|
||||
local LongestDay_10112Data = require("GameCore.Data.DataClass.Activity.LongestDay_10112Data")
|
||||
function PlayerActivityData:Init()
|
||||
self.bCacheActData = false
|
||||
self.tbAllActivity = {}
|
||||
@@ -356,7 +358,7 @@ function PlayerActivityData:CreateActivityGroupIns(actData)
|
||||
actIns = OurRegiment_10101Data.new(actData)
|
||||
elseif actCfg.ActivityThemeType == GameEnum.activityThemeType.Dream_10102 then
|
||||
actIns = Dream_10102Data.new(actData)
|
||||
elseif actCfg.ActivityThemeType == GameEnum.activityThemeType.BreakOut_30101 or actCfg.ActivityThemeType == GameEnum.activityThemeType.BreakOut_30102 or actCfg.ActivityThemeType == GameEnum.activityThemeType.BreakOut_30103 then
|
||||
elseif actCfg.ActivityThemeType == GameEnum.activityThemeType.BreakOut_30101 or actCfg.ActivityThemeType == GameEnum.activityThemeType.BreakOut_30102 or actCfg.ActivityThemeType == GameEnum.activityThemeType.BreakOut_30103 or actCfg.ActivityThemeType == GameEnum.activityThemeType.BreakOut_30104 then
|
||||
actIns = BreakOut_30101Data.new(actData)
|
||||
elseif actCfg.ActivityThemeType == GameEnum.activityThemeType.Christmas_20101 then
|
||||
actIns = Christmas_20101Data.new(actData)
|
||||
@@ -382,6 +384,10 @@ function PlayerActivityData:CreateActivityGroupIns(actData)
|
||||
actIns = Summer_10110Data.new(actData)
|
||||
elseif actCfg.ActivityThemeType == GameEnum.activityThemeType.Summer_20103 then
|
||||
actIns = Summer_20103Data.new(actData)
|
||||
elseif actCfg.ActivityThemeType == GameEnum.activityThemeType.CultivationManual_10111 then
|
||||
actIns = CultivationManual_10111Data.new(actData)
|
||||
elseif actCfg.ActivityThemeType == GameEnum.activityThemeType.LongestDay_10112 then
|
||||
actIns = LongestDay_10112Data.new(actData)
|
||||
end
|
||||
self.tbAllActivityGroup[actData.Id] = actIns
|
||||
PlayerData.ActivityAvg:RefreshAvgRedDot()
|
||||
@@ -429,6 +435,16 @@ end
|
||||
function PlayerActivityData:GetActivityGroupDataById(nActGroupId)
|
||||
return self.tbAllActivityGroup[nActGroupId]
|
||||
end
|
||||
function PlayerActivityData:GetActivityGroupDataByActivityId(nActId)
|
||||
local bInGroup, nActGroupId = self:IsActivityInActivityGroup(nActId)
|
||||
if bInGroup and nActGroupId ~= nil then
|
||||
return self:GetActivityGroupDataById(nActGroupId)
|
||||
end
|
||||
local activityCfg = ConfigTable.GetData("Activity", nActId)
|
||||
if activityCfg ~= nil and activityCfg.MidGroupId ~= nil and activityCfg.MidGroupId > 0 then
|
||||
return self:GetActivityGroupDataById(activityCfg.MidGroupId)
|
||||
end
|
||||
end
|
||||
function PlayerActivityData:GetMainviewShowActivityGroup()
|
||||
local tbShowList = {}
|
||||
for _, actGroupData in pairs(self.tbAllActivityGroup) do
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
local ActivityDataBase = require("GameCore.Data.DataClass.Activity.ActivityDataBase")
|
||||
local ReengagementData = class("ReengagementData", ActivityDataBase)
|
||||
local LocalData = require("GameCore.Data.LocalData")
|
||||
local RedDotManager = require("GameCore.RedDot.RedDotManager")
|
||||
function ReengagementData:Init()
|
||||
self:InitData()
|
||||
end
|
||||
function ReengagementData:InitData()
|
||||
end
|
||||
function ReengagementData:CheckCanReceive()
|
||||
return true
|
||||
end
|
||||
function ReengagementData:GetQuestListByGroup()
|
||||
return {}
|
||||
end
|
||||
function ReengagementData:GetActCfgData()
|
||||
return {}
|
||||
end
|
||||
function ReengagementData:GetWeeklyCardData()
|
||||
return {}
|
||||
end
|
||||
function ReengagementData:GetActLoginRewardList()
|
||||
return {}
|
||||
end
|
||||
return ReengagementData
|
||||
@@ -61,6 +61,9 @@ function TowerDefenseLevelData:AddPotential(nCharacterId, nPotentialId)
|
||||
end
|
||||
safe_call_cs_func(CS.AdventureModuleHelper.ChangePersonalPerkIds, {stPerkInfo}, nCharacterId, bChange)
|
||||
table.insert(self.tbCharacterData[nCharacterId].tbPotentialList, nPotentialId)
|
||||
table.sort(self.tbCharacterData[nCharacterId].tbPotentialList, function(a, b)
|
||||
return a < b
|
||||
end)
|
||||
end
|
||||
function TowerDefenseLevelData:RefreshCharSkillCd(nCharacterId, nCD)
|
||||
if self.tbCharacterData[nCharacterId] == nil then
|
||||
@@ -98,6 +101,32 @@ function TowerDefenseLevelData:GetCharacterData(nCharacterId)
|
||||
end
|
||||
return self.tbCharacterData[nCharacterId]
|
||||
end
|
||||
function TowerDefenseLevelData:RemoveCharacterPotential(nCharacterId, nLevel)
|
||||
if self.tbCharacterData[nCharacterId] == nil then
|
||||
return
|
||||
end
|
||||
local potentialList = self.tbCharacterData[nCharacterId].tbPotentialList
|
||||
local cfg = ConfigTable.GetData("TowerDefenseCharacter", nCharacterId)
|
||||
if cfg == nil then
|
||||
return
|
||||
end
|
||||
local removePotentialList = cfg["NewPotential" .. tostring(nLevel)]
|
||||
local nRemovePotentialId = 0
|
||||
for _, nPotentialId in ipairs(removePotentialList) do
|
||||
local nIndex = table.indexof(potentialList, nPotentialId)
|
||||
if 0 < nIndex then
|
||||
nRemovePotentialId = nPotentialId
|
||||
table.remove(potentialList, nIndex)
|
||||
break
|
||||
end
|
||||
end
|
||||
if 0 < nRemovePotentialId then
|
||||
local stPerkInfo = CS.Lua2CSharpInfo_TPPerkInfo()
|
||||
stPerkInfo.perkId = nRemovePotentialId
|
||||
stPerkInfo.nCount = -1
|
||||
safe_call_cs_func(CS.AdventureModuleHelper.ChangePersonalPerkIds, {stPerkInfo}, nCharacterId, true)
|
||||
end
|
||||
end
|
||||
function TowerDefenseLevelData:OnEvent_UnloadComplete()
|
||||
if not self.bRestart then
|
||||
NovaAPI.EnterModule("MainMenuModuleScene", true)
|
||||
|
||||
@@ -47,6 +47,7 @@ function AvgData:Init()
|
||||
local y, n = true, false
|
||||
self.__data = {
|
||||
[0] = {
|
||||
n,
|
||||
n,
|
||||
n,
|
||||
n
|
||||
@@ -54,34 +55,89 @@ function AvgData:Init()
|
||||
[1] = {
|
||||
y,
|
||||
n,
|
||||
n,
|
||||
n
|
||||
},
|
||||
[2] = {
|
||||
n,
|
||||
y,
|
||||
n,
|
||||
n
|
||||
},
|
||||
[3] = {
|
||||
y,
|
||||
y,
|
||||
n,
|
||||
n
|
||||
},
|
||||
[4] = {
|
||||
n,
|
||||
n,
|
||||
y
|
||||
y,
|
||||
n
|
||||
},
|
||||
[5] = {
|
||||
y,
|
||||
n,
|
||||
y
|
||||
y,
|
||||
n
|
||||
},
|
||||
[6] = {
|
||||
n,
|
||||
y,
|
||||
y
|
||||
y,
|
||||
n
|
||||
},
|
||||
[7] = {
|
||||
y,
|
||||
y,
|
||||
y,
|
||||
n
|
||||
},
|
||||
[8] = {
|
||||
n,
|
||||
n,
|
||||
n,
|
||||
y
|
||||
},
|
||||
[9] = {
|
||||
y,
|
||||
n,
|
||||
n,
|
||||
y
|
||||
},
|
||||
[10] = {
|
||||
n,
|
||||
y,
|
||||
n,
|
||||
y
|
||||
},
|
||||
[11] = {
|
||||
y,
|
||||
y,
|
||||
n,
|
||||
y
|
||||
},
|
||||
[12] = {
|
||||
n,
|
||||
n,
|
||||
y,
|
||||
y
|
||||
},
|
||||
[13] = {
|
||||
y,
|
||||
n,
|
||||
y,
|
||||
y
|
||||
},
|
||||
[14] = {
|
||||
n,
|
||||
y,
|
||||
y,
|
||||
y
|
||||
},
|
||||
[15] = {
|
||||
y,
|
||||
y,
|
||||
y,
|
||||
y
|
||||
@@ -603,17 +659,13 @@ function AvgData:CalcPersonality(nId)
|
||||
for i, v in ipairs(tbPData) do
|
||||
tbPData[i].nPercent = tbPData[i].nCount / nTotalCount
|
||||
end
|
||||
local tbRetPercent = {
|
||||
tbPData[1].nPercent,
|
||||
tbPData[2].nPercent,
|
||||
tbPData[3].nPercent
|
||||
}
|
||||
local sTitle, sFace, sHead
|
||||
table.sort(tbPData, function(a, b)
|
||||
return a.nCount > b.nCount
|
||||
end)
|
||||
local nMaxIndex = tbPData[1].nIndex
|
||||
local nMaxPercent = tbPData[1].nPercent
|
||||
local nIdx = nMaxIndex
|
||||
if 0.9 <= nMaxPercent then
|
||||
local tbTitle = {
|
||||
cfgData_SRP.Amax,
|
||||
@@ -652,42 +704,41 @@ function AvgData:CalcPersonality(nId)
|
||||
sTitle = tbTitle[nMaxIndex]
|
||||
sFace = tbFace[nMaxIndex]
|
||||
sHead = tbHead[nMaxIndex]
|
||||
nIdx = nIdx + 3
|
||||
elseif math.abs(tbPData[2].nPercent - tbPData[3].nPercent) < 0.1 then
|
||||
sTitle = cfgData_SRP.Normal
|
||||
sFace = cfgData_SRP.NormalFace
|
||||
sHead = cfgData_SRP.NormalHead
|
||||
nIdx = 10
|
||||
else
|
||||
local tbTitleFace = {
|
||||
{
|
||||
tbIdxs = {1, 2},
|
||||
[1] = {
|
||||
sTitle = cfgData_SRP.Ab,
|
||||
sFace = cfgData_SRP.AbFace,
|
||||
sHead = cfgData_SRP.AbHead
|
||||
},
|
||||
{
|
||||
tbIdxs = {1, 3},
|
||||
[2] = {
|
||||
sTitle = cfgData_SRP.Ac,
|
||||
sFace = cfgData_SRP.AcFace,
|
||||
sHead = cfgData_SRP.AcHead
|
||||
},
|
||||
{
|
||||
tbIdxs = {2, 3},
|
||||
[3] = {
|
||||
sTitle = cfgData_SRP.Bc,
|
||||
sFace = cfgData_SRP.BcFace,
|
||||
sHead = cfgData_SRP.BcHead
|
||||
}
|
||||
}
|
||||
local nBiggerIndex = tbPData[2].nIndex
|
||||
for i, v in ipairs(tbTitleFace) do
|
||||
if 0 < table.indexof(v.tbIdxs, nMaxIndex) and 0 < table.indexof(v.tbIdxs, nBiggerIndex) then
|
||||
sTitle = v.sTitle
|
||||
sFace = v.sFace
|
||||
sHead = v.sHead
|
||||
break
|
||||
end
|
||||
end
|
||||
local data = tbTitleFace[nMaxIndex]
|
||||
sTitle = data.sTitle
|
||||
sFace = data.sFace
|
||||
sHead = data.sHead
|
||||
nIdx = nMaxIndex + 6
|
||||
end
|
||||
return tbRetPercent, sTitle, sFace, tbPData, nTotalCount, sHead
|
||||
local tbRetPercent = {}
|
||||
for i, v in ipairs(tbPData) do
|
||||
tbRetPercent[v.nIndex] = v.nPercent
|
||||
end
|
||||
return tbRetPercent, sTitle, sFace, tbPData, nTotalCount, sHead, nIdx
|
||||
end
|
||||
function AvgData:SetSelBuildId(nBuildId)
|
||||
self.selBuildId = nBuildId
|
||||
@@ -857,6 +908,8 @@ function AvgData:SendMsg_STORY_DONE(callBack, tbBattleEvents)
|
||||
n = 2
|
||||
elseif nChoiceIndex == 3 then
|
||||
n = 4
|
||||
elseif nChoiceIndex == 4 then
|
||||
n = 8
|
||||
end
|
||||
table.insert(mapSendMsgData.List[i].Major, {
|
||||
Group = nGroupId,
|
||||
@@ -950,6 +1003,8 @@ function AvgData:SendMsg_STORY_DONE(callBack, tbBattleEvents)
|
||||
n = 2
|
||||
elseif nChoiceIndex == 3 then
|
||||
n = 4
|
||||
elseif nChoiceIndex == 4 then
|
||||
n = 8
|
||||
end
|
||||
local nCur = self.mapChosen[sAvgId][nGroupId]
|
||||
self.mapChosen[sAvgId][nGroupId] = nCur | n
|
||||
|
||||
@@ -106,7 +106,7 @@ function EquipmentData:UpdateRandomAttr(mapAttrs, tbCount)
|
||||
if 0 < v then
|
||||
local mapCfg = ConfigTable.GetData("CharGemAttrValue", v)
|
||||
if mapCfg then
|
||||
if tbCount and 0 < tbCount[k] then
|
||||
if tbCount and tbCount[k] and 0 < tbCount[k] then
|
||||
local nId = mapCfg.TypeId * 100 + tbCount[k] + mapCfg.Level
|
||||
local mapAfterCfg = ConfigTable.GetData("CharGemAttrValue", nId)
|
||||
add(mapAfterCfg, nId)
|
||||
|
||||
@@ -0,0 +1,381 @@
|
||||
local EventReminderData = class("EventReminderData")
|
||||
function EventReminderData:ctor()
|
||||
end
|
||||
function EventReminderData:Init()
|
||||
self.nAddStarTowerTicket = 0
|
||||
self:InitData()
|
||||
self:AddListeners()
|
||||
end
|
||||
function EventReminderData:InitData()
|
||||
self.tbEventReminderData = {}
|
||||
local foreachTable = function(data)
|
||||
self.tbEventReminderData[data.ModuleType] = {
|
||||
nId = data.Id,
|
||||
nType = data.ModuleType,
|
||||
bFinish = false,
|
||||
bUnlock = false,
|
||||
tbProgressData = nil,
|
||||
tbCusParam = nil
|
||||
}
|
||||
end
|
||||
ForEachTableLine(DataTable.EventReminder, foreachTable)
|
||||
end
|
||||
function EventReminderData:UpdateAllData()
|
||||
self:UpdateWeeklyCopies()
|
||||
self:UpdateVampire()
|
||||
self:UpdateScoreBoss()
|
||||
self:UpdateStarTower()
|
||||
self:UpdateTraceHunt()
|
||||
self:RefreshRedDot()
|
||||
end
|
||||
function EventReminderData:CacheAddStarTowerTicket(nTowerTicket)
|
||||
self.nAddStarTowerTicket = nTowerTicket
|
||||
end
|
||||
function EventReminderData:AddListeners()
|
||||
EventManager.Add(EventId.IsNewDay, self, self.OnEvent_NewDay)
|
||||
EventManager.Add(EventId.EventReminder_Update, self, self.OnEvent_EventReminder_Update)
|
||||
EventManager.Add(EventId.CoinResChange, self, self.OnEvent_CoinResChange)
|
||||
EventManager.Add(EventId.OpenPanel, self, self.OnEvent_OpenPanel)
|
||||
EventManager.Add(EventId.UpdateWorldClass, self, self.OnEvent_UpdateWorldClass)
|
||||
end
|
||||
function EventReminderData:RemoveListeners()
|
||||
end
|
||||
function EventReminderData:GetMinRemainTime()
|
||||
return self.nMinRemainTime
|
||||
end
|
||||
function EventReminderData:GetEventReminderDataList()
|
||||
local tbTempEventReminderDataList = {}
|
||||
local tbEventReminderDataList = {}
|
||||
local tbFinishList = {}
|
||||
for _, v in pairs(self.tbEventReminderData) do
|
||||
if v.bFinish then
|
||||
table.insert(tbFinishList, v)
|
||||
else
|
||||
local nSort = 1
|
||||
local nEndTime = PlayerData.EventReminder:GetEndTime(v.nType)
|
||||
local nRemainTime = nEndTime - CS.ClientManager.Instance.serverTimeStamp
|
||||
if 0 < nRemainTime then
|
||||
local cfg = ConfigTable.GetData("EventReminder", v.nId)
|
||||
if cfg ~= nil then
|
||||
if nRemainTime >= cfg.LimitDay2 * 86400 then
|
||||
nSort = 1
|
||||
elseif nRemainTime >= cfg.LimitDay * 86400 then
|
||||
nSort = 2
|
||||
else
|
||||
nSort = 3
|
||||
end
|
||||
end
|
||||
end
|
||||
table.insert(tbTempEventReminderDataList, {data = v, nSort = nSort})
|
||||
end
|
||||
end
|
||||
table.sort(tbTempEventReminderDataList, function(a, b)
|
||||
if a.nSort == b.nSort then
|
||||
return a.data.nId < b.data.nId
|
||||
end
|
||||
return a.nSort > b.nSort
|
||||
end)
|
||||
for _, v in ipairs(tbTempEventReminderDataList) do
|
||||
table.insert(tbEventReminderDataList, v.data)
|
||||
end
|
||||
table.sort(tbFinishList, function(a, b)
|
||||
return a.nId < b.nId
|
||||
end)
|
||||
return tbEventReminderDataList, tbFinishList
|
||||
end
|
||||
function EventReminderData:GetEventReminderLockTips(nType)
|
||||
local openFuncCfg
|
||||
if nType == GameEnum.EventReminderType.WeeklyCopies then
|
||||
openFuncCfg = ConfigTable.GetData("OpenFunc", GameEnum.OpenFuncType.WeeklyCopies)
|
||||
elseif nType == GameEnum.EventReminderType.Vampire then
|
||||
openFuncCfg = ConfigTable.GetData("OpenFunc", GameEnum.OpenFuncType.VampireSurvivor)
|
||||
elseif nType == GameEnum.EventReminderType.ScoreBoss then
|
||||
openFuncCfg = ConfigTable.GetData("OpenFunc", GameEnum.OpenFuncType.ScoreBoss)
|
||||
elseif nType == GameEnum.EventReminderType.StarTower then
|
||||
openFuncCfg = ConfigTable.GetData("OpenFunc", GameEnum.OpenFuncType.StarTower)
|
||||
elseif nType == GameEnum.EventReminderType.TraceHunt then
|
||||
openFuncCfg = ConfigTable.GetData("OpenFunc", GameEnum.OpenFuncType.TraceHunt)
|
||||
end
|
||||
if openFuncCfg == nil then
|
||||
return ""
|
||||
end
|
||||
return orderedFormat(openFuncCfg.Tips, "", openFuncCfg.NeedWorldClass)
|
||||
end
|
||||
function EventReminderData:JumpToOpenFunc(nType)
|
||||
if nType == GameEnum.EventReminderType.WeeklyCopies then
|
||||
elseif nType == GameEnum.EventReminderType.Vampire then
|
||||
elseif nType == GameEnum.EventReminderType.ScoreBoss then
|
||||
elseif nType == GameEnum.EventReminderType.StarTower then
|
||||
elseif nType == GameEnum.EventReminderType.TraceHunt then
|
||||
end
|
||||
end
|
||||
function EventReminderData:UpdateWeeklyCopies()
|
||||
local bPlayCond = PlayerData.Base:CheckFunctionUnlock(GameEnum.OpenFuncType.WeeklyCopies, false)
|
||||
self.tbEventReminderData[GameEnum.EventReminderType.WeeklyCopies].bUnlock = bPlayCond
|
||||
if not bPlayCond then
|
||||
return
|
||||
end
|
||||
local nRemainTicket = PlayerData.Item:GetItemCountByID(AllEnum.CoinItemId.RogueHardCoreTick)
|
||||
local nMaxTicket = ConfigTable.GetConfigNumber("RegionBossChallengeTicker")
|
||||
self.tbEventReminderData[GameEnum.EventReminderType.WeeklyCopies].bFinish = nRemainTicket <= 0
|
||||
local tbProgressData = {nCur = nRemainTicket, nMax = nMaxTicket}
|
||||
self.tbEventReminderData[GameEnum.EventReminderType.WeeklyCopies].tbProgressData = tbProgressData
|
||||
end
|
||||
function EventReminderData:UpdateVampire()
|
||||
local bPlayCond = PlayerData.Base:CheckFunctionUnlock(GameEnum.OpenFuncType.VampireSurvivor, false)
|
||||
self.tbEventReminderData[GameEnum.EventReminderType.Vampire].bUnlock = bPlayCond
|
||||
if not bPlayCond then
|
||||
return
|
||||
end
|
||||
local nCurSeasonId, nLevelId = PlayerData.VampireSurvivor:GetCurSeason()
|
||||
local bSeasonUnlocked = nCurSeasonId ~= 0
|
||||
self.tbEventReminderData[GameEnum.EventReminderType.Vampire].tbCusParam = {}
|
||||
local tbCusParam = self.tbEventReminderData[GameEnum.EventReminderType.Vampire].tbCusParam
|
||||
tbCusParam.bSeasonUnlock = bSeasonUnlocked
|
||||
tbCusParam.nSeason = nCurSeasonId
|
||||
if not bSeasonUnlocked then
|
||||
self.tbEventReminderData[GameEnum.EventReminderType.Vampire].bFinish = true
|
||||
return
|
||||
end
|
||||
local tbHardUnlock = PlayerData.VampireSurvivor:GetHardUnlock()
|
||||
tbCusParam.bHardUnlock = tbHardUnlock[3]
|
||||
if tbHardUnlock[3] == false then
|
||||
return
|
||||
end
|
||||
local cur, total = PlayerData.VampireSurvivor:GetSeasonQuestCount(GameEnum.vampireSurvivorType.Turn)
|
||||
self.tbEventReminderData[GameEnum.EventReminderType.Vampire].bFinish = total <= cur
|
||||
local tbProgressData = {nCur = cur, nMax = total}
|
||||
self.tbEventReminderData[GameEnum.EventReminderType.Vampire].tbProgressData = tbProgressData
|
||||
tbCusParam.bHardUnlock = tbHardUnlock[3]
|
||||
tbCusParam.nSeason = nCurSeasonId
|
||||
end
|
||||
function EventReminderData:UpdateScoreBoss()
|
||||
local bPlayCond = PlayerData.Base:CheckFunctionUnlock(GameEnum.OpenFuncType.ScoreBoss, false)
|
||||
self.tbEventReminderData[GameEnum.EventReminderType.ScoreBoss].bUnlock = bPlayCond
|
||||
if not bPlayCond then
|
||||
return
|
||||
end
|
||||
local openScoreBossCallback = function()
|
||||
local tbCusParam = {}
|
||||
self.tbEventReminderData[GameEnum.EventReminderType.ScoreBoss].tbCusParam = tbCusParam
|
||||
if PlayerData.ScoreBoss.EndTime ~= 0 and PlayerData.ScoreBoss.EndTime > CS.ClientManager.Instance.serverTimeStamp and PlayerData.ScoreBoss.isGetScInfo then
|
||||
tbCusParam.bSettlement = false
|
||||
else
|
||||
tbCusParam.bSettlement = true
|
||||
self.tbEventReminderData[GameEnum.EventReminderType.ScoreBoss].bFinish = true
|
||||
return
|
||||
end
|
||||
local nSeasonId = PlayerData.ScoreBoss.ControlId
|
||||
if nSeasonId ~= 0 then
|
||||
local tbProgressData = {
|
||||
nCur = PlayerData.ScoreBoss.Star,
|
||||
nMax = PlayerData.ScoreBoss.maxStarNeed
|
||||
}
|
||||
self.tbEventReminderData[GameEnum.EventReminderType.ScoreBoss].bFinish = PlayerData.ScoreBoss.Star >= PlayerData.ScoreBoss.maxStarNeed
|
||||
self.tbEventReminderData[GameEnum.EventReminderType.ScoreBoss].tbProgressData = tbProgressData
|
||||
tbCusParam.nSeason = nSeasonId
|
||||
end
|
||||
end
|
||||
if not PlayerData.ScoreBoss:GetInitInfoState() then
|
||||
PlayerData.ScoreBoss:GetScoreBossInstanceData(openScoreBossCallback)
|
||||
else
|
||||
openScoreBossCallback()
|
||||
end
|
||||
end
|
||||
function EventReminderData:UpdateStarTower()
|
||||
local bPlayCond = true
|
||||
self.tbEventReminderData[GameEnum.EventReminderType.StarTower].bUnlock = bPlayCond
|
||||
if not bPlayCond then
|
||||
return
|
||||
end
|
||||
if not PlayerData.StarTower.nFirstGrowthGroup then
|
||||
local nWorldClass = PlayerData.Base:GetWorldClass()
|
||||
local worldClassCfg = ConfigTable.GetData("WorldClass", nWorldClass, true)
|
||||
if not worldClassCfg then
|
||||
return
|
||||
end
|
||||
local nLimit = worldClassCfg.RewardLimit + self.nAddStarTowerTicket
|
||||
local nCur = PlayerData.StarTower:GetStarTowerTicket()
|
||||
local tbProgressData = {nCur = nCur, nMax = nLimit}
|
||||
self.tbEventReminderData[GameEnum.EventReminderType.StarTower].bFinish = nLimit <= nCur
|
||||
self.tbEventReminderData[GameEnum.EventReminderType.StarTower].tbProgressData = tbProgressData
|
||||
else
|
||||
local nLimit = PlayerData.StarTower:GetStarTowerRewardLimit()
|
||||
local nCur = PlayerData.StarTower:GetStarTowerTicket()
|
||||
local tbProgressData = {nCur = nCur, nMax = nLimit}
|
||||
self.tbEventReminderData[GameEnum.EventReminderType.StarTower].bFinish = nLimit <= nCur
|
||||
self.tbEventReminderData[GameEnum.EventReminderType.StarTower].tbProgressData = tbProgressData
|
||||
end
|
||||
end
|
||||
function EventReminderData:UpdateTraceHunt()
|
||||
local bPlayCond = PlayerData.Base:CheckFunctionUnlock(GameEnum.OpenFuncType.TraceHunt, false)
|
||||
self.tbEventReminderData[GameEnum.EventReminderType.TraceHunt].bUnlock = bPlayCond
|
||||
if not bPlayCond then
|
||||
return
|
||||
end
|
||||
local tbMax = ConfigTable.GetConfigArray("TraceHuntRequestItem")
|
||||
local nHasCoin = PlayerData.TraceHunt:GetTraceTokenCount()
|
||||
local tbProgressData = {
|
||||
nCur = nHasCoin,
|
||||
nMax = tbMax[3]
|
||||
}
|
||||
local bFinish = nHasCoin <= 10
|
||||
local nEndTime = self:GetTraceHuntEndTime()
|
||||
local nRemainTime = nEndTime - CS.ClientManager.Instance.serverTimeStamp
|
||||
if 0 < nRemainTime then
|
||||
local cfg = ConfigTable.GetData("EventReminder", self.tbEventReminderData[GameEnum.EventReminderType.TraceHunt].nId)
|
||||
if cfg ~= nil and nRemainTime <= cfg.LimitDay * 86400 and 0 < nHasCoin then
|
||||
bFinish = false
|
||||
end
|
||||
end
|
||||
self.tbEventReminderData[GameEnum.EventReminderType.TraceHunt].bFinish = bFinish
|
||||
self.tbEventReminderData[GameEnum.EventReminderType.TraceHunt].tbProgressData = tbProgressData
|
||||
end
|
||||
function EventReminderData:GetEndTime(nType)
|
||||
if nType == GameEnum.EventReminderType.WeeklyCopies then
|
||||
return self:GetWeeklyCopiesEndTime()
|
||||
end
|
||||
if nType == GameEnum.EventReminderType.Vampire then
|
||||
return self:GetVampireEndTime()
|
||||
end
|
||||
if nType == GameEnum.EventReminderType.ScoreBoss then
|
||||
return self:GetScoreBossEndTime()
|
||||
end
|
||||
if nType == GameEnum.EventReminderType.StarTower then
|
||||
return self:GetStarTowerEndTime()
|
||||
end
|
||||
if nType == GameEnum.EventReminderType.TraceHunt then
|
||||
return self:GetTraceHuntEndTime()
|
||||
end
|
||||
return 0
|
||||
end
|
||||
function EventReminderData:GetWeeklyCopiesEndTime()
|
||||
local bPlayCond = PlayerData.Base:CheckFunctionUnlock(GameEnum.OpenFuncType.WeeklyCopies, false)
|
||||
if not bPlayCond then
|
||||
return 0
|
||||
end
|
||||
return GetNextWeekRefreshTime()
|
||||
end
|
||||
function EventReminderData:GetVampireEndTime()
|
||||
local bPlayCond = PlayerData.Base:CheckFunctionUnlock(GameEnum.OpenFuncType.VampireSurvivor, false)
|
||||
if not bPlayCond then
|
||||
return 0
|
||||
end
|
||||
local nCurSeasonId, nLevelId = PlayerData.VampireSurvivor:GetCurSeason()
|
||||
local bSeasonUnlocked = nCurSeasonId ~= 0
|
||||
if not bSeasonUnlocked then
|
||||
return 0
|
||||
end
|
||||
local tbHardUnlock = PlayerData.VampireSurvivor:GetHardUnlock()
|
||||
if tbHardUnlock[3] == false then
|
||||
return 0
|
||||
end
|
||||
local nSeasonId = PlayerData.VampireSurvivor:GetCurSeason()
|
||||
if nSeasonId ~= 0 then
|
||||
local mapSeasonCfgData = ConfigTable.GetData("VampireRankSeason", nSeasonId)
|
||||
if mapSeasonCfgData ~= nil then
|
||||
local nEndTime = CS.ClientManager.Instance:ISO8601StrToTimeStamp(mapSeasonCfgData.EndTime)
|
||||
if nEndTime > CS.ClientManager.Instance.serverTimeStamp then
|
||||
return nEndTime
|
||||
end
|
||||
end
|
||||
end
|
||||
return 0
|
||||
end
|
||||
function EventReminderData:GetScoreBossEndTime()
|
||||
local bPlayCond = PlayerData.Base:CheckFunctionUnlock(GameEnum.OpenFuncType.ScoreBoss, false)
|
||||
if not bPlayCond then
|
||||
return 0
|
||||
end
|
||||
if PlayerData.ScoreBoss.EndTime ~= 0 and PlayerData.ScoreBoss.EndTime > CS.ClientManager.Instance.serverTimeStamp and PlayerData.ScoreBoss.isGetScInfo then
|
||||
return PlayerData.ScoreBoss.EndTime
|
||||
end
|
||||
return 0
|
||||
end
|
||||
function EventReminderData:GetStarTowerEndTime()
|
||||
return GetNextWeekRefreshTime()
|
||||
end
|
||||
function EventReminderData:GetTraceHuntEndTime()
|
||||
local bPlayCond = PlayerData.Base:CheckFunctionUnlock(GameEnum.OpenFuncType.TraceHunt, false)
|
||||
if not bPlayCond then
|
||||
return 0
|
||||
end
|
||||
local nSeasonId = PlayerData.TraceHunt:GetCurControlId()
|
||||
if nSeasonId == 0 then
|
||||
local nCurTime = CS.ClientManager.Instance.serverTimeStamp
|
||||
local nTempEndTime = 0
|
||||
local foreachTable = function(data)
|
||||
local nStartTime = CS.ClientManager.Instance:ISO8601StrToTimeStamp(data.StartTime)
|
||||
local nEndTime = CS.ClientManager.Instance:ISO8601StrToTimeStamp(data.EndTime)
|
||||
if nStartTime <= nCurTime and nEndTime >= nCurTime then
|
||||
nTempEndTime = nEndTime
|
||||
return
|
||||
end
|
||||
end
|
||||
ForEachTableLine(DataTable.TraceHuntControl, foreachTable)
|
||||
return nTempEndTime
|
||||
end
|
||||
return PlayerData.TraceHunt:GetControlLeftTime() + CS.ClientManager.Instance.serverTimeStamp
|
||||
end
|
||||
function EventReminderData:RefreshRedDot()
|
||||
self.nMinRemainTime = nil
|
||||
for _, v in pairs(self.tbEventReminderData) do
|
||||
if v.bUnlock and not v.bFinish then
|
||||
local cfgData = ConfigTable.GetData("EventReminder", v.nId)
|
||||
if cfgData ~= nil then
|
||||
local nEndTime = self:GetEndTime(v.nType)
|
||||
local nCurTime = CS.ClientManager.Instance.serverTimeStamp
|
||||
local nRemainTime = nEndTime - nCurTime
|
||||
if 0 < nRemainTime and nRemainTime <= cfgData.LimitDay * 86400 then
|
||||
if self.nMinRemainTime == nil then
|
||||
self.nMinRemainTime = nRemainTime
|
||||
else
|
||||
self.nMinRemainTime = math.min(self.nMinRemainTime, nRemainTime)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
if self.nMinRemainTime ~= nil then
|
||||
RedDotManager.SetValid(RedDotDefine.EventReminder, {}, true)
|
||||
else
|
||||
RedDotManager.SetValid(RedDotDefine.EventReminder, {}, false)
|
||||
end
|
||||
end
|
||||
function EventReminderData:OnEvent_NewDay()
|
||||
self:InitData()
|
||||
self:UpdateAllData()
|
||||
end
|
||||
function EventReminderData:OnEvent_EventReminder_Update(nType)
|
||||
if nType == GameEnum.EventReminderType.WeeklyCopies then
|
||||
self:UpdateWeeklyCopies()
|
||||
elseif nType == GameEnum.EventReminderType.Vampire then
|
||||
self:UpdateVampire()
|
||||
elseif nType == GameEnum.EventReminderType.ScoreBoss then
|
||||
self:UpdateScoreBoss()
|
||||
elseif nType == GameEnum.EventReminderType.StarTower then
|
||||
self:UpdateStarTower()
|
||||
elseif nType == GameEnum.EventReminderType.TraceHunt then
|
||||
self:UpdateTraceHunt()
|
||||
else
|
||||
return
|
||||
end
|
||||
self:RefreshRedDot()
|
||||
end
|
||||
function EventReminderData:OnEvent_CoinResChange(nTid, nQty)
|
||||
if nTid == AllEnum.CoinItemId.RogueHardCoreTick then
|
||||
self:UpdateWeeklyCopies()
|
||||
end
|
||||
if nTid == AllEnum.CoinItemId.FRRewardCurrency then
|
||||
self:UpdateStarTower()
|
||||
end
|
||||
end
|
||||
function EventReminderData:OnEvent_OpenPanel(nPanelId)
|
||||
if nPanelId == PanelId.MainView then
|
||||
self:UpdateAllData()
|
||||
end
|
||||
end
|
||||
function EventReminderData:OnEvent_UpdateWorldClass()
|
||||
self:UpdateAllData()
|
||||
end
|
||||
return EventReminderData
|
||||
@@ -1089,7 +1089,6 @@ function PlayerBaseData:SendEnergyInfoReq()
|
||||
end
|
||||
EventManager.Hit(EventId.UpdateEnergyBattery)
|
||||
EventManager.Hit(EventId.UpdateEnergy)
|
||||
printLog("Lua PlayerBaseData OnCS2LuaEvent_AppFocus, Get APP Focus, curEnergy: " .. tostring(self._nCurEnergy) .. ", curEnergyBattery: " .. tostring(self._nCurEnergyBattery))
|
||||
end
|
||||
end
|
||||
HttpNetHandler.SendMsg(NetMsgId.Id.energy_info_req, {}, nil, callback)
|
||||
@@ -1312,7 +1311,6 @@ function PlayerBaseData:OnCS2LuaEvent_AppFocus(bFocus)
|
||||
self.nRequestEnergyLimitTime = nNextTime
|
||||
self.nLastEnergy = self._nCurEnergy
|
||||
self.nLastEnergyBattery = self._nCurEnergyBattery
|
||||
printLog("Lua PlayerBaseData OnCS2LuaEvent_AppFocus, Lose APP Focus, nCachedTime: " .. tostring(self.nCachedTime) .. ", nRequestEnergyLimitTime: " .. tostring(self.nRequestEnergyLimitTime) .. ", nLastEnergy: " .. tostring(self.nLastEnergy) .. ", nLastEnergyBattery: " .. tostring(self.nLastEnergyBattery))
|
||||
end
|
||||
end
|
||||
function PlayerBaseData:OnEvent_SettingsNotificationClose()
|
||||
|
||||
@@ -299,6 +299,41 @@ function PlayerBattlePassData:GetRefreshTime()
|
||||
end
|
||||
return sTimeStr
|
||||
end
|
||||
function PlayerBattlePassData:GetCurrentSeasonIdFromConfig()
|
||||
local nCurTime = CS.ClientManager.Instance.serverTimeStamp
|
||||
local nSeasonId = 0
|
||||
local forEach = function(mapData)
|
||||
if mapData.StartTime ~= nil and mapData.EndTime ~= nil then
|
||||
local nStart = CS.ClientManager.Instance:ISO8601StrToTimeStamp(mapData.StartTime)
|
||||
local nEnd = CS.ClientManager.Instance:ISO8601StrToTimeStamp(mapData.EndTime)
|
||||
if nStart <= nCurTime and nEnd > nCurTime then
|
||||
nSeasonId = mapData.ID
|
||||
end
|
||||
end
|
||||
end
|
||||
ForEachTableLine(DataTable.BattlePass, forEach)
|
||||
return nSeasonId
|
||||
end
|
||||
function PlayerBattlePassData:GetRemainTime()
|
||||
local nSeasonId = self.nSeasonId
|
||||
if nSeasonId == 0 then
|
||||
nSeasonId = self:GetCurrentSeasonIdFromConfig()
|
||||
if nSeasonId == 0 then
|
||||
return 0
|
||||
end
|
||||
end
|
||||
local mapSeasonCfgData = ConfigTable.GetData("BattlePass", nSeasonId)
|
||||
if mapSeasonCfgData == nil then
|
||||
return 0
|
||||
end
|
||||
local nEndTime = CS.ClientManager.Instance:ISO8601StrToTimeStamp(mapSeasonCfgData.EndTime)
|
||||
local curTime = CS.ClientManager.Instance.serverTimeStamp
|
||||
local nRemainTime = nEndTime - curTime
|
||||
if nRemainTime < 0 then
|
||||
return 0
|
||||
end
|
||||
return nRemainTime
|
||||
end
|
||||
function PlayerBattlePassData:GetHasBattlePass()
|
||||
if self.hasData then
|
||||
return self.nSeasonId > 0
|
||||
|
||||
@@ -4,6 +4,8 @@ local PlayerBuildData = class("PlayerBuildData")
|
||||
local newDayTime = UTILS.GetDayRefreshTimeOffset()
|
||||
function PlayerBuildData:Init()
|
||||
self._MapBuildData = {}
|
||||
self._MapLimitedTrialBuildData = {}
|
||||
self._tbLimitedTrialBuildId = {}
|
||||
self.hasData = false
|
||||
self:InitBuildRank()
|
||||
end
|
||||
@@ -18,12 +20,67 @@ end
|
||||
function PlayerBuildData:GetBuildRank()
|
||||
return self._tbBuildRank
|
||||
end
|
||||
function PlayerBuildData:GetBuildData(nBuildId)
|
||||
if nBuildId == nil then
|
||||
return nil
|
||||
end
|
||||
if self._MapBuildData[nBuildId] ~= nil then
|
||||
return self._MapBuildData[nBuildId]
|
||||
end
|
||||
if self._MapLimitedTrialBuildData[nBuildId] ~= nil then
|
||||
return self._MapLimitedTrialBuildData[nBuildId]
|
||||
end
|
||||
if self._mapTrialBuild ~= nil and self._mapTrialBuild.nBuildId == nBuildId then
|
||||
return self._mapTrialBuild
|
||||
end
|
||||
end
|
||||
function PlayerBuildData:GetBuildSourceByData(mapBuildData)
|
||||
return mapBuildData and mapBuildData.nBuildSource or AllEnum.BuildSource.Normal
|
||||
end
|
||||
function PlayerBuildData:GetBuildSource(nBuildId)
|
||||
return self:GetBuildSourceByData(self:GetBuildData(nBuildId))
|
||||
end
|
||||
function PlayerBuildData:IsTrialBuild(nBuildId)
|
||||
return self:GetBuildSource(nBuildId) == AllEnum.BuildSource.Trial
|
||||
end
|
||||
function PlayerBuildData:IsLimitedTrialBuild(nBuildId)
|
||||
return self:GetBuildSource(nBuildId) == AllEnum.BuildSource.LimitedTrial
|
||||
end
|
||||
function PlayerBuildData:IsUseTrialRuntime(nBuildId)
|
||||
local nSource = self:GetBuildSource(nBuildId)
|
||||
return nSource == AllEnum.BuildSource.Trial or nSource == AllEnum.BuildSource.LimitedTrial
|
||||
end
|
||||
function PlayerBuildData:IsBuildEditable(nBuildId)
|
||||
return self:GetBuildSource(nBuildId) == AllEnum.BuildSource.Normal
|
||||
end
|
||||
function PlayerBuildData:FilterEditableBuildIds(tbBuildId)
|
||||
local tbRet = {}
|
||||
if type(tbBuildId) ~= "table" then
|
||||
return tbRet
|
||||
end
|
||||
for _, nBuildId in ipairs(tbBuildId) do
|
||||
if self:IsBuildEditable(nBuildId) then
|
||||
table.insert(tbRet, nBuildId)
|
||||
end
|
||||
end
|
||||
return tbRet
|
||||
end
|
||||
function PlayerBuildData:IsLimitedTrialBuildActivityOpen()
|
||||
return false
|
||||
end
|
||||
function PlayerBuildData:IsLimitedTrialBuildAllowedType(nType)
|
||||
if nType == AllEnum.RegionBossFormationType.ScoreBoss or nType == AllEnum.RegionBossFormationType.ScoreBoss_GM or nType == AllEnum.RegionBossFormationType.JointDrill or nType == AllEnum.RegionBossFormationType.JointDrill_2 then
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
function PlayerBuildData:CreateBuildBriefData(mapBuildBriefMsg)
|
||||
if nil ~= self._MapBuildData[mapBuildBriefMsg.Id] then
|
||||
printLog(string.format("编队信息重复!!!id= [%s]", mapBuildBriefMsg.Id))
|
||||
end
|
||||
local mapBuildData = {
|
||||
nBuildId = mapBuildBriefMsg.Id,
|
||||
nBuildSource = AllEnum.BuildSource.Normal,
|
||||
sName = mapBuildBriefMsg.Name,
|
||||
tbChar = {},
|
||||
nScore = mapBuildBriefMsg.Score,
|
||||
@@ -92,6 +149,13 @@ function PlayerBuildData:GetBuildCount(callback)
|
||||
return true
|
||||
end
|
||||
function PlayerBuildData:GetBuildDetailData(callback, nBuildId)
|
||||
local mapBuildData = self:GetBuildData(nBuildId)
|
||||
if mapBuildData ~= nil and self:GetBuildSourceByData(mapBuildData) ~= AllEnum.BuildSource.Normal then
|
||||
if callback then
|
||||
callback(mapBuildData)
|
||||
end
|
||||
return true
|
||||
end
|
||||
if self._MapBuildData[nBuildId] == nil then
|
||||
if self.hasData then
|
||||
printWarn("没有该id的build,大概率已被分解:" .. nBuildId)
|
||||
@@ -114,12 +178,31 @@ function PlayerBuildData:GetBuildDetailData(callback, nBuildId)
|
||||
return true
|
||||
end
|
||||
function PlayerBuildData:ChangeBuildName(nBuildId, sName, callback)
|
||||
if not self:IsBuildEditable(nBuildId) then
|
||||
if callback then
|
||||
callback()
|
||||
end
|
||||
return
|
||||
end
|
||||
self:NetMsg_ChangeBuildName(nBuildId, sName, callback)
|
||||
end
|
||||
function PlayerBuildData:ChangeBuildLock(nBuildId, bLock, callback)
|
||||
if not self:IsBuildEditable(nBuildId) then
|
||||
if callback then
|
||||
callback()
|
||||
end
|
||||
return
|
||||
end
|
||||
self:NetMsg_ChangeBuildLock(nBuildId, bLock, callback)
|
||||
end
|
||||
function PlayerBuildData:DeleteBuild(tbBuildId, callback, cbClose)
|
||||
tbBuildId = self:FilterEditableBuildIds(tbBuildId)
|
||||
if #tbBuildId == 0 then
|
||||
if callback then
|
||||
callback()
|
||||
end
|
||||
return
|
||||
end
|
||||
self:NetMsg_BuildDelete(tbBuildId, callback, cbClose)
|
||||
end
|
||||
function PlayerBuildData:DeleteBuildByActivity(tbBuildId)
|
||||
@@ -128,17 +211,73 @@ function PlayerBuildData:DeleteBuildByActivity(tbBuildId)
|
||||
end
|
||||
end
|
||||
function PlayerBuildData:SetBuildPreference(tbCheckInIds, tbCheckOutIds, callback)
|
||||
tbCheckInIds = self:FilterEditableBuildIds(tbCheckInIds)
|
||||
tbCheckOutIds = self:FilterEditableBuildIds(tbCheckOutIds)
|
||||
if #tbCheckInIds == 0 and #tbCheckOutIds == 0 then
|
||||
if callback then
|
||||
callback()
|
||||
end
|
||||
return
|
||||
end
|
||||
self:NetMsg_BuildPreference(tbCheckInIds, tbCheckOutIds, callback)
|
||||
end
|
||||
function PlayerBuildData:SaveBuild(nBuildID, bDelete, bLock, bPreference, sName, callback)
|
||||
if not self:IsBuildEditable(nBuildID) then
|
||||
if callback then
|
||||
callback()
|
||||
end
|
||||
return
|
||||
end
|
||||
self:NetMsg_SaveBuild(nBuildID, bDelete, bLock, bPreference, sName, callback)
|
||||
end
|
||||
function PlayerBuildData:CheckHasBuild()
|
||||
return next(self._MapBuildData) ~= nil
|
||||
end
|
||||
function PlayerBuildData:CalBuildCharacterAttrBattle(nBuildId, nCharId, nTrialId, stActorInfo, bMainChar, tbDiscId)
|
||||
local nSource = self:GetBuildSource(nBuildId)
|
||||
if nSource == AllEnum.BuildSource.LimitedTrial then
|
||||
return PlayerData.Char:CalCharacterLimitedTrialAttrBattle(nTrialId, stActorInfo, bMainChar, tbDiscId, nBuildId)
|
||||
elseif nSource == AllEnum.BuildSource.Trial then
|
||||
return PlayerData.Char:CalCharacterTrialAttrBattle(nTrialId, stActorInfo, bMainChar, tbDiscId, nBuildId)
|
||||
end
|
||||
return PlayerData.Char:CalCharacterAttrBattle(nCharId, stActorInfo, bMainChar, tbDiscId, nBuildId)
|
||||
end
|
||||
function PlayerBuildData:GetBuildDiscInfoInBuild(nBuildId, nDiscId, tbSecondarySkill)
|
||||
local nSource = self:GetBuildSource(nBuildId)
|
||||
if nSource == AllEnum.BuildSource.LimitedTrial then
|
||||
return PlayerData.Disc:CalcLimitedTrialInfoInBuild(nDiscId, tbSecondarySkill)
|
||||
elseif nSource == AllEnum.BuildSource.Trial then
|
||||
return PlayerData.Disc:CalcTrialInfoInBuild(nDiscId, tbSecondarySkill)
|
||||
end
|
||||
return PlayerData.Disc:CalcDiscInfoInBuild(nDiscId, tbSecondarySkill)
|
||||
end
|
||||
function PlayerBuildData:GetBuildEnhancedPotential(nBuildId, nCharId, nTrialId)
|
||||
local nSource = self:GetBuildSource(nBuildId)
|
||||
if nSource == AllEnum.BuildSource.LimitedTrial then
|
||||
return PlayerData.Talent:GetLimitedTrialEnhancedPotential(nTrialId) or {}
|
||||
elseif nSource == AllEnum.BuildSource.Trial then
|
||||
return PlayerData.Talent:GetTrialEnhancedPotential(nTrialId) or {}
|
||||
end
|
||||
return PlayerData.Char:GetCharEnhancedPotential(nCharId) or {}
|
||||
end
|
||||
function PlayerBuildData:GetBuildFateTalent(nBuildId, nCharId, nTrialId)
|
||||
local nSource = self:GetBuildSource(nBuildId)
|
||||
if nSource == AllEnum.BuildSource.LimitedTrial then
|
||||
return PlayerData.Talent:GetLimitedTrialFateTalent(nTrialId)
|
||||
elseif nSource == AllEnum.BuildSource.Trial then
|
||||
return PlayerData.Talent:GetTrialFateTalent(nTrialId)
|
||||
end
|
||||
return PlayerData.Talent:GetFateTalent(nCharId)
|
||||
end
|
||||
function PlayerBuildData:GetBuildAllEft(nBuildId)
|
||||
local ret = {}
|
||||
local mapBuildData = self._MapBuildData[nBuildId]
|
||||
local mapBuildData = self:GetBuildData(nBuildId)
|
||||
local nBuildSource = self:GetBuildSourceByData(mapBuildData)
|
||||
if nBuildSource == AllEnum.BuildSource.LimitedTrial then
|
||||
return self:GetLimitedTrialBuildAllEft(nBuildId)
|
||||
elseif nBuildSource == AllEnum.BuildSource.Trial then
|
||||
return self:GetTrialBuildAllEft()
|
||||
end
|
||||
if mapBuildData == nil or not mapBuildData.bDetail then
|
||||
print("没有对应build 或未获取该build详细数据")
|
||||
return ret
|
||||
@@ -209,9 +348,16 @@ function PlayerBuildData:GetBuildAllEft(nBuildId)
|
||||
end
|
||||
return mapCharEffect, mapDiscEffect, mapNoteEffect, tbNoteInfo
|
||||
end
|
||||
function PlayerBuildData:GetBuildAttrBase(nBuildId, bTrial)
|
||||
function PlayerBuildData:GetBuildAttrBase(nBuildId, bTrial, nBuildSource)
|
||||
local ret = {}
|
||||
local mapBuildData = bTrial and self:GetTrialBuild(nBuildId) or self._MapBuildData[nBuildId]
|
||||
local mapBuildData
|
||||
if nBuildSource == AllEnum.BuildSource.LimitedTrial then
|
||||
mapBuildData = self._MapLimitedTrialBuildData[nBuildId]
|
||||
elseif bTrial then
|
||||
mapBuildData = self:GetTrialBuild(nBuildId)
|
||||
else
|
||||
mapBuildData = self:GetBuildData(nBuildId)
|
||||
end
|
||||
if mapBuildData == nil or not mapBuildData.bDetail then
|
||||
print("没有对应build 或未获取该build详细数据")
|
||||
return ret
|
||||
@@ -442,6 +588,130 @@ function PlayerBuildData:NetMsg_SaveBuild(nBuildID, bDelete, bLock, bPreference,
|
||||
end
|
||||
HttpNetHandler.SendMsg(NetMsgId.Id.star_tower_build_whether_save_req, msg, nil, callBack)
|
||||
end
|
||||
function PlayerBuildData:CreateLimitedTrialBuild(nTrialId)
|
||||
local mapTrialData = ConfigTable.GetData("TrialBuild", nTrialId)
|
||||
if mapTrialData == nil then
|
||||
printError("限时试用编组数据没有找到:" .. nTrialId)
|
||||
return
|
||||
end
|
||||
local mapBuildData = {
|
||||
nBuildId = nTrialId,
|
||||
nBuildSource = AllEnum.BuildSource.LimitedTrial,
|
||||
sName = mapTrialData.Name,
|
||||
tbChar = {},
|
||||
nScore = mapTrialData.Score,
|
||||
mapRank = self:CalBuildRank(mapTrialData.Score),
|
||||
bLock = false,
|
||||
bPreference = false,
|
||||
bDetail = true,
|
||||
tbDisc = {},
|
||||
tbSecondarySkill = {},
|
||||
tbPotentials = {},
|
||||
tbNotes = {},
|
||||
nTowerId = mapTrialData.StarTowerId or 0
|
||||
}
|
||||
local tbCharTrialId = {}
|
||||
local tbCharPotentialCount = {}
|
||||
for _, v in ipairs(mapTrialData.Char) do
|
||||
table.insert(mapBuildData.tbChar, {
|
||||
nTrialId = v,
|
||||
nTid = 0,
|
||||
nPotentialCount = 0
|
||||
})
|
||||
tbCharPotentialCount[v] = 0
|
||||
table.insert(tbCharTrialId, v)
|
||||
end
|
||||
mapBuildData.tbDisc = mapTrialData.Disc
|
||||
mapBuildData.tbSecondarySkill = mapTrialData.ActiveSecondaryIds
|
||||
local tbPotentials = decodeJson(mapTrialData.Potential)
|
||||
for _, v in pairs(tbPotentials) do
|
||||
local potentialCfg = ConfigTable.GetData("Potential", v.Tid)
|
||||
if potentialCfg then
|
||||
local nCharId = potentialCfg.CharId
|
||||
if not mapBuildData.tbPotentials[nCharId] then
|
||||
mapBuildData.tbPotentials[nCharId] = {}
|
||||
end
|
||||
if tbCharPotentialCount[nCharId] ~= nil then
|
||||
tbCharPotentialCount[nCharId] = tbCharPotentialCount[nCharId] + v.Level
|
||||
end
|
||||
table.insert(mapBuildData.tbPotentials[nCharId], {
|
||||
nPotentialId = v.Tid,
|
||||
nLevel = v.Level
|
||||
})
|
||||
end
|
||||
end
|
||||
for nCharId, nCount in pairs(tbCharPotentialCount) do
|
||||
for _, v in pairs(mapBuildData.tbChar) do
|
||||
if v.nTrialId == nCharId then
|
||||
v.nPotentialCount = nCount
|
||||
end
|
||||
end
|
||||
end
|
||||
local tbNoteJson = decodeJson(mapTrialData.Note)
|
||||
local tbNotes = {}
|
||||
for _, v in pairs(tbNoteJson) do
|
||||
tbNotes[v.Id] = v.Qty
|
||||
end
|
||||
mapBuildData.tbNotes = tbNotes
|
||||
PlayerData.Char:CreateLimitedTrialChar(tbCharTrialId)
|
||||
PlayerData.Disc:CreateLimitedTrialDisc(mapTrialData.Disc)
|
||||
for k, v in pairs(mapBuildData.tbChar) do
|
||||
local mapTrialChar = PlayerData.Char:GetLimitedTrialCharById(v.nTrialId)
|
||||
mapBuildData.tbChar[k].nTid = mapTrialChar ~= nil and mapTrialChar.nId or 0
|
||||
end
|
||||
self._MapLimitedTrialBuildData[nTrialId] = mapBuildData
|
||||
if 0 >= table.indexof(self._tbLimitedTrialBuildId, nTrialId) then
|
||||
table.insert(self._tbLimitedTrialBuildId, nTrialId)
|
||||
end
|
||||
return mapBuildData
|
||||
end
|
||||
function PlayerBuildData:ClearLimitedTrialBuildCache()
|
||||
self._MapLimitedTrialBuildData = {}
|
||||
self._tbLimitedTrialBuildId = {}
|
||||
PlayerData.Char:DeleteLimitedTrialChar()
|
||||
PlayerData.Disc:DeleteLimitedTrialDisc()
|
||||
end
|
||||
function PlayerBuildData:RefreshLimitedTrialBuildCache(tbTrialBuildId)
|
||||
self:ClearLimitedTrialBuildCache()
|
||||
if type(tbTrialBuildId) ~= "table" then
|
||||
return
|
||||
end
|
||||
for _, nTrialId in ipairs(tbTrialBuildId) do
|
||||
self:CreateLimitedTrialBuild(nTrialId)
|
||||
end
|
||||
end
|
||||
function PlayerBuildData:GetActiveLimitedTrialBuilds(nType)
|
||||
local tbRet = {}
|
||||
local mapRet = {}
|
||||
if not self:IsLimitedTrialBuildActivityOpen() or not self:IsLimitedTrialBuildAllowedType(nType) then
|
||||
return tbRet, mapRet
|
||||
end
|
||||
for _, nBuildId in ipairs(self._tbLimitedTrialBuildId) do
|
||||
local mapBuildData = self._MapLimitedTrialBuildData[nBuildId]
|
||||
if mapBuildData ~= nil then
|
||||
table.insert(tbRet, mapBuildData)
|
||||
mapRet[nBuildId] = mapBuildData
|
||||
end
|
||||
end
|
||||
return tbRet, mapRet
|
||||
end
|
||||
function PlayerBuildData:GetSelectableBuildBriefData(callback, nType)
|
||||
local onGetBuildBrief = function(tbBuildData, mapAllBuild)
|
||||
local tbRet = clone(tbBuildData)
|
||||
local mapRet = clone(mapAllBuild)
|
||||
local tbLimitedBuild, mapLimitedBuild = self:GetActiveLimitedTrialBuilds(nType)
|
||||
for _, mapBuildData in ipairs(tbLimitedBuild) do
|
||||
table.insert(tbRet, mapBuildData)
|
||||
end
|
||||
for nBuildId, mapBuildData in pairs(mapLimitedBuild) do
|
||||
mapRet[nBuildId] = mapBuildData
|
||||
end
|
||||
if callback then
|
||||
callback(tbRet, mapRet)
|
||||
end
|
||||
end
|
||||
return self:GetAllBuildBriefData(onGetBuildBrief)
|
||||
end
|
||||
function PlayerBuildData:CreateTrialBuild(nTrialId)
|
||||
self._mapTrialBuild = {}
|
||||
local mapTrialData = ConfigTable.GetData("TrialBuild", nTrialId)
|
||||
@@ -451,6 +721,7 @@ function PlayerBuildData:CreateTrialBuild(nTrialId)
|
||||
end
|
||||
self._mapTrialBuild = {
|
||||
nBuildId = nTrialId,
|
||||
nBuildSource = AllEnum.BuildSource.Trial,
|
||||
sName = mapTrialData.Name,
|
||||
tbChar = {},
|
||||
nScore = mapTrialData.Score,
|
||||
@@ -531,9 +802,8 @@ function PlayerBuildData:GetTrialBuild(nTrialId)
|
||||
end
|
||||
return self:CreateTrialBuild(nTrialId)
|
||||
end
|
||||
function PlayerBuildData:GetTrialBuildAllEft()
|
||||
function PlayerBuildData:GetTrialBuildAllEftByData(mapBuildData, fnGetTalentEffect, fnGetEnhancedPotential, fnCalcDiscEffect, sLogName)
|
||||
local ret = {}
|
||||
local mapBuildData = self._mapTrialBuild
|
||||
if mapBuildData == nil or not mapBuildData.bDetail then
|
||||
print("没有对应build 或未获取该build详细数据")
|
||||
return ret
|
||||
@@ -542,8 +812,8 @@ function PlayerBuildData:GetTrialBuildAllEft()
|
||||
local mapTalentAddLevel = {}
|
||||
for _, mapChar in ipairs(mapBuildData.tbChar) do
|
||||
mapCharEffect[mapChar.nTid] = {}
|
||||
mapCharEffect[mapChar.nTid][AllEnum.EffectType.Talent] = PlayerData.Talent:GetTrialTalentEffect(mapChar.nTrialId)
|
||||
mapTalentAddLevel[mapChar.nTid] = PlayerData.Talent:GetTrialEnhancedPotential(mapChar.nTrialId)
|
||||
mapCharEffect[mapChar.nTid][AllEnum.EffectType.Talent] = fnGetTalentEffect(mapChar.nTrialId)
|
||||
mapTalentAddLevel[mapChar.nTid] = fnGetEnhancedPotential(mapChar.nTrialId)
|
||||
end
|
||||
local tbCharIdToTrial = {}
|
||||
for _, mapChar in ipairs(mapBuildData.tbChar) do
|
||||
@@ -583,13 +853,13 @@ function PlayerBuildData:GetTrialBuildAllEft()
|
||||
end
|
||||
end
|
||||
else
|
||||
printError("体验build内,有多余角色的潜能" .. nCharId)
|
||||
printError((sLogName or "体验build") .. "内,有多余角色的潜能" .. nCharId)
|
||||
end
|
||||
end
|
||||
local mapDiscEffect = {}
|
||||
for nIndex, nTrialDiscId in ipairs(mapBuildData.tbDisc) do
|
||||
if nIndex <= 3 then
|
||||
local tbDiscEft = PlayerData.Disc:CalcTrialEffectInBuild(nTrialDiscId, mapBuildData.tbSecondarySkill)
|
||||
local tbDiscEft = fnCalcDiscEffect(nTrialDiscId, mapBuildData.tbSecondarySkill)
|
||||
mapDiscEffect[nTrialDiscId] = tbDiscEft
|
||||
end
|
||||
end
|
||||
@@ -610,6 +880,24 @@ function PlayerBuildData:GetTrialBuildAllEft()
|
||||
end
|
||||
return mapCharEffect, mapDiscEffect, mapNoteEffect, tbNoteInfo
|
||||
end
|
||||
function PlayerBuildData:GetLimitedTrialBuildAllEft(nBuildId)
|
||||
return self:GetTrialBuildAllEftByData(self._MapLimitedTrialBuildData[nBuildId], function(nTrialId)
|
||||
return PlayerData.Talent:GetLimitedTrialTalentEffect(nTrialId)
|
||||
end, function(nTrialId)
|
||||
return PlayerData.Talent:GetLimitedTrialEnhancedPotential(nTrialId)
|
||||
end, function(nTrialDiscId, tbSecondarySkill)
|
||||
return PlayerData.Disc:CalcLimitedTrialEffectInBuild(nTrialDiscId, tbSecondarySkill)
|
||||
end, "限时试用build")
|
||||
end
|
||||
function PlayerBuildData:GetTrialBuildAllEft()
|
||||
return self:GetTrialBuildAllEftByData(self._mapTrialBuild, function(nTrialId)
|
||||
return PlayerData.Talent:GetTrialTalentEffect(nTrialId)
|
||||
end, function(nTrialId)
|
||||
return PlayerData.Talent:GetTrialEnhancedPotential(nTrialId)
|
||||
end, function(nTrialDiscId, tbSecondarySkill)
|
||||
return PlayerData.Disc:CalcTrialEffectInBuild(nTrialDiscId, tbSecondarySkill)
|
||||
end, "体验build")
|
||||
end
|
||||
function PlayerBuildData:SetBuildReportInfo(nBuildId)
|
||||
local mapDetailData = self._MapBuildData[nBuildId]
|
||||
if mapDetailData == nil or not self._MapBuildData[nBuildId].bDetail then
|
||||
|
||||
@@ -8,6 +8,7 @@ local TimerManager = require("GameCore.Timer.TimerManager")
|
||||
function PlayerCharData:Init()
|
||||
self._mapChar = nil
|
||||
self._mapTrialChar = {}
|
||||
self._mapLimitedTrialChar = {}
|
||||
if LocalData.GetLocalData("Char_", "CharPanel_IsSimpleDesc") == nil then
|
||||
local defaultValue = ConfigTable.GetConfigValue("SkillShowDetail")
|
||||
self.bCharPanel_IsSimpleDesc = defaultValue ~= "1"
|
||||
@@ -678,6 +679,65 @@ function PlayerCharData:GetTrialCharByCharId(nCharId)
|
||||
end
|
||||
end
|
||||
end
|
||||
function PlayerCharData:CreateLimitedTrialChar(tbTrialId)
|
||||
for _, nTrialId in ipairs(tbTrialId) do
|
||||
if 0 < nTrialId then
|
||||
local mapTrialData = ConfigTable.GetData("TrialCharacter", nTrialId)
|
||||
if mapTrialData == nil then
|
||||
printError("限时试用角色数据没有找到:" .. nTrialId)
|
||||
return
|
||||
end
|
||||
self._mapLimitedTrialChar[nTrialId] = {
|
||||
nId = mapTrialData.CharId,
|
||||
nTrialId = nTrialId,
|
||||
sName = mapTrialData.Name,
|
||||
nSkinId = mapTrialData.CharacterSkin,
|
||||
nLevel = mapTrialData.Level,
|
||||
nAdvance = mapTrialData.Break,
|
||||
tbSkillLvs = mapTrialData.SkillLevel
|
||||
}
|
||||
end
|
||||
end
|
||||
PlayerData.Talent:CreateLimitedTrialData(tbTrialId)
|
||||
return self._mapLimitedTrialChar
|
||||
end
|
||||
function PlayerCharData:DeleteLimitedTrialChar()
|
||||
self._mapLimitedTrialChar = {}
|
||||
PlayerData.Talent:DeleteLimitedTrialData()
|
||||
end
|
||||
function PlayerCharData:GetLimitedTrialCharById(nTrialId)
|
||||
local mapTrialChar = self._mapLimitedTrialChar[nTrialId]
|
||||
if mapTrialChar == nil then
|
||||
printError("没有该限时试用角色数据:" .. nTrialId)
|
||||
end
|
||||
return mapTrialChar
|
||||
end
|
||||
function PlayerCharData:GetLimitedTrialCharSkillAddedLevel(nTrialId)
|
||||
local mapChar = self._mapLimitedTrialChar[nTrialId]
|
||||
if mapChar == nil then
|
||||
printError("没有该限时试用角色数据" .. nTrialId)
|
||||
return {
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
}
|
||||
end
|
||||
local nCharId = mapChar.nId
|
||||
local tbSkillLevel = {}
|
||||
local tbSkillIds = self:GetSkillIds(nCharId)
|
||||
local mapTalentEnhanceSkill = PlayerData.Talent:GetLimitedTrialEnhancedSkill(nTrialId)
|
||||
for i = 1, 4 do
|
||||
local nSkillId = tbSkillIds[i]
|
||||
local nAdd = 0
|
||||
if mapTalentEnhanceSkill then
|
||||
nAdd = mapTalentEnhanceSkill[nSkillId]
|
||||
end
|
||||
local nLv = mapChar.tbSkillLvs[i] + nAdd
|
||||
table.insert(tbSkillLevel, nLv)
|
||||
end
|
||||
return tbSkillLevel
|
||||
end
|
||||
function PlayerCharData:GetCharPlotDataById(charId)
|
||||
return CacheTable.GetData("_Plot", charId)
|
||||
end
|
||||
@@ -1342,7 +1402,7 @@ function PlayerCharData:GetCharSkinId(nCharId)
|
||||
end
|
||||
return mapCharInfo.nSkinId
|
||||
else
|
||||
local mapCharCfg = ConfigTable.GetData_Character(nCharId)
|
||||
local mapCharCfg = ConfigTable.GetData_Character(nCharId, true)
|
||||
if mapCharCfg == nil then
|
||||
return 0
|
||||
else
|
||||
@@ -1795,6 +1855,158 @@ function PlayerCharData:CalCharacterAttrBattle(nCharId, stAttr, bMainChar, tbDis
|
||||
stAttr.initHp = 0
|
||||
return 0
|
||||
end
|
||||
function PlayerCharData:CalCharacterLimitedTrialAttrBattle(nTrialId, stAttr, bMainChar, tbDiscId, nBuildId)
|
||||
local mapChar = self._mapLimitedTrialChar[nTrialId]
|
||||
if mapChar == nil then
|
||||
printError("没有该限时试用角色数据" .. nTrialId)
|
||||
return 0
|
||||
end
|
||||
local nCharId = mapChar.nId
|
||||
local nLevel = mapChar.nLevel
|
||||
local nAdvance = mapChar.nAdvance
|
||||
local nAttrId = UTILS.GetCharacterAttributeId(nCharId, nAdvance, nLevel)
|
||||
local mapCharAttrCfg = ConfigTable.GetData_Attribute(tostring(nAttrId))
|
||||
if mapCharAttrCfg == nil then
|
||||
printError("属性配置不存在:" .. nAttrId)
|
||||
return {}
|
||||
end
|
||||
local mapCharCfg = ConfigTable.GetData_Character(nCharId)
|
||||
if mapCharCfg == nil then
|
||||
printError("角色配置不存在:" .. nCharId)
|
||||
return {}
|
||||
end
|
||||
for _, v in ipairs(AllEnum.AttachAttr) do
|
||||
if v.bPlayer and mapCharCfg[v.sKey] ~= nil then
|
||||
mapCharAttrCfg[v.sKey] = mapCharCfg[v.sKey]
|
||||
end
|
||||
end
|
||||
local mapDiscAttr = {}
|
||||
for _, v in ipairs(AllEnum.AttachAttr) do
|
||||
mapDiscAttr[v.sKey] = {
|
||||
Key = v.sKey,
|
||||
Value = 0,
|
||||
CfgValue = 0
|
||||
}
|
||||
end
|
||||
if tbDiscId ~= nil then
|
||||
for _, nDiscId in ipairs(tbDiscId) do
|
||||
local mapDisc = PlayerData.Disc:GetLimitedTrialDiscById(nDiscId)
|
||||
for _, v in ipairs(AllEnum.AttachAttr) do
|
||||
mapDiscAttr[v.sKey].CfgValue = mapDiscAttr[v.sKey].CfgValue + mapDisc.mapAttrBase[v.sKey].CfgValue
|
||||
end
|
||||
end
|
||||
end
|
||||
local mapBuildAttr = {}
|
||||
if nBuildId ~= nil then
|
||||
mapBuildAttr = PlayerData.Build:GetBuildAttrBase(nBuildId, true, AllEnum.BuildSource.LimitedTrial)
|
||||
else
|
||||
for _, v in ipairs(AllEnum.AttachAttr) do
|
||||
mapBuildAttr[v.sKey] = {
|
||||
Key = v.sKey,
|
||||
Value = 0,
|
||||
CfgValue = 0
|
||||
}
|
||||
end
|
||||
end
|
||||
local tbSkillLevel = self:GetLimitedTrialCharSkillAddedLevel(nTrialId)
|
||||
if bMainChar == true then
|
||||
table.remove(tbSkillLevel, 3)
|
||||
else
|
||||
table.remove(tbSkillLevel, 2)
|
||||
end
|
||||
local mapCharAttr = {}
|
||||
for _, v in ipairs(AllEnum.AttachAttr) do
|
||||
mapCharAttr[v.sKey] = mapCharAttrCfg[v.sKey] + mapDiscAttr[v.sKey].CfgValue + mapBuildAttr[v.sKey].CfgValue
|
||||
end
|
||||
local tbTalent = PlayerData.Talent:GetLimitedTrialFateTalent(nTrialId)
|
||||
stAttr.actorLevel = nLevel
|
||||
stAttr.breakCount = mapChar.nAdvance
|
||||
stAttr.activeTalentInfos = tbTalent
|
||||
stAttr.Atk = mapCharAttr.Atk
|
||||
stAttr.Hp = mapCharAttr.Hp
|
||||
stAttr.Def = mapCharAttr.Def
|
||||
stAttr.CritRate = mapCharAttr.CritRate
|
||||
stAttr.CritResistance = mapCharAttr.CritResistance
|
||||
stAttr.CritPower = mapCharAttr.CritPower
|
||||
stAttr.HitRate = mapCharAttr.HitRate
|
||||
stAttr.Evd = mapCharAttr.Evd
|
||||
stAttr.DefPierce = mapCharAttr.DefPierce
|
||||
stAttr.WEP = mapCharAttr.WEP
|
||||
stAttr.FEP = mapCharAttr.FEP
|
||||
stAttr.SEP = mapCharAttr.SEP
|
||||
stAttr.AEP = mapCharAttr.AEP
|
||||
stAttr.LEP = mapCharAttr.LEP
|
||||
stAttr.DEP = mapCharAttr.DEP
|
||||
stAttr.WEE = mapCharAttr.WEE
|
||||
stAttr.FEE = mapCharAttr.FEE
|
||||
stAttr.SEE = mapCharAttr.SEE
|
||||
stAttr.AEE = mapCharAttr.AEE
|
||||
stAttr.LEE = mapCharAttr.LEE
|
||||
stAttr.DEE = mapCharAttr.DEE
|
||||
stAttr.WER = mapCharAttr.WER
|
||||
stAttr.FER = mapCharAttr.FER
|
||||
stAttr.SER = mapCharAttr.SER
|
||||
stAttr.AER = mapCharAttr.AER
|
||||
stAttr.LER = mapCharAttr.LER
|
||||
stAttr.DER = mapCharAttr.DER
|
||||
stAttr.WEI = mapCharAttr.WEI
|
||||
stAttr.FEI = mapCharAttr.FEI
|
||||
stAttr.SEI = mapCharAttr.SEI
|
||||
stAttr.AEI = mapCharAttr.AEI
|
||||
stAttr.LEI = mapCharAttr.LEI
|
||||
stAttr.DEI = mapCharAttr.DEI
|
||||
stAttr.DefIgnore = mapCharAttr.DefIgnore
|
||||
stAttr.ShieldBonus = mapCharAttr.ShieldBonus
|
||||
stAttr.IncomingShieldBonus = mapCharAttr.IncomingShieldBonus
|
||||
stAttr.SkillLevel = tbSkillLevel
|
||||
stAttr.skinId = mapChar.nSkinId
|
||||
stAttr.attrId = tostring(nAttrId)
|
||||
stAttr.Suppress = mapCharAttr.Suppress
|
||||
stAttr.NormalDmgRatio = mapCharAttr.NORMALDMG
|
||||
stAttr.SkillDmgRatio = mapCharAttr.SKILLDMG
|
||||
stAttr.UltraDmgRatio = mapCharAttr.ULTRADMG
|
||||
stAttr.OtherDmgRatio = mapCharAttr.OTHERDMG
|
||||
stAttr.RcdNormalDmgRatio = mapCharAttr.RCDNORMALDMG
|
||||
stAttr.RcdSkillDmgRatio = mapCharAttr.RCDSKILLDMG
|
||||
stAttr.RcdUltraDmgRatio = mapCharAttr.RCDULTRADMG
|
||||
stAttr.RcdOtherDmgRatio = mapCharAttr.RCDOTHERDMG
|
||||
stAttr.MarkDmgRatio = mapCharAttr.MARKDMG
|
||||
stAttr.SummonDmgRatio = mapCharAttr.SUMMONDMG
|
||||
stAttr.RcdSummonDmgRatio = mapCharAttr.RCDSUMMONDMG
|
||||
stAttr.ProjectileDmgRatio = mapCharAttr.PROJECTILEDMG
|
||||
stAttr.RcdProjectileDmgRatio = mapCharAttr.RCDPROJECTILEDMG
|
||||
stAttr.GENDMG = mapCharAttr.GENDMG
|
||||
stAttr.DMGPLUS = mapCharAttr.DMGPLUS
|
||||
stAttr.FINALDMG = mapCharAttr.FINALDMG
|
||||
stAttr.FINALDMGPLUS = mapCharAttr.FINALDMGPLUS
|
||||
stAttr.WEERCD = mapCharAttr.WEERCD
|
||||
stAttr.FEERCD = mapCharAttr.FEERCD
|
||||
stAttr.SEERCD = mapCharAttr.SEERCD
|
||||
stAttr.AEERCD = mapCharAttr.AEERCD
|
||||
stAttr.LEERCD = mapCharAttr.LEERCD
|
||||
stAttr.DEERCD = mapCharAttr.DEERCD
|
||||
stAttr.GENDMGRCD = mapCharAttr.GENDMGRCD
|
||||
stAttr.DMGPLUSRCD = mapCharAttr.DMGPLUSRCD
|
||||
stAttr.NormalCritRate = mapCharAttr.NormalCritRate
|
||||
stAttr.SkillCritRate = mapCharAttr.SkillCritRate
|
||||
stAttr.UltraCritRate = mapCharAttr.UltraCritRate
|
||||
stAttr.MarkCritRate = mapCharAttr.MarkCritRate
|
||||
stAttr.SummonCritRate = mapCharAttr.SummonCritRate
|
||||
stAttr.ProjectileCritRate = mapCharAttr.ProjectileCritRate
|
||||
stAttr.OtherCritRate = mapCharAttr.OtherCritRate
|
||||
stAttr.NormalCritPower = mapCharAttr.NormalCritPower
|
||||
stAttr.SkillCritPower = mapCharAttr.SkillCritPower
|
||||
stAttr.UltraCritPower = mapCharAttr.UltraCritPower
|
||||
stAttr.MarkCritPower = mapCharAttr.MarkCritPower
|
||||
stAttr.SummonCritPower = mapCharAttr.SummonCritPower
|
||||
stAttr.ProjectileCritPower = mapCharAttr.ProjectileCritPower
|
||||
stAttr.OtherCritPower = mapCharAttr.OtherCritPower
|
||||
stAttr.ToughnessDamageAdjust = mapCharAttr.ToughnessDamageAdjust
|
||||
stAttr.EnergyConvRatio = mapCharAttr.EnergyConvRatio
|
||||
stAttr.EnergyEfficiency = mapCharAttr.EnergyEfficiency
|
||||
stAttr.initHp = 0
|
||||
return 0
|
||||
end
|
||||
function PlayerCharData:CalCharacterTrialAttrBattle(nTrialId, stAttr, bMainChar, tbDiscId, nBuildId)
|
||||
local mapChar = self._mapTrialChar[nTrialId]
|
||||
if mapChar == nil then
|
||||
@@ -1984,6 +2196,27 @@ function PlayerCharData:UpdateCharRecordReddot(nCharId, bReset, lastLevel, curLe
|
||||
end
|
||||
ForEachTableLine(DataTable.CharacterArchive, foreachCharacterArchive)
|
||||
end
|
||||
function PlayerCharData:UpdateCharSkinTrialRedDot(sId)
|
||||
local sKey = tostring(sId) .. "SkinTrial"
|
||||
local bIsFirst = LocalData.GetPlayerLocalData(sKey)
|
||||
if bIsFirst == nil then
|
||||
bIsFirst = true
|
||||
else
|
||||
bIsFirst = false
|
||||
end
|
||||
RedDotManager.SetValid(RedDotDefine.Mall_CharSkinTrial, {sId}, bIsFirst)
|
||||
end
|
||||
function PlayerCharData:SetCharSkinTrialRedDot(sId)
|
||||
local sKey = tostring(sId) .. "SkinTrial"
|
||||
LocalData.SetPlayerLocalData(sKey, false)
|
||||
RedDotManager.SetValid(RedDotDefine.Mall_CharSkinTrial, {sId}, false)
|
||||
end
|
||||
function PlayerCharData:ClearCharSkinTrialRedDot(sId)
|
||||
local sKey = tostring(sId) .. "SkinTrial"
|
||||
if LocalData.GetPlayerLocalData(sKey) ~= nil then
|
||||
LocalData.DelPlayerLocalData(sKey)
|
||||
end
|
||||
end
|
||||
function PlayerCharData:UpdateCharVoiceReddot(nCharId, bReset, lastLevel, curLevel, nPlotId)
|
||||
local bNew = false
|
||||
if lastLevel ~= nil and curLevel ~= nil and lastLevel < curLevel then
|
||||
|
||||
@@ -90,13 +90,28 @@ end
|
||||
function PlayerDatingData:CacheDatingCharIds(tbChar)
|
||||
self.tbDatingCharIds = tbChar
|
||||
end
|
||||
function PlayerDatingData:GetRandomLandmark()
|
||||
if #self.tbLandmarkCfg <= 3 then
|
||||
return self.tbLandmarkCfg
|
||||
function PlayerDatingData:GetRandomLandmark(nCharId)
|
||||
local mapCharData = ConfigTable.GetData("DatingCharTag", nCharId)
|
||||
local nCharSetTag = 0
|
||||
if mapCharData ~= nil and mapCharData.CharSetTag ~= nil then
|
||||
nCharSetTag = mapCharData.CharSetTag
|
||||
end
|
||||
local tbLandMark = {}
|
||||
for _, v in ipairs(self.tbLandmarkCfg) do
|
||||
if v.CharAvailableSetTag ~= nil and 0 < #v.CharAvailableSetTag then
|
||||
if 0 < table.indexof(v.CharAvailableSetTag, nCharSetTag) then
|
||||
table.insert(tbLandMark, v)
|
||||
end
|
||||
else
|
||||
table.insert(tbLandMark, v)
|
||||
end
|
||||
end
|
||||
if #tbLandMark <= 3 then
|
||||
return tbLandMark
|
||||
end
|
||||
local tbResult = {}
|
||||
local tbRandom = {}
|
||||
for i = 1, #self.tbLandmarkCfg do
|
||||
for i = 1, #tbLandMark do
|
||||
tbRandom[i] = i
|
||||
end
|
||||
math.randomseed(os.time())
|
||||
@@ -106,7 +121,7 @@ function PlayerDatingData:GetRandomLandmark()
|
||||
for i = 1, 3 do
|
||||
local randomIndex = math.random(#tbRandom)
|
||||
local nSelectIndex = tbRandom[randomIndex]
|
||||
table.insert(tbResult, self.tbLandmarkCfg[nSelectIndex])
|
||||
table.insert(tbResult, tbLandMark[nSelectIndex])
|
||||
table.remove(tbRandom, randomIndex)
|
||||
end
|
||||
return tbResult
|
||||
|
||||
@@ -4,6 +4,7 @@ local WwiseAudioMgr = CS.WwiseAudioManager.Instance
|
||||
local PlayerDiscData = class("PlayerDiscData")
|
||||
function PlayerDiscData:Init()
|
||||
self._mapDisc = {}
|
||||
self._mapLimitedTrialDisc = {}
|
||||
self.nMaxBreakLimitMat = 5
|
||||
self:ProcessTableData()
|
||||
end
|
||||
@@ -909,6 +910,87 @@ function PlayerDiscData:CalcTrialInfoInBuild(nTrialId, tbSecondarySkill)
|
||||
discInfo.discLevel = discData.nLevel
|
||||
return discInfo
|
||||
end
|
||||
function PlayerDiscData:CreateLimitedTrialDisc(tbTrialId)
|
||||
for _, nTrialId in ipairs(tbTrialId) do
|
||||
local mapCfg = ConfigTable.GetData("TrialDisc", nTrialId)
|
||||
if mapCfg == nil then
|
||||
printError("限时试用星盘数据没有找到:" .. nTrialId)
|
||||
return
|
||||
end
|
||||
local discData = self:GenerateLocalDiscData(mapCfg.DiscId, 0, mapCfg.Level, mapCfg.Phase, mapCfg.Star)
|
||||
self._mapLimitedTrialDisc[nTrialId] = discData
|
||||
end
|
||||
end
|
||||
function PlayerDiscData:GetLimitedTrialDiscById(nId)
|
||||
if not nId then
|
||||
return
|
||||
end
|
||||
if self._mapLimitedTrialDisc == nil or self._mapLimitedTrialDisc[nId] == nil then
|
||||
printLog(string.format("该限时试用星盘不存在, 唯一Id: %d", nId))
|
||||
return
|
||||
end
|
||||
return self._mapLimitedTrialDisc[nId]
|
||||
end
|
||||
function PlayerDiscData:DeleteLimitedTrialDisc()
|
||||
self._mapLimitedTrialDisc = {}
|
||||
end
|
||||
function PlayerDiscData:CalcLimitedTrialEffectInBuild(nTrialId, tbSecondarySkill)
|
||||
local discData = self._mapLimitedTrialDisc[nTrialId]
|
||||
local tbEffectId = {}
|
||||
if discData == nil then
|
||||
return tbEffectId
|
||||
end
|
||||
local add = function(tbEfId)
|
||||
if not tbEfId then
|
||||
return
|
||||
end
|
||||
for _, nEfId in pairs(tbEfId) do
|
||||
if type(nEfId) == "number" and 0 < nEfId then
|
||||
table.insert(tbEffectId, {nEfId, 0})
|
||||
end
|
||||
end
|
||||
end
|
||||
local mapMainCfg = ConfigTable.GetData("MainSkill", discData.nMainSkillId)
|
||||
if mapMainCfg then
|
||||
add(mapMainCfg.EffectId)
|
||||
end
|
||||
for _, v in ipairs(tbSecondarySkill) do
|
||||
local mapSubCfg = ConfigTable.GetData("SecondarySkill", v)
|
||||
if mapSubCfg and table.indexof(discData.tbSubSkillGroupId, mapSubCfg.GroupId) > 0 then
|
||||
add(mapSubCfg.EffectId)
|
||||
end
|
||||
end
|
||||
return tbEffectId
|
||||
end
|
||||
function PlayerDiscData:CalcLimitedTrialInfoInBuild(nTrialId, tbSecondarySkill)
|
||||
local discData = self._mapLimitedTrialDisc[nTrialId]
|
||||
local discInfo = CS.Lua2CSharpInfo_DiscInfo()
|
||||
if discData == nil then
|
||||
return discInfo
|
||||
end
|
||||
local tbSkillInfo = {}
|
||||
for _, v in ipairs(tbSecondarySkill) do
|
||||
local mapSubCfg = ConfigTable.GetData("SecondarySkill", v, true)
|
||||
if mapSubCfg and table.indexof(discData.tbSubSkillGroupId, mapSubCfg.GroupId) > 0 then
|
||||
local skillInfo = CS.Lua2CSharpInfo_DiscSkillInfo()
|
||||
skillInfo.skillId = v
|
||||
skillInfo.skillLevel = mapSubCfg.Level
|
||||
table.insert(tbSkillInfo, skillInfo)
|
||||
end
|
||||
end
|
||||
local mapMainCfg = ConfigTable.GetData("MainSkill", discData.nMainSkillId, true)
|
||||
if mapMainCfg then
|
||||
local skillInfo = CS.Lua2CSharpInfo_DiscSkillInfo()
|
||||
skillInfo.skillId = discData.nMainSkillId
|
||||
skillInfo.skillLevel = 1
|
||||
table.insert(tbSkillInfo, skillInfo)
|
||||
end
|
||||
discInfo.discId = discData.nId
|
||||
discInfo.discScript = discData.sSkillScript
|
||||
discInfo.skillInfos = tbSkillInfo
|
||||
discInfo.discLevel = discData.nLevel
|
||||
return discInfo
|
||||
end
|
||||
function PlayerDiscData:GetRankDetailDisc(nId)
|
||||
if not nId then
|
||||
return
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
local PlayerEquipmentInstanceData = class("PlayerEquipmentInstanceData")
|
||||
local LocalData = require("GameCore.Data.LocalData")
|
||||
local newDayTime = UTILS.GetDayRefreshTimeOffset()
|
||||
function PlayerEquipmentInstanceData:Init()
|
||||
self.curLevel = nil
|
||||
@@ -8,12 +9,19 @@ function PlayerEquipmentInstanceData:Init()
|
||||
self.mapLevelCfg = {}
|
||||
self:InitConfigData()
|
||||
EventManager.Add("Equipment_Instance_Gameplay_Time", self, self.OnEvent_Time)
|
||||
EventManager.Add(EventId.UpdateWorldClass, self, self.OnEvent_UpdateWorldClass)
|
||||
end
|
||||
function PlayerEquipmentInstanceData:OnEvent_Time(nTime)
|
||||
self._TotalTime = nTime
|
||||
end
|
||||
function PlayerEquipmentInstanceData:OnEvent_UpdateWorldClass()
|
||||
if PlayerData.Base:CheckFunctionUnlock(GameEnum.OpenFuncType.CharGemInstance) then
|
||||
self:UpdateAllNewRewardSwitch()
|
||||
end
|
||||
end
|
||||
function PlayerEquipmentInstanceData:UnInit()
|
||||
EventManager.Remove("Equipment_Instance_Gameplay_Time", self, self.OnEvent_Time)
|
||||
EventManager.Remove(EventId.UpdateWorldClass, self, self.OnEvent_UpdateWorldClass)
|
||||
end
|
||||
function PlayerEquipmentInstanceData:InitConfigData()
|
||||
local funcForeachLine = function(line)
|
||||
@@ -105,6 +113,7 @@ function PlayerEquipmentInstanceData:CacheEquipmentInstanceLevel(tbData)
|
||||
}
|
||||
}
|
||||
end
|
||||
self:UpdateAllNewRewardSwitch()
|
||||
end
|
||||
function PlayerEquipmentInstanceData:GetEquipmentInstanceLevelUnlock(nLevelId)
|
||||
local mapLevelCfgData = ConfigTable.GetData("CharGemInstance", nLevelId)
|
||||
@@ -164,6 +173,36 @@ function PlayerEquipmentInstanceData:GetEquipmentInstanceStar(nLevelId)
|
||||
false
|
||||
} or self.mapAllLevel[nLevelId].tbTarget
|
||||
end
|
||||
function PlayerEquipmentInstanceData:UpdateAllNewRewardSwitch()
|
||||
local funcForeachLine = function(line)
|
||||
self:UpdateNewRewardSwitch(line.Id)
|
||||
end
|
||||
ForEachTableLine(ConfigTable.Get("CharGemInstanceType"), funcForeachLine)
|
||||
end
|
||||
function PlayerEquipmentInstanceData:UpdateNewRewardSwitch(nType)
|
||||
local bNew = LocalData.GetPlayerLocalData("CharGemInstanceSwitch" .. nType)
|
||||
if bNew ~= nil then
|
||||
RedDotManager.SetValid(RedDotDefine.CharGemInstanceSwitch, {nType}, bNew == true)
|
||||
return
|
||||
end
|
||||
local nMaxHard = 1
|
||||
local mapMaxLevel
|
||||
local tbLevelList = self.mapLevelCfg[nType]
|
||||
if nil ~= tbLevelList then
|
||||
for nLevelId, mapLevel in pairs(tbLevelList) do
|
||||
if self:GetEquipmentInstanceLevelUnlock(nLevelId) and nMaxHard < mapLevel.Difficulty then
|
||||
nMaxHard = mapLevel.Difficulty
|
||||
mapMaxLevel = mapLevel
|
||||
end
|
||||
end
|
||||
end
|
||||
if mapMaxLevel == nil or mapMaxLevel.DropId == 0 then
|
||||
RedDotManager.SetValid(RedDotDefine.CharGemInstanceSwitch, {nType}, false)
|
||||
return
|
||||
end
|
||||
LocalData.SetPlayerLocalData("CharGemInstanceSwitch" .. nType, true)
|
||||
RedDotManager.SetValid(RedDotDefine.CharGemInstanceSwitch, {nType}, true)
|
||||
end
|
||||
function PlayerEquipmentInstanceData:MsgEnterEquipmentInstance(nLevelId, nBuildId, callback)
|
||||
self._EntryTime = CS.ClientManager.Instance.serverTimeStampWithTimeZone
|
||||
self._Build_id = nBuildId
|
||||
@@ -171,6 +210,7 @@ function PlayerEquipmentInstanceData:MsgEnterEquipmentInstance(nLevelId, nBuildI
|
||||
local msg = {}
|
||||
msg.Id = nLevelId
|
||||
msg.BuildId = nBuildId
|
||||
msg.RewardType = self.lastRewardType
|
||||
local msgCallback = function(_, mapChangeInfo)
|
||||
self:EnterEquipmentInstance(nLevelId, nBuildId)
|
||||
if self.mapAllLevel[nLevelId] == nil then
|
||||
@@ -218,6 +258,10 @@ function PlayerEquipmentInstanceData:MsgSettleEquipmentInstance(nLevelId, nBuild
|
||||
}
|
||||
}
|
||||
end
|
||||
local mapLevelCfgData = ConfigTable.GetData("CharGemInstance", nLevelId)
|
||||
if mapLevelCfgData then
|
||||
self:UpdateNewRewardSwitch(mapLevelCfgData.Type)
|
||||
end
|
||||
if callback ~= nil then
|
||||
callback(mapMsgData.AwardItems, mapMsgData.FirstItems, mapMsgData.SurpriseItems, mapMsgData.DoubleItems, mapMsgData.Exp, mapMsgData.Change)
|
||||
end
|
||||
@@ -328,9 +372,28 @@ end
|
||||
function PlayerEquipmentInstanceData:GetSettlementState()
|
||||
return self.bInSettlement
|
||||
end
|
||||
function PlayerEquipmentInstanceData:GetLastRewardType()
|
||||
if self.lastRewardType == nil then
|
||||
local lastType = LocalData.GetPlayerLocalData("EquipmentRewardType")
|
||||
if lastType == nil then
|
||||
self:SetRewardType(GameEnum.CharGemInstanceRewardType.Enhance)
|
||||
else
|
||||
self.lastRewardType = lastType
|
||||
end
|
||||
end
|
||||
return tonumber(self.lastRewardType)
|
||||
end
|
||||
function PlayerEquipmentInstanceData:SetRewardType(nType)
|
||||
self.lastRewardType = nType
|
||||
LocalData.SetPlayerLocalData("EquipmentRewardType", nType)
|
||||
end
|
||||
function PlayerEquipmentInstanceData:SendEquipmentInstanceRaidReq(nId, nCount, callback)
|
||||
local Events = {}
|
||||
local msgData = {Id = nId, Times = nCount}
|
||||
local msgData = {
|
||||
Id = nId,
|
||||
RewardType = self.lastRewardType,
|
||||
Times = nCount
|
||||
}
|
||||
if 0 < #Events then
|
||||
msgData.Events = {
|
||||
List = {}
|
||||
|
||||
@@ -13,6 +13,7 @@ function PlayerFriendData:Init()
|
||||
self._nEnergyCount = 0
|
||||
self._nPerReceiveEnergyConfig = ConfigTable.GetConfigNumber("FriendReceiveEnergyCount")
|
||||
self._nMaxReceiveEnergyConfig = ConfigTable.GetConfigNumber("FriendReceiveEnergyMax")
|
||||
self.bAddStrangerWarning = true
|
||||
end
|
||||
function PlayerFriendData:CacheFriendData(mapMsgData)
|
||||
self._tbFriendList = {}
|
||||
@@ -96,7 +97,7 @@ function PlayerFriendData:CacheFriendAddStranger(mapFriend)
|
||||
self.mapStrangerFriend = mapFriend
|
||||
end
|
||||
function PlayerFriendData:TryOpenFriendAddStranger()
|
||||
if not self.mapStrangerFriend then
|
||||
if not self.mapStrangerFriend or not self.bAddStrangerWarning then
|
||||
return
|
||||
end
|
||||
local mapFriend = clone(self.mapStrangerFriend)
|
||||
@@ -107,6 +108,9 @@ function PlayerFriendData:TryOpenFriendAddStranger()
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
end
|
||||
function PlayerFriendData:SetAddStrangerWarning(bAble)
|
||||
self.bAddStrangerWarning = bAble
|
||||
end
|
||||
function PlayerFriendData:JudgeEnergyGetAble()
|
||||
if not self._tbFriendList then
|
||||
return false
|
||||
|
||||
@@ -59,6 +59,10 @@ function PlayerHeadData:SendGetHeadListMsg(callback)
|
||||
local netCallback = function(_, netMsgData)
|
||||
for nId, v in pairs(self.tbHeadList) do
|
||||
v.bUnlock = table.indexof(netMsgData.List, nId) > 0
|
||||
local bRedDot = RedDotManager.GetValid(RedDotDefine.Friend_Head_Item, nId)
|
||||
if bRedDot and not v.bUnlock then
|
||||
RedDotManager.SetValid(RedDotDefine.Friend_Head_Item, nId, false)
|
||||
end
|
||||
end
|
||||
if callback ~= nil then
|
||||
callback()
|
||||
|
||||
@@ -244,6 +244,7 @@ function PlayerJointDrillData_1:GetMonsterMaxHp(nMonsterId, nDifficulty)
|
||||
return NovaAPI.GetJointDrillBossMaxHp(nMonsterId, nDifficulty)
|
||||
end
|
||||
function PlayerJointDrillData_1:GetMonsterName(nMonsterId)
|
||||
local sName, sIcon = "", ""
|
||||
local mapMonsterCfg = ConfigTable.GetData("Monster", nMonsterId)
|
||||
if mapMonsterCfg ~= nil then
|
||||
local nSkinId = mapMonsterCfg.FAId
|
||||
@@ -252,11 +253,12 @@ function PlayerJointDrillData_1:GetMonsterName(nMonsterId)
|
||||
local nManualId = mapSkinCfg.MonsterManual
|
||||
local mapManualCfg = ConfigTable.GetData("MonsterManual", nManualId)
|
||||
if mapManualCfg ~= nil then
|
||||
return mapManualCfg.Name
|
||||
sName = mapManualCfg.Name
|
||||
sIcon = mapManualCfg.Icon
|
||||
end
|
||||
end
|
||||
end
|
||||
return ""
|
||||
return sName, sIcon
|
||||
end
|
||||
function PlayerJointDrillData_1:StartChallengeTime()
|
||||
if self.challengeTimer ~= nil then
|
||||
@@ -434,7 +436,8 @@ function PlayerJointDrillData_1:JointDrillGameOver(callback, bSettle, bEditor)
|
||||
nOld = netMsg.Old
|
||||
nNew = netMsg.New
|
||||
end
|
||||
EventManager.Hit(EventId.OpenPanel, JointDrillContext.GetPanelId(self.nActId, "Result"), nResultType, self.nCurLevel, 0, self.nCurLevelId, self.mapBossInfo, mapScore, mapItems, mapChange, nOld, nNew, self.bSimulate, #self.tbTeams)
|
||||
local tbLastCharIds = self:GetJointDrillLastTeam()
|
||||
EventManager.Hit(EventId.OpenPanel, JointDrillContext.GetPanelId(self.nActId, "Result"), nResultType, self.nCurLevel, 0, self.nCurLevelId, self.mapBossInfo, mapScore, mapItems, mapChange, nOld, nNew, self.bSimulate, #self.tbTeams, {}, tbLastCharIds)
|
||||
end
|
||||
self:EventUpload(4, 0)
|
||||
self:ChallengeEnd()
|
||||
@@ -450,7 +453,8 @@ function PlayerJointDrillData_1:JointDrillGameOver(callback, bSettle, bEditor)
|
||||
local mapScore = {}
|
||||
local mapChange, mapItems = {}, {}
|
||||
local nOld, nNew = 0, 0
|
||||
EventManager.Hit(EventId.OpenPanel, JointDrillContext.GetPanelId(self.nActId, "Result"), nResultType, self.nCurLevel, 0, self.nCurLevelId, self.mapBossInfo, mapScore, mapItems, mapChange, nOld, nNew, self.bSimulate, #self.tbTeams)
|
||||
local tbLastCharIds = self:GetJointDrillLastTeam()
|
||||
EventManager.Hit(EventId.OpenPanel, JointDrillContext.GetPanelId(self.nActId, "Result"), nResultType, self.nCurLevel, 0, self.nCurLevelId, self.mapBossInfo, mapScore, mapItems, mapChange, nOld, nNew, self.bSimulate, #self.tbTeams, {}, tbLastCharIds)
|
||||
end
|
||||
self:ChallengeEnd()
|
||||
end
|
||||
@@ -632,6 +636,18 @@ end
|
||||
function PlayerJointDrillData_1:GetJointDrillBattleCount()
|
||||
return #self.tbTeams
|
||||
end
|
||||
function PlayerJointDrillData_1:GetJointDrillLastTeam()
|
||||
local tbChar = {}
|
||||
if #self.tbTeams > 0 then
|
||||
local tbTeam = self.tbTeams[#self.tbTeams].Chars
|
||||
if tbTeam ~= nil then
|
||||
for _, v in ipairs(tbTeam) do
|
||||
table.insert(tbChar, v.CharId)
|
||||
end
|
||||
end
|
||||
end
|
||||
return tbChar
|
||||
end
|
||||
function PlayerJointDrillData_1:CheckChallengeCount()
|
||||
if self.nCurLevelId ~= 0 then
|
||||
local mapLevelCfg = ConfigTable.GetData("JointDrillLevel", self.nCurLevelId)
|
||||
|
||||
@@ -357,7 +357,8 @@ function PlayerJointDrillData_2:JointDrillGameOver(callback, bSettle, bEditor)
|
||||
nNew = netMsg.New
|
||||
end
|
||||
local mapBossInfo = self.mapBossInfo[self.nCurLevel]
|
||||
EventManager.Hit(EventId.OpenPanel, JointDrillContext.GetPanelId(self.nActId, "Result"), nResultType, self.nCurLevel, 0, self.nCurLevelId, mapBossInfo, mapScore, mapItems, mapChange, nOld, nNew, self.bSimulate, #self.tbTeams)
|
||||
local tbLastCharIds = self:GetJointDrillLastTeam()
|
||||
EventManager.Hit(EventId.OpenPanel, JointDrillContext.GetPanelId(self.nActId, "Result"), nResultType, self.nCurLevel, 0, self.nCurLevelId, mapBossInfo, mapScore, mapItems, mapChange, nOld, nNew, self.bSimulate, #self.tbTeams, {}, tbLastCharIds)
|
||||
end
|
||||
self:EventUpload(4, 0)
|
||||
self:ChallengeEnd()
|
||||
@@ -374,7 +375,8 @@ function PlayerJointDrillData_2:JointDrillGameOver(callback, bSettle, bEditor)
|
||||
local mapChange, mapItems = {}, {}
|
||||
local nOld, nNew = 0, 0
|
||||
local mapBossInfo = self.mapBossInfo[self.nCurLevel]
|
||||
EventManager.Hit(EventId.OpenPanel, JointDrillContext.GetPanelId(self.nActId, "Result"), nResultType, self.nCurLevel, 0, self.nCurLevelId, mapBossInfo, mapScore, mapItems, mapChange, nOld, nNew, self.bSimulate, #self.tbTeams)
|
||||
local tbLastCharIds = self:GetJointDrillLastTeam()
|
||||
EventManager.Hit(EventId.OpenPanel, JointDrillContext.GetPanelId(self.nActId, "Result"), nResultType, self.nCurLevel, 0, self.nCurLevelId, mapBossInfo, mapScore, mapItems, mapChange, nOld, nNew, self.bSimulate, #self.tbTeams, {}, tbLastCharIds)
|
||||
end
|
||||
self:ChallengeEnd()
|
||||
end
|
||||
@@ -576,6 +578,18 @@ end
|
||||
function PlayerJointDrillData_2:GetJointDrillBattleCount()
|
||||
return #self.tbTeams
|
||||
end
|
||||
function PlayerJointDrillData_2:GetJointDrillLastTeam()
|
||||
local tbChar = {}
|
||||
if #self.tbTeams > 0 then
|
||||
local tbTeam = self.tbTeams[#self.tbTeams].Chars
|
||||
if tbTeam ~= nil then
|
||||
for _, v in ipairs(tbTeam) do
|
||||
table.insert(tbChar, v.CharId)
|
||||
end
|
||||
end
|
||||
end
|
||||
return tbChar
|
||||
end
|
||||
function PlayerJointDrillData_2:CheckChallengeCount()
|
||||
if self.nCurLevelId ~= 0 then
|
||||
local mapLevelCfg = ConfigTable.GetData("JointDrill_2_Level", self.nCurLevelId)
|
||||
|
||||
@@ -813,6 +813,7 @@ function PlayerMallData:SendMallPackageListReq(callback)
|
||||
self:UpdateMallRedDot(tbPackageList)
|
||||
self:ResetPackageNew()
|
||||
self:UpdateMallPackageRedDot(tbPackageList)
|
||||
self:ClearDelistedSkinTrialRedDot()
|
||||
end
|
||||
HttpNetHandler.SendMsg(NetMsgId.Id.mall_package_list_req, {}, nil, successCallback)
|
||||
end
|
||||
@@ -907,6 +908,20 @@ function PlayerMallData:ResetPackageNew()
|
||||
end
|
||||
ForEachTableLine(DataTable.MallPackage, foreachFunc)
|
||||
end
|
||||
function PlayerMallData:ClearDelistedSkinTrialRedDot()
|
||||
local nCurTime = ClientManager.serverTimeStamp
|
||||
local foreachFunc = function(mapCfg)
|
||||
if mapCfg.Tag ~= GameEnum.MallItemType.Skin then
|
||||
return
|
||||
end
|
||||
local nDeListTime = PlayerData.Shop:ChangeToTimeStamp(mapCfg.DeListTime)
|
||||
if nDeListTime <= 0 or nDeListTime > nCurTime then
|
||||
return
|
||||
end
|
||||
PlayerData.Char:ClearCharSkinTrialRedDot(mapCfg.Id)
|
||||
end
|
||||
ForEachTableLine(DataTable.MallPackage, foreachFunc)
|
||||
end
|
||||
function PlayerMallData:RemovePackageNew(nPage, nTab)
|
||||
if #self._tbPackage == 0 then
|
||||
return
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
local PlayerPhoneData = class("PlayerPhoneData")
|
||||
local ModuleManager = require("GameCore.Module.ModuleManager")
|
||||
local LocalData = require("GameCore.Data.LocalData")
|
||||
local TimerManager = require("GameCore.Timer.TimerManager")
|
||||
local PHONE_AVG_PRELOAD_TIMEOUT = 2
|
||||
function PlayerPhoneData:Init()
|
||||
self.tbAddressBook = {}
|
||||
self.tbChatMsgCache = {}
|
||||
@@ -209,8 +211,8 @@ function PlayerPhoneData:GetAddressBookList()
|
||||
table.insert(tbChatList, chat)
|
||||
end
|
||||
if 0 < #tbChatList then
|
||||
local lastChat = LocalData.GetPlayerLocalData("LastPhoneChatId" .. addressId)
|
||||
table.sort(tbChatList, function(a, b)
|
||||
local lastChat = LocalData.GetPlayerLocalData("LastPhoneChatId" .. addressId)
|
||||
if a.nChatId == lastChat and a.nStatus == AllEnum.PhoneChatState.UnComplete then
|
||||
return true
|
||||
elseif b.nChatId == lastChat and b.nStatus == AllEnum.PhoneChatState.UnComplete then
|
||||
@@ -744,6 +746,47 @@ function PlayerPhoneData:GetHistoryPhoneSelectionData(nChatId, chatData)
|
||||
end
|
||||
return self.tbHistorySelection[nChatId]
|
||||
end
|
||||
function PlayerPhoneData:PreloadAllAddressBookChatAvg()
|
||||
for _, addressData in pairs(self.tbAddressBook) do
|
||||
if addressData.tbChatList ~= nil then
|
||||
for _, chatData in pairs(addressData.tbChatList) do
|
||||
self:EnsureChatAvgLoaded(chatData)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
function PlayerPhoneData:PreloadPhoneAvgDataBeforeMain(callback)
|
||||
if CS.ClientManager.Instance:GetMemoryType() then
|
||||
if callback ~= nil then
|
||||
callback()
|
||||
end
|
||||
return
|
||||
end
|
||||
local bCallbackDone = false
|
||||
local timerTimeout
|
||||
local func_Done = function()
|
||||
if bCallbackDone then
|
||||
return
|
||||
end
|
||||
bCallbackDone = true
|
||||
if timerTimeout ~= nil then
|
||||
TimerManager.Remove(timerTimeout, false)
|
||||
timerTimeout = nil
|
||||
end
|
||||
if self.bInitChatData then
|
||||
self:PreloadAllAddressBookChatAvg()
|
||||
end
|
||||
if callback ~= nil then
|
||||
callback()
|
||||
end
|
||||
end
|
||||
if self.bInitChatData then
|
||||
func_Done()
|
||||
return
|
||||
end
|
||||
timerTimeout = TimerManager.Add(1, PHONE_AVG_PRELOAD_TIMEOUT, self, func_Done, true, true, true, nil)
|
||||
self:SendAddressListReq(func_Done)
|
||||
end
|
||||
function PlayerPhoneData:GetChatMsg(chatData, nIndex)
|
||||
self:EnsureChatAvgLoaded(chatData)
|
||||
local avgGroupMsg = chatData.avgMsg
|
||||
|
||||
@@ -186,6 +186,9 @@ function PlayerQuestData:CheckTourGroupReward(nIndex)
|
||||
return nIndex <= self.nCurTourGroupOrderIndex
|
||||
end
|
||||
function PlayerQuestData:CheckTeamFormationGroupReward(nAttributeId, nIndex)
|
||||
if self.tbCurTeamFormationGroupIndex == nil then
|
||||
return false
|
||||
end
|
||||
if self.tbCurTeamFormationGroupIndex[nAttributeId] == nil then
|
||||
return false
|
||||
end
|
||||
@@ -1512,6 +1515,7 @@ function PlayerQuestData:ReceiveVampireQuest(nType, tbList, callback)
|
||||
if callback ~= nil then
|
||||
callback(mapMsgData)
|
||||
end
|
||||
EventManager.Hit(EventId.EventReminder_Update, GameEnum.EventReminderType.Vampire)
|
||||
end
|
||||
HttpNetHandler.SendMsg(NetMsgId.Id.vampire_survivor_quest_reward_receive_req, msg, nil, Callback)
|
||||
end
|
||||
|
||||
@@ -644,4 +644,51 @@ function PlayerScoreBossData:GetVoiceKey()
|
||||
local sTimeVoice = PlayerData.Voice:GetNPCGreetTimeVoiceKey()
|
||||
return isFirst, sTimeVoice
|
||||
end
|
||||
function PlayerScoreBossData:SendEnterScoreBossGM(nLevelId, nBuildId)
|
||||
self.StartTime = 1782849600
|
||||
self.EndTime = 2208888000
|
||||
self.CurHPLvScore = 0
|
||||
self.HPLvScore = 0
|
||||
self.CurHPDamage = 0
|
||||
self.BehaviorScore = 0
|
||||
self.BehaviorScoreCount = 0
|
||||
self._EntryTime = CS.ClientManager.Instance.serverTimeStampWithTimeZone
|
||||
self.entryLevelId = nLevelId
|
||||
self.entryBuild = nBuildId
|
||||
if self.curLevel == nil then
|
||||
local luaClass = require("Game.UI.GMTool.GMActivity.GMScoreBossLevel")
|
||||
if luaClass == nil then
|
||||
return
|
||||
end
|
||||
self.curLevel = luaClass
|
||||
end
|
||||
if type(self.curLevel.BindEvent) == "function" and not self.isGoAgain then
|
||||
self.curLevel:BindEvent()
|
||||
end
|
||||
if type(self.curLevel.Init) == "function" then
|
||||
self.curLevel:Init(self, nLevelId, nBuildId, self.isGoAgain)
|
||||
end
|
||||
self.isGoAgain = false
|
||||
end
|
||||
function PlayerScoreBossData:SendScoreBossSettleGM(totalTime)
|
||||
self.TotalTime = totalTime
|
||||
CS.AdventureModuleHelper.PauseLogic()
|
||||
local totalScore = self.HPLvScore + self.CurHPLvScore + self.BehaviorScore
|
||||
local totalStar = self:ScoreToStar()
|
||||
CS.AdventureModuleHelper.ResumeLogic()
|
||||
EventManager.Hit("ScoreBossSettleSuccess", self.entryLevelId, totalScore, totalStar)
|
||||
self:LevelEnd()
|
||||
end
|
||||
function PlayerScoreBossData:EntryLvAgainGM()
|
||||
if self.isGoAgain then
|
||||
CS.AdventureModuleHelper.ClearCharacterDamageRecord(false)
|
||||
self.CurHPLvScore = 0
|
||||
self.HPLvScore = 0
|
||||
self.CurHPDamage = 0
|
||||
self.BehaviorScore = 0
|
||||
self.BehaviorScoreCount = 0
|
||||
EventManager.Hit("ScoreBoss_Restart_Again")
|
||||
self:SendEnterScoreBossGM(self.entryLevelId, self.entryBuild)
|
||||
end
|
||||
end
|
||||
return PlayerScoreBossData
|
||||
|
||||
@@ -1057,6 +1057,7 @@ function PlayerStarTowerData:SendTowerGrowthDetailReq(callback)
|
||||
self:UpdateGrowthReddot()
|
||||
if callback then
|
||||
callback()
|
||||
EventManager.Hit(EventId.EventReminder_Update, GameEnum.EventReminderType.StarTower)
|
||||
end
|
||||
end
|
||||
HttpNetHandler.SendMsg(NetMsgId.Id.tower_growth_detail_req, {}, nil, successCallback)
|
||||
@@ -1072,6 +1073,7 @@ function PlayerStarTowerData:SendTowerGrowthNodeUnlockReq(nId, nGroupId, callbac
|
||||
if callback then
|
||||
callback()
|
||||
end
|
||||
EventManager.Hit(EventId.EventReminder_Update, GameEnum.EventReminderType.StarTower)
|
||||
end
|
||||
HttpNetHandler.SendMsg(NetMsgId.Id.tower_growth_node_unlock_req, msgData, nil, successCallback)
|
||||
end
|
||||
@@ -1089,6 +1091,7 @@ function PlayerStarTowerData:SendTowerGrowthGroupNodeUnlockReq(nGroupId, callbac
|
||||
if callback then
|
||||
callback(mapMainData.Nodes, bHasCore)
|
||||
end
|
||||
EventManager.Hit(EventId.EventReminder_Update, GameEnum.EventReminderType.StarTower)
|
||||
end
|
||||
HttpNetHandler.SendMsg(NetMsgId.Id.tower_growth_group_node_unlock_req, msgData, nil, successCallback)
|
||||
end
|
||||
|
||||
@@ -58,8 +58,9 @@ function PlayerStorySetData:CacheStorySetData(netMsg)
|
||||
v.nId
|
||||
}, v.nStatus == AllEnum.StorySetStatus.UnLock and bShow)
|
||||
end
|
||||
local mapCfg = ConfigTable.GetData("StorySetChapter", data.ChapterId)
|
||||
local chapterHasRedDot = RedDotManager.GetValid(RedDotDefine.Story_Set_Chapter, {
|
||||
data.TadId,
|
||||
mapCfg.TabId,
|
||||
data.ChapterId
|
||||
})
|
||||
if chapterHasRedDot == true then
|
||||
|
||||
@@ -6,6 +6,10 @@ function PlayerTalentData:Init()
|
||||
self._tbCharEnhancedSkill = {}
|
||||
self._tbCharEnhancedPotential = {}
|
||||
self._tbCharFateTalent = {}
|
||||
self._tbLimitedTrialTalentNode = {}
|
||||
self._tbLimitedTrialEnhancedSkill = {}
|
||||
self._tbLimitedTrialEnhancedPotential = {}
|
||||
self._tbLimitedTrialFateTalent = {}
|
||||
self._tbTalentBgIndex = {}
|
||||
self:ProcessTableData()
|
||||
end
|
||||
@@ -580,6 +584,70 @@ function PlayerTalentData:GetTrialFateTalent(nTrialId)
|
||||
end
|
||||
return tbFate
|
||||
end
|
||||
function PlayerTalentData:CreateLimitedTrialData(tbTrialId)
|
||||
for _, nTrialId in ipairs(tbTrialId) do
|
||||
local mapCfg = ConfigTable.GetData("TrialCharacter", nTrialId)
|
||||
if mapCfg == nil then
|
||||
printError("限时试用角色数据没有找到:" .. nTrialId)
|
||||
return
|
||||
end
|
||||
local nCharId = mapCfg.CharId
|
||||
local tbActive = mapCfg.Talent
|
||||
self._tbLimitedTrialTalentNode[nTrialId] = {}
|
||||
for _, v in ipairs(tbActive) do
|
||||
self._tbLimitedTrialTalentNode[nTrialId][v] = true
|
||||
end
|
||||
self._tbLimitedTrialEnhancedSkill[nTrialId] = self:CreateEnhancedSkill(nCharId, tbActive)
|
||||
self._tbLimitedTrialEnhancedPotential[nTrialId] = self:CreateEnhancedPotential(tbActive)
|
||||
local tbTalent = CacheTable.GetData("_TalentByIndex", nCharId)
|
||||
if tbTalent == nil then
|
||||
printError("Talent表找不到该角色" .. nCharId)
|
||||
tbTalent = {}
|
||||
end
|
||||
self._tbLimitedTrialFateTalent[nTrialId] = self:CreateFateTalent(tbTalent)
|
||||
end
|
||||
end
|
||||
function PlayerTalentData:DeleteLimitedTrialData()
|
||||
self._tbLimitedTrialTalentNode = {}
|
||||
self._tbLimitedTrialEnhancedSkill = {}
|
||||
self._tbLimitedTrialEnhancedPotential = {}
|
||||
self._tbLimitedTrialFateTalent = {}
|
||||
end
|
||||
function PlayerTalentData:GetLimitedTrialEnhancedSkill(nTrialId)
|
||||
return self._tbLimitedTrialEnhancedSkill[nTrialId]
|
||||
end
|
||||
function PlayerTalentData:GetLimitedTrialEnhancedPotential(nTrialId)
|
||||
return self._tbLimitedTrialEnhancedPotential[nTrialId]
|
||||
end
|
||||
function PlayerTalentData:GetLimitedTrialFateTalent(nTrialId)
|
||||
local tbFate = {}
|
||||
if not self._tbLimitedTrialFateTalent[nTrialId] then
|
||||
return tbFate
|
||||
end
|
||||
for i, v in ipairs(self._tbLimitedTrialFateTalent[nTrialId]) do
|
||||
if self._tbLimitedTrialTalentNode[nTrialId] and self._tbLimitedTrialTalentNode[nTrialId][v] then
|
||||
tbFate[i] = true
|
||||
else
|
||||
tbFate[i] = false
|
||||
end
|
||||
end
|
||||
return tbFate
|
||||
end
|
||||
function PlayerTalentData:GetLimitedTrialTalentEffect(nTrialId)
|
||||
local mapTalent = self._tbLimitedTrialTalentNode[nTrialId]
|
||||
local tbEffect = {}
|
||||
if mapTalent then
|
||||
for nTalentId, bActive in pairs(mapTalent) do
|
||||
if bActive then
|
||||
local mapCfg = ConfigTable.GetData("Talent", nTalentId)
|
||||
for _, nEffectId in pairs(mapCfg.EffectId) do
|
||||
table.insert(tbEffect, nEffectId)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return tbEffect
|
||||
end
|
||||
function PlayerTalentData:GetTrialTalentEffect(nTrialId)
|
||||
local mapTalent = self._tbTrialTalentNode[nTrialId]
|
||||
local tbEffect = {}
|
||||
|
||||
@@ -34,13 +34,18 @@ function PlayerTraceHuntData:Init()
|
||||
nDailyCount = 0
|
||||
}
|
||||
self.nBuildId = 0
|
||||
self.nSelfBossHard = 1
|
||||
self.nHelpBossHard = 1
|
||||
EventManager.Add(EventId.IsNewDay, self, self.OnEvent_NewDay)
|
||||
self:ProcessTableData()
|
||||
end
|
||||
function PlayerTraceHuntData:ProcessTableData()
|
||||
self.tbTraceHuntStar = {}
|
||||
local func_ForEach_Star = function(mapData)
|
||||
self.tbTraceHuntStar[mapData.Star] = mapData.ScoreNeed
|
||||
if not self.tbTraceHuntStar[mapData.Star] then
|
||||
self.tbTraceHuntStar[mapData.Star] = {}
|
||||
end
|
||||
self.tbTraceHuntStar[mapData.Star][mapData.Difficulty] = mapData.ScoreNeed
|
||||
end
|
||||
ForEachTableLine(DataTable.TraceHuntStar, func_ForEach_Star)
|
||||
self.tbHuntExtraCost = {}
|
||||
@@ -54,6 +59,7 @@ function PlayerTraceHuntData:ProcessTableData()
|
||||
self:ProcessTableData_Level()
|
||||
self:ProcessTableData_Config()
|
||||
self:ProcessTableData_Log()
|
||||
self:ProcessTableData_Floor()
|
||||
end
|
||||
function PlayerTraceHuntData:ProcessTableData_Config()
|
||||
self.nHuntPermitTid = ConfigTable.GetConfigNumber("TraceHuntPermitItemTid")
|
||||
@@ -90,6 +96,7 @@ end
|
||||
function PlayerTraceHuntData:ProcessTableData_Level()
|
||||
self.tbTraceHuntLevel = {}
|
||||
self.nMaxTraceHuntLevel = 0
|
||||
self.nHardOpenLevel = 100
|
||||
local func_ForEach_Level = function(mapData)
|
||||
self.tbTraceHuntLevel[mapData.Level] = {
|
||||
Exp = mapData.Exp,
|
||||
@@ -106,6 +113,9 @@ function PlayerTraceHuntData:ProcessTableData_Level()
|
||||
if mapData.Level > self.nMaxTraceHuntLevel then
|
||||
self.nMaxTraceHuntLevel = mapData.Level
|
||||
end
|
||||
if #mapData.DifficultyList > 1 and mapData.Level < self.nHardOpenLevel then
|
||||
self.nHardOpenLevel = mapData.Level
|
||||
end
|
||||
end
|
||||
ForEachTableLine(DataTable.TraceHuntLevel, func_ForEach_Level)
|
||||
for i = 1, self.nMaxTraceHuntLevel do
|
||||
@@ -116,6 +126,16 @@ function PlayerTraceHuntData:ProcessTableData_Level()
|
||||
end
|
||||
end
|
||||
end
|
||||
function PlayerTraceHuntData:ProcessTableData_Floor()
|
||||
self.tbTraceHuntFloor = {}
|
||||
local func_ForEach_Floor = function(mapData)
|
||||
if not self.tbTraceHuntFloor[mapData.GroupId] then
|
||||
self.tbTraceHuntFloor[mapData.GroupId] = {}
|
||||
end
|
||||
self.tbTraceHuntFloor[mapData.GroupId][mapData.Difficult] = mapData
|
||||
end
|
||||
ForEachTableLine(DataTable.TraceHuntFloorGroup, func_ForEach_Floor)
|
||||
end
|
||||
function PlayerTraceHuntData:UnInit()
|
||||
EventManager.Remove(EventId.IsNewDay, self, self.OnEvent_NewDay)
|
||||
end
|
||||
@@ -189,6 +209,9 @@ function PlayerTraceHuntData:CacheTraceHuntInfo(mapTraceHuntInfo)
|
||||
self.tbBossCollection = {}
|
||||
for _, v in ipairs(mapTraceHuntInfo.BossCollections) do
|
||||
self:UpdateBossCollection(v.Id, v.HuntCount, v.AssistHuntCount)
|
||||
if NovaAPI.IsEditorPlatform() then
|
||||
printLog("TraceHunt 图鉴 Boss id/讨伐次数/协助次数:" .. " " .. v.Id .. "/" .. v.HuntCount .. "/" .. v.AssistHuntCount)
|
||||
end
|
||||
end
|
||||
self:UpdateControlData()
|
||||
self:UpdateLevel(mapTraceHuntInfo.Level, mapTraceHuntInfo.Exp)
|
||||
@@ -259,6 +282,39 @@ end
|
||||
function PlayerTraceHuntData:GetCurControlId()
|
||||
return self.nControlId
|
||||
end
|
||||
function PlayerTraceHuntData:GetControlBlockState()
|
||||
return self.nControlId < ConfigTable.GetConfigNumber("TraceHuntHardOpenControlId")
|
||||
end
|
||||
function PlayerTraceHuntData:GetSelfBossHard()
|
||||
if self:GetControlBlockState() then
|
||||
self.nSelfBossHard = 1
|
||||
end
|
||||
return self.nSelfBossHard
|
||||
end
|
||||
function PlayerTraceHuntData:SetSelfBossHard(nHard)
|
||||
self.nSelfBossHard = nHard
|
||||
end
|
||||
function PlayerTraceHuntData:GetHelpBossHard()
|
||||
if self:GetControlBlockState() then
|
||||
self.nHelpBossHard = 1
|
||||
end
|
||||
local nCost = self:GetHuntCostCount()
|
||||
local nHasCoin = self:GetHuntTokenCount()
|
||||
if nCost > nHasCoin then
|
||||
self.nHelpBossHard = 1
|
||||
end
|
||||
return self.nHelpBossHard
|
||||
end
|
||||
function PlayerTraceHuntData:SetHelpBossHard(nHard)
|
||||
self.nHelpBossHard = nHard
|
||||
end
|
||||
function PlayerTraceHuntData:GetDifficultyBySource(bSelf)
|
||||
if bSelf then
|
||||
return self:GetSelfBossHard()
|
||||
else
|
||||
return self:GetHelpBossHard()
|
||||
end
|
||||
end
|
||||
function PlayerTraceHuntData:GetHuntWarning()
|
||||
return self.bHuntWarning
|
||||
end
|
||||
@@ -315,6 +371,55 @@ end
|
||||
function PlayerTraceHuntData:GetTraceHuntMaxLevel()
|
||||
return self.nMaxTraceHuntLevel
|
||||
end
|
||||
function PlayerTraceHuntData:GetHardOpenLevel()
|
||||
return self.nHardOpenLevel
|
||||
end
|
||||
function PlayerTraceHuntData:GetLevelDisplayEffects(nLevel)
|
||||
local tbEffect = {}
|
||||
local mapLevel = self:GetTraceHuntLevelData(nLevel)
|
||||
if mapLevel == nil then
|
||||
return tbEffect
|
||||
end
|
||||
if mapLevel.DisplayMaxStar > 0 then
|
||||
table.insert(tbEffect, {
|
||||
sText = orderedFormat(ConfigTable.GetUIText("TraceHunt_LevelEffect_MaxStar"), mapLevel.DisplayMaxStar),
|
||||
bIcon1 = false
|
||||
})
|
||||
end
|
||||
if 0 < mapLevel.DisplayTokenRate then
|
||||
local sTitle = ConfigTable.GetData_Item(AllEnum.CoinItemId.TraceHunt).Title
|
||||
table.insert(tbEffect, {
|
||||
sText = orderedFormat(ConfigTable.GetUIText("TraceHunt_LevelEffect_TokenRate"), sTitle, mapLevel.DisplayTokenRate),
|
||||
bIcon1 = false
|
||||
})
|
||||
end
|
||||
if 0 < mapLevel.DisplayFreeRate then
|
||||
local sTitle = ConfigTable.GetData_Item(self.nTraceRequestTid).Title
|
||||
table.insert(tbEffect, {
|
||||
sText = orderedFormat(ConfigTable.GetUIText("TraceHunt_LevelEffect_FreeRate"), sTitle, mapLevel.DisplayFreeRate),
|
||||
bIcon1 = false
|
||||
})
|
||||
end
|
||||
if 0 < mapLevel.DisplayAddRate then
|
||||
table.insert(tbEffect, {
|
||||
sText = orderedFormat(ConfigTable.GetUIText("TraceHunt_LevelEffect_AddRate"), mapLevel.DisplayAddRate),
|
||||
bIcon1 = true
|
||||
})
|
||||
end
|
||||
if 0 < mapLevel.DisplayLuckyRate then
|
||||
table.insert(tbEffect, {
|
||||
sText = orderedFormat(ConfigTable.GetUIText("TraceHunt_LevelEffect_LuckyRate"), mapLevel.DisplayLuckyRate),
|
||||
bIcon1 = true
|
||||
})
|
||||
end
|
||||
if self.nHardOpenLevel == nLevel and not self:GetControlBlockState() then
|
||||
table.insert(tbEffect, {
|
||||
sText = ConfigTable.GetUIText("TraceHunt_LevelEffect_Hard"),
|
||||
bIcon1 = true
|
||||
})
|
||||
end
|
||||
return tbEffect
|
||||
end
|
||||
function PlayerTraceHuntData:GetBossId()
|
||||
return self.nBossId
|
||||
end
|
||||
@@ -337,7 +442,20 @@ function PlayerTraceHuntData:GetSelfHuntCount()
|
||||
return self.nSelfBossHuntCount
|
||||
end
|
||||
function PlayerTraceHuntData:GetStarScore(nStar)
|
||||
return self.tbTraceHuntStar[nStar] or 0
|
||||
local mapData = self.tbTraceHuntStar[nStar]
|
||||
if not mapData then
|
||||
return 0
|
||||
end
|
||||
local nHard = self:GetDifficultyBySource(self.bSelfBoss)
|
||||
return mapData[nHard]
|
||||
end
|
||||
function PlayerTraceHuntData:GetBossTimeLimit()
|
||||
local nDifficulty = self:GetDifficultyBySource(self.bSelfBoss)
|
||||
if 1 < nDifficulty then
|
||||
return ConfigTable.GetConfigNumber("TraceHuntHardBossTimeLimit")
|
||||
else
|
||||
return ConfigTable.GetConfigNumber("TraceHuntBossTimeLimit")
|
||||
end
|
||||
end
|
||||
function PlayerTraceHuntData:GetHuntCostCount(bSelf)
|
||||
if self.nControlId == 0 then
|
||||
@@ -372,7 +490,7 @@ function PlayerTraceHuntData:GetTraceCostCount()
|
||||
end
|
||||
return mapCfg.TraceCost1Qty
|
||||
end
|
||||
function PlayerTraceHuntData:GetHuntRewardRange()
|
||||
function PlayerTraceHuntData:GetHuntRewardRange(bSelf)
|
||||
if self.nControlId == 0 then
|
||||
return 0, 0
|
||||
end
|
||||
@@ -380,6 +498,14 @@ function PlayerTraceHuntData:GetHuntRewardRange()
|
||||
if not mapCfg then
|
||||
return 0, 0
|
||||
end
|
||||
local nDifficulty = self:GetDifficultyBySource(bSelf)
|
||||
local mapDifficulty = ConfigTable.GetData("TraceHuntDifficulty", nDifficulty)
|
||||
if not mapDifficulty then
|
||||
return 0, 0
|
||||
end
|
||||
local nLevelRate = self:GetLevelTokenRate()
|
||||
local nHardRate = mapDifficulty.TokenRate
|
||||
local nAddRate = 100 + nLevelRate + nHardRate
|
||||
local tbCount = mapCfg.StarDropCount
|
||||
local nMin = tbCount[1]
|
||||
local nMax = 0
|
||||
@@ -388,6 +514,8 @@ function PlayerTraceHuntData:GetHuntRewardRange()
|
||||
nMax = v
|
||||
end
|
||||
end
|
||||
nMin = math.floor(nMin * nAddRate / 100)
|
||||
nMax = math.floor(nMax * nAddRate / 100)
|
||||
return nMin, nMax
|
||||
end
|
||||
function PlayerTraceHuntData:GetHuntTokenCount()
|
||||
@@ -536,8 +664,26 @@ end
|
||||
function PlayerTraceHuntData:GetBossCollection()
|
||||
return self.tbBossCollection, self.tbBossList or {}
|
||||
end
|
||||
function PlayerTraceHuntData:GetStarDropCount()
|
||||
return self.tbStarDropCount or {}
|
||||
function PlayerTraceHuntData:GetLevelTokenRate()
|
||||
local nRate = 0
|
||||
for i = 1, self.nLevel do
|
||||
nRate = nRate + self.tbTraceHuntLevel[i].DisplayTokenRate
|
||||
end
|
||||
return nRate
|
||||
end
|
||||
function PlayerTraceHuntData:GetStarDropCount(nDifficulty)
|
||||
local mapDifficulty = ConfigTable.GetData("TraceHuntDifficulty", nDifficulty)
|
||||
if not mapDifficulty then
|
||||
return {}
|
||||
end
|
||||
local nLevelRate = self:GetLevelTokenRate()
|
||||
local nHardRate = mapDifficulty.TokenRate
|
||||
local nAddRate = 100 + nLevelRate + nHardRate
|
||||
local tbCount = {}
|
||||
for nStar, v in ipairs(self.tbStarDropCount) do
|
||||
tbCount[nStar] = math.floor(v * nAddRate / 100)
|
||||
end
|
||||
return tbCount
|
||||
end
|
||||
function PlayerTraceHuntData:SetControlTimer()
|
||||
if self.timerControl ~= nil then
|
||||
@@ -588,18 +734,23 @@ function PlayerTraceHuntData:SendTraceHuntInfoReq(callback)
|
||||
HttpNetHandler.SendMsg(NetMsgId.Id.trace_hunt_info_req, {}, nil, successCallback)
|
||||
end
|
||||
function PlayerTraceHuntData:SendTraceHuntApplyReq(nOwnerUID, nBossID, nBuildId, nBossCreateTime, mapFriend)
|
||||
local bSelfBoss = PlayerData.Base._nPlayerId == nOwnerUID
|
||||
local nDifficulty = self:GetDifficultyBySource(bSelfBoss)
|
||||
local mapBoss = ConfigTable.GetData("TraceHuntBoss", nBossID)
|
||||
local nFloorId = self.tbTraceHuntFloor[mapBoss.FloorGroup][nDifficulty].Id
|
||||
local msgData = {
|
||||
OwnerUID = nOwnerUID,
|
||||
BossID = nBossID,
|
||||
BuildID = nBuildId,
|
||||
BossCreateTime = nBossCreateTime
|
||||
BossCreateTime = nBossCreateTime,
|
||||
Difficulty = nDifficulty
|
||||
}
|
||||
local successCallback = function(_, mapMainData)
|
||||
self.CurHPLvScore = 0
|
||||
self.HPLvScore = 0
|
||||
self.CurHPDamage = 0
|
||||
self.bSelfBoss = PlayerData.Base._nPlayerId == nOwnerUID
|
||||
self:EnterTraceHunt(nBossID, nBuildId)
|
||||
self.bSelfBoss = bSelfBoss
|
||||
self:EnterTraceHunt(nBossID, nBuildId, nFloorId)
|
||||
PlayerData.Friend:CacheFriendAddStranger(mapFriend)
|
||||
end
|
||||
HttpNetHandler.SendMsg(NetMsgId.Id.trace_hunt_apply_req, msgData, nil, successCallback)
|
||||
@@ -770,9 +921,10 @@ function PlayerTraceHuntData:UpdateItemEntranceRedDot()
|
||||
local bTraceMax = RedDotManager.GetValid(RedDotDefine.TraceHunt_TraceItem)
|
||||
RedDotManager.SetValid(RedDotDefine.TraceHunt_Item, nil, not bReward and (bHuntMax or bTraceMax))
|
||||
end
|
||||
function PlayerTraceHuntData:EnterTraceHunt(nLevelId, nBuildId)
|
||||
function PlayerTraceHuntData:EnterTraceHunt(nLevelId, nBuildId, nFloorId)
|
||||
self.entryLevelId = nLevelId
|
||||
self.entryBuild = nBuildId
|
||||
self.entryFloorId = nFloorId
|
||||
if self.curLevel == nil then
|
||||
local luaClass = require("Game.Adventure.TraceHunt.TraceHuntLevel")
|
||||
if luaClass == nil then
|
||||
@@ -784,7 +936,7 @@ function PlayerTraceHuntData:EnterTraceHunt(nLevelId, nBuildId)
|
||||
self.curLevel:BindEvent()
|
||||
end
|
||||
if type(self.curLevel.Init) == "function" then
|
||||
self.curLevel:Init(self, nLevelId, nBuildId, self.isGoAgain)
|
||||
self.curLevel:Init(self, nLevelId, nBuildId, nFloorId, self.isGoAgain)
|
||||
end
|
||||
self.isGoAgain = false
|
||||
end
|
||||
@@ -825,10 +977,11 @@ function PlayerTraceHuntData:GetTotalScore()
|
||||
return totalScore
|
||||
end
|
||||
function PlayerTraceHuntData:ScoreToStar()
|
||||
local nDifficulty = self:GetDifficultyBySource(self.bSelfBoss)
|
||||
local tmpStar = 0
|
||||
local totalScore = self.HPLvScore + self.CurHPLvScore
|
||||
for i, v in pairs(self.tbTraceHuntStar) do
|
||||
if v <= totalScore and i > tmpStar then
|
||||
if totalScore >= v[nDifficulty] and i > tmpStar then
|
||||
tmpStar = i
|
||||
end
|
||||
end
|
||||
@@ -867,7 +1020,7 @@ function PlayerTraceHuntData:EntryLvAgain()
|
||||
self.HPLvScore = 0
|
||||
self.CurHPDamage = 0
|
||||
EventManager.Hit("TraceHunt_Restart_Again")
|
||||
self:EnterTraceHunt(self.entryLevelId, self.entryBuild)
|
||||
self:EnterTraceHunt(self.entryLevelId, self.entryBuild, self.entryFloorId)
|
||||
end
|
||||
end
|
||||
return PlayerTraceHuntData
|
||||
|
||||
@@ -7,10 +7,55 @@ function PlayerTrialData:Init()
|
||||
self.nActId = nil
|
||||
self.nSelectTrialGroupId = nil
|
||||
self.sLevelTitle = nil
|
||||
self.nMode = AllEnum.TrialMode.ActivityTrial
|
||||
end
|
||||
function PlayerTrialData:SetTrialAct(nActId)
|
||||
self.nActId = nActId
|
||||
end
|
||||
function PlayerTrialData:SetTrialMode(nMode)
|
||||
self.nMode = nMode or AllEnum.TrialMode.ActivityTrial
|
||||
end
|
||||
function PlayerTrialData:IsActivityTrialMode()
|
||||
return self.nMode == AllEnum.TrialMode.ActivityTrial
|
||||
end
|
||||
function PlayerTrialData:IsSkinTrialMode()
|
||||
return self.nMode == AllEnum.TrialMode.SkinTrial
|
||||
end
|
||||
function PlayerTrialData:UserEventUpload_TrialBattle(nAction)
|
||||
if not self:IsSkinTrialMode() then
|
||||
return
|
||||
end
|
||||
local nGroupId = self:GetSelectTrialGroup()
|
||||
local nPlayerId = PlayerData.Base._nPlayerId
|
||||
local nSkinId
|
||||
local mapGroup = nGroupId and ConfigTable.GetData("TrialGroup", nGroupId)
|
||||
local mapTrial = mapGroup and ConfigTable.GetData("TrialCharacter", mapGroup.TrialChar)
|
||||
if mapTrial then
|
||||
nSkinId = mapTrial.CharacterSkin
|
||||
end
|
||||
if not (nGroupId and nPlayerId) or not nSkinId then
|
||||
return
|
||||
end
|
||||
local tab = {
|
||||
{
|
||||
"trial_group",
|
||||
tostring(nGroupId)
|
||||
},
|
||||
{
|
||||
"role_id",
|
||||
tostring(nPlayerId)
|
||||
},
|
||||
{
|
||||
"skin_id",
|
||||
tostring(nSkinId)
|
||||
},
|
||||
{
|
||||
"action",
|
||||
tostring(nAction)
|
||||
}
|
||||
}
|
||||
NovaAPI.UserEventUpload("trial_battle", tab)
|
||||
end
|
||||
function PlayerTrialData:GetTrialAct()
|
||||
return self.nActId
|
||||
end
|
||||
@@ -21,6 +66,9 @@ function PlayerTrialData:GetSelectTrialGroup()
|
||||
return self.nSelectTrialGroupId
|
||||
end
|
||||
function PlayerTrialData:CheckGroupReceived()
|
||||
if not self:IsActivityTrialMode() then
|
||||
return true
|
||||
end
|
||||
if not self.nActId or not self.nSelectTrialGroupId then
|
||||
return false
|
||||
end
|
||||
@@ -31,6 +79,9 @@ function PlayerTrialData:CheckGroupReceived()
|
||||
return actData:CheckGroupReceived(self.nSelectTrialGroupId)
|
||||
end
|
||||
function PlayerTrialData:GetNextUnreceiveGroup()
|
||||
if not self:IsActivityTrialMode() then
|
||||
return
|
||||
end
|
||||
if not self.nActId then
|
||||
return
|
||||
end
|
||||
@@ -41,6 +92,12 @@ function PlayerTrialData:GetNextUnreceiveGroup()
|
||||
return actData:GetNextUnreceiveGroup()
|
||||
end
|
||||
function PlayerTrialData:SendReceiveTrialRewardReq(callback)
|
||||
if not self:IsActivityTrialMode() then
|
||||
if callback then
|
||||
callback()
|
||||
end
|
||||
return false
|
||||
end
|
||||
if not self.nActId or not self.nSelectTrialGroupId then
|
||||
callback()
|
||||
return false
|
||||
@@ -53,6 +110,7 @@ function PlayerTrialData:SendReceiveTrialRewardReq(callback)
|
||||
actData:SendActivityTrialRewardReceiveReq(self.nSelectTrialGroupId, callback)
|
||||
end
|
||||
function PlayerTrialData:EnterTrialEditor(nFloor)
|
||||
self:SetTrialMode(AllEnum.TrialMode.ActivityTrial)
|
||||
if self.curLevel ~= nil then
|
||||
printError("当前关卡level不为空1")
|
||||
return
|
||||
@@ -71,6 +129,27 @@ function PlayerTrialData:EnterTrialEditor(nFloor)
|
||||
end
|
||||
end
|
||||
function PlayerTrialData:EnterTrial(nLevelId)
|
||||
self:SetTrialMode(AllEnum.TrialMode.ActivityTrial)
|
||||
if self.curLevel ~= nil then
|
||||
printError("当前关卡level不为空1")
|
||||
return
|
||||
end
|
||||
local luaClass = require("Game.Adventure.Trial.TrialLevel")
|
||||
if luaClass == nil then
|
||||
return
|
||||
end
|
||||
self.curLevel = luaClass
|
||||
if type(self.curLevel.BindEvent) == "function" then
|
||||
self.curLevel:BindEvent()
|
||||
end
|
||||
if type(self.curLevel.Init) == "function" then
|
||||
Actor2DManager.ForceUseL2D(true)
|
||||
self.curLevel:Init(self, nLevelId)
|
||||
end
|
||||
end
|
||||
function PlayerTrialData:EnterSkinTrial(nLevelId)
|
||||
self:SetTrialAct(nil)
|
||||
self:SetTrialMode(AllEnum.TrialMode.SkinTrial)
|
||||
if self.curLevel ~= nil then
|
||||
printError("当前关卡level不为空1")
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user