using System.Threading.Tasks; using Babushka.scripts.CSharp.Common.Inventory; using Babushka.scripts.CSharp.Common.Services; using Godot; namespace Babushka.scripts.CSharp.Common.CharacterControls; public partial class PlayerMovement : CharacterBody2D { [Export] private float _speed = 1000f; private InventoryManager _inventoryManager; public override void _Process(double delta) { bool anyActionPressed = false; Vector2 currentVelocity = Vector2.Zero; if (!InputService.Instance.InputEnabled) return; bool right = Input.IsActionPressed("move_right"); bool left = Input.IsActionPressed("move_left"); bool up = Input.IsActionPressed("move_up"); bool down = Input.IsActionPressed("move_down"); if (up) { currentVelocity += new Vector2(0, -_speed); anyActionPressed = true; } if (down) { currentVelocity += new Vector2(0, _speed); anyActionPressed = true; } if (right) { currentVelocity += new Vector2(_speed, 0); anyActionPressed = true; } if (left) { currentVelocity += new Vector2(-_speed, 0); anyActionPressed = true; } if (anyActionPressed) { if (currentVelocity.X != 0 && currentVelocity.Y != 0) { currentVelocity *= 0.7f; } // speed hack var setting = ProjectSettings.GetSetting("babushka/hacks/speed_hack",-1).AsSingle(); if (setting > 0) { currentVelocity *= setting; } Velocity = currentVelocity; MoveAndSlide(); } } }