using System;
namespace AutoMiningScript
{
public partial class Program
{
// Resources are selected at build time. Wire values and persisted codes stay invariant.
public static partial class L
{
public static string F(string format, params object[] args) => string.Format(Data.Culture, format, args);
public static string Bool(bool value) => value ? DisplayYes : DisplayNo;
public static string Service(int flags) => flags == 3 ? DisplayStateServicing : flags == 1 ? DisplayStateUnloading : flags == 2 ? DisplayStateCharging : DisplayStateStandby;
public static string State(Telemetry t) => t.Connected && t.ServiceFlags >= 0 && t.State != FlightState.Fault ? Service(t.ServiceFlags) : State(t.State);
// Keep this table in the persisted FlightState numeric order.
static readonly string[] states = { DisplayStateBoot, DisplayStateDocked, DisplayStateServicing, DisplayStateReady,
DisplayStateDeparting, DisplayStateTransit, DisplayStateSurvey, DisplayStateAlign, DisplayStateDrilling,
DisplayStateRetreat, DisplayStateReturning, DisplayStateHolding, DisplayStateDockAlign, DisplayStateDockApproach,
DisplayStateDockRetreat, DisplayStatePaused, DisplayStateManual, DisplayStateFault };
static readonly string[] outcomeCodes = "|Pending|Complete|Blocked|SurveyHit|SurveyEmpty|InvalidSample|Discovery|Paused".Split('|');
static readonly string[] outcomes = { DisplayOutcomePending, DisplayOutcomePending, DisplayOutcomeComplete,
DisplayOutcomeBlocked, DisplayOutcomeSurveyHit, DisplayOutcomeSurveyEmpty, DisplayOutcomeInvalidSample,
DisplayOutcomeDiscovery, DisplayStatePaused };
static readonly string[] oreCodes = "Iron|Nickel|Cobalt|Magnesium|Silicon|Silver|Gold|Platinum|Uranium|Stone|Ice|Scrap".Split('|');
static readonly string[] ores = { DisplayOreIron, DisplayOreNickel, DisplayOreCobalt, DisplayOreMagnesium,
DisplayOreSilicon, DisplayOreSilver, DisplayOreGold, DisplayOrePlatinum, DisplayOreUranium,
DisplayOreStone, DisplayOreIce, DisplayOreScrap };
public static string State(FlightState state) => (uint)state < states.Length ? states[(int)state] : DisplayUnknown;
static string Lookup(string code, string[] codes, string[] labels)
{
int index = Array.IndexOf(codes, code);
return index < 0 ? code : labels[index];
}
public static string Outcome(string code) => Lookup(code, outcomeCodes, outcomes);
public static string Ore(string code) => Lookup(code, oreCodes, ores);
public static string OreList(string value)
{
if (string.IsNullOrEmpty(value)) return "";
var items = value.Split(',');
for (int i = 0; i < items.Length; i++)
{
var item = items[i].Trim(); int colon = item.IndexOf(':');
items[i] = colon >= 0 ? Ore(item.Substring(0, colon)) + item.Substring(colon) : Ore(item);
}
return string.Join(", ", items);
}
}
}
}
using System;
namespace AutoMiningScript
{
public partial class Program
{
// Resources are selected at build time. Wire values and persisted codes stay invariant.
public static partial class L
{
public static string F(string format, params object[] args) => string.Format(Data.Culture, format, args);
public static string Bool(bool value) => value ? DisplayYes : DisplayNo;
public static string Service(int flags) => flags == 3 ? DisplayStateServicing : flags == 1 ? DisplayStateUnloading : flags == 2 ? DisplayStateCharging : DisplayStateStandby;
public static string State(Telemetry t) => t.Connected && t.ServiceFlags >= 0 && t.State != FlightState.Fault ? Service(t.ServiceFlags) : State(t.State);
// Keep this table in the persisted FlightState numeric order.
static readonly string[] states = { DisplayStateBoot, DisplayStateDocked, DisplayStateServicing, DisplayStateReady,
DisplayStateDeparting, DisplayStateTransit, DisplayStateSurvey, DisplayStateAlign, DisplayStateDrilling,
DisplayStateRetreat, DisplayStateReturning, DisplayStateHolding, DisplayStateDockAlign, DisplayStateDockApproach,
DisplayStateDockRetreat, DisplayStatePaused, DisplayStateManual, DisplayStateFault };
static readonly string[] outcomeCodes = "|Pending|Complete|Blocked|SurveyHit|SurveyEmpty|InvalidSample|Discovery|Paused".Split('|');
static readonly string[] outcomes = { DisplayOutcomePending, DisplayOutcomePending, DisplayOutcomeComplete,
DisplayOutcomeBlocked, DisplayOutcomeSurveyHit, DisplayOutcomeSurveyEmpty, DisplayOutcomeInvalidSample,
DisplayOutcomeDiscovery, DisplayStatePaused };
static readonly string[] oreCodes = "Iron|Nickel|Cobalt|Magnesium|Silicon|Silver|Gold|Platinum|Uranium|Stone|Ice|Scrap".Split('|');
static readonly string[] ores = { DisplayOreIron, DisplayOreNickel, DisplayOreCobalt, DisplayOreMagnesium,
DisplayOreSilicon, DisplayOreSilver, DisplayOreGold, DisplayOrePlatinum, DisplayOreUranium,
DisplayOreStone, DisplayOreIce, DisplayOreScrap };
public static string State(FlightState state) => (uint)state < states.Length ? states[(int)state] : DisplayUnknown;
static string Lookup(string code, string[] codes, string[] labels)
{
int index = Array.IndexOf(codes, code);
return index < 0 ? code : labels[index];
}
public static string Outcome(string code) => Lookup(code, outcomeCodes, outcomes);
public static string Ore(string code) => Lookup(code, oreCodes, ores);
public static string OreList(string value)
{
if (string.IsNullOrEmpty(value)) return "";
var items = value.Split(',');
for (int i = 0; i < items.Length; i++)
{
var item = items[i].Trim(); int colon = item.IndexOf(':');
items[i] = colon >= 0 ? Ore(item.Substring(0, colon)) + item.Substring(colon) : Ore(item);
}
return string.Join(", ", items);
}
}
}
}