Files
SL1900 08b515afd9 Major Update - 2.0.0.143
EN: 2.0.0.143
CN: 2.0.0.142
JP: 2.0.0.145
KR: 2.0.0.150
2026-10-20 13:00:00 +09:00

574 lines
23 KiB
Lua

local SoldierEventCtrl = class("SoldierEventCtrl", BaseCtrl)
local SELECT_CARD_TYPE_STRATEGY = 2
local Actor2DManager = require("Game.Actor2D.Actor2DManager")
SoldierEventCtrl._mapNodeConfig = {
blur = {sNodeName = "blurBg"},
imgMaskMain = {},
TopBar = {
sNodeName = "TopBarPanel"
},
txtTitle1 = {
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Event_Title"
},
mainRoot = {
sNodeName = "----SafeAreaRoot----"
},
btnReturn = {
sComponentName = "UIButton",
callback = "OnBtnClick_Return"
},
txtBtnBack = {
sComponentName = "TMP_Text",
sLanguageId = "SoldierBattleEvent_Back"
},
txtHpCount = {sComponentName = "TMP_Text"},
txtCoinCount = {sComponentName = "TMP_Text"},
txtEventDesc = {sComponentName = "TMP_Text"},
imgOptionChar = {sComponentName = "Image"},
animRoot = {
sNodeName = "----SafeAreaRoot----",
sComponentName = "Animator"
},
btnChoose = {
nCount = 3,
sComponentName = "NaviButton",
callback = "OnBtnClick_Choose"
},
imgBgDisable = {nCount = 3},
txtLock = {
nCount = 3,
sComponentName = "TMP_Text",
sLanguageId = "Soldier_BattleEvent_Lock"
},
imgChaos = {nCount = 3, sComponentName = "Image"},
TMPChoose = {nCount = 3, sComponentName = "TMP_Text"},
TMPFunc = {nCount = 3, sComponentName = "TMP_Text"},
imgFunc = {nCount = 3},
imgBgEnable = {nCount = 3, sComponentName = "Image"},
goReward1_ = {nCount = 2},
goReward2_ = {nCount = 2},
goReward3_ = {nCount = 2},
imgTriggerCg1 = {sComponentName = "Image"},
imgTriggerCg2 = {sComponentName = "Image"},
ImageLine1 = {},
ImageLine2 = {},
ImageLine3 = {},
goBossInfo = {},
txtPersonality1 = {
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Personality_Intuition"
},
txtPersonality2 = {
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Personality_Analyze"
},
txtPersonality3 = {
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Personality_Chaos"
},
imgPersonalityPercent = {nCount = 3, sComponentName = "Image"},
imgCharHead = {sComponentName = "Image"},
txtCharName = {sComponentName = "TMP_Text"},
rtCharEvent = {},
imgEventChar = {sComponentName = "Image"},
txtEventStory = {sComponentName = "TMP_Text"},
txtStoryTitle = {sComponentName = "TMP_Text"},
TMP_Click = {
nCount = 2,
sComponentName = "TMP_Text",
sLanguageId = "Soldier_BattleEvent_Click"
},
btnCloseStory = {
sComponentName = "UIButton",
callback = "OnBtnClick_CloseStory"
},
rtTriggerEvent = {},
imgTriggerCg = {sComponentName = "Image"},
txtCgTitle = {sComponentName = "TMP_Text"},
txtCgStory = {sComponentName = "TMP_Text"},
btnCloseCg = {
sComponentName = "UIButton",
callback = "OnBtnClick_CloseCg"
}
}
SoldierEventCtrl._mapEventConfig = {
SoldierShowBattleEventPanel = "OnEvent_ShowBattleEventPanel",
RefreshStoryEventOfCostly = "OnEvent_RefreshStoryEventOfCostly",
EnterEventSelect = "OnEvent_EnterEventSelect",
RefreshSoldierRes = "OnEvent_RefreshSoldierRes",
SoldierHpChange = "OnEvent_RefreshSoldierRes"
}
SoldierEventCtrl._mapRedDotConfig = {}
function SoldierEventCtrl:Awake()
self.bSkipEvent = false
self.levelData = nil
self.mapCurEventData = nil
self.nBossTemplateId = 0
self._bPanelHidden = false
self._bOpeningStoryClosed = false
self._nStoryNodeId = nil
self._mapRenderedEventData = nil
self.bPrevMainRootVisible = true
self.bPrevBlurVisible = self._mapNode.blur.gameObject.activeSelf
self.bPrevImgMaskMainVisible = self._mapNode.imgMaskMain.gameObject.activeSelf
local tbParams = self:GetPanelParam()
if tbParams ~= nil and 0 < #tbParams then
self.bSkipEvent = tbParams[1] or false
end
end
function SoldierEventCtrl:OnEnable()
if self.bSkipEvent then
self.bSkipEvent = false
return
end
self:RefreshEvent(true)
end
function SoldierEventCtrl:RefreshEvent(bForce)
local objLevelData = PlayerData.SoldierData:GetCurLevelData()
local mapEventData = objLevelData and objLevelData:GetStoryEventData()
local nNodeId = objLevelData and objLevelData:GetNodeId()
local bNewStory = self.levelData ~= objLevelData or self._nStoryNodeId ~= nNodeId or self.mapCurEventData == nil or mapEventData ~= nil and self.mapCurEventData.nPersonalityStoryId ~= mapEventData.nPersonalityStoryId
self.levelData = objLevelData
self.mapCurEventData = mapEventData
self.nBossTemplateId = objLevelData and objLevelData:GetBossTemplateId() or 0
self._nStoryNodeId = nNodeId
if mapEventData == nil then
self._mapRenderedEventData = nil
self:RefreshEventOptions()
return false
end
if bNewStory then
self._bOpeningStoryClosed = 0 < (mapEventData.nPreOptionId or 0)
end
if bForce or self._mapRenderedEventData ~= mapEventData then
self:RefreshCoinCount()
self:RefreshBossTemplate()
self:RefreshStoryContent()
self:RefreshEventOptions()
self._mapRenderedEventData = mapEventData
end
return (mapEventData.nIndex or 0) == 0
end
function SoldierEventCtrl:OnDisable()
if self.tbBtns ~= nil then
for _, btn in pairs(self.tbBtns) do
btn.onClick:RemoveAllListeners()
end
end
self.tbBtns = nil
if self.tbItemCtrl ~= nil then
for _, ctrl in pairs(self.tbItemCtrl) do
self:UnbindCtrlByNode(ctrl)
end
end
self.tbItemCtrl = nil
end
function SoldierEventCtrl:RefreshCoinCount()
local nCoin = self.levelData:GetItem(AllEnum.CoinItemId.SoldierCurrency)
NovaAPI.SetTMPText(self._mapNode.txtCoinCount, nCoin)
local nHp = self.levelData:GetHp()
NovaAPI.SetTMPText(self._mapNode.txtHpCount, nHp)
end
function SoldierEventCtrl:RefreshStoryContent()
if self.mapCurEventData == nil then
return
end
local nEventId = self.mapCurEventData.nPersonalityStoryId or 0
self.nPreOptionId = self.mapCurEventData.nPreOptionId or 0
local mapEventData = ConfigTable.GetData("SoldierEventPersonalityStory", nEventId)
if mapEventData == nil then
return
end
local nStoryTypeId = mapEventData.StoryTypeId or 0
local mapStoryTypeData = ConfigTable.GetData("SoldierStoryType", nStoryTypeId)
if mapStoryTypeData == nil then
return
end
self._mapNode.imgTriggerCg1.gameObject:SetActive(false)
self._mapNode.imgTriggerCg2.gameObject:SetActive(false)
self._mapNode.ImageLine1.gameObject:SetActive(false)
self._mapNode.ImageLine2.gameObject:SetActive(false)
self._mapNode.ImageLine3.gameObject:SetActive(false)
local bCG = mapStoryTypeData.BossCG ~= nil and mapStoryTypeData.BossCG ~= "" or mapStoryTypeData.AvgElement ~= nil and mapStoryTypeData.AvgElement ~= ""
if bCG then
local sCG = ""
if mapStoryTypeData.BossCG ~= nil and mapStoryTypeData.BossCG ~= "" then
sCG = mapStoryTypeData.BossCG
elseif mapStoryTypeData.AvgElement ~= nil and mapStoryTypeData.AvgElement ~= "" then
sCG = mapStoryTypeData.AvgElement
end
if mapStoryTypeData.IsBossCG == true then
local bMale = PlayerData.Base:GetPlayerSex() == true
sCG = bMale and sCG .. "_MP" or sCG .. "_FP"
end
self:SetPngSprite(self._mapNode.imgTriggerCg, sCG)
self._mapNode.ImageLine1.gameObject:SetActive(true)
if mapStoryTypeData.StoryType == GameEnum.soldierEventType.StoryPersonality then
self._mapNode.imgTriggerCg2.gameObject:SetActive(true)
self:SetPngSprite(self._mapNode.imgTriggerCg2, sCG)
self._mapNode.ImageLine2.gameObject:SetActive(true)
elseif mapStoryTypeData.StoryType == GameEnum.soldierEventType.StoryCost then
self._mapNode.imgTriggerCg1.gameObject:SetActive(true)
self:SetPngSprite(self._mapNode.imgTriggerCg1, sCG)
self._mapNode.ImageLine3.gameObject:SetActive(true)
end
self._mapNode.imgOptionChar.gameObject:SetActive(false)
NovaAPI.SetTMPText(self._mapNode.txtCgTitle, mapStoryTypeData.Title)
NovaAPI.SetTMPText(self._mapNode.txtCgStory, mapStoryTypeData.Desc)
else
NovaAPI.SetTMPText(self._mapNode.txtEventStory, mapStoryTypeData.Desc)
NovaAPI.SetTMPText(self._mapNode.txtStoryTitle, mapStoryTypeData.Title)
self._mapNode.imgOptionChar.gameObject:SetActive(true)
Actor2DManager.SetBoardNPC2D_PNG(self._mapNode.imgEventChar, PanelId.SoldierEventPanel, mapStoryTypeData.NPCId)
Actor2DManager.SetBoardNPC2D_PNG(self._mapNode.imgOptionChar, PanelId.SoldierEventPanel, mapStoryTypeData.NPCId)
end
self:RefreshOpeningStory(bCG)
if self.nPreOptionId == nil or 0 >= self.nPreOptionId then
NovaAPI.SetTMPText(self._mapNode.txtEventDesc, mapStoryTypeData.OptionTitleDesc1)
else
local mapOption = ConfigTable.GetData("SoldierStoryPersonalityOption", self.nPreOptionId)
if mapOption ~= nil then
local nResultId = mapOption.ResultId or 0
local mapResult = ConfigTable.GetData("SoldierStoryResult", nResultId)
if mapResult ~= nil then
NovaAPI.SetTMPText(self._mapNode.txtEventDesc, mapResult.ResultText)
end
end
end
end
function SoldierEventCtrl:RefreshOpeningStory(bCG)
local sAnim = ""
if not self._bOpeningStoryClosed and bCG then
sAnim = "SoldierEventPanel_EventImg_in"
elseif not self._bOpeningStoryClosed and not bCG then
sAnim = "SoldierEventPanel_Event_in"
end
self._mapNode.rtTriggerEvent.gameObject:SetActive(not self._bOpeningStoryClosed and bCG)
self._mapNode.rtCharEvent.gameObject:SetActive(not self._bOpeningStoryClosed and not bCG)
self._mapNode.animRoot:Play(sAnim, 0, 0)
end
function SoldierEventCtrl:RefreshEventOptions()
self._tbOptionUnlocked = {}
for k, v in pairs(self._mapNode.btnChoose) do
v.gameObject:SetActive(false)
v.interactable = false
end
for _, ctrl in pairs(self.tbItemCtrl or {}) do
self:UnbindCtrlByNode(ctrl)
end
self.tbItemCtrl = {}
for _, btn in pairs(self.tbBtns or {}) do
btn.onClick:RemoveAllListeners()
end
self.tbBtns = {}
if self.mapCurEventData == nil or 0 < (self.mapCurEventData.nIndex or 0) then
return
end
self.tbPersonalityOptionId = {}
self.tbEventType = {}
local tbOptions = self.mapCurEventData.tbOptions or {}
for k, v in pairs(tbOptions) do
local mapOptionData = ConfigTable.GetData("SoldierStoryPersonalityOption", v.PersonalityOptionId)
self.tbPersonalityOptionId[k] = v.PersonalityOptionId
local bUnlock = v.Select == true
if mapOptionData ~= nil then
self._mapNode.btnChoose[k].gameObject:SetActive(true)
bUnlock = (not (mapOptionData.OptionalCond ~= nil and 0 < mapOptionData.OptionalCond) or self:CheckOptionCond(mapOptionData.OptionalCond, mapOptionData.OptionalParam, v.PersonalityOptionId)) and bUnlock
self:SetUnlockCond(mapOptionData.OptionalCond, mapOptionData.OptionalParam, k)
self._mapNode.imgBgDisable[k].gameObject:SetActive(not bUnlock)
self._tbOptionUnlocked[k] = bUnlock
local sPath = ""
if mapOptionData.CheckDimension ~= nil and 0 < mapOptionData.CheckDimension then
sPath = AllEnum.SoldierPersonalityDB[mapOptionData.CheckDimension]
else
sPath = AllEnum.SoldierPersonalityDB[0]
end
self:SetPngSprite(self._mapNode.imgBgEnable[k], sPath)
local mapOptionText = ConfigTable.GetData("SoldierOptionType", mapOptionData.OptionTypeId)
if mapOptionText ~= nil then
NovaAPI.SetTMPText(self._mapNode.TMPChoose[k], mapOptionText.OptionDesc)
self._mapNode.imgFunc[k].gameObject:SetActive(true)
if mapOptionText.StoryType == GameEnum.soldierEventType.StoryPersonality then
self._mapNode.imgTriggerCg2.gameObject:SetActive(true)
self._mapNode.ImageLine2.gameObject:SetActive(true)
self.tbEventType[k] = GameEnum.soldierEventType.StoryPersonality
self._mapNode.goBossInfo.gameObject:SetActive(true)
if mapOptionData.CheckDifficulty ~= nil and 0 < mapOptionData.CheckDifficulty then
local sText = orderedFormat(ConfigTable.GetUIText("Soldier_BattleEvent_Need"), mapOptionData.CheckDifficulty) or ""
NovaAPI.SetTMPText(self._mapNode.TMPFunc[k], sText)
else
self._mapNode.imgFunc[k].gameObject:SetActive(false)
end
elseif mapOptionText.StoryType == GameEnum.soldierEventType.StoryCost then
self.tbEventType[k] = GameEnum.soldierEventType.StoryCost
self._mapNode.goBossInfo.gameObject:SetActive(false)
if mapOptionText.CostDesc ~= nil and mapOptionText.CostDesc ~= "" then
NovaAPI.SetTMPText(self._mapNode.TMPFunc[k], mapOptionText.CostDesc)
else
self._mapNode.imgFunc[k].gameObject:SetActive(false)
end
end
end
end
local tbGrids = self._mapNode["goReward" .. k .. "_"] or {}
for _, go in pairs(tbGrids) do
go.gameObject:SetActive(false)
end
if bUnlock then
local tbRewards = v.Rewards
self.nRewardIndex = 1
for _, mapReward in pairs(tbRewards or {}) do
local nRewardType = mapReward.RewardType or 0
if nRewardType == AllEnum.SoldierEventEffectRewardType.Card then
for _, nCardId in pairs(mapReward.Ids.Values or {}) do
local mapCfg = ConfigTable.GetData("SoldierStrategyCard", nCardId)
if mapCfg ~= nil then
local goItem, goChar, goBuff = self:GetRewardGrid(tbGrids, self.nRewardIndex)
if goItem == nil then
break
end
local imgBg = goBuff.transform:Find("SmallBuff/AnimRoot/imgBg"):GetComponent("Image")
local imgIcon = goBuff.transform:Find("SmallBuff/AnimRoot/imgIcon"):GetComponent("Image")
goBuff:SetActive(true)
self:SetPngSprite(imgIcon, "Icon/SoldierBuffCard/" .. mapCfg.Icon)
local sRarityIcon = AllEnum.SoldierStrategyCardRarityIcon[mapCfg.Rarity]
if sRarityIcon ~= nil then
self:SetPngSprite(imgBg, "Icon/SoldierOtherIcon/" .. sRarityIcon .. AllEnum.SoldierChessIconSurfix.S)
end
local btnBuff = goBuff:GetComponent("UIButton")
table.insert(self.tbBtns, btnBuff)
btnBuff.onClick:RemoveAllListeners()
btnBuff.onClick:AddListener(function()
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierCardTips, nCardId)
end)
self.nRewardIndex = self.nRewardIndex + 1
end
end
elseif nRewardType == AllEnum.SoldierEventEffectRewardType.GainCoin then
for _, mapCoin in pairs(mapReward.Resource.ResRewards or {}) do
if mapCoin.Qty ~= nil and 0 < mapCoin.Qty then
local goItem, goChar, goBuff = self:GetRewardGrid(tbGrids, self.nRewardIndex)
if goItem == nil then
break
end
goItem:SetActive(true)
local sCoinIcon = "Icon/Item/item_40"
local ctrlItem = self:BindCtrlByNode(goItem, "Game.UI.Soldier.Template.SoldierItemGridCtrl")
ctrlItem:SetItem(1, mapCoin.Qty, sCoinIcon, mapCoin.Tid)
table.insert(self.tbItemCtrl, ctrlItem)
self.nRewardIndex = self.nRewardIndex + 1
end
end
elseif nRewardType == AllEnum.SoldierEventEffectRewardType.Hp then
local nHp = mapReward.Hp
if not (nHp ~= nil and 0 < nHp) then
goto lbl_538
end
local goItem, goChar, goBuff = self:GetRewardGrid(tbGrids, self.nRewardIndex)
if goItem == nil then
break
end
goItem:SetActive(true)
local sHpIcon = "Icon/Item/item_2701005"
local ctrlItem = self:BindCtrlByNode(goItem, "Game.UI.Soldier.Template.SoldierItemGridCtrl")
ctrlItem:SetItem(1, nHp, sHpIcon, 2701005)
table.insert(self.tbItemCtrl, ctrlItem)
self.nRewardIndex = self.nRewardIndex + 1
elseif nRewardType == AllEnum.SoldierEventEffectRewardType.Chess then
for _, mapChar in ipairs(mapReward.Chess.ChessRewards or {}) do
local goItem, goChar, goBuff = self:GetRewardGrid(tbGrids, self.nRewardIndex)
if goItem == nil then
break
end
goChar:SetActive(true)
local ctrlItem = self:BindCtrlByNode(goChar, "Game.UI.Soldier.Template.SoldierCharGridCtrl")
local cSkin = ConfigTable.GetData("SoldierSkin", mapChar.Tid)
local cData = ConfigTable.GetData("SoldierCharacter", mapChar.Tid)
ctrlItem:SetItem(cData.Rarity, mapChar.Qty, cSkin.Icon .. AllEnum.SoldierChessIconSurfix.S, mapChar.Star)
table.insert(self.tbItemCtrl, ctrlItem)
local btnChar = goChar:GetComponent("UIButton")
table.insert(self.tbBtns, btnChar)
btnChar.onClick:RemoveAllListeners()
btnChar.onClick:AddListener(function()
local chessData = {
nId = mapChar.Tid,
nStar = mapChar.Star
}
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierCharCardTips, btnChar.gameObject.transform, chessData)
end)
self.nRewardIndex = self.nRewardIndex + 1
end
end
::lbl_538::
end
end
end
self:RefreshOptionInteractable()
end
function SoldierEventCtrl:GetRewardGrid(tbGrids, nIndex)
local goGrid = tbGrids[nIndex]
if goGrid == nil then
return
end
goGrid = goGrid.gameObject
goGrid:SetActive(true)
local goItem = goGrid.transform:Find("OptionItem").gameObject
local goChar = goGrid.transform:Find("CharItem").gameObject
local goBuff = goGrid.transform:Find("BuffItem").gameObject
goItem:SetActive(false)
goChar:SetActive(false)
goBuff:SetActive(false)
return goItem, goChar, goBuff
end
local tbPersonalityTextKey = {
[GameEnum.SoldierRolePersonality.Personality_Intuition] = "Soldier_Personality_Intuition",
[GameEnum.SoldierRolePersonality.Personality_Analysis] = "Soldier_Personality_Analyze",
[GameEnum.SoldierRolePersonality.Personality_Chaos] = "Soldier_Personality_Chaos"
}
function SoldierEventCtrl:SetUnlockCond(nCond, param, nIndex)
local sUnlockText = ""
local sIcon = ""
self._mapNode.imgChaos[nIndex].gameObject:SetActive(false)
if nCond == GameEnum.SoldierStoryOptionCond.BossPersonalityGrade then
local sPre = ConfigTable.GetUIText("Soldier_BattleEvent_Lock")
local sTextKey = param and tbPersonalityTextKey[param[1]]
local sPost = sTextKey and ConfigTable.GetUIText(sTextKey) or ""
sUnlockText = orderedFormat(sPre, sPost)
sIcon = param and AllEnum.SoldierPersonalityLevelIconByEnum[param[2]] or ""
if sTextKey ~= nil and sIcon ~= "" then
self._mapNode.imgChaos[nIndex].gameObject:SetActive(true)
self:SetPngSprite(self._mapNode.imgChaos[nIndex], sIcon)
end
elseif nCond == GameEnum.SoldierStoryOptionCond.GradeLevelUnlocked then
local sRank = "M" .. param[1]
sUnlockText = orderedFormat(ConfigTable.GetUIText("Soldier_Event_NeedChallengeGrade"), sRank)
elseif nCond == GameEnum.SoldierStoryOptionCond.EndingUnlocked then
local mapEnding = ConfigTable.GetData("SoldierEndingPlan", param[1])
sUnlockText = orderedFormat(ConfigTable.GetUIText("Soldier_Event_NeedEnding"), mapEnding.EndingTitle)
elseif nCond == GameEnum.SoldierStoryOptionCond.OptionChosenInRun then
elseif nCond == GameEnum.SoldierStoryOptionCond.CoinUnlocked then
sUnlockText = orderedFormat(ConfigTable.GetUIText("Soldier_Event_NeedCoin"), param[1])
elseif nCond == GameEnum.SoldierStoryOptionCond.HpUnlocked then
sUnlockText = orderedFormat(ConfigTable.GetUIText("Soldier_Event_NeedHp"), param[1])
end
NovaAPI.SetTMPText(self._mapNode.txtLock[nIndex], sUnlockText)
end
function SoldierEventCtrl:CheckOptionCond(nCond, param, nOptionId)
if nCond == GameEnum.SoldierStoryOptionCond.BossPersonalityGrade then
local nGrade = param and param[2]
local nPersonalityType = param and param[1]
local nCurGrade = self.tbPersonalityGrade and self.tbPersonalityGrade[nPersonalityType]
if tbPersonalityTextKey[nPersonalityType] == nil or AllEnum.SoldierPersonalityLevelIconByEnum[nGrade] == nil or AllEnum.SoldierPersonalityLevelIconByEnum[nCurGrade] == nil then
return false
end
return nGrade >= nCurGrade
elseif nCond == GameEnum.SoldierStoryOptionCond.CoinUnlocked then
local nCoin = self.levelData:GetItem(AllEnum.CoinItemId.SoldierCurrency)
return nCoin >= param[1]
elseif nCond == GameEnum.SoldierStoryOptionCond.HpUnlocked then
local nHp = self.levelData:GetHp()
return nHp > param[1]
elseif nCond == GameEnum.SoldierStoryOptionCond.GradeLevelUnlocked then
local nChallengeGrade = PlayerData.SoldierData:GetHighestChallengeId()
local mapChallenge = ConfigTable.GetData("SoldierGradeChallenge", nChallengeGrade)
return mapChallenge ~= nil and mapChallenge.GradeLevel >= param[1]
elseif nCond == GameEnum.SoldierStoryOptionCond.OptionChosenInRun then
elseif nCond == GameEnum.SoldierStoryOptionCond.EndingUnlocked then
end
return false
end
function SoldierEventCtrl:RefreshBossTemplate()
local mapCfg = ConfigTable.GetData("SoldierBossTemplate", self.nBossTemplateId or 0)
self.tbPersonalityGrade = {}
if mapCfg ~= nil then
NovaAPI.SetTMPText(self._mapNode.txtCharName, mapCfg.Name)
local sIntGrade = AllEnum.SoldierPersonalityLevelIconByEnum[mapCfg.Personality_Intuition] or ""
self.tbPersonalityGrade[GameEnum.SoldierRolePersonality.Personality_Intuition] = mapCfg.Personality_Intuition
self:SetPngSprite(self._mapNode.imgPersonalityPercent[1], sIntGrade)
local sAnalyzeGrade = AllEnum.SoldierPersonalityLevelIconByEnum[mapCfg.Personality_Analysis] or ""
self.tbPersonalityGrade[GameEnum.SoldierRolePersonality.Personality_Analysis] = mapCfg.Personality_Analysis
self:SetPngSprite(self._mapNode.imgPersonalityPercent[2], sAnalyzeGrade)
local sChaosGrade = AllEnum.SoldierPersonalityLevelIconByEnum[mapCfg.Personality_Chaos] or ""
self.tbPersonalityGrade[GameEnum.SoldierRolePersonality.Personality_Chaos] = mapCfg.Personality_Chaos
self:SetPngSprite(self._mapNode.imgPersonalityPercent[3], sChaosGrade)
self:SetPngSprite(self._mapNode.imgCharHead, mapCfg.SoldierPlayerHead)
end
end
function SoldierEventCtrl:HidePanel()
if self._bPanelHidden then
return
end
self._bPanelHidden = true
self.bPrevMainRootVisible = self._mapNode.mainRoot.gameObject.activeSelf or false
self.bPrevBlurVisible = self._mapNode.blur.gameObject.activeSelf or false
self.bPrevImgMaskMainVisible = self._mapNode.imgMaskMain.gameObject.activeSelf or false
self._mapNode.mainRoot.gameObject:SetActive(false)
self._mapNode.blur.gameObject:SetActive(false)
self._mapNode.imgMaskMain.gameObject:SetActive(false)
end
function SoldierEventCtrl:ShowPanel()
if not self:RefreshEvent(true) then
return
end
self._bPanelHidden = false
self._mapNode.mainRoot.gameObject:SetActive(self.bPrevMainRootVisible)
self._mapNode.blur.gameObject:SetActive(self.bPrevBlurVisible)
self._mapNode.imgMaskMain.gameObject:SetActive(self.bPrevImgMaskMainVisible)
end
function SoldierEventCtrl:OpenDicePanel(mapParam)
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierResolveadisputePanel, mapParam)
end
function SoldierEventCtrl:OnBtnClick_Choose(btn, nIndex)
local objLevelData = PlayerData.SoldierData:GetCurLevelData()
local mapEventData = objLevelData and objLevelData:GetStoryEventData()
if mapEventData == nil or mapEventData ~= self.mapCurEventData or 0 < (mapEventData.nIndex or 0) then
self:RefreshEvent(true)
return
end
local callback = function(tbChange)
end
self.levelData:SendStoryEventSelect(nIndex, callback)
end
function SoldierEventCtrl:OnBtnClick_Return()
CS.WwiseAudioManager.Instance:PostEvent("mode_900001_chess_ingame_transition")
self:HidePanel()
end
function SoldierEventCtrl:OnEvent_ShowSoldierEventPanel()
self:ShowPanel()
self._mapNode.animRoot:Play("SoldierEventPanel_SelectEvent_in", 0, 0)
end
function SoldierEventCtrl:OnEvent_SoldierEventSelect(nIndex, nCardId)
end
function SoldierEventCtrl:RefreshOptionInteractable()
for nIndex, btn in pairs(self._mapNode.btnChoose) do
btn.interactable = self._bOpeningStoryClosed and (self._tbOptionUnlocked or {})[nIndex] == true
end
end
function SoldierEventCtrl:OnBtnClick_CloseStory()
self._bOpeningStoryClosed = true
self._mapNode.rtCharEvent.gameObject:SetActive(false)
self:RefreshOptionInteractable()
self._mapNode.animRoot:Play("SoldierEventPanel_SelectEvent_in", 0, 0)
end
function SoldierEventCtrl:OnBtnClick_CloseCg()
self._bOpeningStoryClosed = true
self._mapNode.rtTriggerEvent.gameObject:SetActive(false)
self:RefreshOptionInteractable()
self._mapNode.animRoot:Play("SoldierEventPanel_SelectEvent_in", 0, 0)
end
function SoldierEventCtrl:OnEvent_ShowBattleEventPanel()
self:ShowPanel()
self._mapNode.animRoot:Play("SoldierEventPanel_SelectEvent_in", 0, 0)
end
function SoldierEventCtrl:OnEvent_RefreshStoryEventOfCostly()
self:RefreshEvent()
end
function SoldierEventCtrl:OnEvent_EnterEventSelect()
self:RefreshEvent()
end
function SoldierEventCtrl:OnEvent_RefreshSoldierRes()
self:RefreshEvent(true)
end
return SoldierEventCtrl