New sfx and vfx and features in building

This commit is contained in:
2025-08-29 14:36:05 +08:00
parent 885d2c0075
commit 7720e74a3d
12 changed files with 219 additions and 34 deletions

View File

@@ -14,6 +14,7 @@ public partial class BaseTile : Node2D
private Sprite2D _sprite;
private ColorRect _progressOverlay;
private Action _onConstructionComplete;
private bool _isConstructing = false;
public override void _Ready()
{
@@ -26,6 +27,9 @@ public partial class BaseTile : Node2D
public void SetGhostMode(bool canPlace)
{
// Don't modify collision for constructing buildings
if (_isConstructing) return;
if (_collisionShape != null)
_collisionShape.Disabled = true;
@@ -46,8 +50,13 @@ public partial class BaseTile : Node2D
// Building progress visualization
public void StartConstruction(float buildTime, Action onComplete = null)
{
_isConstructing = true;
if (_collisionShape != null)
_collisionShape.Disabled = true;
if (_progressOverlay == null || _sprite?.Texture == null)
{
_isConstructing = false;
onComplete?.Invoke();
return;
}
@@ -55,6 +64,10 @@ public partial class BaseTile : Node2D
_onConstructionComplete = onComplete;
var texSize = new Vector2(GridUtils.TileSize, GridUtils.TileSize);
// Set initial transparency for construction
if (_sprite != null)
_sprite.Modulate = new Color(1, 1, 1, 0.8f);
_progressOverlay.Visible = true;
_progressOverlay.Modulate = Colors.White;
_progressOverlay.Color = new Color(0, 0, 1, 0.4f); // semi-transparent blue
@@ -80,7 +93,14 @@ public partial class BaseTile : Node2D
// Fade out the overlay
await FadeOutOverlay(0.5f);
// Notify completion
// Construction complete - restore full opacity and enable collision
if (_sprite != null)
_sprite.Modulate = Colors.White;
_isConstructing = false;
if (_collisionShape != null)
_collisionShape.Disabled = false;
_onConstructionComplete?.Invoke();
}