using Godot; using GodotHostTest.AetherBind; using Microsoft.Extensions.Logging; using OwofGames.AetherBind; namespace GodotHostTest.Game.Turret; public partial class Turret : Sprite2D { [Export] private Node2D _launcher = null!; [Inject] private ILogger _logger = null!; [Export] private PackedScene _projectilePackedScene = null!; private double _rotationDirection; [Export] private double _rotationSpeed = 6; [Inject] private ISceneInstantiator _sceneInstantiator = null!; private void OnTimerTimeout() { var projectile = _sceneInstantiator.Instantiate(_projectilePackedScene); projectile.Rotation = _launcher.Rotation; AddChild(projectile); _logger.LogInformation("Projectile launched."); } public override void _Input(InputEvent @event) { _rotationDirection = 0; if (@event.IsActionPressed("rotate_clockwise")) _rotationDirection = 1; if (@event.IsActionPressed("rotate_counterclockwise")) _rotationDirection = -1; } public override void _PhysicsProcess(double delta) { _rotationDirection = 0; if (Input.IsActionPressed("rotate_clockwise")) _rotationDirection = 1; if (Input.IsActionPressed("rotate_counterclockwise")) _rotationDirection = -1; _launcher.Rotation += (float)(_rotationSpeed * delta * _rotationDirection); base._PhysicsProcess(delta); } }