예제 #1
0
        public WaveTimeline GetWave(int index)
        {
            WaveTimeline timeline = WaveCollection.GetWave(index);

            if (!IsWaveKnown(index))
            {
                OnNewWave?.Invoke(timeline);
                MarkWaveAsKnown(index, true);
            }
            return(timeline);
        }
예제 #2
0
        private bool StartWave(int wave)
        {
            ChangeState(RoundState.InProgress);
            WaveTimeline timeline = GetWave(wave);

            Debug.Log("Starting next wave!");

            if (timeline != null)
            {
                WaveHandler handler = Instantiate(WaveHandlerPrefab).GetComponent <WaveHandler>();
                handler.Assign(wave, timeline);
                AddWave(handler);

                handler.BeginWave();
                OnWaveStarted?.Invoke(wave, handler);
            }

            return(timeline != null);
        }
        public void Display(int wave, WaveHandler handler, WaveTimeline timeline)
        {
            foreach (Transform child in transform)
            {
                if (child != TextTransform)
                {
                    Destroy(child.gameObject);
                }
            }

            Wave = wave;

            TitleText.text = wave == -1 ? "Next wave" : $"Wave {wave}";
            var dict = timeline.GetEnemySpawnAmount();

            foreach (var pair in dict)
            {
                EnemyTypeDisplay display = Instantiate(EnemyTypeDisplayPrefab, EnemyTypeDisplayParent).GetComponent <EnemyTypeDisplay>();
                display.Display(handler, pair.Value, pair.Key);
            }
        }