Update - 2.1.0.147

EN: 2.1.0.147
CN: 2.1.0.147
JP: 2.1.0.149
KR: 2.1.0.154
This commit is contained in:
SL1900
2026-11-13 12:00:00 +09:00
parent c84dd6f891
commit da1d2be9fc
822 changed files with 1752348 additions and 1554 deletions
+18
View File
@@ -1859,4 +1859,22 @@ AllEnum.SoldierEventEffectRewardType = {
CardEffect = "CardEffect",
LoseAllCoin = "LoseAllCoin"
}
AllEnum.PanelId_AnalysisPanel = {
[21] = "CharList",
[22] = "Gacha",
[46] = "Mail",
[54] = "LevelMenu",
[318] = "DispatchPanel",
[49] = "Quest",
[261] = "Phone",
[241] = "ActivityList",
[16] = "MainViewSide",
[87] = "BattlePass",
[48] = "Friend",
[146] = "StoryEntrance",
[74] = "Mall",
[29] = "DepotPanel",
[27] = "ShopPanel",
[38] = "Disc"
}
return AllEnum
@@ -38,6 +38,7 @@ function BdConvertData:CreateBuildData(mapBuildMsg)
mapRank = self:CalBuildRank(mapBuildMsg.Brief.Score),
bLock = mapBuildMsg.Brief.Lock,
bPreference = mapBuildMsg.Brief.Preference,
bDislike = mapBuildMsg.Brief.Discard,
bDetail = false,
tbDisc = mapBuildMsg.Brief.DiscIds,
tbSecondarySkill = mapBuildMsg.Detail.ActiveSecondaryIds,
@@ -528,6 +529,9 @@ function BdConvertData:RequestChangeBuildLock(nBuildId, bLock, callback)
local msg = {BuildId = nBuildId, Lock = bLock}
local callBack = function()
self.AllBuild[nBuildId].bLock = bLock
if bLock then
self.AllBuild[nBuildId].bDislike = false
end
if callback ~= nil then
callback()
end
@@ -134,6 +134,9 @@ end
function IceCreamActData:GetLevelData(nId)
return self.mapLevelData[nId] or {nScore = 0, bFirstComplete = false}
end
function IceCreamActData:GetLevelFirstComplete(nId)
return self.mapLevelData[nId].bFirstComplete or false
end
function IceCreamActData:GetLevelMapData(nLevelId)
local mapCfg = ConfigTable.GetData("ActivityIceCreamLevel", nLevelId)
if not mapCfg then
@@ -260,8 +263,8 @@ function IceCreamActData:ShowActivityClosedAlert()
EventManager.Hit(EventId.OpenMessageBox, msg)
end
function IceCreamActData:ForceExitOnFinishFail()
EventManager.Hit(EventId.ClosePanel, PanelId.IceCreamTruckGamePanel)
EventManager.Hit(EventId.ClosePanel, PanelId.IceCreamLevelsSelectPanel)
EventManager.Hit(EventId.ClosePanel, PanelId.IceCreamTruckGamePanel_400020)
EventManager.Hit(EventId.ClosePanel, PanelId.IceCreamLevelsSelectPanel_400020)
end
function IceCreamActData:OnEvent_GMClearAllIceLevels(mapMsgData)
if mapMsgData ~= nil then
@@ -164,6 +164,7 @@ function PlayerBuildData:CreateBuildBriefData(mapBuildBriefMsg)
mapRank = self:CalBuildRank(mapBuildBriefMsg.Score),
bLock = mapBuildBriefMsg.Lock,
bPreference = mapBuildBriefMsg.Preference,
bDislike = mapBuildBriefMsg.Discard,
bDetail = false,
tbDisc = {},
tbSecondarySkill = {},
@@ -227,6 +228,7 @@ function PlayerBuildData:RefreshBuildInfo(mapBuildInfo)
mapBuildData.mapRank = self:CalBuildRank(mapBuildBriefMsg.Score)
mapBuildData.bLock = mapBuildBriefMsg.Lock
mapBuildData.bPreference = mapBuildBriefMsg.Preference
mapBuildData.bDislike = mapBuildBriefMsg.Discard
mapBuildData.nTowerId = mapBuildBriefMsg.StarTowerId
mapBuildData.tbDisc = mapBuildBriefMsg.DiscIds
if mapBuildInfo.Detail ~= nil then
@@ -331,14 +333,24 @@ function PlayerBuildData:SetBuildPreference(tbCheckInIds, tbCheckOutIds, callbac
end
self:NetMsg_BuildPreference(tbCheckInIds, tbCheckOutIds, callback)
end
function PlayerBuildData:SaveBuild(nBuildID, bDelete, bLock, bPreference, sName, callback)
function PlayerBuildData:SetBuildDislike(nBuildId, bDislike, callback)
local tbCheckId = self:FilterEditableBuildIds({nBuildId})
if #tbCheckId == 0 then
if callback then
callback()
end
return
end
self:NetMsg_BuildDislike(nBuildId, bDislike, callback)
end
function PlayerBuildData:SaveBuild(nBuildID, bDelete, bLock, bPreference, bDislike, sName, callback)
if not self:IsBuildEditable(nBuildID) then
if callback then
callback()
end
return
end
self:NetMsg_SaveBuild(nBuildID, bDelete, bLock, bPreference, sName, callback)
self:NetMsg_SaveBuild(nBuildID, bDelete, bLock, bPreference, bDislike, sName, callback)
end
function PlayerBuildData:ModifyBuildNote(nBuildId, tbNoteChange, callback)
local mapBuildData = self:GetBuildData(nBuildId)
@@ -704,6 +716,9 @@ function PlayerBuildData:NetMsg_ChangeBuildLock(nBuildId, bLock, callback)
local msg = {BuildId = nBuildId, Lock = bLock}
local callBack = function()
self._MapBuildData[nBuildId].bLock = bLock
if bLock then
self._MapBuildData[nBuildId].bDislike = false
end
if callback ~= nil then
callback()
end
@@ -728,6 +743,8 @@ function PlayerBuildData:NetMsg_BuildPreference(tbCheckInIds, tbCheckOutIds, cal
local callBack = function()
for _, bBuildId in ipairs(tbCheckInIds) do
self._MapBuildData[bBuildId].bPreference = true
self._MapBuildData[bBuildId].bDislike = false
self._MapBuildData[bBuildId].bLock = true
end
for _, bBuildId in ipairs(tbCheckOutIds) do
self._MapBuildData[bBuildId].bPreference = false
@@ -738,12 +755,29 @@ function PlayerBuildData:NetMsg_BuildPreference(tbCheckInIds, tbCheckOutIds, cal
end
HttpNetHandler.SendMsg(NetMsgId.Id.star_tower_build_preference_set_req, msg, nil, callBack)
end
function PlayerBuildData:NetMsg_SaveBuild(nBuildID, bDelete, bLock, bPreference, sName, callback)
function PlayerBuildData:NetMsg_BuildDislike(nBuildId, bDislike, callback)
local msg = {BuildId = nBuildId, Discard = bDislike}
local callBack = function()
self._MapBuildData[nBuildId].bDislike = bDislike
if callback ~= nil then
callback()
end
end
HttpNetHandler.SendMsg(NetMsgId.Id.star_tower_build_discard_req, msg, nil, callBack)
end
function PlayerBuildData:NetMsg_SaveBuild(nBuildID, bDelete, bLock, bPreference, bDislike, sName, callback)
if bPreference == nil then
bPreference = false
end
if bDislike == nil then
bDislike = false
end
local msg = {}
msg.Delete = bDelete
msg.Lock = bLock
msg.Preference = bPreference
msg.BuildName = sName
msg.Discard = bDislike
local callBack = function(_, mapMainData)
if callback ~= nil then
if bDelete then
@@ -752,6 +786,7 @@ function PlayerBuildData:NetMsg_SaveBuild(nBuildID, bDelete, bLock, bPreference,
self._MapBuildData[nBuildID].bLock = bLock
self._MapBuildData[nBuildID].bPreference = bPreference
self._MapBuildData[nBuildID].sName = sName
self._MapBuildData[nBuildID].bDislike = bDislike
end
callback(mapMainData.Change)
end
@@ -917,6 +952,7 @@ function PlayerBuildData:CreateTrialBuild(nTrialId)
mapRank = self:CalBuildRank(mapTrialData.Score),
bLock = false,
bPreference = false,
bDislike = false,
bDetail = true,
tbDisc = {},
tbSecondarySkill = {},
+8 -30
View File
@@ -2,7 +2,7 @@ local PlayerDormData = class("PlayerDormData")
local LocalData = require("GameCore.Data.LocalData")
function PlayerDormData:Init()
self.nMaxInteractionCount = ConfigTable.GetConfigNumber("DormRoleInteractionMaxNum")
self.nMaxGiftSendCount = ConfigTable.GetConfigNumber("DormRoleAffinityGiftMaxNum")
self.nMaxGiftSendCount = tonumber(ConfigTable.GetConfigNumber("AffinityGiftSendCount"))
self.nMaxRoleGiftSendCount = ConfigTable.GetConfigNumber("DormRoleAffinityGiftDailyNum")
self.mapDormRoomInfo = {}
self.mapFurnitureBag = {}
@@ -547,12 +547,7 @@ function PlayerDormData:DormSetRoomBgm(tbMsg, callback)
end
function PlayerDormData:DormAffinityGiftSend(nRoomId, nCharId, tbGift, callback)
local mapAffinityBefore = PlayerData.Char:GetCharAffinityData(nCharId)
local nGiftCount = 0
local NetCallback = function(_, msgData)
if self.mapAffinityGiftRoleCount[nCharId] == nil then
self.mapAffinityGiftRoleCount[nCharId] = 0
end
self.mapAffinityGiftRoleCount[nCharId] = self.mapAffinityGiftRoleCount[nCharId] + nGiftCount
local successCallback = function(_, msgData)
if msgData.Info == nil then
if type(callback) == "function" and callback ~= nil then
callback()
@@ -568,15 +563,8 @@ function PlayerDormData:DormAffinityGiftSend(nRoomId, nCharId, tbGift, callback)
callback(msgData.Info)
end
end
local msg = {
CharId = nCharId,
DormRoomId = nRoomId,
Items = tbGift
}
for _, mapItemTpl in ipairs(tbGift) do
nGiftCount = nGiftCount + mapItemTpl.Qty
end
HttpNetHandler.SendMsg(NetMsgId.Id.dorm_affinity_gift_send_req, msg, nil, NetCallback)
local msg = {CharId = nCharId, Items = tbGift}
HttpNetHandler.SendMsg(NetMsgId.Id.char_affinity_gift_send_req, msg, nil, successCallback)
end
function PlayerDormData:DormGetFriendList(callback)
local NetCallback = function(_, msgData)
@@ -726,16 +714,12 @@ function PlayerDormData:DormSetRoomScene(nRoomId, nScene, callback)
HttpNetHandler.SendMsg(NetMsgId.Id.dorm_set_room_scene_req, msg, nil, NetCallback)
end
function PlayerDormData:CheckRoleSendGift(nRoleId)
local nCount = 0
for nCharId, nCharCount in pairs(self.mapAffinityGiftRoleCount) do
nCount = nCount + nCharCount
end
local nCount = PlayerData.Base:GetSendGiftCount()
if nCount >= self.nMaxGiftSendCount then
print("今日送礼次数已达上限")
return true
end
local nRoleCount = self.mapAffinityGiftRoleCount[nRoleId] or 0
return nRoleCount > self.nMaxRoleGiftSendCount
return false
end
function PlayerDormData:CheckRoleInteraction(nRoleId)
if #self.tbInteractionRoleIds >= self.nMaxInteractionCount then
@@ -764,14 +748,8 @@ function PlayerDormData:CalcAffinityExpChange(nCharId, nLastLevel, nLastExp, nNe
return nChangeExp
end
function PlayerDormData:GetCharGiftCountDay(nCharId)
local nCount = 0
for nCharId, nCharCount in pairs(self.mapAffinityGiftRoleCount) do
nCount = nCount + nCharCount
end
local nSumTotalCount = self.nMaxGiftSendCount - nCount
local nCharCount = self.mapAffinityGiftRoleCount[nCharId] or 0
local nSumCharCount = self.nMaxRoleGiftSendCount - nCharCount
return math.max(math.min(nSumTotalCount, nSumCharCount), 0)
local nCount = PlayerData.Base:GetSendGiftCount()
return self.nMaxGiftSendCount - nCount
end
function PlayerDormData:GetPanelDefaultMode()
local nCachedMode = LocalData.GetPlayerLocalData("DormDefaultMode")
@@ -5,6 +5,11 @@ local RedDotManager = require("GameCore.RedDot.RedDotManager")
local SDKManager = CS.SDKManager.Instance
function PlayerReengagementData:Init()
self:InitData()
EventManager.Add(EventId.IsNewDay, self, self.OnEvent_NewDay)
end
function PlayerReengagementData:UnInit()
EventManager.Remove(EventId.IsNewDay, self, self.OnEvent_NewDay)
self:InitData()
end
function PlayerReengagementData:InitData()
self._nActId = 0
@@ -17,27 +22,43 @@ function PlayerReengagementData:InitData()
self._bAvgWatched = false
self._mapQuestStateList = {}
self._mapQuestPoint = {}
self._mapQuestPointConfig = {}
self._mapMallInfo = {}
self._tbBoughtBundles = {}
self._mapWeeklyCard = {}
self._mapQuestDataList = {}
self._tbQuestConfig = {}
end
function PlayerReengagementData:ClearData()
self:RefreshRedDot(true)
self:InitData()
end
function PlayerReengagementData:CheckExpired()
if self._nActId ~= 0 and self._nOpenTime ~= 0 and CS.ClientManager.Instance.serverTimeStamp >= self:GetReengagementCloseTime() then
self:ClearData()
return true
end
return false
end
function PlayerReengagementData:OnEvent_NewDay()
self:OnStateNotify()
end
function PlayerReengagementData:CacheReturneeInfo(mapData)
if mapData == nil then
return
end
if mapData.Id == nil or mapData.Id == 0 then
self:RefreshRedDot(true)
self:InitData()
self:ClearData()
return
end
if self._nActId ~= mapData.Id or self._nOpenTime ~= (mapData.OpenTime or 0) then
self:RefreshRedDot(true)
self:InitData()
self:ClearData()
end
self._nActId = mapData.Id or 0
self._nOpenTime = mapData.OpenTime or 0
if self:CheckExpired() then
return
end
self._bReunionReceived = mapData.ReunionReward == true
self._bAvgWatched = mapData.Avg == true
local mapActData = ConfigTable.GetData("ActivityReturnee", self._nActId)
@@ -124,6 +145,9 @@ function PlayerReengagementData:RefreshRedDot(bClear)
RedDotManager.SetValid(RedDotDefine.Activity_Reengagement_WeeklyCard, self._nActId, bWeeklyCard)
end
function PlayerReengagementData:OnStateNotify()
if self:CheckExpired() then
return
end
if self:GetActIsOpen() then
self:RequestReengagementInfo()
else
@@ -145,12 +169,18 @@ function PlayerReengagementData:RefreshReengagementPopUp()
})
end
function PlayerReengagementData:RequestReengagementInfo(callback)
if self:CheckExpired() or not self:GetActIsOpen() then
return
end
local nActId = self._nActId
local nOpenTime = self._nOpenTime
local processCb = function(_, mapDataCb)
if self._nActId ~= nActId or self._nOpenTime ~= nOpenTime then
return
end
if self:CheckExpired() or not self:GetActIsOpen() then
return
end
self._bReunionReceived = mapDataCb.Reunion.ReunionReward == true
self._bAvgWatched = mapDataCb.Avg.Avg == true
self._mapLoginInfo = mapDataCb.Login
@@ -402,6 +432,9 @@ function PlayerReengagementData:GetQuestPointInfo()
end
end
function PlayerReengagementData:GetDoubleDropCount()
if not self:GetActIsOpen() then
return 0
end
return self._nDoubleCount
end
function PlayerReengagementData:GetMaxDoubleDropCount()
@@ -470,6 +503,9 @@ function PlayerReengagementData:GetPurchasedBundles()
return self._tbBoughtBundles
end
function PlayerReengagementData:UpdateDoubleCount(nDoubleCount)
if self:CheckExpired() or not self:GetActIsOpen() then
return
end
self._nDoubleCount = math.max(self._nMaxDoubleCount - nDoubleCount, 0)
end
function PlayerReengagementData:BuyWeeklyCard(sId, sStatistical)
@@ -555,7 +591,7 @@ function PlayerReengagementData:RequestReceiveLoginReward(callback)
HttpNetHandler.SendMsg(NetMsgId.Id.activity_returnee_login_reward_receive_req, {}, nil, cb)
end
function PlayerReengagementData:OnQuestChangeNotify(mapQuestData)
if self._nActId == 0 or mapQuestData == nil or mapQuestData.Id == nil then
if not (not self:CheckExpired() and self:GetActIsOpen()) or mapQuestData == nil or mapQuestData.Id == nil then
return
end
local questConfig = ConfigTable.GetData("ActivityReturneeQuest", mapQuestData.Id)
@@ -37,11 +37,23 @@ function PlayerStoryReviewData:GetAllStoryReview()
local funcForeachSection = function(mapData)
local nActivityId = mapData.Id
local mapActCfg = ConfigTable.GetData("Activity", nActivityId)
if mapActCfg ~= nil and mapActCfg.EndType == GameEnum.activityEndType.Date then
local nEndTime = ClientManager:ISO8601StrToTimeStamp(mapActCfg.EndTime)
local nCurTime = ClientManager.serverTimeStamp
if nEndTime <= nCurTime then
self.mapReviewChapters[mapData.ChapterId] = mapData
if mapActCfg ~= nil then
local nActGroupId = mapActCfg.MidGroupId
local nEndTime
if 0 < nActivityId then
local mapActGroupCfg = ConfigTable.GetData("ActivityGroup", nActGroupId)
if mapActGroupCfg ~= nil then
nEndTime = mapActGroupCfg.EnterEndTime
end
elseif mapActCfg.EndType == GameEnum.activityEndType.Date then
nEndTime = mapActCfg.EndTime
end
if nEndTime ~= nil then
nEndTime = ClientManager:ISO8601StrToTimeStamp(nEndTime)
local nCurTime = ClientManager.serverTimeStamp
if nEndTime <= nCurTime then
self.mapReviewChapters[mapData.ChapterId] = mapData
end
end
end
end
@@ -126,6 +126,17 @@ function PlayerStorySetData:GetAllChapterList(nType, bOnlyShowUnRead)
end)
return tbChapter
end
function PlayerStorySetData:GetChapterData(nChapterId)
local v = self.tbChapter[nChapterId]
if v == nil then
return nil
end
return {
nId = nChapterId,
tbSectionList = v.tbSectionList,
bUnlock = v.bUnlock
}
end
function PlayerStorySetData:GetAllTabList()
local tbTabData = {}
local foreachFunc = function(mapData)
@@ -326,6 +326,9 @@ end
function PlayerSoldierData:GetCollectRecommendList()
return self.recommendData:GetCollectRecommendList()
end
function PlayerSoldierData:CheckRecommendCollected(sCode)
return self.recommendData:CheckRecommendCollected(sCode)
end
function PlayerSoldierData:SetRecommendData(nRecommendId, bInSoldier)
self.recommendData:SetRecommendData(nRecommendId, bInSoldier)
end
@@ -153,6 +153,14 @@ end
function PlayerSoldierRecommendData:GetSystemRecommendList()
return self.tbSystemRecommendList
end
function PlayerSoldierRecommendData:CheckRecommendCollected(sCode)
for _, mapRecommendData in ipairs(self.tbRecommendList) do
if mapRecommendData.nRecommendId == sCode then
return true
end
end
return false
end
function PlayerSoldierRecommendData:SetRecommendList(tbReports)
self.tbRecommendList = {}
self.mapRecommendDataById = {}
+2
View File
@@ -267,5 +267,7 @@ function PlayerData.UnInit()
PlayerData.StoryReview = nil
PlayerData.GuideMission:UnInit()
PlayerData.GuideMission = nil
PlayerData.Reengagement:UnInit()
PlayerData.Reengagement = nil
end
return PlayerData
+18
View File
@@ -431,6 +431,12 @@ NetMsgId.Id = {
star_tower_build_note_modify_req = 4758,
star_tower_build_note_modify_succeed_ack = 4759,
star_tower_build_note_modify_failed_ack = 4760,
star_tower_build_generator_req = 4761,
star_tower_build_generator_succeed_ack = 4762,
star_tower_build_generator_failed_ack = 4763,
star_tower_build_discard_req = 4764,
star_tower_build_discard_succeed_ack = 4765,
star_tower_build_discard_failed_ack = 4766,
build_convert_detail_list_get_req = 4801,
build_convert_detail_list_get_succeed_ack = 4802,
build_convert_detail_list_get_failed_ack = 4803,
@@ -1023,6 +1029,9 @@ NetMsgId.Id = {
dorm_learn_req = 9571,
dorm_learn_succeed_ack = 9572,
dorm_learn_failed_ack = 9573,
dorm_get_furniture_num_req = 9574,
dorm_get_furniture_num_succeed_ack = 9575,
dorm_get_furniture_num_failed_ack = 9576,
activity_levels_apply_req = 9601,
activity_levels_apply_succeed_ack = 9602,
activity_levels_apply_failed_ack = 9603,
@@ -1595,6 +1604,12 @@ NetMsgId.MsgName = {
[4758] = "proto.StarTowerBuildNoteModifyReq",
[4759] = "proto.StarTowerBuildNoteModifyResp",
[4760] = "proto.Error",
[4761] = "proto.StarTowerBuildGeneratorReq",
[4762] = "proto.StarTowerBuildPotentialModifyResp",
[4763] = "proto.Error",
[4764] = "proto.StarTowerBuildDiscardReq",
[4765] = "proto.Nil",
[4766] = "proto.Error",
[4801] = "proto.Nil",
[4802] = "proto.BuildConvertDetailListGetResp",
[4803] = "proto.Error",
@@ -2187,6 +2202,9 @@ NetMsgId.MsgName = {
[9571] = "proto.NewbieInfo",
[9572] = "proto.Nil",
[9573] = "proto.Error",
[9574] = "proto.UI32",
[9575] = "proto.ItemTpl",
[9576] = "proto.Error",
[9601] = "proto.ActivityLevelsApplyReq",
[9602] = "proto.ChangeInfo",
[9603] = "proto.Error",
+1 -1
View File
@@ -231,7 +231,7 @@ local RedDotDefine = {
DormServer = "Dorm.ServerState",
DormElevator = "DormElevator",
DormMainMenu = "Dorm.DormMainMenu",
DormQuest = "Dorm.DormQuest",
DormQuest = "Dorm.DormMainMenu.DormQuest",
DormRecord = "Dorm.DormMainMenu.DormRecord",
DormRecord_Achievement = "Dorm.DormMainMenu.DormRecord.Achievement",
DormRecord_Furniture = "Dorm.DormMainMenu.DormRecord.Furniture"
+3
View File
@@ -46,6 +46,9 @@ function BasePanel:ctor(nIndex, nPanelId, tbParam)
self:Awake()
end
self.bIsTipsPanel = UTILS.CheckIsTipsPanel(self._nPanelId)
if not NovaAPIHotfix.IsUwaSdkDisabled and AllEnum.PanelId_AnalysisPanel[self._nPanelId] ~= nil then
NovaAPIHotfix.TagUWAAnaylysis(AllEnum.PanelId_AnalysisPanel[self._nPanelId])
end
end
function BasePanel:_PreExit(callback, bPlayFadeOut)
if self._bIsActive == false then
+1 -1
View File
@@ -479,7 +479,7 @@ local PanelDefine = {
[PanelId.Shop_20104] = "Game.UI.ActivityTheme.20104.Shop.ActivityShopPanel",
[PanelId.DustDawnPanel] = "Game.UI.ActivityTheme.20104.DustDawnThemePanel",
[PanelId.DustDawnStory] = "Game.UI.MainlineEx_DustDawnStory.MainlineEx_DustDawnStoryPanel",
[PanelId.ActivityLevelsSelectPanel_10113] = "Game.UI.ActivityTheme.20113.ActivityLevels.ActivityLevelsSelectPanel",
[PanelId.ActivityLevelsSelectPanel_10113] = "Game.UI.ActivityTheme.10113.ActivityLevels.ActivityLevelsSelectPanel",
[PanelId.Task_10113] = "Game.UI.ActivityTheme.10113.Task.UnchartedMapTaskPanel",
[PanelId.Shop_10113] = "Game.UI.ActivityTheme.10113.Shop.ActivityShopPanel",
[PanelId.UnchartedMapPanel] = "Game.UI.ActivityTheme.10113.UnchartedMapPanel",
+9
View File
@@ -561,6 +561,15 @@ function PanelManager.GetCurPanelId()
end
return 0
end
function PanelManager.GetPrePanelId()
if type(tbBackHistory) == "table" then
local nCount = #tbBackHistory
if 2 <= nCount and tbBackHistory[nCount] == objCurPanel then
return tbBackHistory[nCount - 1]._nPanelId
end
end
return 0
end
function PanelManager.CheckPanelOpen(nPanelId)
if type(tbBackHistory) == "table" then
for i, objPanel in ipairs(tbBackHistory) do