示例#1
0
 public AerialVehicleArrivalAction_LandSpecificCell(VehiclePawn vehicle, MapParent mapParent, int tile, LaunchProtocol launchProtocol, IntVec3 landingCell, Rot4 landingRot) : base(vehicle, mapParent, tile, launchProtocol)
 {
     this.tile           = tile;
     this.mapParent      = mapParent;
     this.launchProtocol = launchProtocol;
     this.landingCell    = landingCell;
     this.landingRot     = landingRot;
 }
 public override FloatMenuAcceptanceReport CanVisit(Caravan caravan, MapParent mapParent)
 {
     if (mapParent == null || !mapParent.Spawned)
     {
         return(false);
     }
     return(true);
 }
 public static void Postfix(MapParent __instance, ref MapGeneratorDef __result)
 {
     if (Find.World.worldObjects.AllWorldObjects.Find(o => o.Tile == __instance.Tile && o.def.HasModExtension <CustomGenOption>()) is WorldObject worldObject)
     {
         KLog.Message($"Generating worldObject {worldObject.LabelCap}");
         __result = DefDatabase <MapGeneratorDef> .GetNamed("KCSG_WorldObject_Gen");
     }
 }
示例#4
0
        public bool ChoseWorldTarget(GlobalTargetInfo target)
        {
            if (!target.IsValid)
            {
                Messages.Message("SWeaponTargetInvalid".Translate(), MessageTypeDefOf.RejectInput, true);
                return(false);
            }

            /*
             * int num = Find.WorldGrid.TraversalDistanceBetween(base.Map.Tile, target.Tile, true, int.MaxValue);
             * if (this.MaxLaunchDistance < 200 && num > this.MaxLaunchDistance)
             * {
             *  Messages.Message("MissileRangeBad".Translate(), MessageTypeDefOf.RejectInput, true);
             *  return false;
             * }
             */
            MapParent mapParent = target.WorldObject as MapParent;

            if (mapParent != null && mapParent.HasMap)
            {
                Map map = mapParent.Map;
                Current.Game.CurrentMap = map;
                Targeter targeter           = Find.Targeter;
                Action   actionWhenFinished = delegate
                {
                    if (Find.Maps.Contains(base.Map))
                    {
                        Current.Game.CurrentMap = base.Map;
                    }
                };

                /*
                 * int range = 0;
                 * switch (getType()) {
                 *  case SuperWeaponType.Soviet:range = 56;break;
                 *  case SuperWeaponType.Allied: range = 30; break;
                 *  default:range=10;break;
                 * }
                 */

                Texture2D ic = ContentFinder <Texture2D> .Get("ra2/World/ra2_SuperWeaponIcon_" + getType());

                TargetingParameters tg = new TargetingParameters();
                tg.canTargetLocations = true;
                tg.canTargetItems     = true;
                tg.canTargetBuildings = true;
                tg.canTargetPawns     = true;
                tg.canTargetFires     = true;
                targeter.BeginTargeting(tg, delegate(LocalTargetInfo x)
                {
                    //GenDraw.DrawRadiusRing(UI.MouseCell(), range);
                    this.TryLaunch(x.ToGlobalTargetInfo(map));
                }, null, actionWhenFinished, ic);
                return(true);
            }
            this.TryLaunch(target);
            return(true);
        }
