Пример #1
0
 public void GetData(ScriptableCollection coQuest, WaveEvent waveEvent)
 {
     this.waveEvent   = waveEvent;
     spawnHolder      = GameObject.Find("SpawnHolder");
     spawnList        = new List <Transform>();
     data             = coQuest;
     isRandomSpawn    = coQuest.isRandomSpawn;
     toCollectList    = new List <GameObject>();
     collectionAmount = data.collectionAmount;
     startEvents      = data.startEvents;
     endEvents        = data.endEvents;
     title            = data.verb + " " + collectionAmount + " " + data.itemsToCollect.name;
     verb             = data.verb;
     description      = data.description;
     itemsToCollect   = data.itemsToCollect;
     currentAmount    = 0;
     isBonus          = data.isBonus;
     spawnPos         = data.spawnPos;
     foreach (Transform spawn in spawnPos)
     {
         spawnList.Add(spawn);
     }
     targetsLeft = 0;
     SpawnTarget();
     CheckProgress();
 }
Пример #2
0
    public static Wave GetWave(string id)
    {
        TextAsset   file = (TextAsset)Resources.Load("Waves");
        XmlDocument doc  = new XmlDocument();

        doc.LoadXml(file.text);

        try
        {
            XmlNodeList nodes  = doc.GetElementsByTagName("wave");
            XmlNodeList events = GetNode(id, nodes).ChildNodes;
            Wave        wave   = new Wave();
            wave.SetID(int.Parse(id));

            for (int i = 0; i < events.Count; i++)
            {
                WaveEvent wEvent = ProcessWaveEvent(events[i]);
                wave.AddEvent(wEvent);
            }

            return(wave);
        }
        catch
        {
            return(null);
        }
    }
Пример #3
0
    public bool Handle(WaveEvent waveEvent)
    {
        bool handled = false;

        switch (waveEvent.type)
        {
        case WaveEvent.Type.SpawnEnemy:
            handled = true;

            if (lanes > waveEvent.lane)
            {
                Lane lane = LaneBy(waveEvent.lane);

                for (int i = 0; lane.objects.Count > i && handled; i++)
                {
                    if (lane.objects[i] is LaneEntity && lane.objects[i].rect.width > lane.objects[i].back - lane.start.x)
                    {
                        handled = false;
                    }
                }

                if (handled)
                {
                    SpawnEnemyEvent spawnEnemyEvent = (waveEvent as SpawnEnemyEvent);
                    EnemyLevel      enemyLevel      = spawnEnemyEvent.enemyDefinition.levels[spawnEnemyEvent.level];
                    lane.Add(new Enemy(spawnEnemyEvent.enemyDefinition, spawnEnemyEvent.level, new EnemySettings(enemyLevel.color, enemyLevel.health, enemyLevel.speed), lane, waveEvent.entryPoint, _container));
                }
            }

            return(handled);

        default:
            return(handled);
        }
    }
Пример #4
0
    public static void TriggerGlobalEvent(string globalEventName, Wave wave)
    {
        WaveEvent thisEvent = null;

        if (instance.waveEventDictionary.TryGetValue(globalEventName, out thisEvent))
        {
            thisEvent.Invoke(wave);
        }
    }
