private void OnReceive(NetworkPacket pack, string id) { switch (pack.Header) { case PacketType.BarrelPositionPack: lock (barrelLock) barrelPositions.Enqueue(pack as BarrelPositionPack); break; case PacketType.WaveSpawnPack: this.waveStartPack = (WaveStartPack)pack; break; } }
void Update() { while (toReactivate.Count > 0) { toReactivate.Dequeue().SetActive(true); } if (waveStartPack != null) { waveStartPack = null; waveaction(); } if (barrelPositions.Count > 0) { lock (barrelLock) { while (barrelPositions.Count > 0) { Vector3 position = barrelPositions.Dequeue().position; var newObject = (GameObject)Instantiate(exploding_barrel, position, Quaternion.identity); newObject.transform.position = position; newObject.tag = "barrel"; } } } if (wavenum == 21) //you win if wave 20 is cleared { SceneManager.LoadScene("win"); } if (howmanyinwave != 0) //fill up the wave bar with how many enemies are to be cleared { rate_orks = (float)numorks / howmanyinwave; wavebar.fillAmount = Mathf.Lerp(wavebar.fillAmount, (float)numorks / howmanyinwave, Time.deltaTime * 2f); } orksonscreen = GameObject.FindGameObjectsWithTag("Ork"); numorks = orksonscreen.Length; //HOW MANY ENEMIES CURRENTLY IN GAME if (Network.IsHost) { if (numorks > 0 && numorks < howmanyinwave && (System.DateTime.Now - lastCheck).TotalSeconds >= 30) { if (numorks == numorksLastCheck) { foreach (var obj in orksonscreen) { Root rt = obj.GetComponent <Root>(); rt.TakeDamege(2 * (int)rt.HP); } numorks = 0; } else { lastCheck = System.DateTime.Now; numorksLastCheck = howmanyinwave; } } } players = GameObject.FindGameObjectsWithTag("Player"); playernum = players.Length; if (wavenum < 2) //only one spawn point active { currentspawnpts.Add(sh1); sh1.SetActive(true); sh2.SetActive(false); sh3.SetActive(false); sh4.SetActive(false); if (spawnflash) { sh1.GetComponent <CanvasGroup>().alpha = 1; } else { sh1.GetComponent <CanvasGroup>().alpha -= 0.1f; } } else if (wavenum > 1 && wavenum < 7) //only two spawn points active { currentspawnpts.Add(sh2); sh1.SetActive(true); sh2.SetActive(true); sh3.SetActive(false); sh4.SetActive(false); if (spawnflash) { sh1.GetComponent <CanvasGroup>().alpha = 1; sh2.GetComponent <CanvasGroup>().alpha = 1; } else { sh1.GetComponent <CanvasGroup>().alpha -= 0.1f; sh2.GetComponent <CanvasGroup>().alpha -= 0.1f; } } else if (wavenum > 6 && wavenum < 11) //three spawn points active { currentspawnpts.Add(sh3); sh1.SetActive(true); sh2.SetActive(true); sh3.SetActive(true); sh4.SetActive(false); if (spawnflash) { sh1.GetComponent <CanvasGroup>().alpha = 1; sh2.GetComponent <CanvasGroup>().alpha = 1; sh3.GetComponent <CanvasGroup>().alpha = 1; } else { sh1.GetComponent <CanvasGroup>().alpha -= 0.1f; sh2.GetComponent <CanvasGroup>().alpha -= 0.1f; sh3.GetComponent <CanvasGroup>().alpha -= 0.1f; } } else //all four spawn points active { currentspawnpts.Add(sh4); sh1.SetActive(true); sh2.SetActive(true); sh3.SetActive(true); sh4.SetActive(true); if (spawnflash) { sh1.GetComponent <CanvasGroup>().alpha = 1; sh2.GetComponent <CanvasGroup>().alpha = 1; sh3.GetComponent <CanvasGroup>().alpha = 1; sh4.GetComponent <CanvasGroup>().alpha = 1; } else { sh1.GetComponent <CanvasGroup>().alpha -= 0.1f; sh2.GetComponent <CanvasGroup>().alpha -= 0.1f; sh3.GetComponent <CanvasGroup>().alpha -= 0.1f; sh4.GetComponent <CanvasGroup>().alpha -= 0.1f; } } if (numorks < 1) //you've cleared the wave { wavebreak(); keepaddingme += 1; wave_finished(); breakover = true; if (!isCoroutineExecuting && wavenum < 21) { StartCoroutine(MyDelayMethod(12f)); //THIS IS HOW LONG THE BREAK LASTS BETWEEN WAVES } } else { keepaddingme = 0; } if (wavenum > 1 && wavenum % 2 != 0 && wavenum % 5 != 0 && !saidwagh) //orks yell wagh { StartCoroutine(wagh(8f)); } if (wavenum > 3 && wavenum % 5 != 0 && !saidinsult) //orks yell insult { float randtime = Random.Range(14, 24); StartCoroutine(insult(randtime)); } else if (wavenum == 2 && !saidinsult) //orks yell insult { StartCoroutine(insult(4f)); } }