private void continueButton_Click(object sender, EventArgs e)
        {
            if (Highscore.IsNewHighscore(CurrentScore))
            {
                if (String.IsNullOrEmpty(playerNameTextBox.Text))
                {
                    // TODO: Inform user
                    return;
                }

                Highscore.Add(playerNameTextBox.Text, CurrentScore);
            }

            eventManager.Queue(GameStateChangedEvent.To(GameState.Highscore));
        }
Пример #2
0
        public Application()
        {
            Game = new GameLogic(1024, 768, resourceManager);

            Views = new List <IGameView>();
            Views.Add(new PlayerView(Game));
            Views.Add(new AiView(Game));

            resourceManager.AddLoader(new DummyLoader());
#if DEBUG
            resourceManager.AddWiper(new DebugWiper());
#endif
            resourceManager.AddWiper(new FileUpdater());

            Game.EventManager.Queue(GameStateChangedEvent.To(GameState.StartUp));
            Game.EventManager.Queue(GameStateChangedEvent.To(GameState.Menu));

            registerGameEventListeners();
        }
Пример #3
0
        public void OnKeyUp(object sender, KeyEventArgs e)
        {
            e.Handled = true;

            switch (e.KeyCode)
            {
            case Keys.P:
                goto case Keys.Pause;

            case Keys.Pause:
                if (game.IsRunning || game.State == GameState.Paused)
                {
                    eventManager.Queue(GameStateChangedEvent.To(GameState.Paused));
                }
                break;

            case Keys.Escape:
                eventManager.Queue(GameStateChangedEvent.To(GameState.Menu));
                break;

            // Debug Keys
            case Keys.F9:
                eventManager.Trigger(new DebugEvent(DebugEvent.DECREASE_SPEED));
                break;

            case Keys.F10:
                eventManager.Trigger(new DebugEvent(DebugEvent.SINGLE_STEP));
                break;

            case Keys.F11:
                eventManager.Trigger(new DebugEvent(DebugEvent.INCREASE_SPEED));
                break;

            case Keys.F12:
                eventManager.Trigger(new DebugEvent(DebugEvent.RESET_SPEED));
                break;

            default:
                e.Handled = false;
                break;
            }
        }
Пример #4
0
        private void changeState(GameState newState)
        {
            GameState oldState = State;

            this.State = newState;

            switch (newState)
            {
            case GameState.StartUp:
                loadResources();
                break;

            case GameState.Menu:
                if (oldState == GameState.Menu)
                {
                    State = GameState.Running;
                    EventManager.Queue(GameStateChangedEvent.To(GameState.Running));
                }
                break;

            case GameState.Loading:
                reset();
                initialize();

                EventManager.Queue(GameStateChangedEvent.To(GameState.Running));
                break;

            case GameState.Running:
                break;

            case GameState.Paused:
                if (oldState == GameState.Paused)
                {
                    State = GameState.Running;
                    EventManager.Queue(GameStateChangedEvent.To(GameState.Running));
                }
                break;
            }
        }
Пример #5
0
 private void QuitButton_Click(object sender, EventArgs e)
 {
     eventManager.Queue(GameStateChangedEvent.To(GameState.Quit));
 }
Пример #6
0
 private void CreditsButton_Click(object sender, EventArgs e)
 {
     eventManager.Queue(GameStateChangedEvent.To(GameState.Credits));
 }
Пример #7
0
 private void HighscoreButton_Click(object sender, EventArgs e)
 {
     eventManager.Queue(GameStateChangedEvent.To(GameState.Highscore));
 }
Пример #8
0
 private void NewGameButton_Click(object sender, EventArgs e)
 {
     eventManager.Queue(GameStateChangedEvent.To(GameState.Loading));
 }
Пример #9
0
        public void OnEvent(Event evt)
        {
            switch (evt.Type)
            {
            case NewEntityEvent.NEW_ENTITY: {
                var    newEntityEvent = (NewEntityEvent)evt;
                Entity entity         = Game.World.Entities[newEntityEvent.EntityID];
                if (entity.Type.StartsWith("alien_"))
                {
                    OnAttach(entity);
                }
                else if (entity.Type.Equals("mystery_ship"))
                {
                    mysteryShip = entity;
                }
                break;
            }

            case DestroyEntityEvent.DESTROY_ENTITY: {
                var destroyEntityEvent = (DestroyEntityEvent)evt;

                Entity entity = Game.World.Entities[destroyEntityEvent.EntityID];
                if (entity.Type.StartsWith("alien_"))
                {
                    OnDetach(entity);
                }
                else if (entity.Type.Equals("mystery_ship"))
                {
                    mysteryShip = null;
                }

                if (shooter != null && entity.ID == shooter.ID)
                {
                    shooter = null;
                }
                break;
            }

            case GameStateChangedEvent.GAME_STATE_CHANGED: {
                var stateChangedEvent = (GameStateChangedEvent)evt;
                onGameStateChanged(stateChangedEvent.NewState);
                break;
            }

            case AiUpdateMovementEvent.AT_BORDER: {
                var aiMovementUpdateEvent = (AiUpdateMovementEvent)evt;

                Vector2D borderData = aiMovementUpdateEvent.BorderData;

                if (borderData.Y < 0)
                {
                    // Victory for the Invaders!
                    EventManager.Trigger(GameStateChangedEvent.To(GameState.GameOver));
                }

                currentDirection.X = -borderData.X;
                currentDirection.Y = -1;

                movementDirectionChanged = true;
                break;
            }
            }
        }