コード例 #1
0
 /// <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;
         }
     }));
 }
コード例 #2
0
 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);
 }
コード例 #3
0
 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);
 }
コード例 #4
0
 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);
 }
コード例 #5
0
 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)))));
 }