public void RegisterTraps(CurrentBattle currentBattle) { NodeList <TrapNode> nodeList = Service.Get <EntityController>().GetNodeList <TrapNode>(); for (TrapNode trapNode = nodeList.Head; trapNode != null; trapNode = trapNode.Next) { if (currentBattle.DisabledBuildings == null || !currentBattle.DisabledBuildings.Contains(trapNode.BuildingComp.BuildingTO.Key)) { TrapCombatTrigger combatTrigger = new TrapCombatTrigger(trapNode); this.ctm.RegisterTrigger(combatTrigger); } } }
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; } } }