public static void SpawnAirStrike(Map map, IntVec3 targetPosition, AirStrikeDef StrikeDef, Thing instigator = null, ThingDef weaponDef = null, bool warnFail = false) { AirStrikeIncoming flyingSpaceshipAirStrike = ThingMaker.MakeThing(OrdnanceUtility.AirStrike, null) as AirStrikeIncoming; GenSpawn.Spawn(flyingSpaceshipAirStrike, targetPosition, map, WipeMode.Vanish); flyingSpaceshipAirStrike.InitializeAirStrikeData(targetPosition, StrikeDef); }
public static void StartTargeting(Def def, Map map = null) { TargetingParameters targetingParameters = new TargetingParameters(); targetingParameters.canTargetLocations = true; targetingParameters.canTargetSelf = true; targetingParameters.canTargetFires = true; targetingParameters.canTargetItems = true; AirStrikeDef airStrike = def as AirStrikeDef; ArtilleryStrikeDef artilleryStrike = def as ArtilleryStrikeDef; OrbitalStrikeDef orbitalStrike = def as OrbitalStrikeDef; if (airStrike != null) { Find.Targeter.BeginTargeting(targetingParameters, delegate(LocalTargetInfo x) { SpawnAirStrike(map, x.Cell, airStrike); }, null, delegate { if (map != null && Find.Maps.Contains(map)) { Current.Game.CurrentMap = map; } }, CompLaunchable.TargeterMouseAttachment); } else if (artilleryStrike != null) { Find.Targeter.BeginTargeting(targetingParameters, delegate(LocalTargetInfo x) { SpawnArtilleryStrike(map, x.Cell, artilleryStrike); }, null, delegate { if (map != null && Find.Maps.Contains(map)) { Current.Game.CurrentMap = map; } }, CompLaunchable.TargeterMouseAttachment); } else if (orbitalStrike != null) { Find.Targeter.BeginTargeting(targetingParameters, delegate(LocalTargetInfo x) { SpawnOrbitalStrike(map, x.Cell, orbitalStrike); }, null, delegate { if (map != null && Find.Maps.Contains(map)) { Current.Game.CurrentMap = map; } }, CompLaunchable.TargeterMouseAttachment); } }
private static void CallAirstrikeOf() { List <FloatMenuOption> list = new List <FloatMenuOption>(); IntVec3 cell = UI.MouseCell(); foreach (AirStrikeDef StrikeDef in DefDatabase <AirStrikeDef> .AllDefs) { AirStrikeDef localStrike = StrikeDef; list.Add(new FloatMenuOption(localStrike.LabelCap + " - ", delegate() { OrdnanceUtility.SpawnAirStrike(Find.CurrentMap, cell, localStrike); }, MenuOptionPriority.Default, null, null, 0f, null, null)); } Find.WindowStack.Add(new FloatMenu(list)); }