Exemple #1
0
        public static void GoToLevel(string campaignName, int levelNum, string terrainName)
        {
            if (instance == null || !Main.enabled)
            {
                //Main.Log("instance null");
                return;
            }

            WorldTerritory3D territoryObject = null; // = WorldMapController.GetTerritory(campaignName);

            WorldTerritory3D[] territories = Traverse.Create(typeof(WorldMapController)).Field("territories3D").GetValue() as WorldTerritory3D[];
            foreach (WorldTerritory3D ter in territories)
            {
                //Main.Log(ter.properties.territoryName + " == " + campaignName + " = " + (ter.properties.territoryName == campaignName));
                if (ter.properties.territoryName == campaignName)
                {
                    territoryObject = ter;
                }
            }

            if (territoryObject == null)
            {
                //Main.Log(campaignName + " territory not found");
                return;
            }

            WorldMapController.QueuedAction item = default(WorldMapController.QueuedAction);

            if (territoryObject.properties.isBurning)
            {
                item.actionType = WorldMapController.QueuedActions.Burning;
            }
            else if ((Main.campaignNum.indexNumber + 1) >= 11)
            {
                item.actionType = WorldMapController.QueuedActions.Alien;
            }
            else
            {
                item.actionType = WorldMapController.QueuedActions.Terrorist;
            }

            item.territory = territoryObject;
            (Traverse.Create(instance).Field("actionQueue").GetValue() as List <WorldMapController.QueuedAction>).Add(item);

            //Main.mod.Logger.Log(territoryObject.properties.territoryName);
            //Main.mod.Logger.Log("isburning: " + territoryObject.properties.isBurning + " isCity: " + territoryObject.properties.isCity + " isSecret: " +
            //    territoryObject.properties.isCity + " state: " + territoryObject.properties.state);

            //return;

            foreach (TerritoryProgress territoryProgress in WorldMapProgressController.currentProgress.territoryProgress)
            {
                //Main.mod.Logger.Log(territoryProgress.name.ToLower() + " == " + territoryObject.properties.territoryName.ToLower() + " = " + (territoryProgress.name.ToLower() == territoryObject.properties.territoryName.ToLower()));
                if (territoryProgress.name.ToLower() == terrainName)
                {
                    //Main.mod.Logger.Log("found territory changed level");
                    territoryProgress.startLevel = levelNum;
                }
            }


            WorldMapController.RestTransport(territoryObject);
            WorldMapController.EnterMission(territoryObject.GetCampaignName(), territoryObject.properties.loadingText, territoryObject.properties);
        }
Exemple #2
0
        static bool Prefix(WorldMapController __instance)
        {
            if (!Main.enabled)
            {
                return(true);
            }
            if (!Main.settings.cameraShake)
            {
                PlayerOptions.Instance.cameraShakeAmount = 0f;
            }
            if (!Main.settings.enableSkip)
            {
                return(true);
            }

            Traverse actionQueueTraverse = Traverse.Create(__instance);
            List <WorldMapController.QueuedAction> actionQueue = actionQueueTraverse.Field("actionQueue").GetValue() as List <WorldMapController.QueuedAction>;

            /*for (int i = 0; i < actionQueue.Count; i++)
             * {
             *  Main.mod.Logger.Log(actionQueue[i].ToString());
             * }
             * if (actionQueue.Count == 0 || actionQueue == null)
             * {
             *  Main.mod.Logger.Log("NO ACTIONS");
             * }*/

            if (actionQueue.Count > 0)
            {
                WorldMapController.QueuedAction queuedAction = actionQueue[0];
                switch (queuedAction.actionType)
                {
                case WorldMapController.QueuedActions.Helicopter:
                    WorldCamera.instance.MoveToHelicopter(0f);
                    break;

                case WorldMapController.QueuedActions.Terrorist:
                    string lastSafe = WorldMapProgressController.currentProgress.lastSafeTerritory;



                    queuedAction.territory.BecomeEnemyBase();
                    WorldMapController.RestTransport(queuedAction.territory);
                    WorldMapController.EnterMission(queuedAction.territory.GetCampaignName(), queuedAction.territory.properties.loadingText, queuedAction.territory.properties);
                    break;

                case WorldMapController.QueuedActions.Alien:
                    queuedAction.territory.SetState(TerritoryState.Infested);
                    WorldMapController.RestTransport(queuedAction.territory);
                    WorldMapController.EnterMission(queuedAction.territory.GetCampaignName(), queuedAction.territory.properties.loadingText, queuedAction.territory.properties);
                    break;

                case WorldMapController.QueuedActions.Burning:
                    queuedAction.territory.SetState(TerritoryState.TerroristBurning);
                    WorldMapController.RestTransport(queuedAction.territory);
                    WorldMapController.EnterMission(queuedAction.territory.GetCampaignName(), queuedAction.territory.properties.loadingText, queuedAction.territory.properties);
                    break;

                case WorldMapController.QueuedActions.Liberated:
                    queuedAction.territory.SetState(TerritoryState.Liberated);
                    break;

                case WorldMapController.QueuedActions.Hell:
                    queuedAction.territory.SetState(TerritoryState.Hell);
                    WorldMapController.RestTransport(queuedAction.territory);
                    WorldMapController.EnterMission(queuedAction.territory.GetCampaignName(), queuedAction.territory.properties.loadingText, queuedAction.territory.properties);
                    break;

                case WorldMapController.QueuedActions.Secret:
                    queuedAction.territory.SetState(TerritoryState.TerroristBase);
                    WorldMapController.RestTransport(queuedAction.territory);
                    WorldMapController.EnterMission(queuedAction.territory.GetCampaignName(), queuedAction.territory.properties.loadingText, queuedAction.territory.properties);
                    break;
                }
                actionQueue.RemoveAt(0);
                Traverse queueCounter = Traverse.Create(__instance);
                if (queuedAction.actionType == WorldMapController.QueuedActions.Hell)
                {
                    //queueCounter = 5.2f;
                    queueCounter.Field("queueCounter").SetValue(0);
                }
                else if (queuedAction.actionType == WorldMapController.QueuedActions.Liberated)
                {
                    //queueCounter = 2f;
                    queueCounter.Field("queueCounter").SetValue(0);
                }
                else if (queuedAction.actionType == WorldMapController.QueuedActions.Secret)
                {
                    //queueCounter = 0f;
                    queueCounter.Field("queueCounter").SetValue(0);
                }
                else
                {
                    //queueCounter = 1.6f;
                    queueCounter.Field("queueCounter").SetValue(0);
                }
            }
            else if (WorldCamera.instance.CamState != WorldCamera.CameraState.FollowHelicopter && WorldCamera.instance.CamState != WorldCamera.CameraState.MoveToHelicopter)
            {
                WorldCamera.instance.MoveToHelicopter(0f);
            }
            actionQueueTraverse.Field("actionQueue").SetValue(actionQueue);
            return(false);
        }