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;
                }
            }
        }