示例#5
0
        public override FloatMenuAcceptanceReport CanVisit(Caravan caravan, MapParent mapParent)
        {
            if (Quest.AttackFail)
            {
                return(FloatMenuAcceptanceReport.WithFailReason("CaravanArrivalAction_EnterToRebelMap_AlreadyStart".Translate()));
            }

            return(base.CanVisit(caravan, mapParent));
        }
 public override void AssignDebugData()
 {
     base.AssignDebugData();
     inSignal = "DebugSignal" + Rand.Int;
     if (Find.AnyPlayerHomeMap != null)
     {
         mapParent = Find.RandomPlayerHomeMap.Parent;
     }
 }
        private void StartChoosingDestination()
        {
            CameraJumper.TryJump(CameraJumper.GetWorldTarget(this.parent));
            Find.WorldSelector.ClearSelection();
            int tile = this.parent.Map.Tile;

            this.carr = null;
            Find.WorldTargeter.BeginTargeting(new Func <GlobalTargetInfo, bool>(this.ChoseWorldTarget), true, CompLaunchableHelicopter.TargeterMouseAttachment, true, delegate
            {
                GenDraw.DrawWorldRadiusRing(tile, this.MaxLaunchDistance);
            }, delegate(GlobalTargetInfo target)
            {
                if (!target.IsValid)
                {
                    return(null);
                }
                int num = Find.WorldGrid.TraversalDistanceBetween(tile, target.Tile, true, int.MaxValue);
                if (num > this.MaxLaunchDistance)
                {
                    GUI.color = Color.red;
                    if (num > this.MaxLaunchDistanceEverPossible)
                    {
                        return("TransportPodDestinationBeyondMaximumRange".Translate());
                    }
                    return("TransportPodNotEnoughFuel".Translate());
                }
                else
                {
                    IEnumerable <FloatMenuOption> transportPodsFloatMenuOptionsAt = this.GetTransportPodsFloatMenuOptionsAt(target.Tile);
                    if (!transportPodsFloatMenuOptionsAt.Any <FloatMenuOption>())
                    {
                        if (Find.WorldGrid[target.Tile].biome.impassable || Find.World.Impassable(target.Tile))
                        {
                            return("MessageTransportPodsDestinationIsInvalid".Translate());
                        }
                        return(string.Empty);
                    }
                    if (transportPodsFloatMenuOptionsAt.Count <FloatMenuOption>() == 1)
                    {
                        if (transportPodsFloatMenuOptionsAt.First <FloatMenuOption>().Disabled)
                        {
                            GUI.color = Color.red;
                        }
                        return(transportPodsFloatMenuOptionsAt.First <FloatMenuOption>().Label);
                    }
                    MapParent mapParent = target.WorldObject as MapParent;
                    if (mapParent != null)
                    {
                        return("ClickToSeeAvailableOrders_WorldObject".Translate(new object[]
                        {
                            mapParent.LabelCap
                        }));
                    }
                    return("ClickToSeeAvailableOrders_Empty".Translate());
                }
            });
        }
示例#8
0
 static bool GizmoReformCaravan(MapParent ___mapParent)
 {
     if (Multiplayer.Client == null)
     {
         return(true);
     }
     GizmoFormCaravan(___mapParent.Map, true);
     return(false);
 }
示例#9
0
 public void ResolveZeroLevel()
 {
     if (zeroLevelMap != null && zeroLevel == null)
     {
         zeroLevel = zeroLevelMap.Parent;
         layersState.Add(0, zeroLevel as MapParent_ZLevel);
         layersState[0].SetZ(0);
     }
 }
示例#10
0
        private static void GenerateMap()
        {
            MapParent mapParent = (MapParent)WorldObjectMaker.MakeWorldObject(WorldObjectDefOf.Settlement);

            mapParent.Tile = TileFinder.RandomStartingTile();
            mapParent.SetFaction(Faction.OfPlayer);
            Find.WorldObjects.Add(mapParent);
            GetOrGenerateMapUtility.GetOrGenerateMap(mapParent.Tile, new IntVec3(50, 1, 50), null);
        }
示例#11
0
 public bool HasZLevelsBelow(int tile, MapParent mapParent)
 {
     if (mapIDs.ContainsKey(mapParent.Map))
     {
         var series = mapIDs[mapParent.Map];
         return(tilesWithZLevels[series].HasZLevelBelow(mapParent));
     }
     return(false);
 }
