示例#1
0
        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;
            }
        }
示例#2
0
        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);
        }
示例#3
0
        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", ""));
                    }
                }
            }
        }
示例#4
0
        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;
            }
        }