コード例 #1
0
 private WaveCharacterInfoClass GetAvailableWaveCharacter(WavePhaseClass wavePhase)
 {
     CurrentWaveChar = wavePhase.ListOfEnemy.Where(r => r.NumberOfCharacter > 0).First();
     CurrentWaveChar.NumberOfCharacter--;
     Events.AddRange(CurrentWaveChar.TypeOfCharacter.Events);
     Events = Events.Distinct().ToList();
     return(CurrentWaveChar.TypeOfCharacter);
 }
コード例 #2
0
    private WaveCharacterInfoClass GetAvailableRandomWaveCharacter(WavePhaseClass wavePhase)
    {
        List <WaveCharClass> ListOfEnemy = wavePhase.ListOfEnemy.Where(r => r.NumberOfCharacter > 0).ToList();

        CurrentWaveChar = ListOfEnemy[Random.Range(0, ListOfEnemy.Count)];
        CurrentWaveChar.NumberOfCharacter--;
        Events.AddRange(CurrentWaveChar.TypeOfCharacter.Events);
        Events = Events.Distinct().ToList();
        return(CurrentWaveChar.TypeOfCharacter);
    }
コード例 #3
0
    public IEnumerator SpawnCharFromGivenWave(string waveName, CharacterNameType characterID, string charIdentifier, bool isRandom, Vector2Int pos, bool removeFromWave)
    {
        WavePhaseClass wpc = WavePhases.Where(r => r.name == waveName).First();

        CurrentWaveChar = wpc.ListOfEnemy.Where(a => a.TypeOfCharacter.CharacterName == characterID).First();
        BaseCharacter newChar = GetWaveCharacter(CurrentWaveChar.TypeOfCharacter);

        if (removeFromWave)
        {
            CurrentWaveChar.NumberOfCharacter--;
        }
        FungusSpawnedChars.Add(charIdentifier, newChar);
        yield return(SpawChar(newChar, isRandom, pos, true));
    }
コード例 #4
0
    private IEnumerator Wave(WavePhaseClass wavePhase)
    {
        float timer = 0;
        WaveCharacterInfoClass waveCharacterInfoClass;

        while (true)
        {
            timer += Time.fixedDeltaTime;
            yield return(BattleManagerScript.Instance.PauseUntil());

            if (timer > wavePhase.DelayBetweenChars &&
                WaveCharcters.Where(r => r.gameObject.activeInHierarchy && r.CharInfo.BaseCharacterType == BaseCharType.MinionType_Script).ToList().Count < wavePhase.MaxEnemyOnScreen)
            {
                yield return(new WaitForSeconds(0.5f));

                if (wavePhase.IsRandom)
                {
                    waveCharacterInfoClass = GetAvailableRandomWaveCharacter(wavePhase);
                }
                else
                {
                    waveCharacterInfoClass = GetAvailableWaveCharacter(wavePhase);
                }
                newChar = GetWaveCharacter(waveCharacterInfoClass);
                yield return(SpawChar(newChar, CurrentWaveChar.IsRandomSpowiningTile,
                                      CurrentWaveChar.IsRandomSpowiningTile ? new Vector2Int() : CurrentWaveChar.SpowningTile[Random.Range(0, CurrentWaveChar.SpowningTile.Count)], true));

                timer = 0;

                if (wavePhase.ListOfEnemy.Where(r => r.NumberOfCharacter > 0).ToList().Count == 0)
                {
                    while (true)
                    {
                        if (WaveCharcters.Where(r => r.gameObject.activeInHierarchy && (r.CharInfo.BaseCharacterType == BaseCharType.MinionType_Script || (r.IsOnField && r.CharInfo.BaseCharacterType != BaseCharType.MinionType_Script))).ToList().Count == 0)
                        {
                            yield break;
                        }
                        yield return(null);
                    }
                }
            }
        }
    }
コード例 #5
0
    public IEnumerator SettingUpWave(string waveName)
    {
        WavePhaseClass wavePhase = WavePhases.Where(r => r.name == waveName).First();

        StartingCharInWave = new List <StartingCharactersForWaveClass>();
        foreach (WaveCharClass waveChar in wavePhase.ListOfEnemy)
        {
            if (waveChar.AreThereStartingEnemy)
            {
                waveChar.NumberOfCharacter -= waveChar.StartingEnemyTiles.Count;
                StartingCharInWave.Add(new StartingCharactersForWaveClass(waveChar.inRandomPos, waveChar.StartingEnemyTiles, waveChar.TypeOfCharacter));
            }
        }

        foreach (StartingCharactersForWaveClass startingCharacters in StartingCharInWave)
        {
            for (int i = 0; i < startingCharacters.Pos.Count; i++)
            {
                newChar = GetWaveCharacter(startingCharacters.TypeOfCharacter);
                yield return(SpawChar(newChar, startingCharacters.InRandomPos, startingCharacters.Pos[i], false));
            }
        }
    }