示例#1
0
        public void HandleKeyEvent(string keyValue, string keyAction)
        {
            switch (keyAction)
            {
            case "KEY_PRESS":
                switch (keyValue)
                {
                case "KEY_ESCAPE":
                    eventBus.RegisterEvent(
                        GameEventFactory <object> .CreateGameEventForAllProcessors(
                            GameEventType.WindowEvent, this, "CLOSE_WINDOW", "", ""));
                    break;

                case "KEY_P":
                    eventBus.RegisterEvent(GameEventFactory <object> .CreateGameEventForAllProcessors(
                                               GameEventType.GameStateEvent,
                                               this,
                                               "CHANGE_STATE",
                                               "GAME_RUNNING", ""));
                    break;
                }
                break;

            case "KEY_RELEASE":
                break;
            }
        }
示例#2
0
        public void KeyPress(string key)
        {
            switch (key)
            {
            case "KEY_ESCAPE":
                eventBus.RegisterEvent(
                    GameEventFactory <object> .CreateGameEventForAllProcessors(
                        GameEventType.WindowEvent, this, "CLOSE_WINDOW", "", ""));
                break;

            case "KEY_SPACE":
                playerShots.AddDynamicEntity(
                    new DynamicShape(player.Entity.Shape.Position + new Vec2F(0.046f, 0.09f),
                                     new Vec2F(0.008f, 0.027f), new Vec2F(0.0f, 0.01f)),
                    shotStride);
                break;

            case "KEY_RIGHT":
                player.MoveRight();
                break;

            case "KEY_LEFT":
                player.MoveLeft();
                break;
            }
        }
示例#3
0
    private void KeyPress(string key)
    {
        switch (key)
        {
        case "KEY_ESCAPE":
            eventBus.RegisterEvent(
                GameEventFactory <object> .CreateGameEventForAllProcessors(
                    GameEventType.WindowEvent, this, "CLOSE_WINDOW", "", ""));

            break;

        case "KEY_LEFT":
            eventBus.RegisterEvent(
                GameEventFactory <object> .CreateGameEventForAllProcessors(
                    GameEventType.PlayerEvent, this.player, "MOVE_LEFT", "", ""));
            break;

        case "KEY_RIGHT":
            eventBus.RegisterEvent(
                GameEventFactory <object> .CreateGameEventForAllProcessors(
                    GameEventType.PlayerEvent, this.player, "MOVE_RIGHT", "", ""));
            break;

        case "KEY_SPACE":
            eventBus.RegisterEvent(
                GameEventFactory <object> .CreateGameEventForAllProcessors(
                    GameEventType.PlayerEvent, this.player, "SHOOT", "", ""));
            break;

        default:
            break;
        }
    }
示例#4
0
    public void KeyPress(string key)
    {
        switch (key)
        {
        case "KEY_ESCAPE":
            eventBus.RegisterEvent(
                GameEventFactory <object> .CreateGameEventForAllProcessors(
                    GameEventType.WindowEvent, this, "CLOSE_WINDOW", "", ""));
            break;

        case "KEY_A":
            KEY_A = true;
            player.direction(new Vec2F(-0.01f, 0.0f));
            break;

        case "KEY_D":
            KEY_D = true;
            player.direction(new Vec2F(0.01f, 0.0f));
            break;

        case "KEY_SPACE":
            player.shot();
            break;
        }
    }
示例#5
0
        private void KeyPress(string key)
        {
            switch (key)
            {
            case "KEY_ESCAPE":
                eventBus.RegisterEvent(
                    GameEventFactory <object> .CreateGameEventForAllProcessors(
                        GameEventType.WindowEvent, this, "CLOSE_WINDOW", "", ""));
                break;

            case "KEY_A":
                eventBus.RegisterEvent(
                    GameEventFactory <object> .CreateGameEventForSpecificProcessor(
                        GameEventType.PlayerEvent, this, player, "move left", "", ""));
                break;

            case "KEY_D":
                eventBus.RegisterEvent(
                    GameEventFactory <object> .CreateGameEventForSpecificProcessor(
                        GameEventType.PlayerEvent, this, player, "move right", "", ""));
                break;

            case "KEY_SPACE":
                player.CreateShot();
                break;
            }
        }
示例#6
0
        /// <summary>
        /// Collision check for Obstacle objects
        /// </summary>
        private void ObstacleCollision()
        {
            var playerShape = player.Shape.AsDynamicShape();

            foreach (Obstacle obstacle in obstacles)
            {
                var collisionData = CollisionDetection.Aabb(playerShape, obstacle.Shape);
                if (collisionData.Collision)
                {
                    spaceTaxibus.RegisterEvent(
                        GameEventFactory <object> .CreateGameEventForAllProcessors(
                            GameEventType.GameStateEvent, this, "CHANGE_STATE", "GAME_OVER", ""));
                }
            }
        }
