Files
StellaSora_DataLua/lua/game/ui/actionbar/actionbarctrl.lua
T
SL1900 5e0d58cfad Initial version - 1.2.0.60
EN: 1.2.0.60
CN: 1.2.0.61
JP: 1.2.0.63
KR: 1.2.0.67
2025-12-03 01:00:00 +09:00

82 lines
2.6 KiB
Lua

local ActionBarCtrl = class("ActionBarCtrl", BaseCtrl)
local GamepadUIManager = require("GameCore.Module.GamepadUIManager")
ActionBarCtrl._mapNodeConfig = {
rtContent = {sComponentName = "Transform"},
goAction = {}
}
ActionBarCtrl._mapEventConfig = {
GamepadUIChange = "OnEvent_GamepadUIChange"
}
function ActionBarCtrl:InitActionBar(tbConfig)
if self.tbConfig and #tbConfig == #self.tbConfig then
local bAllSame = true
for i, v in ipairs(tbConfig) do
if v.sAction ~= self.tbConfig[i].sAction then
bAllSame = false
break
end
end
if bAllSame then
return
end
end
self.tbActionObj = {}
self.tbActionImg = {}
self.tbConfig = tbConfig
delChildren(self._mapNode.rtContent)
for _, v in pairs(tbConfig) do
local goAction = instantiate(self._mapNode.goAction, self._mapNode.rtContent)
goAction:SetActive(true)
local imgAction = goAction.transform:Find("imgAction"):GetComponent("Image")
local imgAction2 = goAction.transform:Find("imgAction2"):GetComponent("Image")
local txtAction = goAction.transform:Find("txtAction"):GetComponent("TMP_Text")
NovaAPI.SetTMPText(txtAction, ConfigTable.GetUIText(v.sLang))
self.tbActionObj[v.sAction] = goAction
self.tbActionImg[v.sAction] = imgAction
if v.sAction2 then
imgAction2.gameObject:SetActive(true)
self.tbActionObj[v.sAction2] = goAction
self.tbActionImg[v.sAction2] = imgAction2
end
end
self:RefreshActionImage()
end
function ActionBarCtrl:ClearActionBar()
self.tbActionObj = {}
self.tbActionImg = {}
self.tbConfig = nil
delChildren(self._mapNode.rtContent)
end
function ActionBarCtrl:RefreshActionImage()
local nUIType = GamepadUIManager.GetCurUIType()
if nUIType == AllEnum.GamepadUIType.Other then
self.gameObject:SetActive(false)
return
end
self.gameObject:SetActive(true)
for sAction, imgAction in pairs(self.tbActionImg) do
local sIcon
if nUIType == AllEnum.GamepadUIType.PS then
sIcon = ConfigTable.GetField("GamepadAction", sAction, "PlayStationIcon")
elseif nUIType == AllEnum.GamepadUIType.Xbox then
sIcon = ConfigTable.GetField("GamepadAction", sAction, "XboxIcon")
elseif nUIType == AllEnum.GamepadUIType.Keyboard or nUIType == AllEnum.GamepadUIType.Mouse then
sIcon = ConfigTable.GetField("GamepadAction", sAction, "KeyboardIcon")
end
if sIcon == nil or sIcon == "" then
self.tbActionObj[sAction]:SetActive(false)
else
self.tbActionObj[sAction]:SetActive(true)
self:SetPngSprite(imgAction, sIcon)
NovaAPI.SetImageNativeSize(imgAction)
end
end
end
function ActionBarCtrl:OnEvent_GamepadUIChange(sName, nBeforeType, nAfterType)
if not self.tbActionImg then
return
end
self:RefreshActionImage()
end
return ActionBarCtrl