Exemple #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();
 }
Exemple #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);
        }
    }
Exemple #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);
        }
    }
    public static void TriggerGlobalEvent(string globalEventName, Wave wave)
    {
        WaveEvent thisEvent = null;

        if (instance.waveEventDictionary.TryGetValue(globalEventName, out thisEvent))
        {
            thisEvent.Invoke(wave);
        }
    }
Exemple #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()));
        }
    }
Exemple #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));
    }
Exemple #7
0
    public void NextEvent()
    {
        WaveEvent wevent = wave.GetNext();

        if (wevent != null)
        {
            wevent.TriggerEvent();
        }
        else
        {
            GameManager.Instance.OnWaveEnd(wave.GetID());
        }
    }
Exemple #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();
    }
Exemple #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(),
        }));
    }
Exemple #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();
    }
    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);
        }
Exemple #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);
            }
        }
Exemple #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;
    }
    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);
        }
    }
Exemple #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();
    }
Exemple #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);
    }
Exemple #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)),
                })
            };
        }
    }
    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)),
            }),
        };
    }
Exemple #21
0
 public void Add(WaveEvent waveEvent) => _events.Add(waveEvent);
Exemple #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;
        }
    }
Exemple #23
0
 public void AddEvent(WaveEvent _event)
 {
     events.Add(_event);
 }