示例#7
0
        private void RegisterEvent(object sender, KeyboardKeyEventArgs e)
        {
            var keyAction = (e.Keyboard.IsKeyDown(e.Key)) ? "KEY_PRESS" : "KEY_RELEASE";
            var newEvent  = GameEventFactory <object> .CreateGameEventForAllProcessors(
                GameEventType.InputEvent, this, Input.KeyTransformer.GetKeyString(e.Key), keyAction, "");

            eventBus.RegisterEvent(newEvent);
        }
        public void KeyPress(string key)
        {
            switch (key)
            {
            case "KEY_ESCAPE":
                eventBus.RegisterEvent(
                    GameEventFactory <object> .CreateGameEventForAllProcessors(
                        GameEventType.WindowEvent, this, "CLOSE_WINDOW", "", ""));
                break;

            case "KEY_A":
                if (!EntityOutOfBounds(player.Entity, "EDGE_LEFT"))
                {
                    player.Entity.Shape.MoveX(-player.defaultSpeed);
                }
                break;

            case "KEY_D":
                if (!EntityOutOfBounds(player.Entity, "EDGE_RIGHT"))
                {
                    player.Entity.Shape.MoveX(player.defaultSpeed);
                }

                break;

            /*
             * case "KEY_W":
             *  if (!EntityOutOfBounds(player.Entity, "EDGE_TOP")) {
             *      player.Entity.Shape.MoveY(0.010f);
             *  }
             *
             *  break;
             *
             * case "KEY_S":
             *  if (!EntityOutOfBounds(player.Entity, "EDGE_BOTTOM")) {
             *      player.Entity.Shape.MoveY(-0.010f);
             *  }
             *
             *  break;
             */


            case "KEY_SPACE":

                DynamicShape shape = new DynamicShape(new Vec2F(
                                                          player.Entity.Shape.Position.X + (player.Entity.Shape.Extent.X / 2.0f),
                                                          player.Entity.Shape.Position.Y + player.Entity.Shape.Extent.Y),
                                                      new Vec2F(0.008f, 0.027f), new Vec2F(0.0f, 0.01f));

                playerShots.AddDynamicEntity(
                    shape,
                    imageShot);


                break;
            }
        }
示例#9
0
        public void KeyPress(string key)
        {
            switch (key)
            {
            case "KEY_ESCAPE":
                eventBus.RegisterEvent(
                    GameEventFactory <object> .CreateGameEventForAllProcessors(
                        GameEventType.WindowEvent, this, "CLOSE_WINDOW", "KEY_PRESS", ""));
                break;

            case "KEY_SPACE":
                eventBus.RegisterEvent(
                    GameEventFactory <object> .CreateGameEventForAllProcessors(
                        GameEventType.PlayerEvent, this, "SHOOT", "KEY_PRESS", ""));
                break;

            case "KEY_UP":
                eventBus.RegisterEvent(
                    GameEventFactory <object> .CreateGameEventForAllProcessors(
                        GameEventType.PlayerEvent, this, "KEY_UP", "KEY_PRESS", ""));
                break;

            case "KEY_DOWN":
                eventBus.RegisterEvent(
                    GameEventFactory <object> .CreateGameEventForAllProcessors(
                        GameEventType.PlayerEvent, this, "KEY_DOWN", "KEY_PRESS", ""));
                break;

            case "KEY_LEFT":
                eventBus.RegisterEvent(
                    GameEventFactory <object> .CreateGameEventForAllProcessors(
                        GameEventType.PlayerEvent, this, "KEY_LEFT", "KEY_PRESS", ""));
                break;

            case "KEY_RIGHT":
                eventBus.RegisterEvent(
                    GameEventFactory <object> .CreateGameEventForAllProcessors(
                        GameEventType.PlayerEvent, this, "KEY_RIGHT", "KEY_PRESS", ""));
                break;
            }

            // choose a fittingly small number
        }
示例#10
0
        public void SendEvent(GameEventBus eventBus, IGameEventProcessor to, int intValue)
        {
            this.Value = intValue;
            var e = new GameEvent {
                EventType = GameEventType.GraphicsEvent,
                From      = this,
                To        = to,
                IntArg1   = intValue
            };

            eventBus.RegisterEvent(e);
        }
