XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

AutoMiningScript

【SpaceEngineer】全自动挖矿脚本

公开
关注 0 Fork 0 Star 0
UTF-8
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);
            }
        }
    }
}