Пример #5
0
    private IEnumerator ProcessWave()
    {
        waveNumber += 1;

        if (waveText != null)
        {
            waveText.text = "Wave " + waveNumber.ToString();
        }

        Wave wave;

        if (waveNumber <= Waves.Count)
        {
            wave = Waves[waveNumber - 1];
        }
        else if (endlessSingleEnemyWave != EnemyType.Unknown)
        {
            wave = new Wave(new List <WaveEvent>
            {
                WaveEvent.LongDelay(),
                WaveEvent.SpawnSquadron(new Squadron(endlessSingleEnemyWave, SpawnPattern.Center)),
            });
        }
        else
        {
            WavesCompletedEvent.Invoke();

            if (randomWavesAfterScripted)
            {
                Debug.Log("Wave " + waveNumber + " is not defined in WaveManager, so one will be generated randomly.");
            }
            wave = GenerateRandomWave();
        }

        Debug.Log("ProcessingWave: " + wave.Name);

        if (waveNumber <= Waves.Count || randomWavesAfterScripted || endlessSingleEnemyWave != EnemyType.Unknown) // will end co-routine loop if out of waves and toggle not set
        {
            foreach (var waveEvent in wave.WaveEvents)
            {
                if (waveEvent.Squadron != null)
                {
                    _spawnManager.Spawn(waveEvent.Squadron);
                }

                if (waveEvent.Duration > 0)
                {
                    yield return(new WaitForSeconds(waveEvent.Duration));
                }
            }

            yield return(new WaitForSeconds(2f));

            yield return(StartCoroutine(ProcessWave()));
        }
    }
Пример #6
0
    void QueueSubdivision(float time, int particle)
    {
        List <WaveEvent> list;

        if (!events.TryGetValue(time, out list))
        {
            list = new List <WaveEvent>();
            events.Add(time, list);
        }
        list.Add(WaveEvent.NewSubdivision(particle));
    }
Пример #7
0
    public void NextEvent()
    {
        WaveEvent wevent = wave.GetNext();

        if (wevent != null)
        {
            wevent.TriggerEvent();
        }
        else
        {
            GameManager.Instance.OnWaveEnd(wave.GetID());
        }
    }
Пример #8
0
    private void OnMonstersArrived(EventBase e)
    {
        //DataService.Instance.Safe = false;
        GameModel.Instance.OpenFunc(GameModel.FUNC_ID_SKILL);
        _beAttacking = true;
        GlobalEventLocator.Instance.dispatch(new GameEvent(GameEvent.BATTLE_STATE_CHANGED));
        WaveEvent waveEvent = e as WaveEvent;

        int[] monsters = waveEvent.Monsters;
        _creatingMonsterCount++;
        StartCoroutine(CreateMonsters(monsters, waveEvent.WaveConfigTpl));
        SoundManager.InstanceOfScene.PlayBattleMusic();
    }
Пример #9
0
    private Wave GenerateRandomWave()
    {
        var enemyType    = Randomizer.GetEnemyType();
        var spawnPattern = Randomizer.GetSpawnPattern();
        var spawnZone    = Randomizer.GetSpawnZone();

        var randomizedSquadron = new Squadron(enemyType, spawnPattern, spawnZone);

        return(new Wave(new List <WaveEvent>
        {
            WaveEvent.ShortDelay(),
            WaveEvent.SpawnSquadron(randomizedSquadron),
            WaveEvent.MediumDelay(),
        }));
    }
Пример #10
0
    private IEnumerator SpawnWave()
    {
        //Spawn each wave event (sub waves) one by one
        for (int i = 0; i < waveEvents.Count; i++)
        {
            WaveEvent e = waveEvents[i];

            for (int j = 0; j < e.Amount; j++)
            {
                spawner.SpawnEnemy(e.EnemyType, e.PathIndex);
                yield return(new WaitForSeconds(SpawnInterval));
            }
        }

        //Once all waves are done, tell the caller we're done
        waveCompletedCallBack();
    }