示例#11
0
        public void KeyPress(string key)
        {
            switch (key)
            {
            case "KEY_ESCAPE":
                win.CloseWindow();
                break;

            case "KEY_F12":
                Console.WriteLine("Saving screenshot");
                win.SaveScreenShot();
                break;

            case "KEY_UP":
                eventBus.RegisterEvent(
                    GameEventFactory <object> .CreateGameEventForAllProcessors(
                        GameEventType.PlayerEvent, this, "BOOSTER_UPWARDS", "", ""));
                break;

            case "KEY_LEFT":
                eventBus.RegisterEvent(
                    GameEventFactory <object> .CreateGameEventForAllProcessors(
                        GameEventType.PlayerEvent, this, "BOOSTER_TO_LEFT", "", ""));
                break;

            case "KEY_RIGHT":
                eventBus.RegisterEvent(
                    GameEventFactory <object> .CreateGameEventForAllProcessors(
                        GameEventType.PlayerEvent, this, "BOOSTER_TO_RIGHT", "", ""));
                break;
            }
        }
示例#12
0
        /// <summary>
        /// Iterate through its internal list of timed events and for each,
        /// push the event to the registered EventBus if its time has elapsed.
        /// </summary>
        public void ProcessTimedEvents()
        {
            for (int i = 0; i < size; i++)
            {
                var Tuple = events[i];
                var Event = Tuple.timedEvent;

                if (Tuple.occupied && Event.HasExpired())   // boolean short-circuitry!
                {
                    Tuple.occupied = false;
                    eventBus.RegisterEvent(GameEventFactory <object> .CreateGameEventForAllProcessors(
                                               GameEventType.TimedEvent, this, Event.message, Event.parameter1,
                                               Event.parameter2));
                }
            }
        }
示例#13
0
        public void HandleKeyEvent(string keyValue, string keyAction)
        {
            switch (keyAction)
            {
            case "KEY_PRESS":
                switch (keyValue)
                {
                case "KEY_ESCAPE":
                    Game.Win.CloseWindow();
                    break;

                case "KEY_LEFT":
                    if (levelManager.ActiveLevelIndex > 0)
                    {
                        levelManager.ActiveLevelIndex -= 1;
                    }
                    levelTextBox.SetText(levelNames[levelManager.ActiveLevelIndex]);
                    break;

                case "KEY_RIGHT":
                    if (levelManager.ActiveLevelIndex < levelNames.Length - 1)
                    {
                        levelManager.ActiveLevelIndex += 1;
                    }
                    levelTextBox.SetText(levelNames[levelManager.ActiveLevelIndex]);
                    break;

                case "KEY_ENTER":
                    levelManager.BuildLevel(levelInfos[levelManager.ActiveLevelIndex]);
                    eventBus.RegisterEvent(
                        GameEventFactory <object> .CreateGameEventForAllProcessors(
                            GameEventType.GameStateEvent,
                            this,
                            "CHANGE_STATE",
                            "GAME_RUNNING",
                            ""));
                    break;
                }
                break;

            case "KEY_RELEASE":
                switch (keyValue)
                {
                }
                break;
            }
        }
示例#14
0
        public void GameLoop()
        {
            Taxi.Landed = false;
            obstacles.Iterate(CollisionChecker);
            platforms.Iterate(CollisionChecker);
            if (portal.CollidWith())
            {
                _eventBus.RegisterEvent(
                    GameEventFactory <object> .CreateGameEventForAllProcessors(
                        GameEventType.GameStateEvent, this, "NEXT_LEVEL", "", ""));
            }
            if (!Taxi.Landed)
            {
                Taxi.Location = "";
                Taxi.Movement = new TrivialMovement();
            }

            Taxi.Move();
        }
示例#15
0
        public void KeyPress(string key)
        {
            Vec2F movLeft  = new Vec2F(-0.01f, 0.0f);
            Vec2F movRight = new Vec2F(0.01f, 0.0f);
            Vec2F movUp    = new Vec2F(0.00f, 0.01f);
            Vec2F movDown  = new Vec2F(0.00f, -0.01f);

            switch (key)
            {
            case "KEY_ESCAPE":
                eventBus.RegisterEvent(
                    GameEventFactory <object> .CreateGameEventForAllProcessors(
                        GameEventType.WindowEvent, this, "CLOSE_WINDOW", "", ""));
                break;

            case "KEY_LEFT":
                player.Direction(movLeft);
                player.Move();
                break;

            case "KEY_RIGHT":
                player.Direction(movRight);
                player.Move();
                break;

            case "KEY_UP":
                player.Direction(movUp);
                player.Move();
                break;

            case "KEY_DOWN":
                player.Direction(movDown);
                player.Move();
                break;

            case "KEY_SPACE":
                player.CreateShots();
                break;

            default:
                Console.WriteLine("Wrong key try again");
                break;
            }
        }
