e0549005e1
EN: 1.9.0.103 CN: 1.9.0.104 JP: 1.9.0.106 KR: 1.9.0.108
172 lines
6.3 KiB
Lua
172 lines
6.3 KiB
Lua
local ThrowGiftItemSelectCtrl = class("ThrowGiftItemSelectCtrl", BaseCtrl)
|
|
local WwiseAudioMgr = CS.WwiseAudioManager.Instance
|
|
local GamepadUIManager = require("GameCore.Module.GamepadUIManager")
|
|
ThrowGiftItemSelectCtrl._mapNodeConfig = {
|
|
btnItemSelect = {
|
|
nCount = 2,
|
|
sComponentName = "NaviButton",
|
|
callback = "OnBtnClick_Item"
|
|
},
|
|
btnItemSelectCtrl = {
|
|
sNodeName = "btnItemSelect",
|
|
nCount = 2,
|
|
sCtrlName = "Game.UI.Activity.ThrowGifts.ItemSelect.ThrowGiftItemSelectGridCtrl"
|
|
},
|
|
rtPos = {nCount = 2}
|
|
}
|
|
ThrowGiftItemSelectCtrl._mapEventConfig = {
|
|
ThrowGiftItemSelectConfirmClick = "OnEvent_ThrowGiftItemSelectConfirmClick",
|
|
GamepadUIChange = "OnEvent_GamepadUIChange"
|
|
}
|
|
ThrowGiftItemSelectCtrl._mapRedDotConfig = {}
|
|
function ThrowGiftItemSelectCtrl:Awake()
|
|
self.tbGamepadUINode = self:GetGamepadUINode()
|
|
end
|
|
function ThrowGiftItemSelectCtrl:FadeIn()
|
|
end
|
|
function ThrowGiftItemSelectCtrl:FadeOut()
|
|
end
|
|
function ThrowGiftItemSelectCtrl:OnEnable()
|
|
self.bSelected = false
|
|
self.curIdx = 0
|
|
self.tbOriginPos = {}
|
|
self.tbOriginPos[1] = self._mapNode.btnItemSelectCtrl[1].gameObject.transform.position
|
|
self.tbOriginPos[2] = self._mapNode.btnItemSelectCtrl[2].gameObject.transform.position
|
|
self.handler = {}
|
|
for k, v in ipairs(self._mapNode.btnItemSelect) do
|
|
self.handler[k] = ui_handler(self, self.OnBtnSelect_Item, v, k)
|
|
v.onSelect:AddListener(self.handler[k])
|
|
end
|
|
end
|
|
function ThrowGiftItemSelectCtrl:OnDisable()
|
|
for k, v in ipairs(self._mapNode.btnItemSelect) do
|
|
v.onSelect:RemoveListener(self.handler[k])
|
|
end
|
|
end
|
|
function ThrowGiftItemSelectCtrl:OnDestroy()
|
|
end
|
|
function ThrowGiftItemSelectCtrl:OnRelease()
|
|
end
|
|
function ThrowGiftItemSelectCtrl:Refresh(tbItem)
|
|
self._mapNode.btnItemSelectCtrl[1]:Refresh(tbItem[1])
|
|
self._mapNode.btnItemSelectCtrl[2]:Refresh(tbItem[2])
|
|
self._mapNode.btnItemSelectCtrl[1]:SetSelect(false)
|
|
self._mapNode.btnItemSelectCtrl[2]:SetSelect(false)
|
|
self._mapNode.btnItemSelectCtrl[1].gameObject.transform.position = self.tbOriginPos[1]
|
|
self._mapNode.btnItemSelectCtrl[2].gameObject.transform.position = self.tbOriginPos[2]
|
|
self._mapNode.btnItemSelectCtrl[1].gameObject.transform.localEulerAngles = Vector3(0, 0, 0)
|
|
self._mapNode.btnItemSelectCtrl[2].gameObject.transform.localEulerAngles = Vector3(0, 0, 0)
|
|
self._mapNode.btnItemSelectCtrl[1].gameObject:SetActive(true)
|
|
self._mapNode.btnItemSelectCtrl[2].gameObject:SetActive(true)
|
|
WwiseAudioMgr:PostEvent("Mode_Present_intensify")
|
|
self:ResetSelect(self._mapNode.btnItemSelect)
|
|
end
|
|
function ThrowGiftItemSelectCtrl:OpenPanel(tbItem, callback, curIdx)
|
|
GamepadUIManager.EnableGamepadUI("ThrowGiftItemSelectCtrl", self.tbGamepadUINode)
|
|
self.curPosIdx = curIdx
|
|
self.gameObject:SetActive(true)
|
|
self.callback = callback
|
|
self.bSelected = false
|
|
self.curIdx = 0
|
|
self.tbItems = tbItem
|
|
self.nCurItemsIdx = 1
|
|
self.tbResultIdx = {}
|
|
self:Refresh(self.tbItems[self.nCurItemsIdx])
|
|
end
|
|
function ThrowGiftItemSelectCtrl:ResetSelect(tbUI)
|
|
self.curIdx = 0
|
|
GamepadUIManager.SetNavigation(tbUI)
|
|
local animTime = 0.4
|
|
self:AddTimer(1, animTime, function()
|
|
if self.curIdx == 0 then
|
|
local nSelect = 1
|
|
GamepadUIManager.ClearSelectedUI()
|
|
GamepadUIManager.SetSelectedUI(self._mapNode.btnItemSelect[nSelect].gameObject)
|
|
if GamepadUIManager.GetCurUIType() == AllEnum.GamepadUIType.Mouse then
|
|
self:OnBtnClick_Item(self._mapNode.btnItemSelect[nSelect].gameObject, nSelect)
|
|
end
|
|
end
|
|
end, true, true, true)
|
|
end
|
|
function ThrowGiftItemSelectCtrl:OnBtnClick_Item(btn, nIdx)
|
|
WwiseAudioMgr:PostEvent("Mode_Present_intensify_choose")
|
|
if self.bSelected then
|
|
return
|
|
end
|
|
if self.curIdx == nIdx then
|
|
return
|
|
end
|
|
self._mapNode.btnItemSelectCtrl[1]:SetSelect(nIdx == 1)
|
|
self._mapNode.btnItemSelectCtrl[2]:SetSelect(nIdx == 2)
|
|
self.curIdx = nIdx
|
|
end
|
|
function ThrowGiftItemSelectCtrl:OnBtnSelect_Item(btn, nIndex)
|
|
local nUIType = GamepadUIManager.GetCurUIType()
|
|
if nUIType ~= AllEnum.GamepadUIType.Other and nUIType ~= AllEnum.GamepadUIType.Mouse then
|
|
self:OnBtnClick_Item(btn, nIndex)
|
|
end
|
|
end
|
|
function ThrowGiftItemSelectCtrl:OnEvent_ThrowGiftItemSelectConfirmClick()
|
|
if self.bSelected then
|
|
return
|
|
end
|
|
if self.curIdx == 0 then
|
|
return
|
|
end
|
|
self.bSelected = true
|
|
self._mapNode.btnItemSelectCtrl[self.curIdx]:PlaySelectAnim()
|
|
table.insert(self.tbResultIdx, self.curIdx)
|
|
if self.nCurItemsIdx < #self.tbItems then
|
|
self.nCurItemsIdx = self.nCurItemsIdx + 1
|
|
self:Refresh(self.tbItems[self.nCurItemsIdx])
|
|
else
|
|
WwiseAudioMgr:PostEvent("Mode_Present_intensify_ok")
|
|
local endPos = self._mapNode.rtPos[self.curPosIdx].transform.position
|
|
local beginPos = self._mapNode.btnItemSelectCtrl[self.curIdx].gameObject.transform.position
|
|
local controlPos = Vector3(3, 5, 0)
|
|
for i = 1, 2 do
|
|
self._mapNode.btnItemSelectCtrl[i].gameObject:SetActive(i == self.curIdx)
|
|
end
|
|
local wait = function()
|
|
local totalMoveTime = 0.3
|
|
local moveTime = 0
|
|
local normalizedTime = 0
|
|
while normalizedTime < 1 do
|
|
moveTime = moveTime + CS.UnityEngine.Time.unscaledDeltaTime
|
|
normalizedTime = moveTime / totalMoveTime
|
|
normalizedTime = normalizedTime <= 1 and normalizedTime or 1
|
|
local x, y, z = UTILS.GetBezierPointByT(beginPos, controlPos, endPos, normalizedTime)
|
|
local angleZ = -180 * normalizedTime
|
|
self._mapNode.btnItemSelectCtrl[self.curIdx].gameObject.transform.localEulerAngles = Vector3(0, 0, angleZ)
|
|
self._mapNode.btnItemSelectCtrl[self.curIdx].gameObject.transform.position = Vector3(x, y, z)
|
|
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
|
end
|
|
if self.callback ~= nil and type(self.callback) == "function" then
|
|
self.callback(self.tbResultIdx)
|
|
end
|
|
self.gameObject:SetActive(false)
|
|
GamepadUIManager.DisableGamepadUI("ThrowGiftItemSelectCtrl")
|
|
end
|
|
if #self.tbResultIdx <= 1 then
|
|
cs_coroutine.start(wait)
|
|
else
|
|
if self.callback ~= nil and type(self.callback) == "function" then
|
|
self.callback(self.tbResultIdx)
|
|
end
|
|
self.gameObject:SetActive(false)
|
|
GamepadUIManager.DisableGamepadUI("ThrowGiftItemSelectCtrl")
|
|
end
|
|
end
|
|
end
|
|
function ThrowGiftItemSelectCtrl:OnEvent_GamepadUIChange(sName, nBeforeType, nAfterType)
|
|
if sName ~= "ThrowGiftItemSelectCtrl" then
|
|
return
|
|
end
|
|
if nBeforeType == AllEnum.GamepadUIType.Other or nBeforeType == AllEnum.GamepadUIType.Mouse then
|
|
local nSelect = self.curIdx ~= 0 and self.curIdx or 1
|
|
GamepadUIManager.ClearSelectedUI()
|
|
GamepadUIManager.SetSelectedUI(self._mapNode.btnItemSelect[nSelect].gameObject)
|
|
end
|
|
end
|
|
return ThrowGiftItemSelectCtrl
|