Пример #11
0
    public static void StopListeningInitWave(UnityAction <Wave> waveListener)
    {
        string globalEventName = EventNames.WaveInit;

        UnlistDomain(globalEventName);

        if (eventManager == null)
        {
            return;
        }
        WaveEvent thisEvent = null;

        if (instance.waveEventDictionary.TryGetValue(globalEventName, out thisEvent))
        {
            thisEvent.RemoveListener(waveListener);
        }
    }
        public void GetData(LocationObject data, WaveEvent waveEvent)
        {
            spawnList      = new List <Transform>();
            this.data      = data;
            this.waveEvent = waveEvent;
            title          = data.titel;
            description    = data.description;
            id             = data.id;
            Location       = data.Location;
            clearOutTarget = data.clearOutTarget;
            isComlete      = false;
            isBonus        = data.isBonus;



            characters = GameObject.FindGameObjectsWithTag("Character");

            //GameObject[] Locations = GameObject.FindGameObjectsWithTag("Location");
            //foreach (GameObject location in Locations)
            //{
            //    if (location.name == data.Location.name)
            //    {
            //        Location = location;
            //        break;
            //    }
            //}
            holder = Instantiate(Location);
            holder.transform.position = data.locationPos.position;
            holder.name = "LocationObjective(" + id + ")";
            loScript    = holder.GetComponent <LocationScript>();

            //if (data.spawnLo)
            //{
            //    Location.transform.position = data.locationPos.position;
            //}
            //else
            //{

            //}
            if (startEvents != null)
            {
                StartEvent(startEvents);
            }
            spawnList.Add(holder.transform);
        }
Пример #13
0
        public void GetData(InteractObject ioQuest, WaveEvent waveEvent)
        {
            this.waveEvent    = waveEvent;
            spawnList         = new List <Transform>();
            description       = ioQuest.description;
            startEvents       = ioQuest.startEvents;
            endEvents         = ioQuest.endEvents;
            data              = ioQuest;
            title             = data.title;
            id                = ioQuest.id;
            isSpawned         = ioQuest.isSpawned;
            interactObjective = ioQuest.interactObjective;
            spawnPos          = ioQuest.spawnPos;

            spawnList.Add(spawnPos);


            if (!isSpawned)     //Om den inte ska spawnas (Den redan finns) ska den gamla raderas
            {
                gameObjects = GameObject.FindGameObjectsWithTag(data.interactObjective.tag);
                foreach (GameObject objects in gameObjects)
                {
                    if (objects.GetComponent <InteractiveScript>().id == id)
                    {
                        Destroy(objects);
                    }
                }
            }
            holder = Instantiate(interactObjective);    //Skapar ett nytt interactive object
            holder.transform.position = spawnPos.position;
            holder.GetComponent <InteractiveScript>().id = id;
            holder.name = "InteractiveObject(" + id + ")";
            foreach (Transform child in holder.transform)
            {
                child.GetComponent <SpriteRenderer>().color = Color.yellow;
            }

            holder.GetComponent <InteractiveScript>().SetActive();
            //interactObjective = GameObject.FindGameObjectWithTag(data.interactObjective.tag);

            if (startEvents != null)
            {
                StartEvent(startEvents);
            }
        }
Пример #14
0
    /// <summary>
    /// Selects event and activates it
    /// </summary>
    /// <param name="_event"></param>
    /// <returns></returns>
    IEnumerator StartEvent(WaveEvent _event)
    {
        yield return(new WaitForSeconds(_event.waitTime));

        if (_event.eventType == WaveEvent.EventType.Barrage)
        {
            powerupActivator.barrage.Enable();
        }
        else if (_event.eventType == WaveEvent.EventType.FastEnemies)
        {
            powerupActivator.fastEnemies.Enable();
        }
        else if (_event.eventType == WaveEvent.EventType.RotatingTargets)
        {
            powerupActivator.moveTargets.Enable();
        }

        yield break;
    }
Пример #15
0
    public static void StartListeningInitWave(UnityAction <Wave> waveListener)
    {
        string globalEventName = EventNames.WaveInit;

        ListDomain(globalEventName);

        WaveEvent thisEvent = null;

        if (instance.waveEventDictionary.TryGetValue(globalEventName, out thisEvent))
        {
            thisEvent.AddListener(waveListener);
        }
        else
        {
            thisEvent = new WaveEvent();
            thisEvent.AddListener(waveListener);
            instance.waveEventDictionary.Add(globalEventName, thisEvent);
        }
    }
