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:
SL1900
2026-09-08 12:00:00 +09:00
parent d441c7afdc
commit 7363298dc1
963 changed files with 590901 additions and 5401 deletions
@@ -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)
+79 -24
View File
@@ -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
+297 -9
View File
@@ -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
+234 -1
View File
@@ -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
+3
View File
@@ -174,6 +174,9 @@ function PlayerData.Init()
CacheTable.SetField("_EnumDesc", mapData.EnumName, mapData.Value, mapData.Key)
end
ForEachTableLine(DataTable.EnumDesc, foreachEnumDesc)
local EventReminderData = require("GameCore.Data.DataClass.EventReminderData")
PlayerData.EventReminder = EventReminderData.new()
PlayerData.EventReminder:Init()
end
function PlayerData.UnInit()
PlayerData.Base:UnInit()