void DeactivateDarkness() { elementalPower = GameManager.PowerType.None; //GetComponent<MeshRenderer>().material = normalMaterial; VFX.transform.GetChild(0).gameObject.transform.GetChild(0).gameObject.SetActive(VFX.transform.GetChild(1).gameObject.transform.GetChild(0).gameObject.activeSelf); VFX.transform.GetChild(0).gameObject.transform.GetChild(4).gameObject.SetActive(VFX.transform.GetChild(1).gameObject.transform.GetChild(4).gameObject.activeSelf); VFX.transform.GetChild(0).gameObject.transform.GetChild(5).gameObject.SetActive(VFX.transform.GetChild(1).gameObject.transform.GetChild(5).gameObject.activeSelf); VFX.transform.GetChild(0).gameObject.transform.GetChild(6).gameObject.SetActive(VFX.transform.GetChild(1).gameObject.transform.GetChild(6).gameObject.activeSelf); if (behaviouralPower == GameManager.PowerType.LargeOrb) { for (int i = 0; i < 4; i++) { VFX.transform.GetChild(1).gameObject.transform.GetChild(i).transform.localScale /= maxScale; } for (int i = 0; i < 4; i++) { VFX.transform.GetChild(0).gameObject.transform.GetChild(i).transform.localScale *= maxScale; } } VFX.transform.GetChild(1).gameObject.SetActive(false); VFX.transform.GetChild(0).gameObject.SetActive(true); }
/// <summary> /// Update the UI power slot according to the new power obtained /// </summary> /// <param name="slot">use to know the slot to update</param> /// <param name="player1">use to know the player affected</param> /// <param name="powerSlot">refers to the new powerType obtained</param> public void UpdatePowerSlot(int slot, bool player1, GameManager.PowerType powerSlot) { busySlot[slot] = powerSlot; switch (slot) { case 1: if (player1) { GetImage(elementalPowerFox).sprite = ImageAssignment(powerSlot); } else { GetImage(elementalPowerRaccoon).sprite = ImageAssignment(powerSlot); } break; case 2: if (player1) { GetImage(behaviouralPowerFox).sprite = ImageAssignment(powerSlot); } else { GetImage(behaviouralPowerRaccoon).sprite = ImageAssignment(powerSlot); } break; } }
void DeactivateShield() { behaviouralPower = GameManager.PowerType.None; GameManager.gameManager.shieldP1 = 0; GameManager.gameManager.shieldP2 = 0; transform.GetChild(0).GetComponent <MeshRenderer>().material = normalMaterial; }
//==========DARKNESS========== void ActivateDarkness() { soundEmitter.PlaySound(2); elementalPower = GameManager.PowerType.Darkness; //GetComponent<MeshRenderer>().material = darknessMaterial; VFX.transform.GetChild(1).gameObject.transform.GetChild(0).gameObject.SetActive(VFX.transform.GetChild(0).gameObject.transform.GetChild(0).gameObject.activeSelf); VFX.transform.GetChild(1).gameObject.transform.GetChild(4).gameObject.SetActive(VFX.transform.GetChild(0).gameObject.transform.GetChild(4).gameObject.activeSelf); VFX.transform.GetChild(1).gameObject.transform.GetChild(5).gameObject.SetActive(VFX.transform.GetChild(0).gameObject.transform.GetChild(5).gameObject.activeSelf); VFX.transform.GetChild(1).gameObject.transform.GetChild(6).gameObject.SetActive(VFX.transform.GetChild(0).gameObject.transform.GetChild(6).gameObject.activeSelf); if (behaviouralPower == GameManager.PowerType.LargeOrb) { for (int i = 0; i < 4; i++) { VFX.transform.GetChild(0).gameObject.transform.GetChild(i).transform.localScale /= maxScale; } for (int i = 0; i < 4; i++) { VFX.transform.GetChild(1).gameObject.transform.GetChild(i).transform.localScale *= maxScale; } } VFX.transform.GetChild(0).gameObject.SetActive(false); VFX.transform.GetChild(1).gameObject.SetActive(true); elementalDurationCoroutine = StartCoroutine(DurationCoroutine(GameManager.PowerType.Darkness, darknessDuration)); }
public void UpdateDroppedPower(GameManager.PowerType droppedPower) { orbPower.sprite = ImageAssignment(droppedPower); if (droppedPower != GameManager.PowerType.None) { StartCoroutine(DropFeedback(drop, GameManager.gameManager.orb.transform, orbPower.transform)); } }
/// <summary> /// Check if a dropped power is in the orb to give it to a player /// </summary> public void CheckPowerAttribution(string mode, bool player1) { if (droppedPower != GameManager.PowerType.None) { PlayerController player, otherPlayer; if (player1) { player = GameManager.gameManager.player1.GetComponent <PlayerController>(); otherPlayer = GameManager.gameManager.player2.GetComponent <PlayerController>(); } else { player = GameManager.gameManager.player2.GetComponent <PlayerController>(); otherPlayer = GameManager.gameManager.player1.GetComponent <PlayerController>(); } if ((GameManager.isElemental(droppedPower) && player.elementalPowerSlot == GameManager.PowerType.None) || (!GameManager.isElemental(droppedPower) && player.behaviouralPowerSlot == GameManager.PowerType.None)) { player.AttributePower(droppedPower); droppedPower = GameManager.PowerType.None; //UpdateUI GameManager.gameManager.UIManager.UpdateDroppedPower(droppedPower); } else if ((GameManager.isElemental(droppedPower) && otherPlayer.elementalPowerSlot == GameManager.PowerType.None) || (!GameManager.isElemental(droppedPower) && otherPlayer.behaviouralPowerSlot == GameManager.PowerType.None)) { reflectedDrop = true; } else { switch (mode) { case "hit": case "miss": player.AttributePower(droppedPower); droppedPower = GameManager.PowerType.None; //UpdateUI GameManager.gameManager.UIManager.UpdateDroppedPower(droppedPower); break; case "amortize": if (reflectedDrop) { player.AttributePower(droppedPower); droppedPower = GameManager.PowerType.None; //UpdateUI GameManager.gameManager.UIManager.UpdateDroppedPower(droppedPower); } else { reflectedDrop = true; } break; } } } }
/// <summary> /// apply the power on the orb if not None /// </summary> void CheckPowerActivation() { if (powerToApply != GameManager.PowerType.None) { string mode = GetComponent <PlayerController>().player1 ? "player1" : "player2"; orbController.GetComponent <PowerController>().ActivatePower(powerToApply, mode); gameObject.GetComponent <PlayerController>().selectedBehavioralFx.GetComponent <ParticleSystem>().Stop(); gameObject.GetComponent <PlayerController>().selectedElementalFx.GetComponent <ParticleSystem>().Stop(); powerToApply = GameManager.PowerType.None; } }
/// <summary> /// Deactivate the powerToDeactivate /// </summary> /// <param name="powerToDeactivate"></param> public void DeactivatePower(GameManager.PowerType powerToDeactivate) { if (GameManager.isElemental(powerToDeactivate) && elementalDurationCoroutine != null) { StopCoroutine(elementalDurationCoroutine); } else if (!GameManager.isElemental(powerToDeactivate) && behaviouralDurationCoroutine != null) { StopCoroutine(behaviouralDurationCoroutine); } switch (powerToDeactivate) { case GameManager.PowerType.LargeOrb: DeactivateLargeOrb(); break; case GameManager.PowerType.Vortex: DeactivateVortex(); break; case GameManager.PowerType.LeechLife: DeactivateLeechLife(); break; case GameManager.PowerType.Slug: DeactivateSlug(); break; case GameManager.PowerType.Shield: DeactivateShield(); break; case GameManager.PowerType.Ice: DeactivateIce(); break; case GameManager.PowerType.Fire: DeactivateFire(); break; case GameManager.PowerType.Electric: DeactivateElectric(); break; case GameManager.PowerType.Darkness: DeactivateDarkness(); break; default: break; } }
/// <summary> /// Launch cooldown visualisation based on power /// </summary> /// <param name="power"></param> /// <param name="cd"></param> public IEnumerator Cooldown(GameManager.PowerType power, float cd, bool player1) { // lancer start cooldown sur les ( p1 et p2) slot assigner au power int slot = getSlotByPower(power); if (slot > -1) { switch (slot) { case 1: if (player1) { yield return(StartCoroutine(startCooldown(cd, GetCdImage(elementalPowerFox)))); elementalReadyFox.GetComponent <ParticleSystem>().Play(); } else { yield return(StartCoroutine(startCooldown(cd, GetCdImage(elementalPowerRaccoon)))); elementalReadyRaccoon.GetComponent <ParticleSystem>().Play(); } break; case 2: if (player1) { yield return(StartCoroutine(startCooldown(cd, GetCdImage(behaviouralPowerFox)))); behaviouralReadyFox.GetComponent <ParticleSystem>().Play(); } else { yield return(StartCoroutine(startCooldown(cd, GetCdImage(behaviouralPowerRaccoon)))); behaviouralReadyRaccoon.GetComponent <ParticleSystem>().Play(); } break; default: break; } } else { Debug.LogError("NO SLOT FOUND FOR THIS POWER"); } yield return(null); }
public void RespawnReset() { droppedPower = GameManager.PowerType.None; GameManager.gameManager.UIManager.UpdateDroppedPower(droppedPower); DeactivatePower(elementalPower); DeactivatePower(behaviouralPower); StopAllCoroutines(); canBeActivatedByPlayer1 = new List <bool> { true, true, true, true, true, true, true, true, true }; canBeActivatedByPlayer2 = new List <bool> { true, true, true, true, true, true, true, true, true }; }
void DeactivateVortex() { behaviouralPower = GameManager.PowerType.None; //transform.GetChild(0).GetComponent<MeshRenderer>().material = normalMaterial; VFX.transform.GetChild(5).gameObject.SetActive(false); for (int i = 0; i < 5; i++) { if (VFX.transform.GetChild(i).gameObject.activeSelf) { VFX.transform.GetChild(i).gameObject.transform.GetChild(4).gameObject.SetActive(false); VFX.transform.GetChild(i).gameObject.transform.GetChild(0).gameObject.SetActive(true); } } }
int getSlotByPower(GameManager.PowerType power) { if (busySlot.ContainsValue(power)) { foreach (KeyValuePair <int, GameManager.PowerType> item in busySlot) { if (item.Value == power) { return(item.Key); } } } return(-1); }
void DeactivateLargeOrb() { behaviouralPower = GameManager.PowerType.None; //transform.localScale = new Vector3(minScale, minScale, minScale); //transform.GetChild(0).GetComponent<MeshRenderer>().material = normalMaterial; for (int i = 0; i < 5; i++) { if (VFX.transform.GetChild(i).gameObject.activeSelf) { for (int j = 0; j < 4; j++) { VFX.transform.GetChild(i).gameObject.transform.GetChild(j).transform.localScale /= maxScale; } } } }
//==========VORTEX========== void ActivateVortex() { soundEmitter.PlaySound(5); behaviouralPower = GameManager.PowerType.Vortex; behaviouralDurationCoroutine = StartCoroutine(VortexPower()); //transform.GetChild(0).GetComponent<MeshRenderer>().material = vortexMaterial; VFX.transform.GetChild(5).gameObject.SetActive(true); for (int i = 0; i < 5; i++) { if (VFX.transform.GetChild(i).gameObject.activeSelf) { VFX.transform.GetChild(i).gameObject.transform.GetChild(0).gameObject.SetActive(false); VFX.transform.GetChild(i).gameObject.transform.GetChild(4).gameObject.SetActive(true); } } }
/// <summary> /// Gives a power dropped by an enemy, and place it on the good slot /// </summary> public void AttributePower(GameManager.PowerType newPower) { soundEmitter.PlaySound(4); if (GameManager.isElemental(newPower)) { elementalPowerSlot = newPower; GameManager.gameManager.UIManager.UpdatePowerSlot(1, player1, newPower); GameManager.gameManager.UIManager.OrbToPowerSlotFeedback(player1, true); } else { behaviouralPowerSlot = newPower; GameManager.gameManager.UIManager.UpdatePowerSlot(2, player1, newPower); GameManager.gameManager.UIManager.OrbToPowerSlotFeedback(player1, false); } GameManager.gameManager.orb.GetComponent <PowerController>().reflectedDrop = false; }
//==========SLUG========== void ActivateSlug() { soundEmitter.PlaySound(4); behaviouralPower = GameManager.PowerType.Slug; behaviouralDurationCoroutine = StartCoroutine(InstanciateSlug()); //transform.GetChild(0).GetComponent<MeshRenderer>().material = slugMaterial; VFX.transform.GetChild(7).gameObject.SetActive(true); for (int i = 0; i < 5; i++) { if (VFX.transform.GetChild(i).gameObject.activeSelf) { VFX.transform.GetChild(i).gameObject.transform.GetChild(0).gameObject.SetActive(false); VFX.transform.GetChild(i).gameObject.transform.GetChild(6).gameObject.SetActive(true); } } }
void ApplyFXTail(GameManager.PowerType power) { if (power.CompareTo(GameManager.PowerType.Darkness) == 0) { VFXTail.transform.GetChild(0).gameObject.SetActive(true); } else if (power.CompareTo(GameManager.PowerType.Fire) == 0) { VFXTail.transform.GetChild(1).gameObject.SetActive(true); } else if (power.CompareTo(GameManager.PowerType.Electric) == 0) { VFXTail.transform.GetChild(2).gameObject.SetActive(true); } else if (power.CompareTo(GameManager.PowerType.Ice) == 0) { VFXTail.transform.GetChild(3).gameObject.SetActive(true); } else if (power.CompareTo(GameManager.PowerType.Vortex) == 0) { VFXTail.transform.GetChild(4).gameObject.SetActive(true); } else if (power.CompareTo(GameManager.PowerType.LeechLife) == 0) { VFXTail.transform.GetChild(5).gameObject.SetActive(true); } else if (power.CompareTo(GameManager.PowerType.Slug) == 0) { VFXTail.transform.GetChild(6).gameObject.SetActive(true); } else if (power.CompareTo(GameManager.PowerType.LargeOrb) == 0) { VFXTail.transform.GetChild(7).gameObject.SetActive(true); } else if (power.CompareTo(GameManager.PowerType.None) == 0) { for (int i = 0; i < VFXTail.transform.childCount; i++) { VFXTail.transform.GetChild(i).gameObject.SetActive(false); } } }
//==========LEACHLIFE========== void ActivateLeechLife() { soundEmitter.PlaySound(7); behaviouralPower = GameManager.PowerType.LeechLife; //transform.GetChild(0).GetComponent<MeshRenderer>().material = leechLifeMaterial; VFX.transform.GetChild(6).gameObject.SetActive(true); for (int i = 0; i < 5; i++) { if (VFX.transform.GetChild(i).gameObject.activeSelf) { VFX.transform.GetChild(i).gameObject.transform.GetChild(0).gameObject.SetActive(false); VFX.transform.GetChild(i).gameObject.transform.GetChild(5).gameObject.SetActive(true); } } behaviouralDurationCoroutine = StartCoroutine(DurationCoroutine(GameManager.PowerType.LeechLife, leechLifeDuration)); }
//==========BEHAVIORAL POWERS FUNCTIONS========== #region LargeOrb //==========LARGEORB========== void ActivateLargeOrb() { soundEmitter.PlaySound(6); behaviouralPower = GameManager.PowerType.LargeOrb; //transform.localScale = new Vector3(maxScale, maxScale, maxScale); //transform.GetChild(0).GetComponent<MeshRenderer>().material = normalMaterial; for (int i = 0; i < 5; i++) { if (VFX.transform.GetChild(i).gameObject.activeSelf) { for (int j = 0; j < 4; j++) { VFX.transform.GetChild(i).gameObject.transform.GetChild(j).transform.localScale *= maxScale; } } } behaviouralDurationCoroutine = StartCoroutine(DurationCoroutine(GameManager.PowerType.LargeOrb, largeOrbDuration)); }
/// <summary> /// Assign the image corresponding to the power /// </summary> /// <param name="powerType">refers to the new powerType obtained</param> /// <returns></returns> public Sprite ImageAssignment(GameManager.PowerType powerType) { switch (powerType) { case GameManager.PowerType.None: return(none); case GameManager.PowerType.LargeOrb: return(largeOrb); case GameManager.PowerType.Vortex: return(vortex); case GameManager.PowerType.LeechLife: return(leechLife); case GameManager.PowerType.Slug: return(slug); case GameManager.PowerType.Shield: return(shield); case GameManager.PowerType.Ice: return(ice); case GameManager.PowerType.Fire: return(fire); case GameManager.PowerType.Electric: return(electric); case GameManager.PowerType.Darkness: return(darkness); default: return(none); } }
public IEnumerator cooldownCoroutine(GameManager.PowerType power, float cooldown, string mode) { switch (mode) { case "forced": break; case "player1": canBeActivatedByPlayer1[(int)power - 1] = false; StartCoroutine(GameManager.gameManager.UIManager.Cooldown(power, cooldown, true)); yield return(new WaitForSeconds(cooldown)); canBeActivatedByPlayer1[(int)power - 1] = true; break; case "player2": canBeActivatedByPlayer2[(int)power - 1] = false; StartCoroutine(GameManager.gameManager.UIManager.Cooldown(power, cooldown, false)); yield return(new WaitForSeconds(cooldown)); canBeActivatedByPlayer2[(int)power - 1] = true; break; } }
//==========FIRE========== void ActivateFire(bool forced) { soundEmitter.PlaySound(0); elementalPower = GameManager.PowerType.Fire; //GetComponent<MeshRenderer>().material = fireMaterial; VFX.transform.GetChild(2).gameObject.transform.GetChild(0).gameObject.SetActive(VFX.transform.GetChild(0).gameObject.transform.GetChild(0).gameObject.activeSelf); VFX.transform.GetChild(2).gameObject.transform.GetChild(4).gameObject.SetActive(VFX.transform.GetChild(0).gameObject.transform.GetChild(4).gameObject.activeSelf); VFX.transform.GetChild(2).gameObject.transform.GetChild(5).gameObject.SetActive(VFX.transform.GetChild(0).gameObject.transform.GetChild(5).gameObject.activeSelf); VFX.transform.GetChild(2).gameObject.transform.GetChild(6).gameObject.SetActive(VFX.transform.GetChild(0).gameObject.transform.GetChild(6).gameObject.activeSelf); if (behaviouralPower == GameManager.PowerType.LargeOrb) { for (int i = 0; i < 4; i++) { VFX.transform.GetChild(0).gameObject.transform.GetChild(i).transform.localScale /= maxScale; } for (int i = 0; i < 4; i++) { VFX.transform.GetChild(2).gameObject.transform.GetChild(i).transform.localScale *= maxScale; } } VFX.transform.GetChild(0).gameObject.SetActive(false); VFX.transform.GetChild(2).gameObject.SetActive(true); if (forced) { elementalDurationCoroutine = StartCoroutine(DurationCoroutine(GameManager.PowerType.Fire, fireDurationBrazier)); isActivatedByBrazier = true; } else { elementalDurationCoroutine = StartCoroutine(DurationCoroutine(GameManager.PowerType.Fire, fireDuration)); } }
/// <summary> /// Activate the powerToActivate, deactivate the power of the same type if there's already an active one /// </summary> /// <param name="powerToActivate"></param> public void ActivatePower(GameManager.PowerType powerToActivate, string mode) { bool activate = false; switch (mode) { case "forced": activate = true; break; case "player1": activate = canBeActivatedByPlayer1[(int)powerToActivate - 1]; break; case "player2": activate = canBeActivatedByPlayer2[(int)powerToActivate - 1]; break; } if (activate) { if (GameManager.isElemental(powerToActivate) && elementalPower != GameManager.PowerType.None) { DeactivatePower(elementalPower); } else if (!GameManager.isElemental(powerToActivate) && behaviouralPower != GameManager.PowerType.None) { DeactivatePower(behaviouralPower); } switch (powerToActivate) { case GameManager.PowerType.LargeOrb: StartCoroutine(cooldownCoroutine(GameManager.PowerType.LargeOrb, largeOrbCooldown, mode)); ActivateLargeOrb(); break; case GameManager.PowerType.Vortex: StartCoroutine(cooldownCoroutine(GameManager.PowerType.Vortex, vortexCooldown, mode)); ActivateVortex(); break; case GameManager.PowerType.LeechLife: StartCoroutine(cooldownCoroutine(GameManager.PowerType.LeechLife, leechLifeCooldown, mode)); ActivateLeechLife(); break; case GameManager.PowerType.Slug: StartCoroutine(cooldownCoroutine(GameManager.PowerType.Slug, slugCooldown, mode)); ActivateSlug(); break; case GameManager.PowerType.Shield: StartCoroutine(cooldownCoroutine(GameManager.PowerType.Shield, shieldCooldown, mode)); ActivateShield(); break; case GameManager.PowerType.Ice: StartCoroutine(cooldownCoroutine(GameManager.PowerType.Ice, iceCooldown, mode)); ActivateIce(); break; case GameManager.PowerType.Fire: StartCoroutine(cooldownCoroutine(GameManager.PowerType.Fire, fireCooldown, mode)); if (mode == "forced") { ActivateFire(true); } else { ActivateFire(false); } break; case GameManager.PowerType.Electric: StartCoroutine(cooldownCoroutine(GameManager.PowerType.Electric, electricCooldown, mode)); ActivateElectric(); break; case GameManager.PowerType.Darkness: StartCoroutine(cooldownCoroutine(GameManager.PowerType.Darkness, darknessCooldown, mode)); ActivateDarkness(); break; } } }
public void RespawnReset() { powerToApply = GameManager.PowerType.None; StopAllCoroutines(); hitting = false; }
//==========SHIELD========== void ActivateShield() { behaviouralPower = GameManager.PowerType.Shield; currentShieldStack = 2; transform.GetChild(0).GetComponent <MeshRenderer>().material = shieldMaterial; }
//==========DURATION AND COOLDOWN========== IEnumerator DurationCoroutine(GameManager.PowerType power, float duration) { yield return(new WaitForSeconds(duration)); DeactivatePower(power); }