Update - 1.13.0.124

EN: 1.13.0.124
CN: 1.13.0.124
JP: 1.13.0.128
KR: 1.13.0.130
This commit is contained in:
SL1900
2026-07-21 12:30:00 +09:00
parent a12087abad
commit 8c4bd41668
1334 changed files with 873026 additions and 95164 deletions
@@ -0,0 +1,114 @@
local SoldierAddBuffItemCtrl = class("SoldierAddBuffItemCtrl", BaseCtrl)
SoldierAddBuffItemCtrl._mapNodeConfig = {
btnItem = {
sComponentName = "UIButton",
callback = "OnBtnClick_Select"
},
TextDes = {sComponentName = "TMP_Text"},
TextName = {sComponentName = "TMP_Text"},
imgIcon = {sComponentName = "Image"},
btnConfirm = {
sComponentName = "UIButton",
callback = "OnBtnClick_Confirm"
},
txtConfirm = {
sComponentName = "TMP_Text",
sLanguageId = "Avg_Btn_Select"
},
AnimRoot = {sComponentName = "Animator"},
BgNormal = {sComponentName = "Image"},
imgbg_copper = {},
imgbg_silver = {},
imgbg_gold = {}
}
SoldierAddBuffItemCtrl._mapEventConfig = {}
SoldierAddBuffItemCtrl._mapRedDotConfig = {}
function SoldierAddBuffItemCtrl:Awake()
end
function SoldierAddBuffItemCtrl:OnEnable()
self._bSelected = nil
end
function SoldierAddBuffItemCtrl:OnDisable()
if self.timerBtnConfirm ~= nil then
self.timerBtnConfirm:Cancel()
self.timerBtnConfirm = nil
end
end
function SoldierAddBuffItemCtrl:SetSelectCallback(obj, fn)
self._objSelectCallback = obj
self._fnSelectCallback = fn
end
function SoldierAddBuffItemCtrl:OnBtnClick_Refresh()
if self._fnRefreshCallback ~= nil then
self._fnRefreshCallback(self._objRefreshCallback, self._nIndex)
end
end
function SoldierAddBuffItemCtrl:SetItemData(tbItem)
self._nCardId = tbItem.id or -1
self._nIndex = tbItem.index or 0
self._mapNode.btnConfirm.gameObject:SetActive(false)
local cfg = ConfigTable.GetData("SoldierStrategyCard", self._nCardId)
if cfg == nil then
return
end
self:_SetIcon(cfg.Icon)
NovaAPI.SetTMPText(self._mapNode.TextName, cfg.Name or "")
NovaAPI.SetTMPText(self._mapNode.TextDes, cfg.Des or "")
NovaAPI.SetTMPText(self._mapNode.TextRefreshCount, tostring(self._nRefreshCount))
self:SetPngSprite(self._mapNode.BgNormal, "Icon/SoldierOtherIcon/" .. AllEnum.SoldierStrategyCardRarityIcon[cfg.Rarity] .. AllEnum.SoldierChessIconSurfix.L)
self._mapNode.imgbg_gold:SetActive(cfg.Rarity == GameEnum.itemRarity.R)
self._mapNode.imgbg_silver:SetActive(cfg.Rarity == GameEnum.itemRarity.M)
self._mapNode.imgbg_copper:SetActive(cfg.Rarity == GameEnum.itemRarity.N)
end
function SoldierAddBuffItemCtrl:GetCardId()
return self._nCardId
end
function SoldierAddBuffItemCtrl:GetIndex()
return self._nIndex
end
function SoldierAddBuffItemCtrl:SetSelected(bSelected)
if self.timerBtnConfirm ~= nil then
self.timerBtnConfirm:Cancel()
self.timerBtnConfirm = nil
end
local sSwitchAnimName = ""
if bSelected == true then
self._mapNode.btnConfirm.gameObject:SetActive(bSelected)
sSwitchAnimName = "BuffItem_up"
elseif self._bSelected == true then
sSwitchAnimName = "BuffItem_down"
local nAnimLength = NovaAPI.GetAnimClipLength(self._mapNode.AnimRoot, sSwitchAnimName)
self.timerBtnConfirm = self:AddTimer(1, nAnimLength, function()
self._mapNode.btnConfirm.gameObject:SetActive(false)
end, true, true, true)
elseif self._bSelected == false then
self._mapNode.btnConfirm.gameObject:SetActive(false)
end
if sSwitchAnimName ~= "" then
self._mapNode.AnimRoot:Play(sSwitchAnimName)
end
self._bSelected = bSelected == true
end
function SoldierAddBuffItemCtrl:IsSelected()
return self._bSelected
end
function SoldierAddBuffItemCtrl:_SetIcon(sIconPath)
if self._mapNode.imgIcon == nil then
return
end
if sIconPath ~= nil and sIconPath ~= "" then
self:SetPngSprite(self._mapNode.imgIcon, "Icon/SoldierBuffCard/" .. sIconPath)
self._mapNode.imgIcon.gameObject:SetActive(true)
else
self._mapNode.imgIcon.gameObject:SetActive(false)
end
end
function SoldierAddBuffItemCtrl:OnBtnClick_Select()
EventManager.Hit("SoldierStrategySelect", self._nIndex, self._nCardId)
end
function SoldierAddBuffItemCtrl:OnBtnClick_Confirm()
PlayerData.SoldierData:GetCurLevelData():SendCardSelect(self._nIndex, function()
EventManager.Hit(EventId.ClosePanel, PanelId.SoldierBattleEventPanel)
end)
end
return SoldierAddBuffItemCtrl
@@ -0,0 +1,252 @@
local SoldierBattleEventCtrl = class("SoldierBattleEventCtrl", BaseCtrl)
local SELECT_CARD_TYPE_STRATEGY = 2
SoldierBattleEventCtrl._mapNodeConfig = {
imgBgMain = {},
imgBgMain_Fx = {},
blur = {},
mainRoot = {
sNodeName = "----SafeAreaRoot----"
},
txtLabel = {
sComponentName = "TMP_Text",
sLanguageId = "SoldierBattleEvent_Label"
},
txtRemainRewardCount = {
sComponentName = "TMP_Text",
sLanguageId = "Soldier_BattleEvent_RemainRewardCount"
},
txtFinalPoint = {sComponentName = "TMP_Text"},
txtBtnBack = {
sComponentName = "TMP_Text",
sLanguageId = "SoldierBattleEvent_Back"
},
EventItem = {
nCount = 3,
sCtrlName = "Game.UI.Soldier.BattleEvent.SoldierBattleEventItemCtrl"
},
StrategyItem = {
nCount = 3,
sCtrlName = "Game.UI.Soldier.BattleEvent.SoldierAddBuffItemCtrl"
},
btnPolicy = {
sComponentName = "UIButton",
callback = "OnBtnClick_Policy"
},
btnReturn = {
sComponentName = "UIButton",
callback = "OnBtnClick_Return"
},
btnGuide = {
sComponentName = "UIButton",
callback = "OnBtnClick_Guide"
},
btnGoToDice = {
sComponentName = "UIButton",
callback = "OnBtnClick_btnGoToDice"
},
txtGoToDice = {
sComponentName = "TMP_Text",
sLanguageId = "SoldierBattleEvent_GoToDice"
},
imgFinalPoint = {},
ImgNum = {},
EventContainers = {},
StrategyContainers = {}
}
SoldierBattleEventCtrl._mapEventConfig = {
SoldierSelectEventBattle = "OnEvent_SoldierSelectEventBattle",
SoldierShowBattleEventPanel = "OnEvent_ShowBattleEventPanel",
SoldierDiceCasted = "RefreshDiceCasted",
SoldierStrategySelect = "OnEvent_SoldierStrategySelect",
SoldierRecommendPanel_Open = "HidePanel",
SoldierRecommendPanel_Close = "ShowPanel",
SoldierHandbookPanel_Open = "HidePanel",
SoldierHandbookPanel_Close = "ShowPanel"
}
SoldierBattleEventCtrl._mapRedDotConfig = {}
function SoldierBattleEventCtrl:Awake()
self.tbStrategyCardData = nil
self.nDicePoint = nil
self.bSkipEvent = false
local tbParams = self:GetPanelParam()
if tbParams ~= nil and 0 < #tbParams then
self.bSkipEvent = tbParams[1] or false
end
end
function SoldierBattleEventCtrl:OnEnable()
self._mapNode.imgFinalPoint.gameObject:SetActive(false)
self._mapNode.btnGoToDice.gameObject:SetActive(false)
if self.bSkipEvent then
self.bSkipEvent = false
self:OnSoldierEnterCardSelect()
return
end
self:RefreshBattleEventList()
self.nDicePoint = PlayerData.SoldierData:GetCurLevelData():GetEventBattleData().nPoint or 0
if self.tbStrategyCardData == nil and self.nDicePoint ~= nil and self.nDicePoint > 0 then
self:RefreshEventDicePoint()
end
end
function SoldierBattleEventCtrl:OnDisable()
self.tbStrategyCardData = nil
self.nDicePoint = nil
end
function SoldierBattleEventCtrl:GetAddBattleEventList()
local selectCardData = PlayerData.SoldierData:GetCurLevelData():GetEventBattleData()
local tbList = {}
local tbIds = selectCardData.tbIds or {}
if next(tbIds) ~= nil then
table.sort(tbIds, function(a, b)
local mapEventA = ConfigTable.GetData("SoldierEventBattlePool", a)
local mapEventB = ConfigTable.GetData("SoldierEventBattlePool", b)
return mapEventA.LevelName < mapEventB.LevelName
end)
end
for i = 1, 3 do
local nCardId = tbIds[i]
if nCardId ~= nil then
tbList[i] = {id = nCardId, index = i}
end
end
return tbList
end
function SoldierBattleEventCtrl:RefreshBattleEventList()
local tbList = self:GetAddBattleEventList()
if tbList == nil or #tbList <= 0 then
return
end
self._mapNode.btnGoToDice.gameObject:SetActive(true)
self._mapNode.EventContainers.gameObject:SetActive(true)
self._mapNode.StrategyContainers.gameObject:SetActive(false)
self._mapNode.btnPolicy.gameObject:SetActive(false)
for i = 1, 3 do
local item = self._mapNode.EventItem[i]
if item ~= nil then
item:SetItemData(tbList[i])
end
end
end
function SoldierBattleEventCtrl:RefreshStrategyCard()
if self.tbStrategyCardData == nil then
return
end
self._mapNode.EventContainers.gameObject:SetActive(false)
self._mapNode.StrategyContainers.gameObject:SetActive(true)
self._mapNode.btnGoToDice.gameObject:SetActive(false)
self._mapNode.imgFinalPoint.gameObject:SetActive(false)
self._mapNode.btnPolicy.gameObject:SetActive(false)
self._mapNode.ImgNum.gameObject:SetActive(false)
NovaAPI.SetTMPText(self._mapNode.txtLabel, ConfigTable.GetUIText("Soldier_Strategy_Title"))
for k, v in ipairs(self._mapNode.StrategyItem) do
local tbItem = {
id = self.tbStrategyCardData[k],
index = k
}
v:SetItemData(tbItem)
end
end
function SoldierBattleEventCtrl:RefreshDiceCasted()
self:RefreshBattleEventList()
self.nDicePoint = PlayerData.SoldierData:GetCurLevelData():GetEventBattleData().nPoint or 0
if self.tbStrategyCardData == nil and self.nDicePoint ~= nil and self.nDicePoint > 0 then
self:RefreshEventDicePoint()
end
end
function SoldierBattleEventCtrl:OnItemSelected(nIndex, nCardId)
self._nSelectedIndex = nIndex or 0
self._nSelectedCardId = nCardId or -1
for k, v in ipairs(self._mapNode.StrategyItem) do
v:SetSelected(k == self._nSelectedIndex)
end
self:_MoveConfirmBtnTo(self._nSelectedIndex)
end
function SoldierBattleEventCtrl:_MoveConfirmBtnTo(nIndex)
local btnConfirm = self._mapNode.btnConfirm
if btnConfirm == nil or btnConfirm.transform == nil then
return
end
local item = self._mapNode.EventItem and self._mapNode.EventItem[nIndex]
if item == nil then
if btnConfirm.gameObject ~= nil then
btnConfirm.gameObject:SetActive(false)
end
return
end
local v3Pos = item:GetConfirmBtnPosition()
if v3Pos == nil then
return
end
btnConfirm.transform.position = v3Pos
if btnConfirm.gameObject ~= nil then
btnConfirm.gameObject:SetActive(true)
end
end
function SoldierBattleEventCtrl:GetSelectedCardId()
return self._nSelectedCardId
end
function SoldierBattleEventCtrl:GetSelectedIndex()
return self._nSelectedIndex
end
function SoldierBattleEventCtrl:HidePanel()
self.bPrevMainRootVisible = self._mapNode.mainRoot.gameObject.activeSelf or false
self.bPrevBlurVisible = self._mapNode.blur.gameObject.activeSelf or false
self.bPrevImgBgMainVisible = self._mapNode.imgBgMain.gameObject.activeSelf or false
self.bPrevImgBgMain_FxVisible = self._mapNode.imgBgMain_Fx.gameObject.activeSelf or false
self._mapNode.mainRoot.gameObject:SetActive(false)
self._mapNode.blur.gameObject:SetActive(false)
self._mapNode.imgBgMain.gameObject:SetActive(false)
self._mapNode.imgBgMain_Fx.gameObject:SetActive(false)
end
function SoldierBattleEventCtrl:ShowPanel()
self._mapNode.mainRoot.gameObject:SetActive(self.bPrevMainRootVisible)
self._mapNode.blur.gameObject:SetActive(self.bPrevBlurVisible)
self._mapNode.imgBgMain.gameObject:SetActive(self.bPrevImgBgMainVisible)
self._mapNode.imgBgMain_Fx.gameObject:SetActive(self.bPrevImgBgMain_FxVisible)
for k, v in ipairs(self._mapNode.StrategyItem) do
v:SetSelected(k == self._nSelectedIndex)
end
end
function SoldierBattleEventCtrl:OnBtnClick_btnGoToDice()
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierResolveadisputePanel)
end
function SoldierBattleEventCtrl:OnBtnClick_Return()
CS.WwiseAudioManager.Instance:PostEvent("mode_900001_chess_ingame_transition")
self:HidePanel()
end
function SoldierBattleEventCtrl:OnBtnClick_Guide()
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierRecommendPanel, true)
end
function SoldierBattleEventCtrl:OnBtnClick_Policy()
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierHandbookPanel, AllEnum.SoldierHandbookType.StrategyCard)
end
function SoldierBattleEventCtrl:RefreshEventDicePoint()
self._mapNode.imgFinalPoint.gameObject:SetActive(true)
self._mapNode.btnGoToDice.gameObject:SetActive(false)
local sFinalPoint = ConfigTable.GetUIText("SoldierBattleEvent_FinalPoint")
NovaAPI.SetTMPText(self._mapNode.txtFinalPoint, sFinalPoint .. self.nDicePoint)
for i = 1, 3 do
local item = self._mapNode.EventItem[i]
if item ~= nil then
item:SetDiceCasted(self.nDicePoint)
end
end
end
function SoldierBattleEventCtrl:OnSoldierEnterCardSelect()
self.tbStrategyCardData = PlayerData.SoldierData:GetCurLevelData():GetSelectCardData()
self:RefreshStrategyCard()
end
function SoldierBattleEventCtrl:OnEvent_SoldierSelectEventBattle()
local bInSelectCard = PlayerData.SoldierData:GetCurLevelData():CheckInSelectCard()
if not bInSelectCard then
EventManager.Hit(EventId.ClosePanel, PanelId.SoldierBattleEventPanel)
else
self:OnSoldierEnterCardSelect()
end
end
function SoldierBattleEventCtrl:OnEvent_ShowBattleEventPanel()
self:ShowPanel()
end
function SoldierBattleEventCtrl:OnEvent_SoldierStrategySelect(nIndex, nCardId)
self:OnItemSelected(nIndex, nCardId)
end
return SoldierBattleEventCtrl
@@ -0,0 +1,177 @@
local SoldierBattleEventItemCtrl = class("SoldierBattleEventItemCtrl", BaseCtrl)
SoldierBattleEventItemCtrl._mapNodeConfig = {
imgBgNormal = {sComponentName = "Image"},
ConfirmBtnLocalPos = {sComponentName = "Transform"},
TextName = {sComponentName = "TMP_Text"},
TextDes = {sComponentName = "TMP_Text"},
btnTakeBuff = {
sComponentName = "UIButton",
callback = "OnBtnClick_TakeBuff"
},
txtTakeBuff = {
sComponentName = "TMP_Text",
sLanguageId = "Btn_EarnReward"
},
btnChallenge = {
sComponentName = "UIButton",
callback = "OnBtnClick_Challenge"
},
txtBtnChallenge = {
sComponentName = "TMP_Text",
sLanguageId = "Soldier_BattleEventItem_Challenge"
},
txtNeedPoint = {sComponentName = "TMP_Text"},
txt_charTitle = {
sComponentName = "TMP_Text",
sLanguageId = "Soldier_BattleEventItem_RewardItem"
},
gridCoin = {
sCtrlName = "Game.UI.Soldier.Template.SoldierItemGridCtrl"
},
gridChess = {
sCtrlName = "Game.UI.Soldier.Template.SoldierItemGridCtrl"
},
gridBuff = {
sCtrlName = "Game.UI.Soldier.Template.SoldierItemGridCtrl"
},
RewardRoot = {}
}
SoldierBattleEventItemCtrl._mapEventConfig = {}
SoldierBattleEventItemCtrl._mapRedDotConfig = {}
function SoldierBattleEventItemCtrl:Awake()
end
function SoldierBattleEventItemCtrl:OnEnable()
end
function SoldierBattleEventItemCtrl:OnDisable()
end
function SoldierBattleEventItemCtrl:OnDestroy()
end
function SoldierBattleEventItemCtrl:SetRefreshCallback(obj, fn)
self._objRefreshCallback = obj
self._fnRefreshCallback = fn
end
function SoldierBattleEventItemCtrl:SetSelectCallback(obj, fn)
self._objSelectCallback = obj
self._fnSelectCallback = fn
end
function SoldierBattleEventItemCtrl:OnBtnClick_Select()
end
function SoldierBattleEventItemCtrl:SetItemData(tbItem)
if tbItem == nil then
self._nCardId = -1
self._nIndex = 0
self:SetSelected(false)
return
end
self._nCardId = tbItem.id or -1
self._nIndex = tbItem.index or 0
local cfg = ConfigTable.GetData("SoldierEventBattlePool", self._nCardId)
if cfg == nil then
return
end
self:_SetIcon(cfg.Icon)
if self._mapNode.TextName ~= nil then
NovaAPI.SetTMPText(self._mapNode.TextName, cfg.Title or "")
end
if self._mapNode.TextDes ~= nil then
NovaAPI.SetTMPText(self._mapNode.TextDes, cfg.Name or "")
end
self:SetPngSprite(self._mapNode.imgBgNormal, "Icon/SoldierOtherIcon/EventBattleQuality_0" .. cfg.LevelName)
self:RefreshCharItems(cfg.coin, cfg.CharacterCount, cfg.StrategyCardCount)
local tbDicePointLevel = ConfigTable.GetConfigArray("SoldierChessEventBattle")
self.nNeedPoint = tonumber(tbDicePointLevel[self._nIndex]) or 0
local sNeedText = orderedFormat(ConfigTable.GetUIText("Soldier_Event_NeedPoint"), self.nNeedPoint)
NovaAPI.SetTMPText(self._mapNode.txtNeedPoint, sNeedText or "")
end
function SoldierBattleEventItemCtrl:RefreshCharItems(nCoinCount, nCharCount, nStrategyCardCount)
if nCoinCount <= 0 and nCharCount <= 0 and nStrategyCardCount <= 0 then
self._mapNode.RewardRoot.gameObject:SetActive(false)
return
end
self._mapNode.RewardRoot.gameObject:SetActive(true)
self.nCoinCount = nCoinCount
if 0 >= self.nCoinCount then
self._mapNode.gridCoin.gameObject:SetActive(false)
else
self._mapNode.gridCoin.gameObject:SetActive(true)
self._mapNode.gridCoin:SetItem(1, self.nCoinCount, "Icon/Item/item_40", 40)
end
self.nCharCount = nCharCount
if 0 >= self.nCharCount then
self._mapNode.gridChess.gameObject:SetActive(false)
else
self._mapNode.gridChess.gameObject:SetActive(true)
self._mapNode.gridChess:SetItem(1, self.nCharCount, "Icon/SoldierOtherIcon/icon_soldier_random_chess", 2701001)
end
self.nStrategyCardCount = nStrategyCardCount
if 0 >= self.nStrategyCardCount then
self._mapNode.gridBuff.gameObject:SetActive(false)
else
self._mapNode.gridBuff.gameObject:SetActive(true)
self._mapNode.gridBuff:SetItem(1, self.nStrategyCardCount, "Icon/SoldierOtherIcon/icon_soldier_random_strategycard", 2701002)
end
self:SetButtonInit()
end
function SoldierBattleEventItemCtrl:SetButtonInit()
self._mapNode.btnTakeBuff.gameObject:SetActive(false)
self._mapNode.btnChallenge.gameObject:SetActive(false)
self._mapNode.txtNeedPoint.gameObject:SetActive(true)
end
function SoldierBattleEventItemCtrl:SetDiceCasted(nPoint)
self._mapNode.txtNeedPoint.gameObject:SetActive(false)
if nPoint < self.nNeedPoint then
self._mapNode.btnTakeBuff.gameObject:SetActive(false)
self._mapNode.btnChallenge.gameObject:SetActive(true)
else
self._mapNode.btnTakeBuff.gameObject:SetActive(true)
self._mapNode.btnChallenge.gameObject:SetActive(false)
end
end
function SoldierBattleEventItemCtrl:OnGridBtnClick(nIndex)
end
function SoldierBattleEventItemCtrl:GetCardId()
return self._nCardId
end
function SoldierBattleEventItemCtrl:GetIndex()
return self._nIndex
end
function SoldierBattleEventItemCtrl:SetSelected(bSelected)
self._bSelected = bSelected == true
if self._mapNode.ImageSelect ~= nil and self._mapNode.ImageSelect.gameObject ~= nil then
self._mapNode.ImageSelect.gameObject:SetActive(self._bSelected)
end
end
function SoldierBattleEventItemCtrl:IsSelected()
return self._bSelected
end
function SoldierBattleEventItemCtrl:GetConfirmBtnPosition()
local node = self._mapNode.ConfirmBtnLocalPos
if node == nil or node.transform == nil then
return nil
end
return node.transform.position
end
function SoldierBattleEventItemCtrl:_SetIcon(sIconPath)
if self._mapNode.img_icon == nil then
return
end
if sIconPath and 0 < #sIconPath then
self:SetPngSprite(self._mapNode.img_icon, sIconPath)
self._mapNode.img_icon.gameObject:SetActive(true)
else
self._mapNode.img_icon.gameObject:SetActive(false)
end
end
function SoldierBattleEventItemCtrl:OnBtnClick_TakeBuff()
local callback = function()
EventManager.Hit("SoldierSelectEventBattle")
end
PlayerData.SoldierData:GetCurLevelData():SendEventBattleChoose(self._nIndex, callback)
end
function SoldierBattleEventItemCtrl:OnBtnClick_Challenge()
local callback = function()
EventManager.Hit("SoldierSelectEventBattle")
end
PlayerData.SoldierData:GetCurLevelData():SendEventBattleChoose(self._nIndex, callback)
end
return SoldierBattleEventItemCtrl
@@ -0,0 +1,21 @@
local SoldierBattleEventPanel = class("SoldierBattleEventPanel", BasePanel)
SoldierBattleEventPanel._bIsMainPanel = false
SoldierBattleEventPanel._tbDefine = {
{
sPrefabPath = "Soldier/Level/SoldierBattleEventPanel.prefab",
sCtrlName = "Game.UI.Soldier.BattleEvent.SoldierBattleEventCtrl"
}
}
function SoldierBattleEventPanel:Awake()
end
function SoldierBattleEventPanel:OnEnable()
end
function SoldierBattleEventPanel:OnAfterEnter()
end
function SoldierBattleEventPanel:OnDisable()
end
function SoldierBattleEventPanel:OnDestroy()
end
function SoldierBattleEventPanel:OnRelease()
end
return SoldierBattleEventPanel
@@ -0,0 +1,349 @@
local SoldierResolveadisputeCtrl = class("SoldierResolveadisputeCtrl", BaseCtrl)
local Camera = CS.UnityEngine.Camera
local Light = CS.UnityEngine.Light
local Animator = CS.UnityEngine.Animator
local AudioListener = CS.UnityEngine.AudioListener
local RawImage = CS.UnityEngine.UI.RawImage
local ClientManager = CS.ClientManager
local GameObject = CS.UnityEngine.GameObject
local typeof = typeof
local DICE_PREFAB_PATH_MAP = {
[1] = "UI/Soldier/Dice/Prefab/Dice01.prefab",
[2] = "UI/Soldier/Dice/Prefab/Dice02.prefab"
}
local DICE_RAW_IMAGE_NODE_NAME = "rimgDiceModel"
local DICE_LAYER_NAME = "Cam_Layer_1"
local DICE_WORLD_ROOT_NAME = "SoldierResolveadisputeDice3DRoot"
local DICE_WORLD_ROOT_POSITION = Vector3(10000, 0, 0)
local DICE_ROLL_MIN_TIME = 1
local DICE_RESULT_TIME = 1.0
local DICE_ANIM_NAME = "Soldier_Dice01_Num_"
SoldierResolveadisputeCtrl._mapNodeConfig = {
btnConfirm = {
sComponentName = "UIButton",
callback = "OnBtnClick_Confirm"
},
txtConfirmBtn = {
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Resolveadispute_Confirm"
},
btnClose = {
sComponentName = "UIButton",
callback = "OnBtnClick_Close"
},
txtTitle = {
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Resolveadispute_Title"
},
txtSucessTip = {sComponentName = "TMP_Text"},
txtBlank = {
sComponentName = "TMP_Text",
sLanguageId = "Tips_Continue"
},
txtFinalPoint = {
sComponentName = "TMP_Text",
sLanguageId = "SoldierBattleEvent_FinalPoint"
},
txtFinalPointNum = {sComponentName = "TMP_Text"},
goNodeResultTitle = {},
trRawImage = {
sComponentName = "RectTransform"
},
animFx_Tips = {sNodeName = "Fx_Tips", sComponentName = "Animator"},
Win = {},
Lose = {}
}
SoldierResolveadisputeCtrl._mapEventConfig = {}
SoldierResolveadisputeCtrl._mapRedDotConfig = {}
local function FindChildTransform(trRoot, sName)
if trRoot == nil or type(sName) ~= "string" then
return nil
end
if trRoot.name == sName then
return trRoot
end
local nChildCount = trRoot.childCount - 1
for i = 0, nChildCount do
local trChild = trRoot:GetChild(i)
local trResult = FindChildTransform(trChild, sName)
if trResult ~= nil then
return trResult
end
end
return nil
end
function SoldierResolveadisputeCtrl:Awake()
self.bActive = true
self.bDiceCasted = false
self.mDice3DData = {}
self._mapNode.trRawImage.gameObject:SetActive(true)
self:BuildDice3DData()
end
function SoldierResolveadisputeCtrl:OnEnable()
self.bActive = true
self.bDiceCasted = false
self.bRollMinFinished = false
self.nPendingDicePoint = nil
self._mapNode.btnClose.gameObject:SetActive(false)
self._mapNode.btnConfirm.gameObject:SetActive(true)
self._mapNode.txtBlank.gameObject:SetActive(false)
self._mapNode.goNodeResultTitle.gameObject:SetActive(false)
local tbDicePointLevel = ConfigTable.GetConfigArray("SoldierChessEventBattle")
local nPointGreatSuccess = tbDicePointLevel[3]
local sText = orderedFormat(ConfigTable.GetUIText("Soldier_Resolveadispute_SucessTip"), nPointGreatSuccess)
NovaAPI.SetTMPText(self._mapNode.txtSucessTip, sText)
end
function SoldierResolveadisputeCtrl:OnDisable()
self.bActive = false
end
function SoldierResolveadisputeCtrl:GetDiceCount()
local soldierLevelData = PlayerData.SoldierData:GetCurLevelData()
if soldierLevelData == nil then
return 1
end
local eventBattleData = soldierLevelData:GetEventBattleData()
if eventBattleData == nil then
return 1
end
local bTwoDice = eventBattleData.bTwoDice
return bTwoDice and 2 or 1
end
function SoldierResolveadisputeCtrl:BuildDice3DData()
self.bTwoDice = self:GetDiceCount() == 2
local sDicePrefabPath = DICE_PREFAB_PATH_MAP[self:GetDiceCount()]
if sDicePrefabPath == nil or sDicePrefabPath == "" then
return
end
if self._mapNode.trRawImage == nil then
return
end
local nLayerIndex = NovaAPI.LayerMaskName2Layer(DICE_LAYER_NAME)
local nLayerMask = NovaAPI.LayerMaskGetMask(DICE_LAYER_NAME)
local prefab = self:LoadAsset(sDicePrefabPath, typeof(GameObject))
if prefab == nil then
return
end
local goWorldRoot = GameObject(DICE_WORLD_ROOT_NAME)
goWorldRoot.transform.position = DICE_WORLD_ROOT_POSITION
goWorldRoot.transform.localEulerAngles = Vector3(0, 0, 0)
goWorldRoot.transform.localScale = Vector3.one
self.mDice3DData.worldRoot = goWorldRoot
local go = instantiate(prefab, goWorldRoot.transform)
if go == nil then
return
end
go.transform.localPosition = Vector3(0, 0, 0)
go.transform.localEulerAngles = Vector3(0, 0, 0)
go.transform.localScale = Vector3.one
go.transform:SetLayerRecursively(nLayerIndex)
self.mDice3DData.gameObject = go
self.mDice3DData.rawImage = self._mapNode.trRawImage:GetComponent(typeof(RawImage))
if self.mDice3DData.rawImage == nil then
return
end
local trCamera = FindChildTransform(go.transform, "Camera")
if trCamera == nil then
return
end
self.mDice3DData.camera = trCamera:GetComponent(typeof(Camera))
if self.mDice3DData.camera == nil then
return
end
self.mDice3DData.camera.cullingMask = nLayerMask
self.mDice3DData.camera:SetCameraVolumeLayerMask(nLayerMask)
local tbLight = go:GetComponentsInChildren(typeof(Light), true)
for i = 0, tbLight.Length - 1 do
tbLight[i].cullingMask = nLayerMask
end
local tbAudioListener = go:GetComponentsInChildren(typeof(AudioListener), true)
for i = 0, tbAudioListener.Length - 1 do
tbAudioListener[i].enabled = false
end
if self.bTwoDice == false then
local trNumber = FindChildTransform(go.transform, "Number")
local trAnimRotation = FindChildTransform(go.transform, "Anim_Rotation")
if trNumber ~= nil then
self.mDice3DData.animDice01Num = trNumber:GetComponent(typeof(Animator))
end
if trAnimRotation ~= nil then
self.mDice3DData.animDice01Rot = trAnimRotation:GetComponent(typeof(Animator))
end
else
local trNumber_L = FindChildTransform(go.transform, "Number_L")
if trNumber_L ~= nil then
self.mDice3DData.animDice02Num_L = trNumber_L:GetComponent(typeof(Animator))
end
local trNumber_R = FindChildTransform(go.transform, "Number_R")
if trNumber_R ~= nil then
self.mDice3DData.animDice02Num_R = trNumber_R:GetComponent(typeof(Animator))
end
local trAnimRotation = FindChildTransform(go.transform, "Anim_Rotation")
if trAnimRotation ~= nil then
self.mDice3DData.animDice02Rot = trAnimRotation:GetComponent(typeof(Animator))
end
end
local v2Resolution = Vector2(2160, 1080)
local nRTSizeX = math.floor(v2Resolution.x * Settings.RENDERTEXTURE_SIZE_FACTOR)
local nRTSizeY = math.floor(v2Resolution.y * Settings.RENDERTEXTURE_SIZE_FACTOR)
self.mDice3DData.cameraRT = GameUIUtils.GenerateRenderTextureFor3D(nRTSizeX, nRTSizeY)
self._mapNode.trRawImage.sizeDelta = v2Resolution
self.mDice3DData.camera.targetTexture = self.mDice3DData.cameraRT
NovaAPI.SetTexture(self.mDice3DData.rawImage, self.mDice3DData.cameraRT)
end
function SoldierResolveadisputeCtrl:HasDiceAnim()
return self.mDice3DData.animDice01Rot ~= nil or self.mDice3DData.animDice02Rot ~= nil
end
function SoldierResolveadisputeCtrl:PlayDiceRollAnim()
self._mapNode.trRawImage.gameObject:SetActive(true)
if self.bTwoDice == false then
if self.mDice3DData.animDice01Rot ~= nil then
self.mDice3DData.animDice01Rot:Play("Soldier_Dice01_Start")
end
elseif self.mDice3DData.animDice02Rot ~= nil then
self.mDice3DData.animDice02Rot:Play("Soldier_Dice02_Start")
end
CS.WwiseAudioManager.Instance:PostEvent("mode_900001_chess_result_resolve_tossSwing")
end
function SoldierResolveadisputeCtrl:OnDiceRollMinFinished()
self.bRollMinFinished = true
self:TryPlayDiceResultAnim()
end
function SoldierResolveadisputeCtrl:TryPlayDiceResultAnim()
self._mapNode.trRawImage.gameObject:SetActive(true)
if self.nPendingDicePoint == nil then
return
end
if self:HasDiceAnim() == false then
self:OnDiceResultAnimEnd()
return
end
if self.bRollMinFinished ~= true then
return
end
local nAnimTime = 0
if self.bTwoDice == false and self.mDice3DData.animDice01Num ~= nil then
local nAnimPoint = math.max(1, math.min(20, self.nPendingDicePoint or 1))
local sAnimName = "Soldier_Dice01_Num_" .. nAnimPoint
self.mDice3DData.animDice01Num:Play(sAnimName)
nAnimTime = NovaAPI.GetAnimClipLength(self.mDice3DData.animDice01Num, {sAnimName})
end
if self.bTwoDice == true then
math.randomseed(os.time())
math.random()
math.random()
math.random()
local nFinalPoint = self.nPendingDicePoint or 0
local nRandomLeftOrRight = math.random(1, 2)
local nDice1 = 0
local nDice2 = 0
if nRandomLeftOrRight == 1 then
nDice1 = nFinalPoint
nDice2 = math.random(1, nFinalPoint - 1)
else
nDice2 = nFinalPoint
nDice1 = math.random(1, nFinalPoint - 1)
end
local nAnimTime_L = 0
local nAnimTime_R = 0
if self.mDice3DData.animDice02Num_L ~= nil then
local sAnimName = "Soldier_Dice02_Num_" .. nDice1
self.mDice3DData.animDice02Num_L:Play(sAnimName)
nAnimTime_L = NovaAPI.GetAnimClipLength(self.mDice3DData.animDice02Num_L, {sAnimName})
end
if self.mDice3DData.animDice02Num_R ~= nil then
local sAnimName = "Soldier_Dice02_Num_" .. nDice2
self.mDice3DData.animDice02Num_R:Play(sAnimName)
nAnimTime_R = NovaAPI.GetAnimClipLength(self.mDice3DData.animDice02Num_R, {sAnimName})
end
nAnimTime = math.max(nAnimTime_L, nAnimTime_R)
end
self:AddTimer(1, nAnimTime, "OnDiceResultAnimEnd", true, true, true)
end
function SoldierResolveadisputeCtrl:OnDiceResultAnimEnd()
if self.bActive ~= true then
return
end
NovaAPI.SetTMPText(self._mapNode.txtFinalPointNum, self.nPendingDicePoint or 0)
local tbDicePointLevel = ConfigTable.GetConfigArray("SoldierChessEventBattle")
if tbDicePointLevel ~= nil then
local nMinPoint = tonumber(tbDicePointLevel[1]) or 0
local sAnimName = ""
local sSoundName = ""
if nMinPoint <= self.nPendingDicePoint then
self._mapNode.Win.gameObject:SetActive(true)
self._mapNode.Lose.gameObject:SetActive(false)
sAnimName = "SoldierResolveadisputeTips_Win"
sSoundName = "mode_900001_chess_result_resolve_toss_goodEnd"
else
self._mapNode.Lose.gameObject:SetActive(true)
self._mapNode.Win.gameObject:SetActive(false)
sAnimName = "SoldierResolveadisputeTips_Lose"
sSoundName = "mode_900001_chess_result_resolve_toss_badEnd"
end
if sAnimName ~= "" then
self._mapNode.animFx_Tips:Play(sAnimName)
end
if sSoundName ~= "" then
CS.WwiseAudioManager.Instance:PostEvent(sSoundName)
end
end
self.bDiceCasted = false
self._mapNode.txtBlank.gameObject:SetActive(true)
self._mapNode.btnConfirm.gameObject:SetActive(false)
self._mapNode.btnClose.gameObject:SetActive(true)
self._mapNode.goNodeResultTitle.gameObject:SetActive(true)
EventManager.Hit("SoldierDiceCasted")
end
function SoldierResolveadisputeCtrl:OnBtnClick_Confirm()
if self.bDiceCasted == true then
return
end
self._mapNode.btnConfirm.gameObject:SetActive(false)
self.bDiceCasted = true
self.bRollMinFinished = false
self.nPendingDicePoint = nil
self:PlayDiceRollAnim()
if self:HasDiceAnim() == true then
self:AddTimer(1, DICE_ROLL_MIN_TIME, "OnDiceRollMinFinished", true, true, true)
else
self.bRollMinFinished = true
end
local soldierLevelData = PlayerData.SoldierData:GetCurLevelData()
if soldierLevelData ~= nil then
soldierLevelData:SendEventBattleThrowDice(function()
if self.bActive ~= true then
return
end
self.nPendingDicePoint = soldierLevelData:GetEventBattleData().nPoint or 0
self:TryPlayDiceResultAnim()
end)
else
self.nPendingDicePoint = 0
self:TryPlayDiceResultAnim()
end
end
function SoldierResolveadisputeCtrl:OnBtnClick_Close()
EventManager.Hit(EventId.ClosePanel, PanelId.SoldierResolveadisputePanel)
end
function SoldierResolveadisputeCtrl:OnDestroy()
if self.mDice3DData.cameraRT ~= nil then
if self.mDice3DData.camera ~= nil then
self.mDice3DData.camera.targetTexture = nil
end
if self.mDice3DData.rawImage ~= nil then
NovaAPI.SetTexture(self.mDice3DData.rawImage, nil)
end
GameUIUtils.ReleaseRenderTexture(self.mDice3DData.cameraRT)
self.mDice3DData.cameraRT = nil
end
if self.mDice3DData.worldRoot ~= nil then
destroy(self.mDice3DData.worldRoot)
self.mDice3DData.worldRoot = nil
self.mDice3DData.gameObject = nil
elseif self.mDice3DData.gameObject ~= nil then
destroy(self.mDice3DData.gameObject)
self.mDice3DData.gameObject = nil
end
self.mDice3DData = {}
end
return SoldierResolveadisputeCtrl
@@ -0,0 +1,21 @@
local SoldierResolveadisputePanel = class("SoldierResolveadisputePanel", BasePanel)
SoldierResolveadisputePanel._bIsMainPanel = false
SoldierResolveadisputePanel._tbDefine = {
{
sPrefabPath = "Soldier/Level/SoldierResolveadisputePanel.prefab",
sCtrlName = "Game.UI.Soldier.BattleEvent.SoldierResolveadisputeCtrl"
}
}
function SoldierResolveadisputePanel:Awake()
end
function SoldierResolveadisputePanel:OnEnable()
end
function SoldierResolveadisputePanel:OnAfterEnter()
end
function SoldierResolveadisputePanel:OnDisable()
end
function SoldierResolveadisputePanel:OnDestroy()
end
function SoldierResolveadisputePanel:OnRelease()
end
return SoldierResolveadisputePanel