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

174 lines
3.8 KiB
Plaintext

Guild_RemoveType =
{
Click = 1,
Time = 2,
}
local Remove_DefaultTime = 3;
function FunctionGuide:AddMapGuide(mapid)
self.guild_mapid = mapid;
local mapAreaData = WorldMapProxy.Instance:GetMapAreaDataByMapId(mapid);
if(mapAreaData == nil)then
return;
end
if(mapAreaData.isactive)then
self:RemoveMapGuide(mapid, true);
self.guild_mapid = mapid;
return;
end
-- if(self.guild_mapid == mapid)then
-- return;
-- end
GameFacade.Instance:sendNotification(GuideEvent.MapGuide_Change);
end
function FunctionGuide:RemoveMapGuide(mapid)
if(mapid ~= nil)then
if(mapid ~= self.guild_mapid)then
return;
end
end
self:ClearGuide();
self.guild_mapid = nil;
GameFacade.Instance:sendNotification(GuideEvent.MapGuide_Change);
end
function FunctionGuide:GetGuildMapId()
return self.guild_mapid;
end
local tempV3 = LuaVector3();
function FunctionGuide:AttachGuideEffect(attachGO, removeType, removetime)
if(self.guild_mapid == nil)then
return;
end
if(attachGO == nil)then
return;
end
if(self.EFFECT_RESPATH == nil)then
self.EFFECT_RESPATH = ResourcePathHelper.EffectUI(EffectMap.UI.HlightBox);
end
if(self.effectMap == nil)then
self.effectMap = {};
end
local effectGO = self.effectMap[ attachGO ];
if(effectGO == nil)then
local bound = NGUIMath.CalculateRelativeWidgetBounds(attachGO.transform, true);
effectGO = Game.AssetManager_UI:CreateAsset(self.EFFECT_RESPATH, attachGO);
effectGO.transform.localPosition = LuaVector3.zero;
effectGO.transform.localScale = LuaVector3.one;
local uitex = UIUtil.FindComponent("pic_skill_uv_add", UISprite, effectGO);
uitex.width = bound.size.x + 20;
uitex.height = bound.size.y + 30;
self.effectMap[ attachGO ] = effectGO;
if((removeType & Guild_RemoveType.Click) > 0)then
UIUtil.AddClickEvent(attachGO, FunctionGuide.event_RemoveGuildEffect)
end
end
if(effectGO ~= nil and (removeType & Guild_RemoveType.Time) > 0)then
removetime = removetime or Remove_DefaultTime;
if(self.timeRemoveCheckMap == nil)then
self.timeRemoveCheckMap = {};
end
self.timeRemoveCheckMap[ attachGO ] = removetime * 1000;
self:AddTimeRemoveCheck();
end
end
function FunctionGuide.event_RemoveGuildEffect(attachGO)
FunctionGuide.Me():RemoveGuideEffect(attachGO);
end
function FunctionGuide:AddTimeRemoveCheck()
if(self.timeRemoveCheckMap == nil)then
return;
end
if(not self:_UpdateTimeRemoveCheck(0))then
return;
end
if(self.timeRemoveCheck ~= nil)then
return;
end
self.timeRemoveCheck = TimeTickManager.Me():CreateTick(1000, 1000, self._UpdateTimeRemoveCheck, self, 1);
end
function FunctionGuide:_UpdateTimeRemoveCheck(deltatime)
local left = false;
for attachGO,lefttime in pairs(self.timeRemoveCheckMap)do
local effectGO = self.effectMap[ attachGO ];
if(effectGO == nil)then
self.timeRemoveCheckMap[ attachGO ] = nil;
end
lefttime = lefttime - deltatime;
if(lefttime <= 0)then
self:RemoveGuideEffect( attachGO );
self.timeRemoveCheckMap[ attachGO ] = nil;
else
self.timeRemoveCheckMap[ attachGO ] = lefttime;
left = true;
end
end
if(left == false)then
self:RemoveTimeRemoveCheck();
return false;
end
return true;
end
function FunctionGuide:RemoveTimeRemoveCheck()
if(self.timeRemoveCheck == nil)then
return;
end
TimeTickManager.Me():ClearTick(self, 1);
self.timeRemoveCheck = nil;
end
function FunctionGuide:RemoveGuideEffect(attachGO)
if(self.effectMap == nil)then
return;
end
local effectGO = self.effectMap[ attachGO ];
if(effectGO ~= nil)then
Game.GOLuaPoolManager:AddToUIPool(self.EFFECT_RESPATH, effectGO);
self.effectMap[ attachGO ] = nil;
UIUtil.RemoveClickEvent(attachGO, FunctionGuide.event_RemoveGuildEffect);
end
end
function FunctionGuide:ClearGuide()
if(self.effectMap == nil)then
return;
end
for attachGO, v in pairs(self.effectMap)do
self:RemoveGuideEffect(attachGO);
end
end