2025-06-04 05:02:57 +08:00

67 lines
1.8 KiB
Plaintext

autoImport("EventDispatcher")
FunctionPlayerHead = class("FunctionPlayerHead",EventDispatcher)
FunctionPlayerHead.PlayEmojiEvent = "FunctionPlayerHead.PlayEmojiEvent"
FunctionPlayerHead.EnableBlinkEye = "FunctionPlayerHead.EnableBlinkEye"
FunctionPlayerHead.PlayDefaultEmojiEvent = "FunctionPlayerHead.PlayDefaultEmojiEvent"
FunctionPlayerHead.RollBackDefaultEmoji = 0
function FunctionPlayerHead.Me()
if nil == FunctionPlayerHead.me then
FunctionPlayerHead.me = FunctionPlayerHead.new()
end
return FunctionPlayerHead.me
end
function FunctionPlayerHead:ctor()
self.cachedEmoji = {}
self.blinkEnabled = false
EventManager.Me():AddEventListener(TeamEvent.MemberExitTeam,self.MemberExitTeamHandler,self)
end
function FunctionPlayerHead:Reset()
end
function FunctionPlayerHead:MemberExitTeamHandler(event)
if(event and event.data) then
self:RemoveEmojiCache(event.data.id)
end
end
function FunctionPlayerHead:RemoveEmojiCache(id)
self.cachedEmoji[id] = nil
end
function FunctionPlayerHead:SetEmojiCache(id,emojiID)
--始終保持的狀態,需要快取下
if(emojiID == FunctionPlayerHead.RollBackDefaultEmoji) then
self:RemoveEmojiCache(id)
else
local config = Table_Avatar[emojiID]
if(config and config.Duration==0) then
self.cachedEmoji[id] = emojiID
else
self:RemoveEmojiCache(id)
end
end
end
function FunctionPlayerHead:GetEmojiCache(id)
return self.cachedEmoji[id]
end
--伺服器通知播表情
function FunctionPlayerHead:PlayEmoji(sdata)
self:SetEmojiCache(sdata.charid,sdata.expressionid)
if(sdata.expressionid == FunctionPlayerHead.RollBackDefaultEmoji) then
self:PassEvent(FunctionPlayerHead.PlayDefaultEmojiEvent,sdata)
else
self:PassEvent(FunctionPlayerHead.PlayEmojiEvent,sdata)
end
end
function FunctionPlayerHead:EnableBlinkEye()
self.blinkEnabled = true
self:PassEvent(FunctionPlayerHead.EnableBlinkEye)
end