miduo_client/Assets/ManagedResources/~Lua/Modules/ArenaTopMatch/ArenaTopMatchGuessTipViewPo...

216 lines
7.6 KiB
Lua

require("Base/BasePanel")
ArenaTopMatchGuessTipViewPopup = Inherit(BasePanel)
local this = ArenaTopMatchGuessTipViewPopup
local betBattleInfo = nil
--倒计时
local count = 10
--标题
local resultText = { [0] = Language[10122], [1] = Language[10123] }
local resultColor = {
[0] = Color.New(165 / 255, 165 / 255, 165 / 255, 1),
[1] = Color.New(232 / 255, 216 / 255, 186 / 255, 1)
}
--竞猜胜负图片
local resultImage = {
[0] = { name = "UI_effect_JJC_JieSuan_ShiBai_png_zh" },
[1] = { name = "UI_effect_JJC_JieSuan_ShengLi_png_zh" }
}
--头像容器
local headList = {}
--竞猜币ItemId
local GUESS_COIN = ArenaTopMatchManager.GetGuessCoinID()
--竞猜币动态显示持续时长
local duration = 2
--计时间隔
local interval = 0.1
--竞猜币数量浮动图
local upAndDownImage = { [0] = "r_hero_zhanlixiajiang_png", [1] = "r_hero_zhanlishangsheng_png" }
--竞猜结果
local endResult = -1
--初始化组件(用于子类重写)
function ArenaTopMatchGuessTipViewPopup:InitComponent()
this.spLoader = SpriteLoader.New()
this.title = Util.GetGameObject(self.gameObject, "ATM_GuessTipView/Title"):GetComponent("Text")
this.backBtn = Util.GetGameObject(self.gameObject, "ATM_GuessTipView/BackBtn")
this.coinNum = Util.GetGameObject(self.gameObject, "ATM_GuessTipView/CoinNum"):GetComponent("Text")
this.coinState = Util.GetGameObject(self.gameObject, "ATM_GuessTipView/CoinNum/CoinState"):GetComponent("Image")
this.time = Util.GetGameObject(self.gameObject, "ATM_GuessTipView/Time"):GetComponent("Text")
this.leftName = Util.GetGameObject(self.gameObject, "ATM_GuessTipView/BattlePopup/Left/Grade/Name"):GetComponent(
"Text")
this.leftHead = Util.GetGameObject(self.gameObject, "ATM_GuessTipView/BattlePopup/Left/Grade/Head")
this.leftMark = Util.GetGameObject(self.gameObject, "ATM_GuessTipView/BattlePopup/Left/Grade/Mark"):GetComponent(
"Image")
this.leftResult = Util.GetGameObject(self.gameObject, "ATM_GuessTipView/BattlePopup/Left/Result"):GetComponent(
"Image")
this.rightName = Util.GetGameObject(self.gameObject, "ATM_GuessTipView/BattlePopup/Right/Grade/Name"):GetComponent(
"Text")
this.rightHead = Util.GetGameObject(self.gameObject, "ATM_GuessTipView/BattlePopup/Right/Grade/Head")
this.rightMark = Util.GetGameObject(self.gameObject, "ATM_GuessTipView/BattlePopup/Right/Grade/Mark"):GetComponent(
"Image")
this.rightResult = Util.GetGameObject(self.gameObject, "ATM_GuessTipView/BattlePopup/Right/Result"):GetComponent(
"Image")
end
--绑定事件(用于子类重写)
function ArenaTopMatchGuessTipViewPopup:BindEvent()
Util.AddClick(this.backBtn, function()
self:ClosePanel()
end)
end
--添加事件监听(用于子类重写)
function ArenaTopMatchGuessTipViewPopup:AddListener()
end
--移除事件监听(用于子类重写)
function ArenaTopMatchGuessTipViewPopup:RemoveListener()
end
--界面打开时调用(用于子类重写)
function ArenaTopMatchGuessTipViewPopup:OnOpen(...)
this.TimeCountDown()
local IsCanBet = ArenaTopMatchManager.IsCanBet()
--LogGreen("IsCanBet "..tostring(IsCanBet))
if IsCanBet then
betBattleInfo = ArenaTopMatchManager.GetBetBattleInfo()
local myBetTarget = ArenaTopMatchManager.GetMyBetTarget()
local isBetBlue = myBetTarget == betBattleInfo.myInfo.uid
local isBetRed = myBetTarget == betBattleInfo.enemyInfo.uid
if betBattleInfo.result == -1 then return end
endResult = -1
--设置标题
if isBetBlue then
local result = betBattleInfo.result
this.title.text = resultText[result]
this.title.color = resultColor[result]
this.coinState.sprite = this.spLoader:LoadSprite(upAndDownImage[result])
endResult = result
end
if isBetRed then
local result = (betBattleInfo.result + 1) % 2
this.title.text = resultText[result]
this.title.color = resultColor[result]
this.coinState.sprite = this.spLoader:LoadSprite(upAndDownImage[result])
endResult = result
end
this.coinState:SetNativeSize()
--设置玩家名
this.leftName.text = betBattleInfo.myInfo.name
this.rightName.text = betBattleInfo.enemyInfo.name
this.SetHead(this.leftHead, betBattleInfo.myInfo)
this.SetHead(this.rightHead, betBattleInfo.enemyInfo)
this.SetResultIcon(this.leftResult, this.rightResult, betBattleInfo.result)
--设置押注标志
this.leftMark.enabled = isBetBlue
this.rightMark.enabled = isBetRed
--设置竞猜币
this.SetCoin()
end
end
--倒计时
function this.TimeCountDown()
count = 10
if not this.timer then
this.timer = Timer.New(function()
this.time.text = string.format(Language[10124], count)
count = count - 1
if count <= 0 then
count = 0
this.timer:Stop()
this.timer = nil
this:ClosePanel()
end
end, 1, -1, true)
this.timer:Start()
end
end
--设置头像
function this.SetHead(head, data)
if not headList[head] then
headList[head] = CommonPool.CreateNode(POOL_ITEM_TYPE.PLAYER_HEAD, head)
end
headList[head]:Reset()
headList[head]:SetScale(Vector3.one * 0.7)
headList[head]:SetHead(data.head)
headList[head]:SetFrame(data.headFrame)
headList[head]:SetLevel(data.level)
headList[head]:SetLayer(this.sortingOrder)
headList[head]:SetEffectScale(0.8)
end
--设置胜负图片
function this.SetResultIcon(obj1, obj2, result)
if result == 1 then
obj1.sprite = this.spLoader:LoadSprite(resultImage[1].name)
obj2.sprite = this.spLoader:LoadSprite(resultImage[0].name)
elseif result == 0 then
obj1.sprite = this.spLoader:LoadSprite(resultImage[0].name)
obj2.sprite = this.spLoader:LoadSprite(resultImage[1].name)
end
end
--设置竞猜币
function this.SetCoin()
local oldNum = ArenaTopMatchManager.GetCoinNum() + ArenaTopMatchManager.GetMyBetCoins()
local newNum = BagManager.GetItemCountById(GUESS_COIN)
LogRed("endResult " ..
endResult ..
" oldNum " ..
oldNum ..
" newNum " ..
newNum ..
" GetCoinNum " ..
ArenaTopMatchManager.GetCoinNum() .. " GetMyBetCoins " .. ArenaTopMatchManager.GetMyBetCoins())
local tempNum = oldNum
if this.coinTimer then
this.coinTimer:Stop()
this.coinTimer = nil
end
if not this.coinTimer then
this.coinTimer = Timer.New(function()
local addNum = math.floor(tonumber((newNum - tempNum) / (duration / interval)))
if newNum - tempNum > 0 then
addNum = addNum > 0 and addNum or 1
end
oldNum = oldNum + addNum
if oldNum >= newNum then
oldNum = newNum
this.coinTimer:Stop()
end
--LogGreen("oldNum "..oldNum)
this.coinNum.text = string.format(Language[10125], oldNum)
end, interval, -1, true)
this.coinTimer:Start()
end
end
--界面关闭时调用(用于子类重写)
function ArenaTopMatchGuessTipViewPopup:OnClose()
if this.timer then
this.timer:Stop()
this.timer = nil
end
if this.coinTimer then
this.coinTimer:Stop()
this.coinTimer = nil
end
end
--界面销毁时调用(用于子类重写)
function ArenaTopMatchGuessTipViewPopup:OnDestroy()
this.spLoader:Destroy()
end
return ArenaTopMatchGuessTipViewPopup