Exemple #1
0
        public PlayerControl(King player, IGameInputWithDPad input)
        {
            Input  = input;
            Player = player;
            Player.Scene.AddObject(this);

            var walk  = new AxisMotion(Config.ReadValue <AxisMotionConfig>("walk"));
            var brake = new AxisMotion(Config.ReadValue <AxisMotionConfig>("brake"));

            var climb      = new AxisMotion(Config.ReadValue <AxisMotionConfig>("climb"));
            var climbBrake = new AxisMotion(Config.ReadValue <AxisMotionConfig>("climb brake"));

            WalkMotion = new MotionWithBrake(walk, brake);
            player.Motion.AddAdjuster(WalkMotion);
            ClimbMotion = new MotionWithBrake(climb, climbBrake);
            player.Motion.AddAdjuster(ClimbMotion);

            JumpMotion = new AxisMotion(Config.ReadValue <AxisMotionConfig>("jump"));

            player.Motion.AddAdjuster(JumpMotion);

            hasLandedOnGround = new CollisionCondition <IPlatformerObject, TileMap>(player)
                                .When(player.IsOnGround)
                                .SetActiveTime(new ConfigValue <TimeSpan>("landing time"), player);

            isAttacking = new InputCondition(GameKeys.Attack, Input)
                          .ContinueWhile(player.Animations.IsAnimationPlaying(AnimationKeys.Attack));

            new AnimationController <King>(Player, isAttacking, hasLandedOnGround);

            Player.Direction = Direction.Right;
        }
Exemple #2
0
 public static void CheckClimbStop(ICanClimb actor, IGameInputWithDPad input)
 {
     if (input.GetButtonPressed(GameKeys.Jump))
     {
         EndClimb(actor);
     }
 }
Exemple #3
0
 public static void CheckClimbStart(ICanClimb actor, IGameInputWithDPad input)
 {
     if (input.Pad.GetInputVector().Y != 0)
     {
         BeginClimb(actor);
     }
 }
Exemple #4
0
        public Menu(Layer interfaceLayer, SpriteFont font, BorderTileSet tileSet, IGameInputWithDPad input, MenuKeys menuKeys)
        {
            MenuPanel = new LayoutPanel(tileSet, interfaceLayer);
            MenuPanel.Position.Center = Engine.GetScreenSize().Center;
            MenuPanel.Visible         = false;

            Layer = interfaceLayer;
            Font  = font;
            Input = input;

            MenuKeys = menuKeys;

            foreach (var group in interfaceLayer.Scene.UpdateGroups)
            {
                if (group.Priority != UpdatePriority.ModalMenu && group.Priority != UpdatePriority.Input)
                {
                    group.AddPauseCondition(MenuPanel.IsVisible());
                }
            }

            interfaceLayer.Scene.AddObject(this);
        }