Пример #16
0
    public void Update(float time)
    {
        for (int i = 0; _events.Count > i; i++)
        {
            if (time > _events[i].delay)
            {
                _queue.Enqueue(_events[i]);
            }
        }

        while (_queue.Count > 0)
        {
            WaveEvent waveEvent = _queue.Dequeue();
            bool      handled   = _stage.Handle(waveEvent);

            if (handled)
            {
                _events.Remove(waveEvent);
            }
        }
    }
    public void GetData(ScriptableQuest quest, GameObject MissionManager)
    {
        this.quest          = quest;
        this.MissionManager = MissionManager;

        startEvents = quest.startEvents;
        endEvents   = quest.endEvents;
        titel       = quest.missionName;
        id          = quest.name;

        isCompleted = false;
        coObjective = MissionManager.GetComponent <CollectionObjective>();
        loObjective = MissionManager.GetComponent <LocationObjective>();
        ioObjective = MissionManager.GetComponent <InteractionObjective>();
        waveEvent   = MissionManager.GetComponent <WaveEvent>();

        if (startEvents != null)
        {
            StartEvent(startEvents);
        }
        NextObjective();
    }
Пример #18
0
    private static WaveEvent ProcessWaveEvent(XmlNode node)
    {
        WaveEvent wEvent = null;

        string tag = node.Name;

        switch (tag)
        {
        case "dialog":
            string id = node.Attributes["ref"].InnerText;
            wEvent = new DialogEvent(id);
            break;

        case "enemy":
            int type = int.Parse(node.Attributes["type"].InnerText);
            Debug.Log("Type: " + type);
            int qta   = int.Parse(node.Attributes["qta"].InnerText);
            int delay = int.Parse(node.Attributes["delay"].InnerText);
            wEvent = new GenerateEnemyEvent((UFOType)type, qta, delay);
            break;

        case "wait":
            wEvent = new WaitEvent();
            break;

        case "delay":
            int time = int.Parse(node.Attributes["seconds"].InnerText);
            wEvent = new DelayEvent(time);
            break;

        case "powerup":
            //int ptype = int.Parse(node.Attributes["type"].InnerText);
            wEvent = new PowerUpEvent();
            break;
        }

        return(wEvent);
    }
Пример #19
0
    private void InitializeWaves()
    {
        int currentMissionId = PlayerPrefs.GetInt("mission_number");

        MissionDetails missionDetails = GetComponent <MissionDetails>();

        if (missionDetails != null)
        {
            Waves = missionDetails.Waves;

            Debug.Log("Loading Mission " + missionDetails.Name + " : " + missionDetails.Description + " num waves = " + Waves.Count);
        }

        if (endlessSingleEnemyWave != EnemyType.Unknown)
        {
            Waves = new List <Wave> {
                new Wave(new List <WaveEvent>
                {
                    WaveEvent.ShortDelay(),
                    WaveEvent.SpawnSquadron(new Squadron(endlessSingleEnemyWave, SpawnPattern.Center)),
                })
            };
        }
    }
