81 lines
2.6 KiB
Lua
81 lines
2.6 KiB
Lua
|
---@class XUiPanelDice
|
||
|
---@field public ImgDiceAnimEnable UnityEngine.Transform
|
||
|
---@field public PanelResult UnityEngine.Transform
|
||
|
local XUiPanelDice = XClass(nil, "XUiPanelDice")
|
||
|
|
||
|
local tailDiceFrameNames = {
|
||
|
"ImgDiceAn103",
|
||
|
"ImgDiceAn102",
|
||
|
"ImgDiceAn100",
|
||
|
}
|
||
|
|
||
|
function XUiPanelDice:Ctor(ui, root)
|
||
|
self.GameObject = ui.gameObject
|
||
|
self.Transform = ui.transform
|
||
|
self.Root = root
|
||
|
XTool.InitUiObject(self)
|
||
|
end
|
||
|
|
||
|
function XUiPanelDice:UpdateDiceView(playAnimEnable, animFinishCb)
|
||
|
local manager = XDataCenter.DiceGameManager
|
||
|
local points = manager.GetThrowResult()
|
||
|
|
||
|
for i = 1, manager.GetDiceCount() do
|
||
|
local imgPath = XDiceGameConfigs.GetDiceGamePointById(points[i]).ImgPath
|
||
|
self["ImgDice" .. i]:SetRawImage(imgPath)
|
||
|
end
|
||
|
|
||
|
if playAnimEnable then
|
||
|
self.Root:PlayAnimation("PanelResultEnable", animFinishCb)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function XUiPanelDice:PlayThrowAnimation(finishCb, beginCb)
|
||
|
local manager = XDataCenter.DiceGameManager
|
||
|
local points = manager.GetThrowResult()
|
||
|
|
||
|
for i = 1, manager.GetDiceCount() do
|
||
|
--SetRawImage requires gameObject is active
|
||
|
self:SetAnimSubNodeActive(self["DiceAnimation" .. i], true)
|
||
|
self:SetThrowAnimTailFrames(self["DiceAnimation" .. i], points[i])
|
||
|
end
|
||
|
|
||
|
XScheduleManager.ScheduleOnce(function()
|
||
|
for i = 1, manager.GetDiceCount() do
|
||
|
self:SetAnimSubNodeActive(self["DiceAnimation" .. i], false)
|
||
|
end
|
||
|
self:SetDiceAnimNodeActive(true)
|
||
|
self.ImgDiceAnimEnable:PlayTimelineAnimation(function()
|
||
|
self:SetDiceAnimNodeActive(false)
|
||
|
if finishCb then finishCb() end
|
||
|
end, beginCb)
|
||
|
end, 1) --execute in next frame to make sure XLoadRawImage has initialized completely.
|
||
|
end
|
||
|
|
||
|
---@param animationNode UiObject
|
||
|
function XUiPanelDice:SetAnimSubNodeActive(animationNode, active)
|
||
|
for i = 1, #tailDiceFrameNames do
|
||
|
animationNode:GetObject(tailDiceFrameNames[i]).gameObject:SetActiveEx(active)
|
||
|
end
|
||
|
animationNode:GetComponent("CanvasGroup").alpha = active and 0 or 1.0
|
||
|
end
|
||
|
|
||
|
function XUiPanelDice:SetThrowAnimTailFrames(animationNode, point)
|
||
|
local tailFrames = XDiceGameConfigs.GetDiceAnimationById(point).TailFrames
|
||
|
for i = 1, #tailDiceFrameNames do
|
||
|
animationNode:GetObject(tailDiceFrameNames[i]):SetRawImage(tailFrames[i], nil, false)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function XUiPanelDice:SetResultViewActive(active)
|
||
|
self.PanelResult.gameObject:SetActiveEx(active)
|
||
|
end
|
||
|
|
||
|
function XUiPanelDice:SetDiceAnimNodeActive(value)
|
||
|
for i = 1, XDataCenter.DiceGameManager.GetDiceCount() do
|
||
|
local animNode = self["DiceAnimation" .. i]
|
||
|
animNode.gameObject:SetActiveEx(value)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
return XUiPanelDice
|