예제 #1
0
        protected override void Update(GameTime gameTime)
        {
            var keyboardState  = KeyboardExtended.GetState();
            var mouseState     = MouseExtended.GetState();
            var elapsedSeconds = gameTime.GetElapsedSeconds();

            if (keyboardState.IsKeyDown(Keys.Escape))
            {
                Exit();
            }

            if (keyboardState.WasKeyJustDown(Keys.Space))
            {
                _tweener.CancelAll();
            }

            if (keyboardState.WasKeyJustDown(Keys.Tab))
            {
                _tweener.CancelAndCompleteAll();
            }

            if (mouseState.IsButtonDown(MouseButton.Left))
            {
                _tweener.TweenTo(this, a => a.Linear, mouseState.Position.ToVector2(), 1.0f)
                .Easing(EasingFunctions.QuadraticOut);
            }

            _tweener.Update(elapsedSeconds);

            base.Update(gameTime);
        }
예제 #2
0
        public override void Process(GameTime gameTime, int entityId)
        {
            var keyboardState = KeyboardExtended.GetState();
            var body          = _bodyMapper.Get(entityId);
            var player        = _playerMapper.Get(entityId);

            if (keyboardState.IsKeyDown(Keys.Right) && player.Name == "mikze")
            {
                body.ApplyForceToCenter(new System.Numerics.Vector2(10, 0));
            }
            if (keyboardState.IsKeyDown(Keys.Left) && player.Name == "mikze")
            {
                body.ApplyForceToCenter(new System.Numerics.Vector2(-10, 0));
            }
            if (keyboardState.IsKeyDown(Keys.Up) && player.Name == "mikze")
            {
                body.ApplyLinearImpulseToCenter(new System.Numerics.Vector2(0, -0.1f));
            }

            if (keyboardState.IsKeyDown(Keys.D) && player.Name == "mikze2")
            {
                body.ApplyForceToCenter(new System.Numerics.Vector2(10, 0));
            }
            if (keyboardState.IsKeyDown(Keys.A) && player.Name == "mikze2")
            {
                body.ApplyForceToCenter(new System.Numerics.Vector2(-10, 0));
            }
            if (keyboardState.IsKeyDown(Keys.W) && player.Name == "mikze2")
            {
                body.ApplyLinearImpulseToCenter(new System.Numerics.Vector2(0, -0.1f));
            }
        }
예제 #3
0
 public override void Update(Microsoft.Xna.Framework.GameTime gameTime)
 {
     if (KeyboardExtended.GetState().WasKeyJustDown(Keys.Escape))
     {
         ScreenManager.LoadScreen(new MainMenuScreen(Game));
     }
 }
예제 #4
0
 public override void Update(GameTime gameTime)
 {
     base.Update(gameTime);
     if (KeyboardExtended.GetState().WasKeyJustDown(Microsoft.Xna.Framework.Input.Keys.Escape))
     {
         ScreenManager.LoadScreen(new MainMenuScreen(Game), new FadeTransition(GraphicsDevice, Color.Black, 1.3f));
     }
 }
예제 #5
0
파일: Game1.cs 프로젝트: Keatsotic/Animus
        public void UpdateMenu()
        {
            var keyboardState = KeyboardExtended.GetState();

            if (keyboardState.WasKeyJustUp(Keys.Up))
            {
                loadScreen.menuIndex--;
            }
            else if (keyboardState.WasKeyJustUp(Keys.Down))
            {
                loadScreen.menuIndex++;
            }

            if (keyboardState.WasKeyJustUp(Keys.Enter))

            {
                switch (levelNumber)
                {
                case "StartScreen":
                    levelNumber          = "Load";
                    loadScreen.menuIndex = 1;
                    sceneCreator.UnloadObjects(true, _objects);
                    sceneCreator.LevelLoader(Content, graphics.GraphicsDevice, _objects, levelNumber, checkPoint, false);
                    break;

                case "Load":
                    loadMenu.ChooseSaveFIle(_objects, sceneCreator, Content, GraphicsDevice, loadScreen);

                    break;

                case "GameOver":
                    levelNumber = previousLevel;
                    sceneCreator.UnloadObjects(true, _objects);
                    inMenu = false;
                    sceneCreator.LevelLoader(Content, graphics.GraphicsDevice, _objects, levelNumber, checkPoint, true);
                    break;

                default:
                    inMenu           = false;
                    PauseMenu.active = false;
                    break;
                }
                if (keyboardState.IsKeyDown(Keys.RightShift) &&
                    keyboardState.IsKeyDown(Keys.V) &&
                    keyboardState.IsKeyDown(Keys.Space))
                {
                    levelNumber         = "StartScreen";
                    checkPoint          = "1";
                    inMenu              = true;
                    Entity.applyGravity = true;
                    sceneCreator.UnloadObjects(true, _objects);
                    sceneCreator.LevelLoader(Content, graphics.GraphicsDevice, _objects, levelNumber, checkPoint, false);
                }
            }
        }