Пример #20
0
    public void Awake()
    {
        _name = "Asteroid Belt";

        _description = "Navigate through a dangerous asteroid belt, guarded by pirates and aliens alike.";

        _waves = new List <Wave>
        {
            /*
             * new Wave(new List<WaveEvent>
             * {
             *  WaveEvent.ShortDelay(),
             *  WaveEvent.SpawnSquadron(new Squadron(EnemyType.AsteroidTurret, SpawnPattern.JostledRow, SpawnZone.Top, 1)),
             *  WaveEvent.ShortDelay(),
             *  WaveEvent.SpawnSquadron(new Squadron(EnemyType.AsteroidTurret, SpawnPattern.JostledRow, SpawnZone.Top, 2)),
             *  WaveEvent.ShortDelay(),
             *  WaveEvent.SpawnSquadron(new Squadron(EnemyType.AsteroidTurret, SpawnPattern.JostledRow, SpawnZone.Top, 3, -1, true)),
             *  WaveEvent.ShortDelay(),
             *  WaveEvent.SpawnSquadron(new Squadron(EnemyType.CrabLeft, SpawnPattern.Column, SpawnZone.Left)),
             *  WaveEvent.LongDelay(),
             *
             * }),
             */
            new Wave(new List <WaveEvent>
            {
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.MediumAsteroid, SpawnPattern.JostledRow)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.MediumAsteroid, SpawnPattern.JostledRow)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.ResourceAsteroid, SpawnPattern.Random, SpawnZone.Top, 1)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.MediumAsteroid, SpawnPattern.JostledRow)),
            }),
            new Wave(new List <WaveEvent>
            {
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.MediumAsteroid, SpawnPattern.JostledRow)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.MediumAsteroid, SpawnPattern.JostledRow)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.ResourceAsteroid, SpawnPattern.Random, SpawnZone.Top, 1)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.MediumAsteroid, SpawnPattern.JostledRow)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.AsteroidTurret, SpawnPattern.JostledRow, SpawnZone.Top, 1)),
            }),
            new Wave(new List <WaveEvent>
            {
                WaveEvent.LongDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.MediumAsteroid, SpawnPattern.Random, SpawnZone.Top, 8)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.MediumAsteroid, SpawnPattern.JostledRow)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.MediumShrapnelAsteroid, SpawnPattern.JostledRow)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.ResourceAsteroid, SpawnPattern.Random, SpawnZone.Top, 1)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.MediumShrapnelAsteroid, SpawnPattern.JostledRow)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.AsteroidTurret, SpawnPattern.JostledRow, SpawnZone.Top, 2, -1, true)),
            }),
            new Wave(new List <WaveEvent>
            {
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.MediumAsteroid, SpawnPattern.JostledRow)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.MediumAsteroid, SpawnPattern.JostledRow)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.ResourceAsteroid, SpawnPattern.Random, SpawnZone.Top, 1)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.MediumShrapnelAsteroid, SpawnPattern.JostledRow)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.AsteroidTurret, SpawnPattern.JostledRow, SpawnZone.Top, 3, -1, true)),
            }),
            new Wave(new List <WaveEvent>
            {
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.MediumAsteroid, SpawnPattern.JostledRow)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.MediumAsteroid, SpawnPattern.JostledRow)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.ResourceAsteroid, SpawnPattern.Random, SpawnZone.Top, 1)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.MediumShrapnelAsteroid, SpawnPattern.JostledRow)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.AsteroidTurret, SpawnPattern.JostledRow, SpawnZone.Top, 4, -1, true)),
            }),
            new Wave(new List <WaveEvent>
            {
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BulletAsteroid, SpawnPattern.Random, SpawnZone.Top, 20, 0.2f)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BulletAsteroid, SpawnPattern.Random, SpawnZone.Top, 20, 0.2f)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BulletAsteroid, SpawnPattern.Random, SpawnZone.Top, 20, 0.2f)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BulletAsteroid, SpawnPattern.Random, SpawnZone.Top, 20, 0.2f)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BulletAsteroid, SpawnPattern.Random, SpawnZone.Top, 20, 0.2f)),
            }),
            new Wave(new List <WaveEvent>
            {
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.MediumAsteroid, SpawnPattern.JostledRow)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.MediumAsteroid, SpawnPattern.JostledRow)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.ResourceAsteroid, SpawnPattern.Random, SpawnZone.Top, 1)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.AsteroidTurret, SpawnPattern.JostledRow, SpawnZone.Top, 5, -1, true)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.HugeAsteroid, SpawnPattern.Center, SpawnZone.TopAsteroid, 1)),
            }),
            new Wave(new List <WaveEvent>
            {
                WaveEvent.LongDelay(),
                WaveEvent.LongDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.RadialTurret, SpawnPattern.Center, SpawnZone.Top, 1)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.RadialTurret, SpawnPattern.JostledRow, SpawnZone.Top, 2, -1, true)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.AsteroidTurret, SpawnPattern.JostledRow, SpawnZone.Top, 2, -1, true)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.RadialTurret, SpawnPattern.JostledRow, SpawnZone.Top, 3, -1, true)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.AsteroidTurret, SpawnPattern.JostledRow, SpawnZone.Top, 3, -1, true)),
            }),
            new Wave(new List <WaveEvent>
            {
                WaveEvent.LongDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BigBoi, SpawnPattern.Center)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.PlainJane, SpawnPattern.FlyingV, SpawnZone.Top, 3)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BigBoi, SpawnPattern.Center)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.PlainJane, SpawnPattern.FlyingV, SpawnZone.Top, 4)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BigBoi, SpawnPattern.FlyingV, SpawnZone.Top, 3)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.PlainJane, SpawnPattern.FlyingV, SpawnZone.Top, 5)),
            }),
            new Wave(new List <WaveEvent>
            {
                WaveEvent.LongDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.CrabLeft, SpawnPattern.Column, SpawnZone.Left)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.CrabRight, SpawnPattern.Column, SpawnZone.Right)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.RadialTurret, SpawnPattern.JostledRow, SpawnZone.Top, 4, -1, true)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.PlainJane, SpawnPattern.FlyingV, SpawnZone.Top, 4)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.ResourceAsteroid, SpawnPattern.Random, SpawnZone.Top, 1)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.AsteroidTurret, SpawnPattern.FlyingV, SpawnZone.Top, 2)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.CrabLeft, SpawnPattern.DoubleColumn, SpawnZone.Left)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.CrabRight, SpawnPattern.DoubleColumn, SpawnZone.Right)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BigBoi, SpawnPattern.FlyingV, SpawnZone.Top, 3)),
            }),
            new Wave(new List <WaveEvent>
            {
                WaveEvent.LongDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BulletAsteroid, SpawnPattern.Random, SpawnZone.Top, 20, 0.2f)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BulletAsteroid, SpawnPattern.Random, SpawnZone.Top, 20, 0.2f)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BulletAsteroid, SpawnPattern.Random, SpawnZone.Top, 20, 0.2f)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BulletAsteroid, SpawnPattern.Random, SpawnZone.Top, 20, 0.2f)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BulletAsteroid, SpawnPattern.Random, SpawnZone.Top, 20, 0.2f)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BulletAsteroid, SpawnPattern.Random, SpawnZone.Top, 20, 0.2f)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BulletAsteroid, SpawnPattern.Random, SpawnZone.Top, 20, 0.2f)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BulletAsteroid, SpawnPattern.Random, SpawnZone.Top, 20, 0.2f)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BulletAsteroid, SpawnPattern.Random, SpawnZone.Top, 20, 0.2f)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BulletAsteroid, SpawnPattern.Random, SpawnZone.Top, 20, 0.2f)),
            }),
            new Wave(new List <WaveEvent>
            {
                WaveEvent.LongDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.RadialTurret, SpawnPattern.Center, SpawnZone.Top, 1)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.RadialTurret, SpawnPattern.JostledRow, SpawnZone.Top, 2, -1, true)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.AsteroidTurret, SpawnPattern.JostledRow, SpawnZone.Top, 2, -1, true)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.ResourceAsteroid, SpawnPattern.Random, SpawnZone.Top, 1)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.RadialTurret, SpawnPattern.JostledRow, SpawnZone.Top, 3, -1, true)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.AsteroidTurret, SpawnPattern.JostledRow, SpawnZone.Top, 3, -1, true)),
            }),
            new Wave(new List <WaveEvent>
            {
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.MediumAsteroid, SpawnPattern.JostledRow)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.MediumAsteroid, SpawnPattern.JostledRow)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.ResourceAsteroid, SpawnPattern.Random, SpawnZone.Top, 1)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.AsteroidTurret, SpawnPattern.JostledRow, SpawnZone.Top, 5, -1, true)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.HugeAsteroid, SpawnPattern.Center, SpawnZone.TopAsteroid, 1)),
            }),
            new Wave(new List <WaveEvent>
            {
                WaveEvent.LongDelay(),
                WaveEvent.LongDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.Shockwave, SpawnPattern.Center, SpawnZone.Top, 1)),
                WaveEvent.LongDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.NovaSaucer, SpawnPattern.Center, SpawnZone.Top, 1)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.NovaSaucer, SpawnPattern.JostledRow, SpawnZone.Top, 2, -1, true)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.AsteroidTurret, SpawnPattern.JostledRow, SpawnZone.Top, 2, -1, true)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.NovaSaucer, SpawnPattern.JostledRow, SpawnZone.Top, 3, -1, true)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.AsteroidTurret, SpawnPattern.JostledRow, SpawnZone.Top, 3, -1, true)),
            }),
            new Wave(new List <WaveEvent>
            {
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.Canon, SpawnPattern.Center, SpawnZone.Top, 1)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.AsteroidTurret, SpawnPattern.Center, SpawnZone.Top, 1)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.Canon, SpawnPattern.JostledRow, SpawnZone.Top, 2, -1, true)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.PlainJane, SpawnPattern.JostledRow, SpawnZone.Top, 6, -1, true)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.CrabLeft, SpawnPattern.Column, SpawnZone.Left)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BigBoi, SpawnPattern.JostledRow, SpawnZone.Top, 3, -1, true)),
            }),
            new Wave(new List <WaveEvent>
            {
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.Speedster, SpawnPattern.Random, SpawnZone.Top, 1)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.Speedster, SpawnPattern.JostledRow, SpawnZone.Top, 2, -1, true)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.Canon, SpawnPattern.JostledRow, SpawnZone.Top, 2, -1, true)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.PlainJane, SpawnPattern.JostledRow, SpawnZone.Top, 6, -1, true)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.Speedster, SpawnPattern.JostledRow, SpawnZone.Top, 2, -1, true)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BigBoi, SpawnPattern.JostledRow, SpawnZone.Top, 3, -1, true)),
            }),
            new Wave(new List <WaveEvent>
            {
                WaveEvent.LongDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.NovaSaucer, SpawnPattern.Center, SpawnZone.Top, 1)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.NovaSaucer, SpawnPattern.JostledRow, SpawnZone.Top, 2, -1, true)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.RadialTurret, SpawnPattern.JostledRow, SpawnZone.Top, 2, -1, true)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.NovaSaucer, SpawnPattern.JostledRow, SpawnZone.Top, 3, -1, true)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.Canon, SpawnPattern.JostledRow, SpawnZone.Top, 2, -1, true)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BigBoi, SpawnPattern.JostledRow, SpawnZone.Top, 3, -1, true)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.AsteroidTurret, SpawnPattern.Center, SpawnZone.Top, 1)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.ResourceAsteroid, SpawnPattern.Random, SpawnZone.Top, 1)),
            }),
            new Wave(new List <WaveEvent>
            {
                WaveEvent.LongDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BulletAsteroid, SpawnPattern.Random, SpawnZone.Top, 20, 0.2f)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BulletAsteroid, SpawnPattern.Random, SpawnZone.Top, 20, 0.2f)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BulletAsteroid, SpawnPattern.Random, SpawnZone.Top, 20, 0.2f)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BulletAsteroid, SpawnPattern.Random, SpawnZone.Top, 20, 0.2f)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BulletAsteroid, SpawnPattern.Random, SpawnZone.Top, 20, 0.2f)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BulletAsteroid, SpawnPattern.Random, SpawnZone.Top, 20, 0.2f)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BulletAsteroid, SpawnPattern.Random, SpawnZone.Top, 20, 0.2f)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BulletAsteroid, SpawnPattern.Random, SpawnZone.Top, 20, 0.2f)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BulletAsteroid, SpawnPattern.Random, SpawnZone.Top, 20, 0.2f)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BulletAsteroid, SpawnPattern.Random, SpawnZone.Top, 20, 0.2f)),
            }),
            new Wave(new List <WaveEvent>
            {
                WaveEvent.LongDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.NovaSaucer, SpawnPattern.Center, SpawnZone.Top, 1)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.NovaSaucer, SpawnPattern.JostledRow, SpawnZone.Top, 2, -1, true)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.RadialTurret, SpawnPattern.JostledRow, SpawnZone.Top, 2, -1, true)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.NovaSaucer, SpawnPattern.JostledRow, SpawnZone.Top, 3, -1, true)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.Canon, SpawnPattern.JostledRow, SpawnZone.Top, 2, -1, true)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.BigBoi, SpawnPattern.JostledRow, SpawnZone.Top, 3, -1, true)),
            }),
            new Wave(new List <WaveEvent>
            {
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.MediumAsteroid, SpawnPattern.JostledRow)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.MediumAsteroid, SpawnPattern.JostledRow)),
                WaveEvent.ShortDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.ResourceAsteroid, SpawnPattern.Random, SpawnZone.Top, 1)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.AsteroidTurret, SpawnPattern.JostledRow, SpawnZone.Top, 5, -1, true)),
                WaveEvent.MediumDelay(),
                WaveEvent.SpawnSquadron(new Squadron(EnemyType.HugeAsteroid, SpawnPattern.Center, SpawnZone.TopAsteroid, 1)),
            }),
        };
    }
