protected override void TriggerSwitch(HitableType expectedHitType) { if (hitType != HitableType.BOTH && hitType != expectedHitType) { return; } if (flag) { flag.SetFlag(true); } foreach (ASwitchEvent switchEvent in switchEvents[index].events) { if (permanent) { switchEvent.SetState(permanentState); switchEvent.SetPermanent(); } else { switchEvent.Trigger(); } } StartCoroutine(AnimateSwitch()); }
public void TriggerSwitch(SwitchType expectedType, HitableType expectedHitType = HitableType.BOTH) { //Check if correct switch and if its active if (expectedType != type) { return; } if (activated) { return; } //Call Trigger TriggerSwitch(expectedHitType); //Play any cutscene if (hasCutscene) { StartCoroutine(CutsceneManager.cutsceneManager.PlayCutscene(scenes)); } //Index, and make inactive if permanent index++; if (index >= switchEvents.Length) { index = 0; } if (index == 0 && permanent) { activated = true; } }
public void Damage(HitableType hitType, int damage) { if (damagedBy == HitableType.BOTH || damagedBy == hitType) { health -= damage; if (health <= 0) { DestroyDestructable(); } else { ShakeParticles(); } } }
protected override void TriggerSwitch(HitableType expectedHitType) { if (index == 1) { BoxCollider2D box = GetComponent <BoxCollider2D>(); foreach (RaycastHit2D hitInfo in Physics2D.BoxCastAll(box.bounds.center, box.bounds.extents * 2, 0, Vector2.zero)) { if ((hitInfo.transform.CompareTag("Cell") && weightType == WeightSwitchType.LIGHT) || hitInfo.transform.CompareTag("Block")) { return; } } } AnimateSwitch(); foreach (ASwitchEvent switchEvent in switchEvents[index].events) { switchEvent.Trigger(); } }
protected abstract void TriggerSwitch(HitableType expectedHitType);