private void SwitchState(StateTransformer.GameStateType stateType) { switch (stateType) { case StateTransformer.GameStateType.MainMenu: ActiveState = MainMenu.GetInstance(); break; case StateTransformer.GameStateType.GameRunning: ActiveState = GameRunning.GetInstance(game); break; case StateTransformer.GameStateType.GamePaused: ActiveState = GamePaused.GetInstance(); break; case StateTransformer.GameStateType.ChoseLevel: ActiveState = ChoseLevel.GetInstance(); break; case StateTransformer.GameStateType.GameOver: ActiveState = GameOver.GetInstance(); break; } }
public void InitializeGameState() { player = new Player(); player.SetPosition(ChoseLevel.GetInstance().posX, ChoseLevel.GetInstance().posY); player.SetExtent(ChoseLevel.GetInstance().extX, ChoseLevel.GetInstance().extY); SpaceTaxiBus.GetBus().Subscribe(GameEventType.PlayerEvent, player); SpaceTaxiBus.GetBus().Subscribe(GameEventType.PlayerEvent, player); CreateLevel(ChoseLevel.GetInstance().filename); explosionStrides = ImageStride.CreateStrides(8, Path.Combine("Assets", "Images", "Explosion.png")); explosions = new AnimationContainer(5); currentVelocity = new Vec2F(0f, 0f); }
public void UpdateGameLogic() { foreach (var obstacle in currentLevel.obstacles) { var collisionData = CollisionDetection.Aabb(player.Entity.Shape.AsDynamicShape(), obstacle.Shape); if (collisionData.Collision) { if (obstacle.fileName.Equals(GetPlatformName())) { //if collision from below then gameover and explosion if (collisionData.DirectionFactor.Y < 1) { AddExplosion(player.shape.Position.X, player.shape.Position.Y, obstacle.shape.Extent.X + 0.1f, obstacle.shape.Extent.Y + 0.1f); SpaceTaxiBus.GetBus().RegisterEvent( GameEventFactory <object> .CreateGameEventForAllProcessors( GameEventType.GameStateEvent, this, "CHANGE_STATE", "GAME_OVER", "")); } if (currentVelocity.Y < -0.0001f && currentVelocity.Y > -0.0075f) { isOnPlatform = true; currentVelocity.Y = 0; currentVelocity.X = 0; } } else { AddExplosion(player.shape.Position.X, player.shape.Position.Y, obstacle.shape.Extent.X + 0.1f, obstacle.shape.Extent.Y + 0.1f); SpaceTaxiBus.GetBus().RegisterEvent( GameEventFactory <object> .CreateGameEventForAllProcessors( GameEventType.GameStateEvent, this, "CHANGE_STATE", "GAME_OVER", "")); } } else { if (player.shape.Position.Y > 1) { currentVelocity.Y = 0; currentVelocity.X = 0; isOnPlatform = true; GameRunning.instance = null; ChoseLevel.GetInstance().filename = "the-beach.txt"; ChoseLevel.GetInstance().posX = 0.25f; ChoseLevel.GetInstance().posY = 0.162f; SpaceTaxiBus.GetBus().RegisterEvent( GameEventFactory <object> .CreateGameEventForAllProcessors( GameEventType.GameStateEvent, this, "CHANGE_STATE", "GAME_RUNNING", "")); } } } }
public void HandleKeyEvent(string keyValue, string keyAction) { switch (keyAction) { case "KEY_PRESS": switch (keyValue) { case "KEY_UP": if (activeMenuButton == 1) { menuButtons[1] = new Text("Main Menu", new Vec2F(0.35f, 0.1f), new Vec2F(0.4f, 0.4f)); menuButtons[0] = new Text("Continue", new Vec2F(0.35f, 0.2f), new Vec2F(0.5f, 0.4f)); menuButtons[0].SetColor(Color.Red); menuButtons[1].SetColor(Color.DarkRed); activeMenuButton = 0; menuButtons[0].RenderText(); menuButtons[1].RenderText(); } break; case "KEY_DOWN": if (activeMenuButton == 0) { menuButtons[0] = new Text("Continue", new Vec2F(0.35f, 0.2f), new Vec2F(0.4f, 0.4f)); menuButtons[1] = new Text("Main Menu", new Vec2F(0.35f, 0.1f), new Vec2F(0.5f, 0.4f)); menuButtons[0].SetColor(Color.DarkRed); menuButtons[1].SetColor(Color.Red); activeMenuButton = 1; menuButtons[0].RenderText(); menuButtons[1].RenderText(); } break; case "KEY_ENTER": switch (activeMenuButton) { case 0: // continue selected SpaceTaxiBus.GetBus().RegisterEvent( GameEventFactory <object> .CreateGameEventForAllProcessors( GameEventType.GameStateEvent, this, "CHANGE_STATE", "GAME_RUNNING", "continue")); break; case 1: // back to main menu selected ChoseLevel.GetInstance().filename = "short-n-sweet.txt"; ChoseLevel.GetInstance().posX = 0.45f; ChoseLevel.GetInstance().posY = 0.075f; ChoseLevel.GetInstance().extX = 0.1f; ChoseLevel.GetInstance().extY = 0.1f; SpaceTaxiBus.GetBus().RegisterEvent( GameEventFactory <object> .CreateGameEventForAllProcessors( GameEventType.GameStateEvent, this, "CHANGE_STATE", "MAIN_MENU", "")); break; } break; } break; case "KEY_RELEASE": break; } }