/// <summary> /// Actually performs the stage loading. /// </summary> /// <param name="resourceFactory"></param> /// <param name="stageType"></param> private void LoadStage(IGameResourceFactory resourceFactory, Type stageType, object param = null) { if (this.ActiveGameStage != null) { this.ActiveGameStage.Exit(() => { this.ActiveGameStage = Activator.CreateInstance(stageType) as GameStage; this.ActiveGameStage.GameStageManager = this; this.ActiveGameStage.GameResourceFactory = resourceFactory; this.ActiveGameStage.Load(param); FirstUpdate = true; }); } else { this.ActiveGameStage = Activator.CreateInstance(stageType) as GameStage; this.ActiveGameStage.GameStageManager = this; this.ActiveGameStage.GameResourceFactory = resourceFactory; this.ActiveGameStage.Load(param); FirstUpdate = true; } }
/// <summary> /// Invoke when the initial Stage should be loaded. /// </summary> public void Initialize(IGameResourceFactory resourceFactory) { _resourceFactory = resourceFactory; LoadStage(resourceFactory, GameStageRegistry.Default); }