private void RemoveTrigger(ICombatTrigger trigger) { this.deathTriggers.Remove(trigger); this.areaTriggers.Remove(trigger); this.loadTriggers.Remove(trigger); this.deployTriggers.Remove(trigger); }
private void TryAndTrigger(ICombatTrigger trigger, Entity intruder) { if (trigger.IsAlreadyTriggered()) { return; } trigger.Trigger(intruder); }
public void ExecuteLoadTriggers() { int i = 0; int count = this.loadTriggers.Count; while (i < count) { ICombatTrigger trigger = this.loadTriggers[i]; this.TryAndTrigger(trigger, null); i++; } }
public void RegisterTrigger(ICombatTrigger combatTrigger) { List <ICombatTrigger> list; switch (combatTrigger.Type) { case CombatTriggerType.Area: { list = this.areaTriggers; Entity entity = (Entity)combatTrigger.Owner; if (!entity.Has <AreaTriggerComponent>()) { if (combatTrigger is TrapCombatTrigger) { TrapCombatTrigger trapCombatTrigger = (TrapCombatTrigger)combatTrigger; entity.Add <AreaTriggerComponent>(new AreaTriggerComponent(trapCombatTrigger.AreaRadius)); } else { BuildingComponent buildingComponent = entity.Get <BuildingComponent>(); entity.Add <AreaTriggerComponent>(new AreaTriggerComponent(buildingComponent.BuildingType.ActivationRadius)); } } break; } case CombatTriggerType.Death: list = this.deathTriggers; break; case CombatTriggerType.Load: list = this.loadTriggers; break; case CombatTriggerType.TroopDeploy: list = this.deployTriggers; break; default: list = this.deathTriggers; break; } if (!list.Contains(combatTrigger)) { list.Add(combatTrigger); if (combatTrigger.LastDitchDelayMillis < this.lowestDelay) { this.lowestDelay = combatTrigger.LastDitchDelayMillis; } } }
private void ExecuteLastDitchTriggers(List <ICombatTrigger> combatTriggerList, uint battleMillis) { int i = 0; int count = combatTriggerList.Count; while (i < count) { ICombatTrigger combatTrigger = combatTriggerList[i]; if (!combatTrigger.IsAlreadyTriggered() && combatTrigger.LastDitchDelayMillis < this.lowestDelay) { this.lowestDelay = combatTrigger.LastDitchDelayMillis; } if (battleMillis >= combatTrigger.LastDitchDelayMillis) { this.TryAndTrigger(combatTrigger, null); } i++; } }
public void InformAreaTriggerBuildings(List <ElementPriorityPair <Entity> > areaTriggerBuildingsInRangeOf, SmartEntity troop) { int i = 0; int count = areaTriggerBuildingsInRangeOf.Count; while (i < count) { Entity element = areaTriggerBuildingsInRangeOf[i].Element; int j = 0; int count2 = this.areaTriggers.Count; while (j < count2) { ICombatTrigger combatTrigger = this.areaTriggers[j]; if (combatTrigger.Owner == element) { this.TryAndTrigger(combatTrigger, troop); } j++; } i++; } }
public EatResponse OnEvent(EventId id, object cookie) { if (id <= EventId.TroopDeployed) { if (id == EventId.EntityKilled) { List <ICombatTrigger> list = new List <ICombatTrigger>(); int i = 0; int count = this.deathTriggers.Count; while (i < count) { ICombatTrigger combatTrigger = this.deathTriggers[i]; if (combatTrigger.Owner == cookie) { this.TryAndTrigger(combatTrigger, null); list.Add(combatTrigger); } i++; } int j = 0; int count2 = this.areaTriggers.Count; while (j < count2) { if (this.areaTriggers[j].Owner == cookie) { list.Add(this.areaTriggers[j]); if (this.areaTriggers[j] is DefendedBuildingCombatTrigger) { DefendedBuildingCombatTrigger defendedBuildingCombatTrigger = (DefendedBuildingCombatTrigger)this.areaTriggers[j]; defendedBuildingCombatTrigger.Type = CombatTriggerType.Death; if (defendedBuildingCombatTrigger.TroopsHurtable) { defendedBuildingCombatTrigger.InitialDelay = GameConstants.SPAWN_DELAY; defendedBuildingCombatTrigger.TroopsHurt = true; defendedBuildingCombatTrigger.Leashed = false; } this.TryAndTrigger(defendedBuildingCombatTrigger, null); } } j++; } for (int k = 0; k < list.Count; k++) { this.RemoveTrigger(list[k]); } return(EatResponse.NotEaten); } if (id != EventId.TroopDeployed) { return(EatResponse.NotEaten); } } else if (id != EventId.HeroDeployed && id != EventId.ChampionDeployed) { return(EatResponse.NotEaten); } int l = 0; int count3 = this.deployTriggers.Count; while (l < count3) { ICombatTrigger combatTrigger2 = this.deployTriggers[l]; string text = ((SmartEntity)cookie).TroopComp.TroopType.TroopID.ToLower(); string text2 = (string)combatTrigger2.Owner; if (text == text2) { this.TryAndTrigger(combatTrigger2, null); } l++; } return(EatResponse.NotEaten); }