예제 #6
0
        public override void Update(GameTime time)
        {
            var keyState = KeyboardExtended.GetState();

            if (keyState.WasKeyJustDown(Keys.Escape))
            {
                GameContext.Hud.Default();
                return;
            }
            base.Update(time);
        }
예제 #7
0
        public override void Update(GameTime gameTime)
        {
            var keyboardState = KeyboardExtended.GetState();

            if (keyboardState.WasKeyJustDown(Keys.Escape))
            {
                ScreenManager.LoadScreen(new TitleScreen(Game), new ExpandTransition(GraphicsDevice, Color.Black));
            }

            entityManager.Update(gameTime);
            collisionComponent.Update(gameTime);
        }
예제 #8
0
파일: LobbyScene.cs 프로젝트: mikze/Heads
        internal override void UpdateScene(GameTime gameTime)
        {
            var keyboardState = KeyboardExtended.GetState();

            if (keyboardState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Enter))
            {
                ProtoHelper.WriteToChat(chatText.Text);
                var t = text.Get <Text>();
                t.text = $"{ProtoHelper.nickname}: {chatText.Text}";
            }

            _guiSystem.Update(gameTime);
        }
예제 #9
0
        public override void Update(GameTime gameTime)
        {
            var kbd = KeyboardExtended.GetState();

            Parallel.ForEach(_kbdmap, (m) =>
            {
                if (kbd.WasKeyJustDown(m.Key))
                {
                    _l.Debug(String.Format("{0}: {1}", _topic, m.Value));
                    _commander.Command(_topic, m.Value);
                }
            });
        }
예제 #10
0
        internal override void UpdateScene(GameTime gameTime)
        {
            if (IsLoaded)
            {
                if (b2DWorld != null)
                {
                    const float TimeStep           = 1.0f / 60;
                    const int   VelocityIterations = 6;
                    const int   PositionIterations = 2;
                    b2DWorld.Step(TimeStep, VelocityIterations, PositionIterations);
                }

                var keyboardState = KeyboardExtended.GetState();

                var input = Input.none;

                if (keyboardState.IsKeyDown(Keys.Right))
                {
                    input |= Input.right;
                }
                if (keyboardState.IsKeyDown(Keys.Left))
                {
                    input |= Input.left;
                }
                if (keyboardState.IsKeyDown(Keys.Up))
                {
                    input |= Input.up;
                }
                if (keyboardState.IsKeyDown(Keys.Space))
                {
                    input |= Input.kick;
                }
                if (keyboardState.IsKeyUp(Keys.Space))
                {
                    input |= Input.kickUp;
                }
                if (keyboardState.IsKeyDown(Keys.Escape))
                {
                    world.Dispose();
                    ProtoHelper.WriteToChat("!disconnect");
                    _sceneHandler.ChangeScene(new MenuScene());
                }
                if (Enemy)
                {
                    input |= Input.enemy;
                }

                inputClient.Send((byte)input, inputEndPoint);
            }
        }
