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);
            }
        }
    }
Beispiel #2
0
    void Start()
    {
        enemyRuntime = new EnemyRuntime(GetComponent <SaveGameIdSystem>().SaveGameId, null, null);

        var gameSystem = FindObjectOfType <GameSystem>();

        gameSystem.enemies.Add(this);
    }
Beispiel #3
0
    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);
    }