5e0d58cfad
EN: 1.2.0.60 CN: 1.2.0.61 JP: 1.2.0.63 KR: 1.2.0.67
75 lines
3.2 KiB
Lua
75 lines
3.2 KiB
Lua
local SkillActionIconCtrl = class("SkillActionIconCtrl", BaseCtrl)
|
|
local GamepadUIManager = require("GameCore.Module.GamepadUIManager")
|
|
local MouseName = {
|
|
leftButton = 1,
|
|
rightButton = 2,
|
|
middleButton = 3,
|
|
backButton = 4,
|
|
forwardButton = 5
|
|
}
|
|
local ImageKey = {backspace = 1, enter = 2}
|
|
SkillActionIconCtrl._mapNodeConfig = {
|
|
Keyboard = {},
|
|
goKey = {},
|
|
imgKeyboard = {sComponentName = "Image"},
|
|
txtKeyboard = {sComponentName = "TMP_Text"},
|
|
Mouse = {},
|
|
imgMouse = {sComponentName = "Image"},
|
|
Gamepad = {},
|
|
imgGamepad = {sComponentName = "Image"},
|
|
KeyNone = {}
|
|
}
|
|
SkillActionIconCtrl._mapEventConfig = {
|
|
GamepadUIChange = "OnEvent_GamepadUIChange"
|
|
}
|
|
function SkillActionIconCtrl:Awake()
|
|
self.bMobile = NovaAPI.IsMobilePlatform()
|
|
end
|
|
function SkillActionIconCtrl:SetActionBind(sGamepadBind, mapKeyboardBind)
|
|
self.sGamepadBind = sGamepadBind
|
|
self.mapKeyboardBind = mapKeyboardBind
|
|
self:RefreshActionBind()
|
|
end
|
|
function SkillActionIconCtrl:RefreshActionBind()
|
|
local nUIType = GamepadUIManager.GetCurUIType()
|
|
self._mapNode.KeyNone:SetActive(false)
|
|
self._mapNode.Gamepad:SetActive(nUIType == AllEnum.GamepadUIType.PS or nUIType == AllEnum.GamepadUIType.Xbox)
|
|
self._mapNode.Keyboard:SetActive((nUIType == AllEnum.GamepadUIType.Other or nUIType == AllEnum.GamepadUIType.Keyboard or nUIType == AllEnum.GamepadUIType.Mouse) and not self.bMobile and not MouseName[self.mapKeyboardBind.name])
|
|
self._mapNode.Mouse:SetActive((nUIType == AllEnum.GamepadUIType.Other or nUIType == AllEnum.GamepadUIType.Keyboard or nUIType == AllEnum.GamepadUIType.Mouse) and not self.bMobile and MouseName[self.mapKeyboardBind.name])
|
|
if nUIType == AllEnum.GamepadUIType.Other or nUIType == AllEnum.GamepadUIType.Keyboard or nUIType == AllEnum.GamepadUIType.Mouse then
|
|
if not self.bMobile then
|
|
if self.mapKeyboardBind.name == "" then
|
|
self._mapNode.Keyboard:SetActive(false)
|
|
self._mapNode.Mouse:SetActive(false)
|
|
self._mapNode.KeyNone:SetActive(true)
|
|
elseif MouseName[self.mapKeyboardBind.name] then
|
|
local sIcon = ConfigTable.GetField("GamepadButton", self.mapKeyboardBind.name, "XboxIcon")
|
|
self:SetPngSprite(self._mapNode.imgMouse, sIcon)
|
|
elseif ImageKey[self.mapKeyboardBind.name] then
|
|
self._mapNode.imgKeyboard.gameObject:SetActive(true)
|
|
self._mapNode.goKey:SetActive(false)
|
|
local sIcon = ConfigTable.GetField("GamepadButton", self.mapKeyboardBind.name, "XboxIcon")
|
|
self:SetPngSprite(self._mapNode.imgKeyboard, sIcon)
|
|
NovaAPI.SetImageNativeSize(self._mapNode.imgKeyboard)
|
|
else
|
|
self._mapNode.imgKeyboard.gameObject:SetActive(false)
|
|
self._mapNode.goKey:SetActive(true)
|
|
local sName = GamepadUIManager.GetInputName(self.mapKeyboardBind)
|
|
NovaAPI.SetTMPText(self._mapNode.txtKeyboard, sName)
|
|
end
|
|
end
|
|
else
|
|
local sIcon
|
|
if nUIType == AllEnum.GamepadUIType.PS then
|
|
sIcon = ConfigTable.GetField("GamepadButton", self.sGamepadBind, "PlayStationIcon")
|
|
elseif nUIType == AllEnum.GamepadUIType.Xbox then
|
|
sIcon = ConfigTable.GetField("GamepadButton", self.sGamepadBind, "XboxIcon")
|
|
end
|
|
self:SetPngSprite(self._mapNode.imgGamepad, sIcon)
|
|
end
|
|
end
|
|
function SkillActionIconCtrl:OnEvent_GamepadUIChange(sName, nBeforeType, nAfterType)
|
|
self:RefreshActionBind()
|
|
end
|
|
return SkillActionIconCtrl
|