summaryrefslogtreecommitdiff
path: root/Client/Assets/Scripts/XMainClient/XConcreteStage.cs
blob: 2356b104b6fb6b6ebcfd1f9fdb743d515de5a23d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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<XAttributeMgr>.singleton.OnLeaveStage();
				XSingleton<XGame>.singleton.Doc.Refresh();
			}
		}

		private void InitTerrain(uint sceneid)
		{
			XSingleton<XScene>.singleton.CurrentTerrain = Terrain.activeTerrain;
			SceneTable.RowData sceneData = XSingleton<XSceneMgr>.singleton.GetSceneData(sceneid);
			bool flag = !string.IsNullOrEmpty(sceneData.BlockFilePath);
			if (flag)
			{
				bool flag2 = !XCurrentGrid.grid.LoadFile(sceneData.BlockFilePath);
				if (flag2)
				{
					XSingleton<XDebug>.singleton.AddErrorLog("Load Grid file: Assets\\Resources\\", sceneData.BlockFilePath, " failed!", null, null, null);
				}
			}
			else
			{
				XSingleton<XDebug>.singleton.AddErrorLog("Null path of Grid file for sceneid ", sceneid.ToString(), null, null, null, null);
			}
		}

		protected virtual void InstallCamera()
		{
			XSingleton<XComponentMgr>.singleton.CreateComponent(XSingleton<XScene>.singleton.GameCamera, XCameraActionComponent.uuID);
			XSingleton<XComponentMgr>.singleton.CreateComponent(XSingleton<XScene>.singleton.GameCamera, XCameraCollisonComponent.uuID);
			XSingleton<XComponentMgr>.singleton.CreateComponent(XSingleton<XScene>.singleton.GameCamera, XCameraShakeComponent.uuID);
			XSingleton<XScene>.singleton.GameCamera.Target = XSingleton<XEntityMgr>.singleton.Player;
		}

		public override void OnEnterScene(uint sceneid, bool transfer)
		{
			base.OnEnterScene(sceneid, transfer);
			XSingleton<XAttributeMgr>.singleton.ResetPlayerData();
			XSingleton<XLevelStatistics>.singleton.OnEnterScene(sceneid);
			this.InitTerrain(sceneid);
			this.InstallCamera();
			XSingleton<UIManager>.singleton.OnEnterScene();
			XSingleton<XGameUI>.singleton.LoadConcreteUI(this._eStage);
			XSingleton<XPostEffectMgr>.singleton.OnEnterScene(sceneid);
			XSingleton<XSceneMgr>.singleton.PlaceDynamicScene(sceneid);
			XSingleton<XLevelAIMgr>.singleton.InitAIData();
		}

		public override void OnLeaveScene(bool transfer)
		{
			XSingleton<XPostEffectMgr>.singleton.OnLeaveScene();
			XSingleton<XScene>.singleton.CurrentTerrain = null;
			XSingleton<XGame>.singleton.Doc.OnLeaveScene();
			XSingleton<X3DAvatarMgr>.singleton.Clean(transfer);
			base.OnLeaveScene(transfer);
		}
	}
}