示例#16
0
//        //Explosions
//        public void AddExplosion(float posX, float posY,
//            float extentX, float extentY) {
//            explosions.AddAnimation(
//                new StationaryShape(posX, posY, extentX, extentY), explosionLength,
//                new ImageStride(explosionLength / 8, explosionStrides));
//        }
//
//        public void AddExplosion(Vec2F pos, Vec2F extent) {
//            AddExplosion(pos.X,pos.Y,extent.X,extent.Y);
//        }



        //Events

        public void KeyPress(string key)
        {
            switch (key)
            {
            case "KEY_ESCAPE":
                eventBus.RegisterEvent(
                    GameEventFactory <object> .CreateGameEventForAllProcessors(
                        GameEventType.WindowEvent, this, "CLOSE_WINDOW", "KEY_PRESS", ""));
                break;

            default:
                state.ActiveState.HandleKeyEvent(key, "KEY_PRESS");
                break;



//                case "KEY_SPACE":
//                    eventBus.RegisterEvent(
//                    GameEventFactory<object>.CreateGameEventForAllProcessors(
//                        GameEventType.PlayerEvent, this, "SHOOT", "KEY_PRESS", ""));
//                    break;
//                case "KEY_UP":
//                    eventBus.RegisterEvent(
//                        GameEventFactory<object>.CreateGameEventForAllProcessors(
//                            GameEventType.PlayerEvent, this, "KEY_UP", "KEY_PRESS", ""));
//                    break;
//                case "KEY_DOWN":
//                    eventBus.RegisterEvent(
//                        GameEventFactory<object>.CreateGameEventForAllProcessors(
//                            GameEventType.PlayerEvent, this, "KEY_DOWN", "KEY_PRESS", ""));
//                    break;
//                case "KEY_LEFT":
//                    eventBus.RegisterEvent(
//                        GameEventFactory<object>.CreateGameEventForAllProcessors(
//                            GameEventType.PlayerEvent, this, "KEY_LEFT", "KEY_PRESS", ""));
//                    break;
//                case "KEY_RIGHT":
//                    eventBus.RegisterEvent(
//                        GameEventFactory<object>.CreateGameEventForAllProcessors(
//                            GameEventType.PlayerEvent, this, "KEY_RIGHT", "KEY_PRESS", ""));
//                    break;
            }
        }
示例#17
0
        public void KeyPress(string key)
        {
            switch (key)
            {
            case "KEY_ESCAPE":
                Console.WriteLine("lel");
                eventBus.RegisterEvent(
                    GameEventFactory <object> .CreateGameEventForAllProcessors(
                        GameEventType.GameStateEvent, this,
                        "CHANGE_STATE",
                        "GAME_PAUSED", ""));
                break;

            case "KEY_F12":
                eventBus.RegisterEvent(
                    GameEventFactory <object> .CreateGameEventForAllProcessors(
                        GameEventType.WindowEvent, this, "SAVE_SCREENSHOT", "", ""));
                break;

            case "KEY_UP":
                eventBus.RegisterEvent(
                    GameEventFactory <object> .CreateGameEventForAllProcessors(
                        GameEventType.PlayerEvent, this, "BOOSTER_UPWARDS", "", ""));
                break;

            case "KEY_LEFT":
                eventBus.RegisterEvent(
                    GameEventFactory <object> .CreateGameEventForAllProcessors(
                        GameEventType.PlayerEvent, this, "BOOSTER_TO_LEFT", "", ""));
                break;

            case "KEY_RIGHT":
                eventBus.RegisterEvent(
                    GameEventFactory <object> .CreateGameEventForAllProcessors(
                        GameEventType.PlayerEvent, this, "BOOSTER_TO_RIGHT", "", ""));
                break;
            }
        }
