using Godot; public partial class TurretUpgrader : Node { [Export] private Turret _turret; [Export] private Area2D _clickArea; [Export] private Control _ui; [Export] private Label _costLabel; [Export] private Label _damageLabel; [Export] private Label _fireRateLabel; public override void _Ready() { _clickArea.InputEvent += OnClickAreaInputEvent; _clickArea.MouseEntered += MouseEntered; _clickArea.MouseExited += MouseExited; } private void OnClickAreaInputEvent(Node viewport, InputEvent @event, long shapeIdx) { if (@event is not InputEventMouseButton m) { return; } if (m.ButtonIndex != MouseButton.Right) return; if (!GameController.Instance.TryRemoveCurrency(_turret.UpgradeCost)) return; _turret.Upgrade(); _costLabel.Text = _turret.UpgradeCost.ToString(); _damageLabel.Text = _turret.Damage.ToString(); _fireRateLabel.Text = _turret.FireRate.ToString(); } private void MouseEntered() { if (_ui == null) return; _ui.Visible = true; _costLabel.Text = _turret.UpgradeCost.ToString(); _damageLabel.Text = _turret.Damage.ToString(); _fireRateLabel.Text = _turret.FireRate.ToString(); } private void MouseExited() { if (_ui == null) return; _ui.Visible = false; } }