예제 #11
0
        public override void Process(GameTime gameTime, int entityId)
        {
            var enemy         = enemyMapper.Get(entityId);
            var sprite        = spriteMapper.Get(entityId);
            var transform     = transformMapper.Get(entityId);
            var body          = bodyMapper.Get(entityId);
            var keyboardState = KeyboardExtended.GetState();

            //if (!player.IsAttacking)
            //{
            //    if (body.Velocity.X > 0 || body.Velocity.X < 0)
            //        player.State = State.Walking;

            //    //if (body.Velocity.Y < 0)
            //    //    player.State = State.Jumping;

            //    //if (body.Velocity.Y > 0)
            //    //    player.State = State.Falling;

            //    if (body.Velocity.EqualsWithTolerence(Vector2.Zero, 5))
            //        player.State = State.Idle;
            //}

            if (enemy.OnCombat && !MusicPlayer.GotBeat())
            {
                enemy.State = State.Combat;
            }
            switch (enemy.State)
            {
            case State.Walking:
                sprite.Play("walk");
                sprite.Effect = enemy.Facing == Facing.Right ? SpriteEffects.None : SpriteEffects.FlipHorizontally;
                break;

            case State.Idle:
                sprite.Play("idle");
                sprite.Effect = enemy.Facing == Facing.Right ? SpriteEffects.None : SpriteEffects.FlipHorizontally;
                break;

            case State.Combat:
                sprite.Play("combat", () => { enemy.State = State.Idle; });
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            enemy.ImmuneTimer = Math.Max(enemy.ImmuneTimer - (float)gameTime.ElapsedGameTime.TotalSeconds, 0);
            //    body.Velocity.X *= 0.7f;
        }
예제 #12
0
        public override void Update(GameTime gameTime)
        {
            var mouseState    = MouseExtended.GetState();
            var keyboardState = KeyboardExtended.GetState();

            if (keyboardState.WasKeyJustDown(Keys.Escape))
            {
                Game.Exit();
            }

            if (mouseState.LeftButton == ButtonState.Pressed || keyboardState.WasAnyKeyJustDown())
            {
                ScreenManager.LoadScreen(new HippaGameScreen(Game), new FadeTransition(GraphicsDevice, Color.Black, 0.5f));
            }
        }
예제 #13
0
        public override void Update(GameTime gameTime)
        {
            var keyboardState = KeyboardExtended.GetState();

            if (keyboardState.WasKeyJustDown(Keys.Q))
            {
                Game.Exit();
            }

            if (keyboardState.WasKeyJustDown(Keys.Space))
            {
                ScreenManager.LoadScreen(
                    new MainGameScreen(Game),
                    new FadeTransition(GraphicsDevice, Color.Black, 0.5f)
                    );
            }
        }
예제 #14
0
        public override void Update(GameTime gameTime)
        {
            var elapsedSecs   = gameTime.GetElapsedSeconds();
            var keyboardState = KeyboardExtended.GetState();

            if (keyboardState.WasKeyJustDown(Keys.Q))
            {
                ScreenManager.LoadScreen(
                    new TitleScreen(Game),
                    new ExpandTransition(GraphicsDevice, Color.Black)
                    );
            }

            if (keyboardState.WasKeyJustDown(Keys.D))
            {
                if (debug)
                {
                    debug = false;
                }
                else if (!debug)
                {
                    debug = true;
                }
            }

            ball.MoveBall(elapsedSecs, ScreenWidth, ScreenHeight);
            ball.CollisionCheck(aiPaddle);
            ball.CollisionCheck(playerPaddle);

            playerPaddle.MovePaddlePlayer(keyboardState, ScreenHeight);
            aiPaddle.MovePaddleAi(ball, elapsedSecs, 0.85f);

            if (ball.scored == "player")
            {
                playerScore++;
            }
            else if (ball.scored == "ai")
            {
                aiScore++;
            }
            ball.scored = "";

            fpsCounter.Update(gameTime);
            tweener.Update(elapsedSecs);
        }
예제 #15
0
        public override void Update(GameTime gameTime)
        {
            var elapsedSeconds = gameTime.GetElapsedSeconds();
            var mouseState     = MouseExtended.GetState();
            var keyboardState  = KeyboardExtended.GetState();

            if (keyboardState.WasKeyJustDown(Keys.Escape))
            {
                ScreenManager.LoadScreen(new TitleScreen(Game), new ExpandTransition(GraphicsDevice, Color.Black));
            }

            MovePaddlePlayer(mouseState);

            MovePaddleAi(_redPaddle, elapsedSeconds);

            ConstrainPaddle(_bluePaddle);
            ConstrainPaddle(_redPaddle);

            MoveBall(elapsedSeconds);

            if (BallHitPaddle(_ball, _bluePaddle))
            {
                // TODO: Change the angle of the bounce
                //_tweener.TweenTo(_bluePaddle, p => p.Rotation, MathHelper.Pi / 16f, 0.2f)
                //    //.OnSet(v => new Vector2(v.X, _bluePaddle.Position.Y))
                //    .RepeatReverse()
                //    .Easing(EasingFunctions.ExponentialIn);

                _plopSoundEffect.Play(1.0f, _random.NextSingle(0.5f, 1.0f), -1f);
            }

            if (BallHitPaddle(_ball, _redPaddle))
            {
                // TODO: Change the angle of the bounce

                //_tweener.TweenTo(_redPaddle, p => p.Position, _redPaddle.Position + new Vector2(15, 0), 0.2f)
                //    .RepeatReverse()
                //    .Easing(EasingFunctions.ExponentialIn);

                _plopSoundEffect.Play(1f, _random.NextSingle(-1f, 1f), 1f);
            }

            _tweener.Update(elapsedSeconds);
        }
예제 #16
0
        public override void Process(GameTime gameTime, int entityId)
        {
            var keyboardState = KeyboardExtended.GetState();
            var mouseState    = MouseExtended.GetState();

            var moveable = _moveableMapper.Get(entityId);

            if (moveable != null)
            {
                ProcessMovement(gameTime, moveable, keyboardState);
            }

            var zoomable = _zoomableMapper.Get(entityId);

            if (zoomable != null)
            {
                ProcessZoom(gameTime, zoomable, mouseState);
            }
        }
        protected override void Update(GameTime gameTime)
        {
            base.Update(gameTime);
            if (!form.ContainsFocus)
            {
                return;
            }

            HandleViewportSizeChange();

            MouseStateExtended    mouseState    = MouseExtended.GetState();
            KeyboardStateExtended keyboardState = KeyboardExtended.GetState();
            Point   mousePosition = mouseState.Position;
            Vector2 worldPosition = camera.ScreenToWorld(mousePosition.ToVector2());

            TileLayer.TilePositionDetail      tilePositionDetail = myMap.GetTileAtPosition(worldPosition, ActiveLayer);
            CollisionLayer.CellPositionDetail cellPositionDetail = myMap.GetCellAtPosition(worldPosition);
            Tile tile = tilePositionDetail.Tile;

            if (mouseState.IsButtonDown(MouseButton.Right))
            {
                camera.Move(mouseState.DeltaPosition.ToVector2() / camera.Zoom);
            }
            else if (mouseState.DeltaScrollWheelValue != 0)
            {
                camera.Zoom = MathHelper.Clamp(camera.Zoom - mouseState.DeltaScrollWheelValue * 0.001f, camera.MinimumZoom, camera.MaximumZoom);
            }

            if (ActivePaintingTool != null)
            {
                if (ActivePaintingTool.IsValidPosition(myMap, keyboardState, tilePositionDetail, cellPositionDetail))
                {
                    if (mouseState.IsButtonDown(MouseButton.Left))
                    {
                        ActivePaintingTool.Paint(myMap, keyboardState, tilePositionDetail, cellPositionDetail);
                    }
                    else
                    {
                        ActivePaintingTool.Hover(myMap, keyboardState, tilePositionDetail, cellPositionDetail);
                    }
                }
            }
        }
예제 #18
0
        public override void Update(Microsoft.Xna.Framework.GameTime gameTime)
        {
            if (KeyboardExtended.GetState().WasKeyJustDown(Keys.Escape))
            {
                ScreenManager.LoadScreen(new MainMenuScreen(Game));
            }

            CheckForCombat();
            if (enemies.Count < 1)
            {
                if (!isEnding)
                {
                    ScreenManager.LoadScreen(new CutsceneScreen(Game, Scene.Ending), new FadeTransition(GraphicsDevice, Color.Black, 1.2f));
                }
                else
                {
                    ScreenManager.LoadScreen(new CongratulationsScreen(Game), new FadeTransition(GraphicsDevice, Color.Black, 1f));
                }
            }
        }
예제 #19
0
파일: TextBox.cs 프로젝트: Keatsotic/Animus
        public override void Update(List <GameObject> _objects, Map map, GameTime gameTime)
        {
            var keyboardState = KeyboardExtended.GetState();

            if (keyboardState.WasKeyJustUp(Keys.V) && textIterator == textBoxText[itereator].Length)
            {
                itereator += 1;
                if (itereator == textBoxText.Count)
                {
                    isInTextBox  = false;
                    itereator    = 0;
                    textIterator = 0;
                    textCounter  = 0;
                    displayText  = "";
                }
                else
                {
                    textTimer = textTimerMax;
                }
            }

            if (textTimer > 0)
            {
                textTimer--;
            }

            if (isInTextBox)
            {
                for (int i = 0; i < _objects.Count; i++)
                {
                    _objects[i].canMove = false;
                }
                if (textIterator < textBoxText[itereator].Length && textSpeed <= 0)
                {
                    char[] textArray = textBoxText[itereator].ToCharArray();

                    displayText += textArray[textIterator].ToString();

                    if (textArray[textIterator].ToString() != " ")
                    {
                        textBlip.Play();
                    }
                    if (textCounter > 15 && textArray[textIterator].ToString() == " ")
                    {
                        displayText += "\n";
                        textCounter  = 0;
                    }
                    textCounter++;
                    textIterator++;
                    textSpeed = textSpeedTimer;
                }
            }
            else
            {
                for (int i = 0; i < _objects.Count; i++)
                {
                    _objects[i].canMove = true;
                }
            }

            if (textSpeed > 0)
            {
                textSpeed--;
            }

            base.Update(_objects, map, gameTime);
        }
예제 #20
0
        public override void Update(GameTime gameTime)
        {
            var mouseState    = MouseExtended.GetState();
            var keyboardState = KeyboardExtended.GetState();

            var mousePosition = _camera.ScreenToWorld(mouseState.Position.ToVector2()).FromIsometric();

            (int, int)currentTile = mousePosition.MapFromCenterTilePointToTopRightTileIndex(_currentPlaceableUnitConfig?.TileSpan ?? (1, 1));

            // TODO: Introduce state machine :D
            if (keyboardState.IsKeyDown(Keys.D1))
            {
                MakeNewPlacementGuide(new MinerUnitConfig(), currentTile);
            }

            if (keyboardState.IsKeyDown(Keys.D2))
            {
                MakeNewPlacementGuide(new ConveyorBeltUnitConfig(), currentTile);
            }

            if (keyboardState.IsKeyDown(Keys.Escape) && _currentPlaceableEntity != null)
            {
                ClearPlacementGuide();
            }

            if (keyboardState.IsKeyDown(Keys.R) && _currentPlaceableEntity != null && !isRotating)
            {
                isRotating = true;
                var alignable = _currentPlaceableEntity.Get <Alignable>();
                if (alignable != null)
                {
                    alignable.Rotate();
                }
            }
            else if (keyboardState.IsKeyUp(Keys.R))
            {
                isRotating = false;
            }

            var currentTileOccupied = IsCurrentTileOccupied(currentTile);

            if (mouseState.LeftButton == ButtonState.Released && _previousMouseState.LeftButton == ButtonState.Pressed &&
                _currentPlaceableEntity != null && !currentTileOccupied)
            {
                var alignable = _currentPlaceableEntity.Get <Alignable>();
                _entityBuilder.BuildUnit(CreateEntity(), currentTile, _currentPlaceableUnitConfig, alignable.Direction);
            }

            foreach (var entityId in ActiveEntities)
            {
                var placeable    = _placeableMapper.Get(entityId);
                var tilePosition = _tilePositionMapper.Get(entityId);
                var tileBorder   = _tileBorderMapper.Get(entityId);

                if (placeable == null)
                {
                    continue;
                }

                if (tilePosition != null)
                {
                    tilePosition.ChangeTile(currentTile);
                }

                tileBorder.Color = currentTileOccupied ? Color.Red : Color.LimeGreen;
            }

            _previousMouseState = mouseState;
        }
예제 #21
0
        public override void Process(GameTime gameTime, int entityId)
        {
            var player        = _playerMapper.Get(entityId);
            var sprite        = _spriteMapper.Get(entityId);
            var transform     = _transformMapper.Get(entityId);
            var body          = _bodyMapper.Get(entityId);
            var keyboardState = KeyboardExtended.GetState();

            if (player.CanJump)
            {
                if (keyboardState.WasKeyJustUp(Keys.Up))
                {
                    body.Velocity.Y -= 550 + Math.Abs(body.Velocity.X) * 0.4f;
                }

                if (keyboardState.WasKeyJustUp(Keys.Z))
                {
                    body.Velocity.Y -= 550 + Math.Abs(body.Velocity.X) * 0.4f;
                    player.State     = player.State == State.Idle ? State.Punching : State.Kicking;
                }
            }

            if (keyboardState.IsKeyDown(Keys.Right))
            {
                body.Velocity.X += 150;
                player.Facing    = Facing.Right;
            }

            if (keyboardState.IsKeyDown(Keys.Left))
            {
                body.Velocity.X -= 150;
                player.Facing    = Facing.Left;
            }

            if (!player.IsAttacking)
            {
                if (body.Velocity.X > 0 || body.Velocity.X < 0)
                {
                    player.State = State.Walking;
                }

                if (body.Velocity.Y < 0)
                {
                    player.State = State.Jumping;
                }

                if (body.Velocity.Y > 0)
                {
                    player.State = State.Falling;
                }

                if (body.Velocity.EqualsWithTolerence(Vector2.Zero, 5))
                {
                    player.State = State.Idle;
                }
            }

            if (keyboardState.IsKeyDown(Keys.Down))
            {
                player.State = State.Cool;
            }

            switch (player.State)
            {
            case State.Jumping:
                sprite.Play("jump");
                break;

            case State.Walking:
                sprite.Play("walk");
                sprite.Effect = player.Facing == Facing.Right ? SpriteEffects.None : SpriteEffects.FlipHorizontally;
                break;

            case State.Falling:
                sprite.Play("fall");
                break;

            case State.Idle:
                sprite.Play("idle");
                break;

            case State.Kicking:
                sprite.Play("kick", () => player.State = State.Idle);
                break;

            case State.Punching:
                sprite.Play("punch", () => player.State = State.Idle);
                break;

            case State.Cool:
                sprite.Play("cool");
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            body.Velocity.X *= 0.7f;

            // TODO: Can we remove this?
            //transform.Position = body.Position;
        }
예제 #22
0
        private void CheckInput()
        {
            var keyboardState = KeyboardExtended.GetState();

            if (keyboardState.WasKeyJustUp(Keys.Enter))
            {
                if (!Game1.inMenu)
                {
                    //darken screen
                    PauseMenu.pauseScreen.X    = (int)(Camera.position.X - Camera.cameraOffset.X);
                    PauseMenu.pauseScreenRec.Y = (int)(Camera.position.Y - Camera.cameraOffset.Y);
                    PauseMenu.active           = true;
                    Game1.inMenu = true;
                }
            }
            // move top down in overworld
            if (keyboardState.IsKeyDown(Keys.Right))
            {
                MoveRight();
                objectAnimated.Effect = SpriteEffects.None;
                PlayerState           = State.RightWalk;
            }
            else if (keyboardState.IsKeyDown(Keys.Up))
            {
                MoveUp();
                objectAnimated.Effect = SpriteEffects.None;
                PlayerState           = State.UpWalk;
            }
            else if (keyboardState.IsKeyDown(Keys.Down))
            {
                MoveDown();
                objectAnimated.Effect = SpriteEffects.None;
                PlayerState           = State.DownWalk;
            }
            else if (keyboardState.IsKeyDown(Keys.Left))
            {
                MoveLeft();
                PlayerState = State.LeftWalk;
            }

            if (velocity == Vector2.Zero)
            {
                switch (PlayerState)
                {
                case State.DownWalk:
                    PlayerState = State.Down;
                    break;

                case State.RightWalk:
                    PlayerState = State.Right;
                    break;

                case State.LeftWalk:
                    PlayerState = State.Left;
                    break;

                case State.UpWalk:
                    PlayerState = State.Up;
                    break;
                }
            }
        }
예제 #23
0
        public override void Process(GameTime gameTime, int entityId)
        {
            var player        = playerMapper.Get(entityId);
            var sprite        = spriteMapper.Get(entityId);
            var transform     = transformMapper.Get(entityId);
            var body          = bodyMapper.Get(entityId);
            var keyboardState = KeyboardExtended.GetState();
            var health        = healthMapper.Get(entityId);

            if (!player.IsAttacking)
            {
                if (keyboardState.IsKeyDown(Keys.Right))
                {
                    body.Velocity.X += 150;
                    player.Facing    = Facing.Right;
                }

                if (keyboardState.IsKeyDown(Keys.Left))
                {
                    body.Velocity.X -= 150;
                    player.Facing    = Facing.Left;
                }

                if (body.Velocity.X > 0 || body.Velocity.X < 0)
                {
                    player.State = State.Walking;
                }

                //if (body.Velocity.Y < 0)
                //    player.State = State.Jumping;

                //if (body.Velocity.Y > 0)
                //    player.State = State.Falling;

                if (body.Velocity.EqualsWithTolerence(Vector2.Zero, 5))
                {
                    player.State = State.Idle;
                }
            }
            if (keyboardState.IsKeyDown(Keys.C))
            {
                player.State    = State.Guard;
                body.Velocity.X = 0;
            }
            if (Keyboard.GetState().IsKeyDown(Keys.D) && lastKeyboardState.IsKeyUp(Keys.D))
            {
                health.LifePoints--;
            }
            if (MusicPlayer.GotBeat())
            {
                if (Keyboard.GetState().IsKeyDown(Keys.Z) && lastKeyboardState.IsKeyUp(Keys.Z))
                {
                    player.State = State.Combat;
                }
            }
            switch (player.State)
            {
            case State.Walking:
                sprite.Play("walk");
                sprite.Effect = player.Facing == Facing.Right ? SpriteEffects.None : SpriteEffects.FlipHorizontally;
                break;

            case State.Idle:
                sprite.Play("idle");
                break;

            case State.Combat:
                sprite.Play("combat", () => { player.State = State.Idle; });
                break;

            case State.Guard:
                sprite.Play("guard");
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            body.Velocity.X *= 0.7f;

            player.ImmuneTimer = Math.Max(player.ImmuneTimer - (float)gameTime.ElapsedGameTime.TotalSeconds, 0);
            //orthographicCamera.LookAt(transform.Position);

            // TODO: Can we remove this?
            //transform.Position = body.Position;
            lastKeyboardState = Keyboard.GetState();
        }
예제 #24
0
 public static void Update()
 {
     _currentKeyboardState = KeyboardExtended.GetState();
 }
예제 #25
0
        public override void Update(GameTime gameTime)
        {
            dialogLabel.Text = String.Empty;
            if (inDialog < dialogs.Length)
            {
                var dialogSplit   = dialogs[inDialog].Split(':');
                var character     = dialogSplit[0];
                var currentDialog = dialogSplit[1];
                switch (character)
                {
                case "hero":
                    dialogImage.Texture = heroFrame;
                    break;

                case "wizard":
                    dialogImage.Texture = wizardFrame;
                    break;
                }
                charactersElapsed += (float)gameTime.ElapsedGameTime.TotalSeconds;
                if (charactersElapsed > 0.05f)
                {
                    showZKey = false;
                    if (charactersToShow > currentDialog.Length)
                    {
                        showZKey = true;
                        if (KeyboardExtended.GetState().WasKeyJustDown(Keys.Z))
                        {
                            inDialog++; charactersToShow = 0; dialogLabel.Text = String.Empty;
                        }
                    }
                    else
                    {
                        charactersElapsed = 0f;
                        charactersToShow++;
                    }
                }

                for (int i = 0; i < charactersToShow - 1; i++)
                {
                    dialogLabel.Text += currentDialog[i];
                }
            }
            else
            {
                if (scene == Scene.Start)
                {
                    ScreenManager.LoadScreen(new GameplayScreen(Game, false), new FadeTransition(GraphicsDevice, Color.Black));
                }
                else
                {
                    ScreenManager.LoadScreen(new GameplayScreen(Game, true), new FadeTransition(GraphicsDevice, Color.Black));
                }
            }
            if (KeyboardExtended.GetState().WasKeyJustDown(Keys.Escape))
            {
                if (scene == Scene.Start)
                {
                    ScreenManager.LoadScreen(new GameplayScreen(Game, false), new FadeTransition(GraphicsDevice, Color.Black));
                }
                else
                {
                    ScreenManager.LoadScreen(new GameplayScreen(Game, true), new FadeTransition(GraphicsDevice, Color.Black));
                }
            }
            zKeyImage.Visible = showZKey;
        }
예제 #26
0
        private void CheckInput(Map map)
        {
            var keyboardState = KeyboardExtended.GetState();

            if (keyboardState.WasKeyJustUp(Keys.Enter))
            {
                if (!Game1.inMenu)
                {
                    //darken screen
                    PauseMenu.pauseScreen.X    = (int)(Camera.position.X - Camera.cameraOffset.X);
                    PauseMenu.pauseScreenRec.Y = (int)(Camera.position.Y - Camera.cameraOffset.Y);
                    PauseMenu.active           = true;
                    Game1.inMenu = true;
                }
            }

            if (PlayerState != State.Attacking)
            {
                if (keyboardState.WasKeyJustUp(Keys.Down))
                {
                    PlayerState       = State.Ducking;
                    boundingBoxHeight = 16;
                    boundingBoxOffset = new Vector2(17, 15);
                }
                if (keyboardState.WasKeyJustDown(Keys.Down))
                {
                    PlayerState       = State.Idle;
                    boundingBoxHeight = 22;
                    boundingBoxOffset = new Vector2(17, 9);
                }

                //move left right
                if (keyboardState.IsKeyDown(Keys.Left))
                {
                    MoveLeft();
                    objectAnimated.Effect = SpriteEffects.FlipHorizontally;
                }

                if (keyboardState.IsKeyDown(Keys.Right))
                {
                    MoveRight();
                    objectAnimated.Effect = SpriteEffects.None;
                }
            }

            if (!applyGravity)
            {
                // move top down in overworld
                if (keyboardState.IsKeyDown(Keys.Up))
                {
                    MoveUp();
                }
                if (keyboardState.IsKeyDown(Keys.Down))
                {
                    MoveDown();
                }
            }
            else
            {
                //jump and attack in levels
                if (keyboardState.WasKeyJustUp(Keys.Space) && !isJumping)
                {
                    jumpSFX.Play();
                    Jump(map);
                }
                if (keyboardState.WasKeyJustDown(Keys.Space))
                {
                    JumpCancel(map);
                }
                if (keyboardState.WasKeyJustUp(Keys.V) && PlayerState != State.Attacking)
                {
                    //if (keyboardState.IsKeyDown(Keys.Down) && isJumping){
                    //    Damage((new Vector2(0, 32)+ positionOffset), true);
                    //    PlayerState = State.AttackingDown;
                    //}  else

                    if (isJumping)
                    {
                        //attack in air
                        PlayerState = State.JumpAttack;
                        attackTimer = attackTimerMax;
                        attackSFX.Play();
                    }
                    else
                    {
                        // attack on ground
                        if (!isBySign)
                        {
                            PlayerState = State.Attacking;
                            attackSFX.Play();
                        }
                        attackTimer = attackTimerMax;
                    }
                    if (!isJumping)
                    {
                        velocity.X = 0;
                    }
                }
            }

            if (PlayerState != State.Attacking &&
                PlayerState != State.JumpAttack &&
                PlayerState != State.AttackingDown)
            {
                if ((int)velocity.X != 0)
                {
                    PlayerState = State.Walking;
                }
                else if (PlayerState != State.Ducking)
                {
                    PlayerState = State.Idle;
                }

                if (isOnPlatform && !keyboardState.IsKeyDown(Keys.Left) &&
                    !keyboardState.IsKeyDown(Keys.Right) && !keyboardState.IsKeyDown(Keys.Down))
                {
                    PlayerState = State.Idle;
                }

                if (isJumping)
                {
                    PlayerState = State.Jumping;
                }
            }
        }