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; } }
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; } } }
public void EnterState(Entity player) { Sprite sprite = player.GetComponent <Sprite>(); sprite.SetCurrentAnimation("Jump"); PlayerStateMap map = player.GetComponent <PlayerStateMap>(); _isDashJump = map.PreviousState == PlayerState.Dash; }
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; } }
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; } }
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; } }
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); }
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; }
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); }