using System; using UnityEngine; using XMainClient.UI.UICommon; using XUtliPoolLib; namespace XMainClient { internal abstract class XConcreteStage : XStage { public XConcreteStage(EXStage eStage) : base(eStage) { } public override void OnEnterStage(EXStage eOld) { base.OnEnterStage(eOld); } public override void OnLeaveStage(EXStage eNew) { base.OnLeaveStage(eNew); bool flag = eNew != EXStage.Null && !XStage.IsConcreteStage(eNew); if (flag) { XSingleton.singleton.OnLeaveStage(); XSingleton.singleton.Doc.Refresh(); } } private void InitTerrain(uint sceneid) { XSingleton.singleton.CurrentTerrain = Terrain.activeTerrain; SceneTable.RowData sceneData = XSingleton.singleton.GetSceneData(sceneid); bool flag = !string.IsNullOrEmpty(sceneData.BlockFilePath); if (flag) { bool flag2 = !XCurrentGrid.grid.LoadFile(sceneData.BlockFilePath); if (flag2) { XSingleton.singleton.AddErrorLog("Load Grid file: Assets\\Resources\\", sceneData.BlockFilePath, " failed!", null, null, null); } } else { XSingleton.singleton.AddErrorLog("Null path of Grid file for sceneid ", sceneid.ToString(), null, null, null, null); } } protected virtual void InstallCamera() { XSingleton.singleton.CreateComponent(XSingleton.singleton.GameCamera, XCameraActionComponent.uuID); XSingleton.singleton.CreateComponent(XSingleton.singleton.GameCamera, XCameraCollisonComponent.uuID); XSingleton.singleton.CreateComponent(XSingleton.singleton.GameCamera, XCameraShakeComponent.uuID); XSingleton.singleton.GameCamera.Target = XSingleton.singleton.Player; } public override void OnEnterScene(uint sceneid, bool transfer) { base.OnEnterScene(sceneid, transfer); XSingleton.singleton.ResetPlayerData(); XSingleton.singleton.OnEnterScene(sceneid); this.InitTerrain(sceneid); this.InstallCamera(); XSingleton.singleton.OnEnterScene(); XSingleton.singleton.LoadConcreteUI(this._eStage); XSingleton.singleton.OnEnterScene(sceneid); XSingleton.singleton.PlaceDynamicScene(sceneid); XSingleton.singleton.InitAIData(); } public override void OnLeaveScene(bool transfer) { XSingleton.singleton.OnLeaveScene(); XSingleton.singleton.CurrentTerrain = null; XSingleton.singleton.Doc.OnLeaveScene(); XSingleton.singleton.Clean(transfer); base.OnLeaveScene(transfer); } } }