示例#12
0
 public SRTSArrivalActionBombRun(MapParent mapParent, Pair <IntVec3, IntVec3> targetCells, IEnumerable <IntVec3> bombCells, BombingType bombType, Map originalMap, IntVec3 originalLandingSpot)
 {
     this.mapParent           = mapParent;
     this.targetCellA         = targetCells.First;
     this.targetCellB         = targetCells.Second;
     this.bombCells           = bombCells.ToList();
     this.originalMap         = originalMap;
     this.originalLandingSpot = originalLandingSpot;
     this.bombType            = bombType;
 }
示例#13
0
 public override void AssignDebugData()
 {
     base.AssignDebugData();
     inSignal = "DebugSignal" + Rand.Int;
     if (Find.AnyPlayerHomeMap != null)
     {
         gameCondition = GameConditionMaker.MakeCondition(GameConditionDefOf.ColdSnap, Rand.RangeInclusive(2500, 7500));
         mapParent     = Find.RandomPlayerHomeMap.Parent;
     }
 }
        public virtual FloatMenuAcceptanceReport CanVisit(Caravan caravan, MapParent mapParent)
        {
            if (mapParent == null || !mapParent.Spawned)
            {
                GoBackToHome(caravan);
                return(false);
            }

            return(true);
        }
示例#15
0
 public override void AssignDebugData()
 {
     base.AssignDebugData();
     inSignal = "DebugSignal" + Rand.Int;
     if (Find.AnyPlayerHomeMap != null)
     {
         mapParent   = Find.RandomPlayerHomeMap.Parent;
         pointsRange = new FloatRange(500f, 1500f);
     }
 }
示例#16
0
        public override bool CanApplyOn(GlobalTargetInfo target)
        {
            MapParent mapParent = target.WorldObject as MapParent;

            if (mapParent != null && mapParent.Map != null && AlliedPawnOnMap(mapParent.Map) == null)
            {
                return(false);
            }
            return(base.CanApplyOn(target));
        }
示例#17
0
 public Map GetBelowMap(MapParent mapParent)
 {
     if (mapIDs.ContainsKey(mapParent.Map))
     {
         var series = mapIDs[mapParent.Map];
         return(tilesWithZLevels[series].NextMapDown(mapParent));
     }
     Log.Message("No below map found");
     return(null);
 }
 public override void AssignDebugData()
 {
     base.AssignDebugData();
     inSignal = "DebugSignal" + Rand.Int;
     if (Find.AnyPlayerHomeMap != null)
     {
         mapParent = Find.RandomPlayerHomeMap.Parent;
         thing     = ThingMaker.MakeThing(ThingDefOf.Silver);
     }
 }
