add: DontDestroyOnLoad on GameController

add: functions for enemy managment in GameController
add: LevelController now pops enemies
This commit is contained in:
KOSMOGOR
2025-03-22 16:55:34 +03:00
parent 29a01f66cc
commit 787c2329ad
2 changed files with 26 additions and 8 deletions
+21 -7
View File
@@ -5,17 +5,31 @@ using UnityEngine;
public class GameController : MonoBehaviour
{
public static GameController i;
public List<LevelInfo> levels;
public void Start() {
if (i) { Destroy(gameObject); return; }
i = gameObject.GetComponent<GameController>();
DontDestroyOnLoad(gameObject);
}
public Dictionary<Enemy, int> PopEnemies(string sceneName) {
LevelInfo li = levels.Find(x => x.scene.name == sceneName);
Dictionary<Enemy, int> enemies = li.enemies;
li.enemies.Clear();
return enemies;
}
public void AddEnemyInLevel(Enemy enemy, string sceneName) {
Dictionary<Enemy, int> enemies = levels.Find(x => x.scene.name == sceneName).enemies;
if (enemies.ContainsKey(enemy)) enemies[enemy] += 1;
else enemies[enemy] = 1;
}
}
[Serializable]
public class LevelInfo {
public SceneAsset scene;
public List<EnemyInLevel> enemies;
}
[Serializable]
public class EnemyInLevel {
public GameObject enemy;
public int count;
public Dictionary<Enemy, int> enemies;
}
+5 -1
View File
@@ -1,8 +1,12 @@
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class LevelController : MonoBehaviour
{
public List<Transform> spawnPoints;
public void Start() {
Dictionary<Enemy, int> enemies = GameController.i.PopEnemies(SceneManager.GetActiveScene().name);
}
}