/// <summary> /// Allows the game to run logic such as updating the world, /// checking for collisions, gathering input, and playing audio. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> protected override void Update(GameTime gameTime) { if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)) { Exit(); } AGameState state = gameStates.Peek(); state.Update(gameTime); Globals.Camera.Update(gameTime); AGameState newState = state.NewState; if (state.IsFinished) { gameStates.Pop(); } if (newState != null) { state.NewState = null; gameStates.Push(newState); } if (gameStates.Count == 0) { Exit(); // check again after states change } base.Update(gameTime); }
public void NewState(GS nextState) { currentState?.End(); isStateInit = false; currentState = statesDic[nextState]; #if UNITY_EDITOR state = nextState; #endif DomainEvents.Raise <OnGameStateChange>(new OnGameStateChange(nextState)); }
public override void OnInspectorGUI() { base.OnInspectorGUI(); AGameState script = target as AGameState; LoadingState loading = script.GetComponent <LoadingState>(); if (loading != null && script != null && script != loading && !(script is ExitState)) { string[] panels = FFUtils.BitMaskToUiScenes(loading.panelsToLoad); if (panels.Length > 0) { GUI.changed = false; script.panelsToShow = EditorGUILayout.MaskField("Panels to show", script.panelsToShow, panels); if (GUI.changed) { EditorUtility.SetDirty(script); } } } }