eafd8f4088
EN: 1.9.0.107 CN: 1.9.0.108 JP: 1.9.0.112 KR: 1.9.0.112
235 lines
8.4 KiB
Lua
235 lines
8.4 KiB
Lua
local BreakOutPlaySkillCtrl = class("BreakOutPlaySkillCtrl", BaseCtrl)
|
|
local AdventureModuleHelper = CS.AdventureModuleHelper
|
|
local InputManagerIns = CS.InputManager.Instance
|
|
local GamepadUIManager = require("GameCore.Module.GamepadUIManager")
|
|
BreakOutPlaySkillCtrl._mapNodeConfig = {
|
|
goJoystick = {
|
|
sNodeName = "--joystick--"
|
|
},
|
|
rtJoystick = {
|
|
sNodeName = "--joystick--",
|
|
sComponentName = "RectTransform"
|
|
},
|
|
cgJoystick = {
|
|
sNodeName = "--joystick--",
|
|
sComponentName = "CanvasGroup"
|
|
},
|
|
Skill_Pos = {sComponentName = "Transform"},
|
|
Shoot_Pos = {sComponentName = "Transform"},
|
|
cgSafeAreaRoot = {
|
|
sNodeName = "--safeAreaRoot--",
|
|
sComponentName = "CanvasGroup"
|
|
},
|
|
break_Skill = {
|
|
sNodeName = "btnSkill",
|
|
sCtrlName = "Game.UI.Play_BreakOut_30101.BreakOutSkillBtnCtrl"
|
|
},
|
|
break_Shoot = {
|
|
sNodeName = "btnShoot",
|
|
sCtrlName = "Game.UI.Play_BreakOut_30101.BreakOutSkillBtnCtrl"
|
|
}
|
|
}
|
|
local SKILL_SHOOT = 1
|
|
local SKILL_ULTRA = 4
|
|
BreakOutPlaySkillCtrl._mapEventConfig = {
|
|
LoadLevelRefresh = "OnEvent_LoadLevelRefresh",
|
|
PlayerAdventureActorCastSkill = "OnEvent_UseSkillSuc",
|
|
ButtonStateChange = "OnEvent_BtnStateChange",
|
|
SetVariableJoystickMode = "OnEvent_SetVariableJoystickMode",
|
|
BrickActorEnergy = "OnEvent_RefreshSkillState",
|
|
Brick_ShootButtonState = "OnEvent_RefreshShootState",
|
|
SetBreakOutPlaySkill_Visible = "OnEvent_BreakOutPlaySkillVisible",
|
|
OnEvent_ClearState = "OnEvent_ClearState"
|
|
}
|
|
function BreakOutPlaySkillCtrl:Awake()
|
|
local param = self:GetPanelParam()
|
|
if type(param) == "table" then
|
|
self.nActId = param[1]
|
|
self.nLevelId = param[2]
|
|
self.nCurCharId = param[3]
|
|
end
|
|
self.BreakOutData = PlayerData.Activity:GetActivityDataById(self.nActId)
|
|
self.tbDefine_BreakOutPlayBtn = {
|
|
[1] = {
|
|
btnTyp = SKILL_SHOOT,
|
|
BreakOutSkillBtnCtrl = self._mapNode.break_Shoot,
|
|
sName = "Fire1",
|
|
nHoldThreshold = 0.1
|
|
},
|
|
[2] = {
|
|
btnTyp = SKILL_ULTRA,
|
|
BreakOutSkillBtnCtrl = self._mapNode.break_Skill,
|
|
sName = "Fire4",
|
|
nHoldThreshold = 0.1
|
|
}
|
|
}
|
|
self.nCurPlayerId = nil
|
|
self.skillTipTime = 0
|
|
self.dodgeTipTime = 0
|
|
end
|
|
function BreakOutPlaySkillCtrl:OnEnable()
|
|
if NovaAPI.IsMobilePlatform() or NovaAPI.IsEditorPlatform() then
|
|
self._mapNode.goJoystick:SetActive(true)
|
|
NovaAPI.RegisterVirtualJoystick("Horizontal", "Vertical", self._mapNode.goJoystick)
|
|
else
|
|
self._mapNode.goJoystick:SetActive(false)
|
|
end
|
|
local nW = math.floor(Settings.CURRENT_CANVAS_FULL_RECT_WIDTH)
|
|
local nH = math.floor(Settings.CURRENT_CANVAS_FULL_RECT_HEIGHT)
|
|
self._mapNode.rtJoystick.sizeDelta = Vector2(nW / 2, nH * 2 / 3)
|
|
for _, v in ipairs(self.tbDefine_BreakOutPlayBtn) do
|
|
NovaAPI.RegisterRealButton(v.sName, v.nHoldThreshold)
|
|
local go = v.BreakOutSkillBtnCtrl ~= nil and v.BreakOutSkillBtnCtrl.gameObject or v.goBtn
|
|
NovaAPI.RegisterVirtualButton(v.sName, go)
|
|
NovaAPI.SetButtonExHoldThreshold(go, v.nHoldThreshold)
|
|
end
|
|
self:SetKeyLayout()
|
|
self:SetActionBind()
|
|
self:Refresh()
|
|
self:OnEvent_BreakOutPlaySkillVisible(false)
|
|
end
|
|
function BreakOutPlaySkillCtrl:OnDisable()
|
|
NovaAPI.UnRegisterVirtualJoystick("Horizontal", "Vertical")
|
|
for _, v in ipairs(self.tbDefine_BreakOutPlayBtn) do
|
|
NovaAPI.UnRegisterRealButton(v.sName)
|
|
NovaAPI.UnRegisterVirtualButton(v.sName)
|
|
end
|
|
end
|
|
function BreakOutPlaySkillCtrl:SetKeyLayout()
|
|
self:SetKeyPos(self._mapNode.break_Skill.gameObject:GetComponent("RectTransform"), self._mapNode.Skill_Pos)
|
|
self:SetKeyPos(self._mapNode.break_Shoot.gameObject:GetComponent("RectTransform"), self._mapNode.Shoot_Pos)
|
|
self._mapNode.break_Skill:SetCDTextSize()
|
|
self._mapNode.break_Shoot:SetCDTextSize()
|
|
end
|
|
function BreakOutPlaySkillCtrl:SetKeyPos(btnTra, parentTra)
|
|
btnTra:SetParent(parentTra)
|
|
btnTra.anchoredPosition = Vector2.zero
|
|
btnTra.localScale = Vector3.one
|
|
end
|
|
function BreakOutPlaySkillCtrl:OnEvent_LoadLevelRefresh()
|
|
self:Refresh()
|
|
local wait = function()
|
|
coroutine.yield(CS.UnityEngine.WaitForSeconds(0.01))
|
|
self:OnEvent_BreakOutPlaySkillVisible(true)
|
|
end
|
|
cs_coroutine.start(wait)
|
|
end
|
|
function BreakOutPlaySkillCtrl:OnEvent_UseSkillSuc(nCharId, nSkillId)
|
|
for i, v in ipairs(self.tbDefine_BreakOutPlayBtn) do
|
|
if v.nCharId == nCharId and v.nSkillId == nSkillId and v.BreakOutSkillBtnCtrl ~= nil then
|
|
v.BreakOutSkillBtnCtrl:SetMainAlpha(false)
|
|
end
|
|
end
|
|
end
|
|
function BreakOutPlaySkillCtrl:OnEvent_BtnStateChange(sBtnName, nBtnState)
|
|
local func_CheckBtnState = function(tb)
|
|
for i, v in ipairs(tb) do
|
|
if v.sName == sBtnName and v.BreakOutSkillBtnCtrl ~= nil then
|
|
v.BreakOutSkillBtnCtrl:BtnStateChange(nBtnState)
|
|
end
|
|
end
|
|
end
|
|
func_CheckBtnState(self.tbDefine_BreakOutPlayBtn)
|
|
end
|
|
function BreakOutPlaySkillCtrl:Refresh()
|
|
for _, v in ipairs(self.tbDefine_BreakOutPlayBtn) do
|
|
if v.BreakOutSkillBtnCtrl ~= nil then
|
|
v.nCharId = self.nCurCharId
|
|
local tCharacterData = self.BreakOutData:GetDataFromBreakOutCharacter(self.nCurCharId)
|
|
if tCharacterData == nil then
|
|
printError("角色ID:" .. self.nCurCharId .. "在表中不存在数据信息")
|
|
return
|
|
end
|
|
v.nSkillId = tCharacterData.SkillId
|
|
local EET = tCharacterData.EET
|
|
local skillData = ConfigTable.GetData("Skill", v.nSkillId)
|
|
if skillData ~= nil then
|
|
v.BreakOutSkillBtnCtrl:InitSkillBtn(EET, skillData.Icon, v.nSkillId, v.btnTyp, self.nCurCharId, self.BreakOutData.BreakOutLevelData)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
function BreakOutPlaySkillCtrl:OnEvent_ClearState()
|
|
local breakOutSkillBtnCtrl = self.tbDefine_BreakOutPlayBtn[2].BreakOutSkillBtnCtrl
|
|
if breakOutSkillBtnCtrl ~= nil then
|
|
local tCharacterData = self.BreakOutData:GetDataFromBreakOutCharacter(self.nCurCharId)
|
|
if tCharacterData == nil then
|
|
printError("角色ID:" .. self.nCurCharId .. "在表中不存在数据信息")
|
|
return
|
|
end
|
|
local nMaxSkillEnergy = tCharacterData.MP
|
|
local skillData = ConfigTable.GetData("Skill", tCharacterData.SkillId)
|
|
local nTotalCDTime = skillData.SkillCD
|
|
breakOutSkillBtnCtrl:RefreshSkillBtn(0.0, nMaxSkillEnergy, 0.0, nTotalCDTime)
|
|
end
|
|
end
|
|
function BreakOutPlaySkillCtrl:SetActionBind()
|
|
local set = function(config)
|
|
local bHas, tbControl = InputManagerIns:GetInputActionConfig(config.sName)
|
|
if bHas then
|
|
local sGamepadBind, mapKeyboardBind = "", {name = "", displayName = ""}
|
|
for i = 0, tbControl.Count - 1 do
|
|
local mapControl = tbControl[i]
|
|
if mapControl.isGamepad then
|
|
sGamepadBind = mapControl.name
|
|
elseif (mapControl.isKeyboard or mapControl.isMouse) and mapKeyboardBind.name == "" then
|
|
mapKeyboardBind.name = mapControl.name
|
|
mapKeyboardBind.displayName = mapControl.displayName
|
|
end
|
|
end
|
|
if config.BreakOutSkillBtnCtrl then
|
|
config.BreakOutSkillBtnCtrl:SetActionBind(sGamepadBind, mapKeyboardBind)
|
|
end
|
|
end
|
|
end
|
|
for _, v in ipairs(self.tbDefine_BreakOutPlayBtn) do
|
|
set(v)
|
|
end
|
|
end
|
|
function BreakOutPlaySkillCtrl:OnEvent_RefreshShootState(bEnableShoot)
|
|
self.tbDefine_BreakOutPlayBtn[1].BreakOutSkillBtnCtrl:SetMainAlpha(bEnableShoot)
|
|
end
|
|
function BreakOutPlaySkillCtrl:OnEvent_RefreshSkillState(CharacterId, SkillId, nCurSkillEnergy, nMaxSkillEnergy, nCurCDTime)
|
|
local breakOutSkillBtnCtrl = self.tbDefine_BreakOutPlayBtn[2].BreakOutSkillBtnCtrl
|
|
if CharacterId ~= self.nCurCharId then
|
|
return
|
|
end
|
|
local tCharacterData = self.BreakOutData:GetDataFromBreakOutCharacter(CharacterId)
|
|
if tCharacterData == nil then
|
|
printError("角色ID:" .. CharacterId .. "在表中不存在数据信息")
|
|
return
|
|
end
|
|
local skillData = ConfigTable.GetData("Skill", SkillId)
|
|
local nTotalCDTime = skillData.SkillCD
|
|
if breakOutSkillBtnCtrl ~= nil then
|
|
breakOutSkillBtnCtrl:RefreshSkillBtn(nCurSkillEnergy, nMaxSkillEnergy, nCurCDTime, nTotalCDTime)
|
|
end
|
|
end
|
|
function BreakOutPlaySkillCtrl:EnableBtnControl()
|
|
for _, v in ipairs(self.tbDefine_BreakOutPlayBtn) do
|
|
NovaAPI.SetRealButtonActive(v.sName, true)
|
|
end
|
|
end
|
|
function BreakOutPlaySkillCtrl:OnEvent_SetVariableJoystickMode()
|
|
if not NovaAPI.IsMobilePlatform() then
|
|
return
|
|
end
|
|
NovaAPI.SetVariableJoystickMode(self._mapNode.goJoystick)
|
|
end
|
|
function BreakOutPlaySkillCtrl:OnEvent_BreakOutPlaySkillVisible(bVisible)
|
|
self:SetAllVisible(bVisible)
|
|
end
|
|
function BreakOutPlaySkillCtrl:SetAllVisible(bVisible)
|
|
NovaAPI.SetCanvasGroupAlpha(self._mapNode.cgJoystick, bVisible == true and 0.3 or 0)
|
|
NovaAPI.SetCanvasGroupInteractable(self._mapNode.cgJoystick, true)
|
|
NovaAPI.SetCanvasGroupBlocksRaycasts(self._mapNode.cgJoystick, true)
|
|
NovaAPI.SetCanvasGroupAlpha(self._mapNode.cgSafeAreaRoot, bVisible == true and 1 or 0)
|
|
end
|
|
function BreakOutPlaySkillCtrl:OnEvent_SwitchUI()
|
|
PanelManager.SwitchUI()
|
|
end
|
|
function BreakOutPlaySkillCtrl:OnEvent_SwitchSkillBtn()
|
|
PanelManager.SwitchSkillBtn()
|
|
end
|
|
return BreakOutPlaySkillCtrl
|