示例#18
0
文件: Game.cs 项目: kam1986/Exam-2018
        public void GameLoop()
        {
            while (_win.IsRunning())
            {
                Game.ScreenTimer.MeasureTime();

                while (Game.ScreenTimer.ShouldUpdate())
                {
                    _win.PollEvents();
                    _eventBus.ProcessEvents();

                    StateMachine.ActiveState.GameLoop();
                }

                if (Game.ScreenTimer.ShouldRender())
                {
                    _win.Clear();
                    _backGroundImage.RenderEntity();
                    StateMachine.ActiveState.RenderState();

                    _win.SwapBuffers();
                }

                if (Game.ScreenTimer.ShouldReset())
                {
                    // 1 second has passed - display last captured ups and fps from the timer
                    _win.Title = "Space Taxi | UPS: " + Game.ScreenTimer.CapturedUpdates + ", FPS: " +
                                 Game.ScreenTimer.CapturedFrames;
                }

                if (Player.GetInstance().IsExploding)
                {
                    // TODO - needs delay
                    _eventBus.RegisterEvent(
                        GameEventFactory <object> .CreateGameEventForAllProcessors(
                            GameEventType.GameStateEvent, this, "MAIN_MENU", "", ""));
                }
            }
        }
示例#19
0
        public void HandleKeyEvent(string keyValue, string keyAction)
        {
            switch (keyAction)
            {
            case "KEY_PRESS":
                switch (keyValue)
                {
                case "KEY_ESCAPE":
                    Game.Win.CloseWindow();
                    break;

                case "KEY_ENTER":
                    spaceTaxiBus.RegisterEvent(
                        GameEventFactory <object> .CreateGameEventForAllProcessors(
                            GameEventType.GameStateEvent, this, "CHANGE_STATE",
                            "GAME_RUNNING", "INITIALIZE"));
                    break;
                }

                break;
            }
        }
示例#20
0
        public void TestEventBusSimpleCount5Test()
        {
            _eb.RegisterEvent(_eventControl);
            _eb.RegisterEvent(_eventSound);
            _eb.RegisterEvent(_eventControl);
            _eb.RegisterEvent(_eventControl);
            _eb.RegisterEvent(_eventSound);

            _eb.ProcessEvents();

            Assert.That(_simpleEventProcessor.EventCounterControl == 3);
            Assert.That(_simpleEventProcessor.EventCounterSound == 2);
        }
示例#21
0
        public void HandleKeyEvent(string keyValue, string keyAction)
        {
            switch (keyAction)
            {
            case "KEY_PRESS":
                switch (keyValue)
                {
                case "KEY_ESCAPE":
                    Game.Win.CloseWindow();
                    break;

                case "KEY_F12":
                    Console.WriteLine("Saving screenshot");
                    Game.Win.SaveScreenShot();
                    break;

                case "KEY_UP":
                    eventBus.RegisterEvent(
                        GameEventFactory <object> .CreateGameEventForAllProcessors(
                            GameEventType.PlayerEvent, this, "BOOSTER_UPWARDS", "KEY_PRESS", ""));
                    break;

                case "KEY_LEFT":
                    eventBus.RegisterEvent(
                        GameEventFactory <object> .CreateGameEventForAllProcessors(
                            GameEventType.PlayerEvent, this, "BOOSTER_TO_LEFT", "KEY_PRESS", ""));
                    break;

                case "KEY_RIGHT":
                    eventBus.RegisterEvent(
                        GameEventFactory <object> .CreateGameEventForAllProcessors(
                            GameEventType.PlayerEvent, this, "BOOSTER_TO_RIGHT", "KEY_PRESS", ""));
                    break;

                case "KEY_P":
                    levelManager.ActiveLevel.PauseLevel();
                    eventBus.RegisterEvent(
                        GameEventFactory <object> .CreateGameEventForAllProcessors(
                            GameEventType.GameStateEvent,
                            this,
                            "CHANGE_STATE",
                            "GAME_PAUSED",
                            "INITIALIZE"));
                    break;
                }
                break;

            case "KEY_RELEASE":
                switch (keyValue)
                {
                case "KEY_LEFT":
                    eventBus.RegisterEvent(
                        GameEventFactory <object> .CreateGameEventForAllProcessors(
                            GameEventType.PlayerEvent,
                            this, "STOP_ACCELERATE_LEFT",
                            "KEY_RELEASE",
                            ""));
                    break;

                case "KEY_RIGHT":
                    eventBus.RegisterEvent(
                        GameEventFactory <object> .CreateGameEventForAllProcessors(
                            GameEventType.PlayerEvent,
                            this,
                            "STOP_ACCELERATE_RIGHT",
                            "KEY_RELEASE",
                            ""));
                    break;

                case "KEY_UP":
                    eventBus.RegisterEvent(
                        GameEventFactory <object> .CreateGameEventForAllProcessors(
                            GameEventType.PlayerEvent,
                            this,
                            "STOP_ACCELERATE_UP",
                            "KEY_RELEASE",
                            ""));
                    break;
                }
                break;
            }
        }