Add NPC and Power-Up features with associated prefabs and effects
This commit is contained in:
@@ -17,6 +17,7 @@ namespace Infrastructure.Unity
|
||||
[SerializeField] private DeathPlaneAdapter deathPlanePrefab;
|
||||
[SerializeField] private SoundManager soundManager;
|
||||
[SerializeField] private CameraController cameraController;
|
||||
[SerializeField] private NpcController npcPrefab;
|
||||
|
||||
[Header("Level Generation")]
|
||||
[SerializeField] private int floorsCount = 3;
|
||||
@@ -30,7 +31,10 @@ namespace Infrastructure.Unity
|
||||
|
||||
[Header("Settings")]
|
||||
[SerializeField] private float restartTime = 3f;
|
||||
|
||||
|
||||
[Header("Power Ups")]
|
||||
[SerializeField] private PowerUpViewAdapter lightFootedPrefab;
|
||||
[SerializeField] private PowerUpViewAdapter speedBoostPrefab;
|
||||
|
||||
private readonly List<Tile> _allTiles = new();
|
||||
private readonly Dictionary<string, TileViewAdapter> _tileViews = new();
|
||||
@@ -93,6 +97,9 @@ namespace Infrastructure.Unity
|
||||
}
|
||||
|
||||
var dt = Time.deltaTime;
|
||||
|
||||
if (_isGameRunning) _gameSession.Tick(dt);
|
||||
|
||||
for (var i = _allTiles.Count - 1; i >= 0; i--)
|
||||
{
|
||||
_allTiles[i].Tick(dt);
|
||||
@@ -180,6 +187,8 @@ namespace Infrastructure.Unity
|
||||
_gameSession.OnOrbSpawned += SpawnVisualOrb;
|
||||
_gameSession.OnOrbReset += HandleOrbReset;
|
||||
_gameSession.OnGameOver += HandleGameOver;
|
||||
_gameSession.OnSpawnNpc += SpawnNpc;
|
||||
_gameSession.OnSpawnPowerUp += SpawnPowerUp;
|
||||
|
||||
if (!soundManager) return;
|
||||
|
||||
@@ -191,6 +200,16 @@ namespace Infrastructure.Unity
|
||||
};
|
||||
}
|
||||
|
||||
private void SpawnNpc()
|
||||
{
|
||||
if (!npcPrefab) return;
|
||||
|
||||
var spawnPos = new Vector3(levelGenerator.GridSizeX / 2f, 7f, levelGenerator.GridSizeY / 2f);
|
||||
Instantiate(npcPrefab, spawnPos, Quaternion.identity);
|
||||
|
||||
soundManager.PlayNpcSpawn();
|
||||
}
|
||||
|
||||
private void StartGameSequence()
|
||||
{
|
||||
_isGameRunning = true;
|
||||
@@ -211,5 +230,22 @@ namespace Infrastructure.Unity
|
||||
|
||||
_gameSession.StartGame();
|
||||
}
|
||||
|
||||
private void SpawnPowerUp(PowerUpType type, string tileId)
|
||||
{
|
||||
if (!_tileViews.TryGetValue(tileId, out var tileView)) return;
|
||||
if (!tileView) return;
|
||||
|
||||
var spawnPos = tileView.transform.position + Vector3.up * 0.5f;
|
||||
|
||||
var prefabToSpawn = type == PowerUpType.LightFooted
|
||||
? lightFootedPrefab
|
||||
: speedBoostPrefab;
|
||||
|
||||
if (!prefabToSpawn) return;
|
||||
|
||||
var instance = Instantiate(prefabToSpawn, spawnPos, Quaternion.identity);
|
||||
instance.Configure(type);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user