示例#19
0
        private static Map GenerateNewMapWithSeed(MapParent mapParent, IntVec3 size, string seed)
        {
            var prevSeed = Find.World.info.seedString;

            Find.World.info.seedString = seed;
            var newMap = GetOrGenerateMapUtility.GetOrGenerateMap(mapParent.Tile, size, null);

            Find.World.info.seedString = prevSeed;
            return(newMap);
        }
        private bool ChoseWorldTarget(GlobalTargetInfo target)
        {
            bool result;

            if (!this.ReadyToTransport)
            {
                result = true;
            }
            else if (!target.IsValid)
            {
                Messages.Message("MessageTransportPodsDestinationIsInvalid".Translate(), MessageTypeDefOf.RejectInput);
                result = false;
            }
            else
            {
                MapParent mapParent = target.WorldObject as MapParent;
                if (mapParent != null && mapParent.HasMap)
                {
                    Map myMap = this.parent.Map;
                    Map map   = mapParent.Map;
                    Current.Game.CurrentMap = map;
                    Targeter targeter           = Find.Targeter;
                    Action   actionWhenFinished = delegate()
                    {
                        if (Find.Maps.Contains(myMap))
                        {
                            Current.Game.CurrentMap = myMap;
                        }
                    };
                    TargetingParameters targetParams = new TargetingParameters
                    {
                        canTargetPawns     = true,
                        canTargetItems     = false,
                        canTargetSelf      = false,
                        canTargetLocations = false,
                        canTargetBuildings = false,
                        canTargetFires     = false
                    };
                    targeter.BeginTargeting(targetParams, delegate(LocalTargetInfo x)
                    {
                        if (this.ReadyToTransport)
                        {
                            this.TryTransport(x.ToGlobalTargetInfo(map));
                        }
                    }, null, actionWhenFinished, CompTeleporter.TargeterMouseAttachment);
                    result = true;
                }
                else
                {
                    Messages.Message("RD_YouCannotLock".Translate(), MessageTypeDefOf.RejectInput);                     //"You cannot lock onto anything there."
                    result = false;
                }
            }
            return(result);
        }
        public static void Prefix(int tile, ref IntVec3 size, WorldObjectDef suggestedMapParentDef)
        {
            Map     map     = Current.Game.FindMap(tile);
            Faction faction = null;

            if (map != null)
            {
                if (map.ParentFaction != null)
                {
                    faction = map.ParentFaction;
                }
            }
            else
            {
                MapParent mapParent = Find.WorldObjects.MapParentAt(tile);
                if (mapParent?.Faction != null)
                {
                    faction = mapParent.Faction;
                }
            }
            if (faction == null)
            {
                return;
            }

            HiveFactionEvolutionTracker evolutionTracker = Find.World.GetComponent <HiveFactionEvolutionTracker>();
            HiveFactionExtension        hive             = faction.def.GetModExtension <HiveFactionExtension>();

            if (evolutionTracker != null && hive != null)
            {
                int sizemod = 0;
                //    Log.Message("GetOrGenerateMap for " + faction + " Default: " + size.x + " Max Hive size: " + hive.CurStage.sizeRange.max);
                for (int i = 0; i < 10; i++)
                {
                    if (hive.CurStage.sizeRange.max >= ((size.x + sizemod) / 2) * 0.75f)
                    {
                        sizemod = (int)(size.x * 0.25f);
                    }
                    else
                    {
                        break;
                    }
                }
                if (sizemod > 0)
                {
                    size.x += sizemod;
                    size.z += sizemod;
                    //    Log.Message("GetOrGenerateMap for " + faction +" applied sizemod: "+ sizemod +" resulting: "+ size);
                }
            }
            else
            {
                //    Log.Message("GetOrGenerateMap evolutionTracker: "+ (evolutionTracker != null) + " hiveext: " + (hive != null));
            }
        }
示例#22
0
        //Generates a map with a defined seed
        private static Map GenerateNewMapWithSeed(int tile, IntVec3 size, string seed)
        {
            string cachedSeedString = Find.World.info.seedString;

            Find.World.info.seedString = seed;
            MapParent mapParent    = Find.WorldObjects.MapParentAt(tile);
            Map       generatedMap = MapGenerator.GenerateMap(size, mapParent, mapParent.MapGeneratorDef, mapParent.ExtraGenStepDefs, null);

            Find.World.info.seedString = cachedSeedString;
            return(generatedMap);
        }
示例#23
0
        public static void Prefix(ref IntVec3 mapSize, MapParent parent, MapGeneratorDef mapGenerator, IEnumerable <GenStepWithParams> extraGenStepDefs = null, Action <Map> extraInitBeforeContentGen = null)
        {
            var worldComp = Find.World.GetComponent <WorldComponentGeneration>();

            if (worldComp.tileSizes.ContainsKey(parent.Tile))
            {
                mapSize = worldComp.tileSizes[parent.Tile];
                worldComp.tileSizes.Remove(parent.Tile);
                Log.Message("Changing map size to " + mapSize);
            }
        }
示例#24
0
 public Map FindMap(MapParent mapParent)
 {
     for (int i = 0; i < this.maps.Count; i++)
     {
         if (this.maps[i].info.parent == mapParent)
         {
             return(this.maps[i]);
         }
     }
     return(null);
 }
