예제 #1
0
 //Triggered by game conductor round start event
 public void OnRoundStart(int roundNumber, RoundSettings round)
 {
     enemiesToKillThisRound = round.GetTotalEnemyCount();
     enemiesKilledThisRound = 0;
     roundInitialized       = true;
     Debug.Log("Enemy manager initialized new round");
 }
 private void PopulateRoundSettings(float growthTime, float minGrowth, int yield)
 {
     for (int i = 0; i < roundSettings.Length; i++)
     {
         roundSettings[i] = new RoundSettings(growthTime, minGrowth, yield);
     }
 }
예제 #3
0
    public void NextRound()
    {
        if (rounds.Count == 0)
        {
            Debug.Log("Error: No Rounds");
        }

        if (bombSpawn != null)
        {
            StopCoroutine(bombSpawn);
        }
        if (blockSpawn != null)
        {
            StopCoroutine(blockSpawn);
        }

        if (GameManager.instance.CheckWin())
        {
            return;
        }

        timer = 0f; // Cancels timer if still active
        UIManager.instance.UpdateTimerUI(0f);
        foreach (FriendController f in playersToRespawn)
        {
            f.Respawn();
        }
        playersToRespawn.Clear();

        RoundAbstract next = rounds.Count == 1 ? rounds[0] : currentRound;

        while (currentRound == next && rounds.Count > 1)
        {
            next = rounds[Random.Range(0, rounds.Count)];
        }
        currentRound = next;
        settings     = currentRound.settings;

        if (settings.bombSpawn)
        {
            bombSpawn = StartCoroutine(SpawnBomb());
        }
        if (settings.blockSpawn)
        {
            blockSpawn = StartCoroutine(SpawnBlock());
        }
        currentRound.StartRound();
        UIManager.instance.UpdateRoundUI(currentRound);
    }
예제 #4
0
    public void OnNextRoundEvent(int i, RoundSettings round)
    {
        DestroyAllSpawned();

        foreach (EnemySpawnInfo esi in round.enemies)
        {
            toSpawn.Add(new SpawnQueueItem()
            {
                objectToSpawn     = esi.enemy.inGamePrefab,
                amountLeftToSpawn = esi.spawnAmount,
                maxAlive          = esi.maxAlive
            });
        }

        activeRoundSettings = round;
    }
예제 #5
0
    private void Awake()
    {
        // Get ID's for each component
        //moveID = MovementID.walk;
        //enemyID = EnemyID.simpleFollower;
        //combatID = CombatID.dash;
        //terrainID = TerrainID.maze;

        // setup round settings based on ID's
        rs = new RoundSettings(moveID, enemyID, combatID, terrainID);

        // Setup Player
        GameObject playerGO = new GameObject();

        player = playerGO.AddComponent <Player>();
        player.UpdateMovementSettings(rs.moveInfo);

        // setup terrain
        terrain = rs.SetupTerrain();

        // setup overall canvas
        canvasBody        = new GameObject();
        canvasBody.name   = "Canvas";
        canvas            = canvasBody.AddComponent <Canvas>();
        canvas.renderMode = RenderMode.ScreenSpaceOverlay;
        canvasScaler      = canvasBody.AddComponent <CanvasScaler>();
        canvasGR          = canvasBody.AddComponent <GraphicRaycaster>();

        // setup combat
        combat = rs.GiveCombat(player);
        player.GiveCombat(combat);

        // setup enemies
        enemies = new List <Enemy>();
        for (int i = 0; i < terrain.GetEnemyCount(); i++)
        {
            enemies.Add(rs.CreateEnemy());
        }
        terrain.InitialPositionEnemies(enemies);
    }