/// <summary> /// Strafe option for combat aerial vehicles targeting open maps /// </summary> /// <param name="vehicle"></param> /// <param name="parent"></param> public static FloatMenuOption StrafeFloatMenuOption(VehiclePawn vehicle, MapParent parent) { if (parent.EnterCooldownBlocksEntering()) { return(new FloatMenuOption($"{"AerialStrafeRun".Translate(parent.Label)} ({"EnterCooldownBlocksEntering".Translate()})", null)); } return(new FloatMenuOption("AerialStrafeRun".Translate(parent.Label), delegate() { if (vehicle.Spawned) { vehicle.CompVehicleLauncher.TryLaunch(parent.Tile, null, true); } else { AerialVehicleInFlight aerial = VehicleWorldObjectsHolder.Instance.AerialVehicleObject(vehicle); if (aerial is null) { Log.Error($"Attempted to launch into existing map where CurrentMap is null and no AerialVehicle with {vehicle.Label} exists."); return; } List <FlightNode> flightPath = new List <FlightNode>(LaunchTargeter.FlightPath); aerial.OrderFlyToTiles(flightPath, aerial.DrawPos); aerial.flightPath.ReconCircleAt(parent.Tile); vehicle.CompVehicleLauncher.inFlight = true; } })); }
public static bool CanLandInSpecificCell(IEnumerable <IThingHolder> pods, MapParent mapParent) { if (mapParent == null || !mapParent.Spawned || !mapParent.HasMap) { return(false); } if (mapParent.EnterCooldownBlocksEntering()) { return(FloatMenuAcceptanceReport.WithFailMessage("MessageEnterCooldownBlocksEntering".Translate(mapParent.EnterCooldownDaysLeft().ToString("0.#")))); } return(true); }
public static FloatMenuAcceptanceReport CanAttack(VehiclePawn vehicle, MapParent parent) { if (parent is null) { return(false); } if (!WorldVehiclePathGrid.Instance.Passable(parent.Tile, vehicle.VehicleDef)) { return(false); } if (parent.EnterCooldownBlocksEntering()) { return(FloatMenuAcceptanceReport.WithFailReasonAndMessage("EnterCooldownBlocksEntering".Translate(), "MessageEnterCooldownBlocksEntering".Translate(parent.EnterCooldownTicksLeft().ToStringTicksToPeriod(true, false, true, true)))); } return(true); }
public static FloatMenuAcceptanceReport CanVisit(IEnumerable <IThingHolder> pods, MapParent site) { if (site == null || !site.Spawned) { return(false); } if (!TransportPodsArrivalActionUtility.AnyNonDownedColonist(pods)) { return(false); } if (site.EnterCooldownBlocksEntering()) { return(FloatMenuAcceptanceReport.WithFailMessage("MessageEnterCooldownBlocksEntering".Translate(site.EnterCooldownDaysLeft().ToString("0.#")))); } return(true); }
public static bool CanLandInSpecificCell(MapParent mapParent) { return(mapParent != null && mapParent.Spawned && mapParent.HasMap && (!mapParent.EnterCooldownBlocksEntering() || FloatMenuAcceptanceReport.WithFailMessage("MessageEnterCooldownBlocksEntering".Translate(mapParent.EnterCooldownTicksLeft().ToStringTicksToPeriod(true, false, true, true))))); }