Initial version - 1.2.0.60
EN: 1.2.0.60 CN: 1.2.0.61 JP: 1.2.0.63 KR: 1.2.0.67
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
local RoguelikeItemTipsCtrl = class("RoguelikeItemTipsCtrl", BaseCtrl)
|
||||
RoguelikeItemTipsCtrl._mapNodeConfig = {
|
||||
tr_TipContent = {sComponentName = "Transform"},
|
||||
TipPool = {sComponentName = "Transform"},
|
||||
TemplateTip = {sComponentName = "GameObject"}
|
||||
}
|
||||
RoguelikeItemTipsCtrl._mapEventConfig = {
|
||||
[EventId.ShowRoguelikeDrop] = "OnEvent_ShowTips",
|
||||
AvgBubbleStart = "OnAvgBubbleStart",
|
||||
[EventId.AvgBubbleExit] = "OnAvgBubbleEnd",
|
||||
TipsShowEnd = "OnEvent_TipsShowEnd"
|
||||
}
|
||||
function RoguelikeItemTipsCtrl:GetItem()
|
||||
local TipItem
|
||||
if #self._tbTipPool > 0 then
|
||||
local idx = #self._tbTipPool
|
||||
TipItem = self._tbTipPool[idx]
|
||||
table.remove(self._tbTipPool, idx)
|
||||
TipItem.gameObject.transform:SetParent(self._mapNode.tr_TipContent)
|
||||
return TipItem
|
||||
else
|
||||
local itemObj = instantiate(self._mapNode.TemplateTip, self._mapNode.tr_TipContent)
|
||||
itemObj:SetActive(true)
|
||||
TipItem = self:BindCtrlByNode(itemObj, "Game.UI.RoguelikeItemTips.RoguelikeItemTipsItemCtrl")
|
||||
return TipItem
|
||||
end
|
||||
end
|
||||
function RoguelikeItemTipsCtrl:RecycleItem(itemCtrl)
|
||||
itemCtrl.gameObject.transform:SetParent(self._mapNode.TipPool)
|
||||
table.insert(self._tbTipPool, itemCtrl)
|
||||
end
|
||||
function RoguelikeItemTipsCtrl:ShowTips()
|
||||
if not self.bPause then
|
||||
while #self._tbTipShow < self.nMaxTipsCount and #self._tbTipsQueue > 0 do
|
||||
local itemInfo = table.remove(self._tbTipsQueue, 1)
|
||||
local tipItem = self:GetItem()
|
||||
tipItem.gameObject:SetActive(true)
|
||||
table.insert(self._tbTipShow, tipItem)
|
||||
tipItem:Show(itemInfo.nTid, itemInfo.nCount)
|
||||
end
|
||||
else
|
||||
print("剧情中无法显示物品提示")
|
||||
end
|
||||
end
|
||||
function RoguelikeItemTipsCtrl:Awake()
|
||||
self.nMaxTipsCount = 4
|
||||
self.bPause = false
|
||||
end
|
||||
function RoguelikeItemTipsCtrl:OnEnable()
|
||||
self.bPause = false
|
||||
self.nMaxTipsCount = 4
|
||||
self._tbTipPool = {}
|
||||
self._tbTipShow = {}
|
||||
self._tbTipsQueue = {}
|
||||
delChildren(self._mapNode.tr_TipContent)
|
||||
end
|
||||
function RoguelikeItemTipsCtrl:OnDisable()
|
||||
end
|
||||
function RoguelikeItemTipsCtrl:OnDestroy()
|
||||
end
|
||||
function RoguelikeItemTipsCtrl:OnEvent_ShowTips(nTid, nCount)
|
||||
table.insert(self._tbTipsQueue, {nTid = nTid, nCount = nCount})
|
||||
self:ShowTips()
|
||||
end
|
||||
function RoguelikeItemTipsCtrl:OnEvent_TipsShowEnd(itemCtrl)
|
||||
local idx = table.indexof(self._tbTipShow, itemCtrl)
|
||||
table.remove(self._tbTipShow, idx)
|
||||
self:RecycleItem(itemCtrl)
|
||||
self:ShowTips()
|
||||
end
|
||||
function RoguelikeItemTipsCtrl:OnAvgBubbleStart(sAvgId, nGroupId)
|
||||
self.bPause = true
|
||||
if #self._tbTipShow > 0 then
|
||||
local wait = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForSeconds(1))
|
||||
for _, item in pairs(self._tbTipShow) do
|
||||
item:FadeOut()
|
||||
end
|
||||
coroutine.yield(CS.UnityEngine.WaitForSeconds(0.5))
|
||||
for _, item in pairs(self._tbTipShow) do
|
||||
self:RecycleItem(item)
|
||||
end
|
||||
EventManager.Hit(EventId.AvgBubbleShow, sAvgId, nGroupId)
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
else
|
||||
EventManager.Hit(EventId.AvgBubbleShow, sAvgId, nGroupId)
|
||||
end
|
||||
end
|
||||
function RoguelikeItemTipsCtrl:OnAvgBubbleEnd()
|
||||
self.bPause = false
|
||||
self:ShowTips()
|
||||
end
|
||||
return RoguelikeItemTipsCtrl
|
||||
Reference in New Issue
Block a user