using GameCore.AI; using GameCore.ECS; using GameCore.ECS.Interfaces; using GameCore.Player; namespace GameCore.Input; public class PlayerInputSystem : ISystem { public void Update(World world, float deltaTime) { var playerEntities = world.GetEntitiesWith().ToList(); if (!playerEntities.Any()) { world.Logger.Warn("No player entity found for input processing."); return; } var playerEntity = playerEntities.First(); if (world.GetComponent(playerEntity) != null) { world.Logger.Warn("Player entity has AIComponent; skipping input processing."); return; } var inputState = world.GetComponent(playerEntity); if (inputState == null) { world.Logger.Warn("Player entity is missing InputStateComponent; cannot process input."); return; } inputState.MoveDirection = world.InputService.MoveDirection.Normalize(); inputState.LookDirection = world.InputService.LookDirection; inputState.IsJumping = world.InputService.IsJumping; inputState.IsInteracting = world.InputService.IsInteracting; inputState.IsFiring = world.InputService.IsFiring; inputState.IsSwapWeaponNext = world.InputService.IsSwapWeaponNext; inputState.IsSwapWeaponPrevious = world.InputService.IsSwapWeaponPrevious; } }