示例#25
0
        public ZLevelTracker(Map newZeroLevlMap, MapParent newZeroLevel, MapParent_ZLevel mp, bool downwards)
        {
            layersState.Add(0, newZeroLevel as MapParent_ZLevel);
            zeroLevelMap = newZeroLevlMap;
            zeroLevel    = newZeroLevel;

            //Refog zero layer
            Traverse.Create(newZeroLevlMap.fogGrid).Method("SetAllFogged", new object[] { }).GetValue();

            AddLayer(mp, downwards);
        }
示例#26
0
 public static void Postfix(IntVec3 mapSize, MapParent parent, MapGeneratorDef mapGenerator, IEnumerable <GenStepWithParams> extraGenStepDefs = null, Action <Map> extraInitBeforeContentGen = null)
 {
     Log.Message("GetOrGenerateMapPatch.caravanArrival: " + GetOrGenerateMapPatch.caravanArrival);
     if (!caravanArrival)
     {
         var preset = SettlementGeneration.GetPresetFor(parent, out LocationDef locationDef);
         if (preset != null && locationDef != null)
         {
             SettlementGeneration.DoSettlementGeneration(parent.Map, preset.FullName, locationDef, parent.Faction, false);
         }
     }
 }
 public override void CompTick()
 {
     base.CompTick();
     if (this.active)
     {
         MapParent mapParent = this.parent as MapParent;
         if (mapParent != null)
         {
             this.CheckAllEnemiesDefeated(mapParent);
         }
     }
 }
示例#28
0
        protected override IParent CreateParent(int numberOfChildren)
        {
            var parent = new MapParent();

            for (var i = 0; i < numberOfChildren; i++)
            {
                parent.Children.Add(i, new Child {
                    Name = "child" + i
                });
            }
            return(parent);
        }
示例#29
0
        public override void PreForceReform(MapParent mapParent)
        {
            comp.Start();

            victory = true;

            RemoveAfterLeave = true;

            QuestsManager.Communications.RemoveCommunication(Dialog);

            base.PreForceReform(mapParent);
        }
        private bool OnChoseWorldTarget(GlobalTargetInfo target)
        {
            // Invalid target.
            if (!target.IsValid)
            {
                Messages.Message("AA.MegInvalidWorldTarget".Translate(), MessageTypeDefOf.RejectInput);
                return(false);
            }

            // Out of range.
            if (Find.WorldGrid.TraversalDistanceBetween(base.Map.Tile, target.Tile) > WORLD_MAP_RANGE)
            {
                Messages.Message("AA.MegOutOfRange".Translate(), this, MessageTypeDefOf.RejectInput);
                return(false);
            }

            // Make sure that the map is generated. Cannot fire into a null map.
            MapParent mapParent = target.WorldObject as MapParent;

            if (mapParent == null || !mapParent.HasMap)
            {
                Messages.Message("AA.MegNeedsMap".Translate(), MessageTypeDefOf.RejectInput);
                return(false);
            }

            // Can't attack own map.
            var targetMap = mapParent.Map;

            if (targetMap == this.Map)
            {
                Messages.Message("AA.MegCantTargetSelf".Translate(), MessageTypeDefOf.RejectInput);
                return(false);
            }

            // Allow targeting everything.
            var targParams = new TargetingParameters
            {
                canTargetPawns     = true,
                canTargetBuildings = true,
                canTargetLocations = true,
                canTargetAnimals   = true
            };

            Current.Game.CurrentMap = targetMap;
            Find.Targeter.BeginTargeting(targParams, (localTarg) =>
            {
                GlobalTargetInfo globalTargetInfo = localTarg.ToGlobalTargetInfo(targetMap);
                StartAttackSequence(globalTargetInfo, LocalTargetInfo.Invalid);
            });

            //Messages.Message("Not working yet.", MessageTypeDefOf.RejectInput, true);
            return(true);
        }