Пример #1
0
        public void HandleInput(Entity player)
        {
            PlayerStateMap  map       = player.GetComponent <PlayerStateMap>();
            PlayerCharacter character = player.GetComponent <PlayerCharacter>();
            Position        position  = player.GetComponent <Position>();

            if (_input.IsDown(GameButton.Dash))
            {
                if (!position.IsOnGround)
                {
                    _dashInAirAttempted = true;
                }

                if (character.CurrentDashLength <= character.MaxDashLength &&
                    !_dashInAirAttempted)
                {
                    map.CurrentState = PlayerState.Dash;
                }
                else
                {
                    if (!_input.IsDown(GameButton.MoveLeft) &&
                        !_input.IsDown(GameButton.MoveRight))
                    {
                        map.CurrentState = PlayerState.Idle;
                    }
                }
            }
            else
            {
                character.CurrentDashLength = 0.0f;
                _dashInAirAttempted         = false;
            }
        }
Пример #2
0
        public void HandleInput(Entity player)
        {
            PlayerStateMap  map       = player.GetComponent <PlayerStateMap>();
            Position        position  = player.GetComponent <Position>();
            PlayerCharacter character = player.GetComponent <PlayerCharacter>();

            if (_input.IsDown(GameButton.MoveLeft))
            {
                map.CurrentState = PlayerState.Move;

                if (!character.IsDashing)
                {
                    position.Facing = Direction.Left;
                }
            }
            else if (_input.IsDown(GameButton.MoveRight))
            {
                map.CurrentState = PlayerState.Move;

                if (!character.IsDashing)
                {
                    position.Facing = Direction.Right;
                }
            }
        }
Пример #3
0
        public void EnterState(Entity player)
        {
            Sprite sprite = player.GetComponent <Sprite>();

            sprite.SetCurrentAnimation("Jump");

            PlayerStateMap map = player.GetComponent <PlayerStateMap>();

            _isDashJump = map.PreviousState == PlayerState.Dash;
        }
Пример #4
0
        public void HandleInput(Entity player)
        {
            PlayerCharacter character = player.GetComponent <PlayerCharacter>();
            Position        position  = player.GetComponent <Position>();
            PlayerStateMap  map       = player.GetComponent <PlayerStateMap>();

            if (!position.IsOnGround && !character.IsJumping)
            {
                map.CurrentState = PlayerState.Fall;
            }
        }
Пример #5
0
        public void HandleInput(Entity player)
        {
            PlayerCharacter character = player.GetComponent <PlayerCharacter>();
            PlayerStateMap  map       = player.GetComponent <PlayerStateMap>();

            if (_input.IsUp(GameButton.Dash) &&
                _input.IsUp(GameButton.MoveRight) &&
                _input.IsUp(GameButton.MoveLeft) &&
                !character.IsLanding)
            {
                map.CurrentState = PlayerState.Idle;
            }
        }
Пример #6
0
        public void HandleInput(Entity player)
        {
            PlayerStateMap  map       = player.GetComponent <PlayerStateMap>();
            PlayerCharacter character = player.GetComponent <PlayerCharacter>();

            if (_input.IsDown(GameButton.Jump))
            {
                if (character.CurrentJumpLength < character.MaxJumpLength)
                {
                    map.CurrentState = PlayerState.Jump;
                }
            }
            else if (_input.IsUp(GameButton.Jump) &&
                     _input.WasUpLastFrame(GameButton.Jump))
            {
                character.CurrentJumpLength = 0.0f;
            }
        }
Пример #7
0
        public override void Process(Entity entity)
        {
            PlayerStateMap stateMap = entity.GetComponent <PlayerStateMap>();

            stateMap.PreviousState = stateMap.CurrentState;

            foreach (var state in stateMap.States)
            {
                state.Value.HandleInput(entity);
            }

            if (stateMap.CurrentState != stateMap.PreviousState)
            {
                stateMap.States[stateMap.PreviousState].ExitState(entity);
                stateMap.States[stateMap.CurrentState].EnterState(entity);
            }

            IPlayerState finalState = stateMap.States[stateMap.CurrentState];

            finalState.ProcessState(entity);
        }
