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

57 lines
1.7 KiB
Plaintext

autoImport("EventDispatcher")
autoImport("LStateMachine")
autoImport("GameLoadSceneState")
autoImport("GameEnteredSceneState")
autoImport("GameAfterLoadSceneState")
FunctionGameState = class("FunctionGameState",EventDispatcher)
function FunctionGameState.Me()
if nil == FunctionGameState.me then
FunctionGameState.me = FunctionGameState.new()
end
return FunctionGameState.me
end
function FunctionGameState:ctor()
self.stateMachine = LStateMachine.new()
self.loadState = GameLoadSceneState.new()
self.enteredSceneState = GameEnteredSceneState.new()
self.afterLoadedState = GameAfterLoadSceneState.new()
end
function FunctionGameState:Reset()
end
--新增需要載入的場景
function FunctionGameState:NeedLoadScene(data)
EventManager.Me():DispatchEvent(ServiceEvent.PlayerMapChange,data.mapID)
print("請求載入地圖ID",data.mapID,"raidID",data.dmapID)
local mapInfo = SceneProxy.Instance:GetMapInfo(data.mapID)
if(mapInfo~=nil) then
data.mapName = "Scene"..mapInfo.NameEn
else
error("未找到地圖id:"..data.mapID.."的資訊")
end
if(SceneProxy.Instance:IsCurrentScene(data)==true) then
if(SceneProxy.Instance.currentScene.loaded == false) then
local lastNeedLoad = SceneProxy.Instance:GetLastNeedLoad()
if(lastNeedLoad) then
SceneProxy.Instance:RemoveNeedLoad(2)
end
return
end
else
print("add load wait scene.."..data.mapID)
--不是目前的地圖,加入待載入列表
SceneProxy.Instance:AddLoadingScene(data)
end
self.stateMachine:SwitchState(self.loadState)
end
function FunctionGameState:AfterLoadScene()
self.stateMachine:SwitchState(self.afterLoadedState)
end
function FunctionGameState:EnteredScene()
self.stateMachine:SwitchState(self.enteredSceneState)
end