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

196 lines
5.0 KiB
Plaintext

MiniMapGuideAnim = class("MiniMapGuideAnim");
local tempV3 = LuaVector3();
function MiniMapGuideAnim:ctor(mapWindow)
self.mapWindow = mapWindow;
end
function MiniMapGuideAnim:SetShutDownCall(shutDownCall, param)
self.shutDownCall = shutDownCall;
self.shutDownCallParam = param;
end
function MiniMapGuideAnim:SetEndCall(endCall, param)
self.endCall = endCall;
self.endCallParam = param;
end
function MiniMapGuideAnim:Launch(questData, bubbleId, bubbleStick)
self.questId = questData.id;
local questParam = questData.staticData.Params;
if(questParam)then
if(questParam.mapid~=nil and questParam.mapid ~= Game.MapManager:GetMapID())then
self:ShutDown();
return;
end
if(questParam.guide_quest_symbol)then
self.animType = "visit";
local effectPath = ResourcePathHelper.EffectUI(questParam.guide_quest_symbol);
self.focusTempObj = Game.AssetManager_UI:CreateAsset(effectPath, self.mapWindow.s_symbolParent);
if(Slua.IsNull(self.focusTempObj))then
local effectPath = ResourcePathHelper.EffectUI("44map_icon_talk");
self.focusTempObj = Game.AssetManager_UI:CreateAsset(effectPath, self.mapWindow.s_symbolParent);
errorLog(string.format("No Effect(%s)", tostring(questParam.guide_quest_symbol) ));
end
else
self.animType = "move";
self.focusTempObj = GameObject();
end
self.focusTempObj.transform:SetParent(self.mapWindow.s_symbolParent, false);
self.focusTempObj:SetActive(false);
local configPos = questParam.pos;
if(not configPos)then
local npcPoint = Game.MapManager:FindNPCPoint( questParam.uniqueid );
if(npcPoint)then
configPos = npcPoint.position;
else
configPos = {0,0,0}
end
end
tempV3:Set(configPos[1], configPos[2], configPos[3]);
local mapPos = self.mapWindow:ScenePosToMap(tempV3);
local worldPos = self.mapWindow.s_symbolParent:TransformPoint(mapPos);
tempV3:Set(worldPos.x, worldPos.y, worldPos.z);
helplog(tempV3[1], tempV3[2], tempV3[3]);
self.focusTempObj.transform.position = tempV3;
end
if(not self.focusTempObj)then
errorLog("no Find focus");
self:ShutDown();
return;
end
self.bubbleId = bubbleId;
self.bubbleStick = bubbleStick;
self.mapWindow:ActiveSymbols(false);
-- self:CancelLT();
-- LeanTween.delayedCall(0.5, function ()
-- self:TweenLargetMap();
-- end);
self:TweenLargetMap();
self.running = true;
self.isEnd = false;
self.mapWindow:SetLock(true);
end
function MiniMapGuideAnim:CancelLT()
if(self.lt)then
self.lt:cancel();
end
self.lt = nil;
end
function MiniMapGuideAnim:TweenLargetMap()
self:CancelLT();
self.lt = LeanTween.value(self.mapWindow.gameObject, MiniMapGuideAnim.EnlargeMap, 1, 2, 1);
self.lt.onUpdateParam = self
self.lt.delay = 0.5;
self.lt.onCompleteObject = MiniMapGuideAnim.EnlargeMapEnd;
self.lt.onCompleteParam = self
end
function MiniMapGuideAnim.EnlargeMap(f, self)
self.mapWindow:SetMapScale(f);
self.mapWindow:CenterOnTrans(self.focusTempObj.transform, true);
end
function MiniMapGuideAnim:EnlargeMapEnd()
self:PlayFocusAnim();
end
local focusTable = {};
function MiniMapGuideAnim:PlayFocusAnim()
TableUtility.TableClear(focusTable);
local parent = self.mapWindow.mapTexture.transform;
local effectPath = ResourcePathHelper.EffectUI( EffectMap.UI.MapIndicates );
self.focusEffect = Game.AssetManager_UI:CreateAsset(effectPath, parent);
tempV3[1],tempV3[2],tempV3[3] = LuaGameObject.GetPosition(self.focusTempObj.transform);
self.focusEffect.transform.position = tempV3;
self:CancelLT();
self.lt = LeanTween.delayedCall(0.5, function ()
self:ShowQuestSymbol();
end);
end
function MiniMapGuideAnim:ShowQuestSymbol()
if(self.animType == "visit")then
self.focusTempObj.transform:SetParent(self.mapWindow.mapTexture.transform, false);
self.focusTempObj:SetActive(true);
self:CancelLT();
self.lt = LeanTween.delayedCall(1, function ()
self:ShowBubble();
end);
elseif(self.animType == "move")then
self:ShowBubble();
end
end
function MiniMapGuideAnim:ShowBubble()
self:EndAnim();
if(self.bubbleStick and self.bubbleId)then
tempV3[1], tempV3[2], tempV3[3] = LuaGameObject.GetPosition(self.focusTempObj.transform);
self.bubbleStick.transform.position = tempV3;
TipManager.Instance:ShowBubbleTipById(self.bubbleId, self.bubbleStick, NGUIUtil.AnchorSide.Top, {0, 10}, function ()
self:ShutDown();
end)
else
self:ShutDown();
end
end
function MiniMapGuideAnim:ShutDown()
self:CancelLT();
self.running = false;
self.questId = nil;
if(not Slua.IsNull(self.cpyObj))then
GameObject.Destroy(self.cpyObj);
end
self.cpyObj = nil;
if(self.focusEffect)then
GameObject.Destroy(self.focusEffect);
end
self.focusEffect = nil;
if(not Slua.IsNull(self.focusTempObj))then
GameObject.Destroy(self.focusTempObj);
self.focusTempObj = nil;
end
self.mapWindow:SetLock(false);
self.mapWindow:ActiveSymbols(true);
if(self.shutDownCall)then
self.shutDownCall(self.shutDownCallParam, self);
end
end
function MiniMapGuideAnim:EndAnim()
self:CancelLT();
self.isEnd = true;
if(self.endCall)then
self.endCall(self.endCallParam, self);
end
end