void LoadEnemies() { var enemies = FindObjectsOfType <EnemySystem>(); foreach (var runtime in saveGame.enemyRuntimes) { EnemyRuntime foundRuntime = null; EnemySystem foundSystem = null; foreach (var enemy in enemies) { var enemySaveGameId = enemy.GetComponent <SaveGameIdSystem>().SaveGameId; if (enemySaveGameId == runtime.saveGameId) { foundRuntime = runtime; foundSystem = enemy.GetComponent <EnemySystem>(); break; } } if (foundRuntime == null) { var spawned = Instantiate(runtimePrefabSettings.enemyCharacterPrefab, runtime.position, runtime.rotation); spawned.transform.localScale = runtime.scale; spawned.GetComponent <SaveGameIdSystem>().SaveGameId = runtime.saveGameId; spawned.GetComponent <EnemySystem>().OnLoad(saveGame); } else { foundSystem.OnLoad(saveGame); } } }
void Start() { enemyRuntime = new EnemyRuntime(GetComponent <SaveGameIdSystem>().SaveGameId, null, null); var gameSystem = FindObjectOfType <GameSystem>(); gameSystem.enemies.Add(this); }
public void OnSave(MySaveGame saveGame) { Debug.Log("EnemySystem OnSave: " + GetComponent <SaveGameIdSystem>().SaveGameId); var saveGameIdSystem = this.GetComponent <SaveGameIdSystem>(); var abilitySystem = GetComponent <AbilitySystem>(); var classSystem = GetComponent <ClassSystem>(); var healthSystem = GetComponent <HealthSystem>(); enemyRuntime = new EnemyRuntime(saveGameIdSystem.SaveGameId, abilitySystem.abilityRuntimes, classSystem.classRuntime); enemyRuntime.position = transform.position; enemyRuntime.rotation = transform.rotation; enemyRuntime.scale = transform.localScale; enemyRuntime.maxHealth = healthSystem.maxHealth; enemyRuntime.currentHealth = healthSystem.currentHealth; enemyRuntime.isAlive = healthSystem.IsAlive; saveGame.enemyRuntimes.Add(enemyRuntime); }