Пример #1
0
    public static Level LoadLevel(TextAsset file)
    {
        Scanner scanner  = new Scanner(file.text);
        Level   level    = new Level();
        int     numWaves = scanner.nextInt();

        for (int waveIndex = 0; waveIndex < numWaves; waveIndex++)
        {
            Wave wave = new Wave();
            wave.StartTime = scanner.nextFloat();
            int numEnemyPayloads = scanner.nextInt();
            for (int payloadIndex = 0; payloadIndex < numEnemyPayloads; payloadIndex++)
            {
                EnemyPayload payload = new EnemyPayload();
                payload.EnemyId = scanner.nextInt();

                string line = scanner.nextLine();
                Debug.Log($"payload index {payloadIndex}, line {line}");
                Scanner payloadScanner = new Scanner(line);
                while (payloadScanner.hasNextNumber())
                {
                    float delay = payloadScanner.nextFloat();
                    int   count = payloadScanner.nextInt();
                    payload.Spawns.Add(new Vector2(delay, count));
                }
                wave.Enemies.Add(payload);
            }
            level.Waves.Add(wave);
        }
        return(level);
    }
Пример #2
0
    private void LaunchEnemyPayload(EnemyPayload enemyPayload)
    {
        int        id          = enemyPayload.EnemyId;
        GameObject enemyPrefab = EnemyPrefabs[id];
        // This list determines which enemies can chase player.
        bool attachPlayerObject = id == 0 || id == 1;
        bool isBoss             = id == 6;

        foreach (Vector2 spawn in enemyPayload.Spawns)
        {
            StartCoroutine(LaunchEnemy(enemyPrefab, (int)spawn.x, (int)spawn.y, attachPlayerObject, isBoss));
        }
    }