예제 #1
0
        public EatResponse OnEvent(EventId id, object cookie)
        {
            switch (id)
            {
            case EventId.BuildingViewReady:
            {
                EntityViewParams entityViewParams = (EntityViewParams)cookie;
                if (entityViewParams.Entity.Has <ScoutTowerComponent>())
                {
                    this.CreateScoutHolo();
                }
                return(EatResponse.NotEaten);
            }

            case EventId.BuildingViewFailed:
            {
IL_14:
                if (id == EventId.BuildingConstructed)
                {
                    goto IL_A5;
                }
                if (id != EventId.BuildingReplaced)
                {
                    switch (id)
                    {
                    case EventId.WorldLoadComplete:
                    {
                        IState currentState = Service.GameStateMachine.CurrentState;
                        if (currentState is HomeState && this.RaidCompleteDidAwardCrate())
                        {
                            GameUtils.ShowCrateAwardModal(this.lastAwardedCrateUid);
                            this.lastAwardedCrateUid = null;
                            Service.EventManager.UnregisterObserver(this, EventId.WorldLoadComplete);
                        }
                        return(EatResponse.NotEaten);
                    }

                    case EventId.WorldInTransitionComplete:
                    case EventId.WorldOutTransitionComplete:
IL_3D:
                        if (id == EventId.ContractStarted || id == EventId.ContractContinued)
                        {
                            ContractEventData contractEventData = (ContractEventData)cookie;
                            if (contractEventData.BuildingVO.Type == BuildingType.ScoutTower)
                            {
                                this.DestroyScoutHolo();
                            }
                            return(EatResponse.NotEaten);
                        }
                        if (id != EventId.EntityKilled)
                        {
                            if (id == EventId.HeroDeployed)
                            {
                                EntityController entityController      = Service.EntityController;
                                NodeList <OffensiveTroopNode> nodeList = entityController.GetNodeList <OffensiveTroopNode>();
                                TroopAttackController         troopAttackController = Service.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);
                        }
                        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.UXController;
                            Lang         lang         = Service.Lang;
                            if (type != BuildingType.FleetCommand)
                            {
                                if (type != BuildingType.Squad)
                                {
                                    if (type == BuildingType.HeroMobilizer)
                                    {
                                        Service.DeployerController.HeroDeployer.ExitMode();
                                        uXController.HUD.DisableHeroDeploys();
                                        uXController.MiscElementsManager.ShowPlayerInstructions(lang.Get("HERO_TRAINER_DESTROYED", new object[0]));
                                    }
                                }
                                else
                                {
                                    Service.DeployerController.SquadTroopDeployer.ExitMode();
                                    uXController.HUD.DisableSquadDeploy();
                                    uXController.MiscElementsManager.ShowPlayerInstructions(lang.Get("SQUAD_CENTER_DESTROYED", new object[0]));
                                }
                            }
                            else
                            {
                                Service.DeployerController.SpecialAttackDeployer.ExitMode();
                                uXController.HUD.DisableSpecialAttacks();
                                uXController.MiscElementsManager.ShowPlayerInstructions(lang.Get("STARSHIP_TRAINER_DESTROYED", new object[0]));
                            }
                            return(EatResponse.NotEaten);
                        }
                        break;

                    case EventId.WorldReset:
                        this.DestroyScoutHolo();
                        return(EatResponse.NotEaten);
                    }
                    goto IL_3D;
                }
                SmartEntity smartEntity2 = cookie as SmartEntity;
                if (smartEntity2.ScoutTowerComp != null)
                {
                    this.CreateScoutHolo();
                }
                return(EatResponse.NotEaten);
            }

            case EventId.BuildingCancelled:
                goto IL_A5;
            }
            goto IL_14;
IL_A5:
            ContractEventData contractEventData2 = (ContractEventData)cookie;

            if (contractEventData2.BuildingVO.Type == BuildingType.ScoutTower)
            {
                this.SendRaidDefenseUpdate();
            }
            return(EatResponse.NotEaten);
        }