Пример #21
0
 public void Add(WaveEvent waveEvent) => _events.Add(waveEvent);
Пример #22
0
    // Update is called once per frame
    void Update()
    {
        if (PlayerControl.playerState == PlayerState.dead)
        {
            return;
        }

        time += Time.deltaTime;
        while (waveEvents.Count > 0 && time >= waveEvents[0].time)
        {
            WaveEvent e = waveEvents[0];
            waveEvents.RemoveAt(0);

            switch (e.eventType)
            {
            case WaveEventType.seed:
                GameObject seedObject = Instantiate(prototypeSeed);
                seedObject.transform.position = e.position;
                break;

            case WaveEventType.towerAttack:
                audioThunder.transform.position = GetTowerPosition(e.tower);
                audioThunder.Play();
                Vector3    direction = PlayerControl.playerPosition - GetTowerPosition(e.tower);
                RaycastHit hitInfo;
                Debug.DrawRay(GetTowerPosition(e.tower), direction);
                if (Physics.Raycast(GetTowerPosition(e.tower), direction, out hitInfo, 200f, towerRaycastMask.value))
                {
                    PlayerControl player = hitInfo.collider.gameObject.GetComponent <PlayerControl>();

                    Vector3 start = GetTowerPosition(e.tower);
                    Vector3 end   = hitInfo.point;
                    if (player != null)
                    {
                        end += Vector3.down * 0.6f;
                        player.Zapped();
                    }
                    else
                    {
                    }
                    overlayFlash.Go(0.2f);
                    GameObject     lightningChainObject = Instantiate(protoLightningChain);
                    LightningChain chain = lightningChainObject.GetComponent <LightningChain>();
                    chain.MakeChain(start, end, 1f);
                }
                break;

            case WaveEventType.towerWarmup:
                GameObject     lightningChainObjectW = Instantiate(protoLightningChain);
                LightningChain chainW = lightningChainObjectW.GetComponent <LightningChain>();
                chainW.MakeChain(GetTowerPosition(e.tower) - Vector3.up * 3f, GetTowerPosition(e.tower) + Vector3.up * 15f, 10f);
                audioCharge.transform.position = GetTowerPosition(e.tower);
                audioCharge.Play();
                break;

            case WaveEventType.gemDrop:
                GameObject gem = Instantiate(protoGem);
                gem.transform.position = e.position;
                break;
            }

            return;
        }
    }
Пример #23
0
 public void AddEvent(WaveEvent _event)
 {
     events.Add(_event);
 }