✨ Turret tile basis
This commit is contained in:
@@ -4,6 +4,8 @@ namespace AceFieldNewHorizon.Scripts.Entities;
|
||||
|
||||
public partial class Enemy : CharacterBody2D
|
||||
{
|
||||
public const string EnemyGroupName = "Enemy";
|
||||
|
||||
[Export] public float MoveSpeed = 150.0f;
|
||||
[Export] public float DetectionRadius = 300.0f;
|
||||
[Export] public float AttackRange = 50.0f;
|
||||
@@ -29,6 +31,8 @@ public partial class Enemy : CharacterBody2D
|
||||
// Connect signals
|
||||
_detectionArea.BodyEntered += OnBodyEnteredDetection;
|
||||
_detectionArea.BodyExited += OnBodyExitedDetection;
|
||||
|
||||
AddToGroup(EnemyGroupName);
|
||||
}
|
||||
|
||||
public override void _Process(double delta)
|
||||
|
@@ -16,7 +16,7 @@ public partial class PlacementManager : Node2D
|
||||
[Export] public bool Enabled { get; set; } = true;
|
||||
[Export] public StringName ToggleBuildAction { get; set; } = "toggle_build";
|
||||
|
||||
private static readonly List<string> BuildableTiles = ["wall", "miner"];
|
||||
private static readonly List<string> BuildableTiles = ["wall", "miner", "turret"];
|
||||
private readonly Dictionary<Node2D, BuildTask> _buildTasks = new();
|
||||
private AudioStreamPlayer _completionSound;
|
||||
private AudioStreamPlayer _buildingSound;
|
||||
|
@@ -28,7 +28,7 @@ public partial class BaseTile : Node2D
|
||||
_progressOverlay.Visible = false;
|
||||
}
|
||||
|
||||
public void SetGhostMode(bool canPlace)
|
||||
public virtual void SetGhostMode(bool canPlace)
|
||||
{
|
||||
// Don't modify collision for constructing buildings
|
||||
if (IsConstructing) return;
|
||||
@@ -42,7 +42,7 @@ public partial class BaseTile : Node2D
|
||||
: new Color(1, 0, 0, 0.5f);
|
||||
}
|
||||
|
||||
public void FinalizePlacement()
|
||||
public virtual void FinalizePlacement()
|
||||
{
|
||||
if (_collisionShape != null)
|
||||
_collisionShape.Disabled = false;
|
||||
|
33
Scripts/Tiles/TurretTile.cs
Normal file
33
Scripts/Tiles/TurretTile.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
using Godot;
|
||||
|
||||
namespace AceFieldNewHorizon.Scripts.Tiles;
|
||||
|
||||
public partial class TurretTile : BaseTile
|
||||
{
|
||||
private Sprite2D _spriteBarrel;
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
base._Ready();
|
||||
|
||||
_spriteBarrel = GetNodeOrNull<Sprite2D>("Barrel");
|
||||
}
|
||||
|
||||
public override void SetGhostMode(bool canPlace)
|
||||
{
|
||||
base.SetGhostMode(canPlace);
|
||||
|
||||
if (_spriteBarrel != null)
|
||||
_spriteBarrel.Modulate = canPlace
|
||||
? new Color(0, 1, 0, 0.5f)
|
||||
: new Color(1, 0, 0, 0.5f);
|
||||
}
|
||||
|
||||
public override void FinalizePlacement()
|
||||
{
|
||||
base.FinalizePlacement();
|
||||
|
||||
if (_spriteBarrel != null)
|
||||
_spriteBarrel.Modulate = Colors.White;
|
||||
}
|
||||
}
|
1
Scripts/Tiles/TurretTile.cs.uid
Normal file
1
Scripts/Tiles/TurretTile.cs.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://n5g6i0uovxfk
|
Reference in New Issue
Block a user