void Start() { instance = this; }
private void InnerPrepareNextScene(ISceneBase caller, ISceneBase nextScene, Dictionary <string, object> param, Dictionary <string, object> previousParam, bool useStack, ResourceManager resourceManager) { this.nextScene = nextScene; nextScene.Sound = Sound; nextScene.SceneManager = this; nextScene.GameHost = GameHost; previousSceneResourceUsing = false; if (resourceManager != null) { nextScene.ResourceManager = resourceManager; } else { if (String.IsNullOrEmpty(nextScene.SpriteDir)) { if (caller != null) { nextScene.ResourceManager = caller.ResourceManager; previousSceneResourceUsing = true; } else { nextScene.ResourceManager = new ResourceManager(); } } else { nextScene.ResourceManager = new ResourceManager(new Tuple <ResourceManager, bool>[] { new Tuple <ResourceManager, bool>(new SpriteResourceManager(device, nextScene.SpriteDir), true), new Tuple <ResourceManager, bool>(caller.ResourceManager, false) }); previousSceneResourceUsing = true; } } nextScene.Param = param ?? new Dictionary <string, object>(); nextScene.PreviousParam = globalPool.ContainsKey(nextScene.GetType()) ? globalPool[nextScene.GetType()] : new Dictionary <string, object>(); if (previousParam != null && caller != null) { if (globalPool.ContainsKey(caller.GetType())) { globalPool[caller.GetType()] = previousParam; } else { globalPool.Add(caller.GetType(), previousParam); } } if (useStack) { nextScene.IsInSceneStack = true; sceneStack.Push(CurrentScene); } else { previousScene = CurrentScene; } CurrentScene = null; lastTime = Environment.TickCount; loadingThread = ThreadManager.Instance.GetThread(() => { loadResult = nextScene.Load(); }); loadingThread.Start(); if (LoadingScene != null) { LoadingScene.EnterLoading(); } if (EnterLoading != null) { EnterLoading.Invoke(this, EventArgs.Empty); } }