Пример #8
0
        public override void Process(Entity entity)
        {
            Position textPosition = entity.GetComponent <Position>();

            textPosition.X = _camera.TopLeft.X;
            textPosition.Y = _camera.TopLeft.Y;

            Entity          player    = BlackBoard.GetEntry <Entity>("Player");
            Velocity        velocity  = player.GetComponent <Velocity>();
            Position        position  = player.GetComponent <Position>();
            PlayerStateMap  stateMap  = player.GetComponent <PlayerStateMap>();
            PlayerCharacter character = player.GetComponent <PlayerCharacter>();

            string text = $"VelocityX: {velocity.X}\n" +
                          $"VelocityY: {velocity.Y}\n" +
                          $"PosX: {position.X}\n" +
                          $"PosY: {position.Y}\n" +
                          $"CurrentState: {stateMap.CurrentState}\n" +
                          $"IsWallSliding: {character.IsWallSliding}\n";

            VisibleText textComponent = entity.GetComponent <VisibleText>();

            textComponent.Message = text;
        }
Пример #9
0
        public void BuildEntity(Entity entity, params object[] args)
        {
            _characterType = args.Length > 0 ? (CharacterType)args[0] : CharacterType.X;
            LoadPlayerDataFile();

            entity.AddComponent(BuildSprite());
            PlayerCharacter character = _componentFactory.Create <PlayerCharacter>();

            character.MaxDashLength    = _playerData.MaxDashLength;
            character.MaxJumpLength    = _playerData.MaxJumpLength;
            character.MoveSpeed        = _playerData.MoveSpeed;
            character.DashSpeed        = _playerData.DashSpeed;
            character.JumpSpeed        = _playerData.JumpSpeed;
            character.CharacterType    = _characterType;
            character.MaxNumberOfJumps = _playerData.MaxNumberOfJumps;

            entity.AddComponent(character);

            Health health = _componentFactory.Create <Health>();

            health.MaxHitPoints     = 16;
            health.CurrentHitPoints = 8;
            entity.AddComponent(health);

            Position position = _componentFactory.Create <Position>();

            position.Facing = Direction.Right;
            position.X      = (int?)args[1] ?? 0;
            position.Y      = (int?)args[2] ?? 0;
            entity.AddComponent(position);

            entity.AddComponent(_componentFactory.Create <LocalData>());
            entity.AddComponent(_componentFactory.Create <Velocity>());
            entity.AddComponent(_componentFactory.Create <Renderable>());
            entity.AddComponent(BuildCollisionBox());

            Nameable nameable = _componentFactory.Create <Nameable>();

            nameable.Name = _playerData.Name;
            entity.AddComponent(nameable);

            Heartbeat heartbeat = _componentFactory.Create <Heartbeat>();

            heartbeat.Interval = _playerData.HeartbeatInterval;
            entity.AddComponent(heartbeat);

            Script script = _componentFactory.Create <Script>();

            script.FilePath = _playerData.Script;
            entity.AddComponent(script);

            PlayerStateMap stateMap = _componentFactory.Create <PlayerStateMap>();

            stateMap.States.Add(PlayerState.Idle, _playerStateFactory.Create <IdleState>());
            stateMap.States.Add(PlayerState.Move, _playerStateFactory.Create <MoveState>());
            stateMap.States.Add(PlayerState.Dash, _playerStateFactory.Create <DashState>());
            stateMap.States.Add(PlayerState.Jump, _playerStateFactory.Create <JumpState>());
            stateMap.States.Add(PlayerState.Fall, _playerStateFactory.Create <FallState>());
            stateMap.States.Add(PlayerState.Land, _playerStateFactory.Create <LandState>());
            stateMap.CurrentState = PlayerState.Idle;
            entity.AddComponent(stateMap);

            Gravity gravity = _componentFactory.Create <Gravity>();

            gravity.Speed = _playerData.GravitySpeed;
            entity.AddComponent(gravity);

            PlayerStats stats = _componentFactory.Create <PlayerStats>();

            stats.Lives = 2;
            entity.AddComponent(stats);

            EntitySystem.BlackBoard.SetEntry("Player", entity);
        }