Example #1
0
        public TargetingController()
        {
            Service.Set <TargetingController>(this);
            this.pathingManager         = Service.Get <PathingManager>();
            this.shooterController      = Service.Get <ShooterController>();
            this.spatialIndexController = Service.Get <SpatialIndexController>();
            EntityController entityController = Service.Get <EntityController>();

            this.defensiveTroopNodeList  = entityController.GetNodeList <DefensiveTroopNode>();
            this.offensiveTroopNodeList  = entityController.GetNodeList <OffensiveTroopNode>();
            this.offensiveHealerNodeList = entityController.GetNodeList <OffensiveHealerNode>();
            this.defensiveHealerNodeList = entityController.GetNodeList <DefensiveHealerNode>();
        }
Example #2
0
        public TargetingController()
        {
            Service.TargetingController = this;
            this.pathingManager         = Service.PathingManager;
            this.shooterController      = Service.ShooterController;
            this.spatialIndexController = Service.SpatialIndexController;
            EntityController entityController = Service.EntityController;

            this.defensiveTroopNodeList  = entityController.GetNodeList <DefensiveTroopNode>();
            this.offensiveTroopNodeList  = entityController.GetNodeList <OffensiveTroopNode>();
            this.offensiveHealerNodeList = entityController.GetNodeList <OffensiveHealerNode>();
            this.defensiveHealerNodeList = entityController.GetNodeList <DefensiveHealerNode>();
            EventManager eventManager = Service.EventManager;

            eventManager.RegisterObserver(this, EventId.ProcBuff);
            eventManager.RegisterObserver(this, EventId.RemovingBuff);
        }
Example #3
0
        public EatResponse OnEvent(EventId id, object cookie)
        {
            if (id <= EventId.BuildingReplaced)
            {
                if (id <= EventId.BuildingCancelled)
                {
                    if (id != EventId.BuildingViewReady)
                    {
                        if (id != EventId.BuildingCancelled)
                        {
                            return(EatResponse.NotEaten);
                        }
                    }
                    else
                    {
                        EntityViewParams entityViewParams = (EntityViewParams)cookie;
                        if (entityViewParams.Entity.Has <ScoutTowerComponent>())
                        {
                            this.CreateScoutHolo();
                            return(EatResponse.NotEaten);
                        }
                        return(EatResponse.NotEaten);
                    }
                }
                else if (id != EventId.EntityKilled)
                {
                    if (id != EventId.BuildingConstructed)
                    {
                        if (id != EventId.BuildingReplaced)
                        {
                            return(EatResponse.NotEaten);
                        }
                        Entity entity = cookie as Entity;
                        if (entity.Has <ScoutTowerComponent>())
                        {
                            this.CreateScoutHolo();
                            return(EatResponse.NotEaten);
                        }
                        return(EatResponse.NotEaten);
                    }
                }
                else
                {
                    SmartEntity smartEntity = (SmartEntity)cookie;
                    if (smartEntity.BuildingComp == null)
                    {
                        return(EatResponse.NotEaten);
                    }
                    BuildingType type = smartEntity.BuildingComp.BuildingType.Type;
                    if (!this.raidDefenseTrainerBindings.Contains(type))
                    {
                        return(EatResponse.NotEaten);
                    }
                    UXController uXController = Service.Get <UXController>();
                    Lang         lang         = Service.Get <Lang>();
                    switch (type)
                    {
                    case BuildingType.FleetCommand:
                        Service.Get <DeployerController>().SpecialAttackDeployer.ExitMode();
                        uXController.HUD.DisableSpecialAttacks();
                        uXController.MiscElementsManager.ShowPlayerInstructions(lang.Get("STARSHIP_TRAINER_DESTROYED", new object[0]));
                        return(EatResponse.NotEaten);

                    case BuildingType.HeroMobilizer:
                        Service.Get <DeployerController>().HeroDeployer.ExitMode();
                        uXController.HUD.DisableHeroDeploys();
                        uXController.MiscElementsManager.ShowPlayerInstructions(lang.Get("HERO_TRAINER_DESTROYED", new object[0]));
                        return(EatResponse.NotEaten);

                    case BuildingType.ChampionPlatform:
                    case BuildingType.Housing:
                        return(EatResponse.NotEaten);

                    case BuildingType.Squad:
                        Service.Get <DeployerController>().SquadTroopDeployer.ExitMode();
                        uXController.HUD.DisableSquadDeploy();
                        uXController.MiscElementsManager.ShowPlayerInstructions(lang.Get("SQUAD_CENTER_DESTROYED", new object[0]));
                        return(EatResponse.NotEaten);

                    default:
                        return(EatResponse.NotEaten);
                    }
                }
                ContractEventData contractEventData = (ContractEventData)cookie;
                if (contractEventData.BuildingVO.Type == BuildingType.ScoutTower)
                {
                    this.SendRaidDefenseUpdate();
                }
            }
            else
            {
                if (id <= EventId.ContractStarted)
                {
                    if (id != EventId.WorldLoadComplete)
                    {
                        if (id == EventId.WorldReset)
                        {
                            this.DestroyScoutHolo();
                            return(EatResponse.NotEaten);
                        }
                        if (id != EventId.ContractStarted)
                        {
                            return(EatResponse.NotEaten);
                        }
                    }
                    else
                    {
                        IState currentState = Service.Get <GameStateMachine>().CurrentState;
                        if (currentState is HomeState && this.RaidCompleteDidAwardCrate())
                        {
                            GameUtils.ShowCrateAwardModal(this.lastAwardedCrateUid);
                            this.lastAwardedCrateUid = null;
                            Service.Get <EventManager>().UnregisterObserver(this, EventId.WorldLoadComplete);
                            return(EatResponse.NotEaten);
                        }
                        return(EatResponse.NotEaten);
                    }
                }
                else if (id != EventId.ContractContinued)
                {
                    if (id == EventId.HeroDeployed)
                    {
                        EntityController entityController      = Service.Get <EntityController>();
                        NodeList <OffensiveTroopNode> nodeList = entityController.GetNodeList <OffensiveTroopNode>();
                        TroopAttackController         troopAttackController = Service.Get <TroopAttackController>();
                        for (OffensiveTroopNode offensiveTroopNode = nodeList.Head; offensiveTroopNode != null; offensiveTroopNode = offensiveTroopNode.Next)
                        {
                            troopAttackController.RefreshTarget((SmartEntity)offensiveTroopNode.Entity);
                        }
                        return(EatResponse.NotEaten);
                    }
                    if (id != EventId.PlanetRelocateStarted)
                    {
                        return(EatResponse.NotEaten);
                    }
                    if (this.AreRaidsAccessible())
                    {
                        this.SendRaidDefenseUpdate();
                        return(EatResponse.NotEaten);
                    }
                    return(EatResponse.NotEaten);
                }
                ContractEventData contractEventData2 = (ContractEventData)cookie;
                if (contractEventData2.BuildingVO.Type == BuildingType.ScoutTower)
                {
                    this.DestroyScoutHolo();
                }
            }
            return(EatResponse.NotEaten);
        }