using System; using XMainClient.UI.UICommon; using XUpdater; using XUtliPoolLib; namespace XMainClient { public abstract class XStage { public bool IsEntered { get { return this._entered; } } public EXStage Stage { get { return this._eStage; } } protected EXStage _eStage = EXStage.Null; private bool _entered = false; public XStage(EXStage eStage) { this._eStage = eStage; } public static bool IsConcreteStage(EXStage stage) { return stage == EXStage.Hall || stage == EXStage.World; } public virtual void Play() { } public virtual void OnEnterStage(EXStage eOld) { this._entered = true; XSingleton.singleton.SetBlockUIVisable(false); } public virtual void OnLeaveStage(EXStage eNew) { this._entered = false; XSingleton.singleton.Stop(true); XSingleton.singleton.OnLeaveStage(); XSingleton.singleton.CloseAllUI(); XSingleton.singleton.OnLeaveStage(); XSingleton.singleton.XLuaEngine.luaUIManager.Clear(); XSingleton.singleton.KillTimerAll(); } public virtual bool Initialize() { return true; } public virtual void PreUpdate(float fDeltaT) { XSingleton.singleton.PreUpdate(fDeltaT); } public virtual void Update(float fDeltaT) { XSingleton.singleton.Update(fDeltaT); } public void FixedUpdate() { XSingleton.singleton.FixedUpdate(); } public virtual void PostUpdate(float fDeltaT) { XSingleton.singleton.PostUpdate(fDeltaT); } public static T CreateSpecificStage() where T : new() { return Activator.CreateInstance(); } public virtual void OnEnterScene(uint sceneid, bool transfer) { XSingleton.singleton.CreateComponent(XSingleton.singleton.GameCamera, XCameraMotionComponent.uuID); XSingleton.singleton.OnEnterScene(); } public virtual void OnLeaveScene(bool transfer) { XSingleton.singleton.Clear(); XSingleton.singleton.OnLeaveScene(); XSingleton.singleton.ClearAll(); XSingleton.singleton.OnLeaveScene(); XSingleton.singleton.ClearCommon(); XSingleton.singleton.OnLeaveScene(false); XSingleton.singleton.OnleaveScene(); XSingleton.singleton.OnLeaveScene(); } } }