SEToolbox.Models.ResourceReportModel.CreateTextReport C# (CSharp) Method

CreateTextReport() private method

private CreateTextReport ( ) : string
return string
        internal string CreateTextReport()
        {
            var bld = new StringBuilder();

            bld.AppendLine("Resource Report");
            bld.AppendFormat("Save World: {0}\r\n", _saveName);
            bld.AppendFormat("Date: {0}\r\n", _generatedDate);
            bld.AppendLine();

            #region In game resources

            bld.AppendLine("In game resources");
            bld.AppendLine("Everything is measured in its regressed state. Ie., how much ore was used/needed to build this item.");
            bld.AppendLine();

            bld.AppendFormat("Untouched Ore (Asteroids)\r\n");
            bld.AppendFormat("Name\tVolume m³\r\n");
            foreach (var item in _untouchedOre)
            {
                bld.AppendFormat("{0}\t{1:#,##0.000}\r\n", item.MaterialName, item.Volume);
            }

            bld.AppendLine();
            bld.AppendFormat("Unused Ore (Ore and Ingots, either floating or in containers)\r\n");
            bld.AppendFormat("Name\tMass Kg\tVolume L\r\n");
            foreach (var item in _unusedOre)
            {
                bld.AppendFormat("{0}\t{1:#,##0.000}\t{2:#,##0.000}\r\n", item.FriendlyName, item.Mass, item.Volume);
            }

            bld.AppendLine();
            bld.AppendFormat("Used Ore (tools, items, components, cubes)\r\n");
            bld.AppendFormat("Name\tMass Kg\tVolume L\r\n");
            foreach (var item in _usedOre)
            {
                bld.AppendFormat("{0}\t{1:#,##0.000}\t{2:#,##0.000}\r\n", item.FriendlyName, item.Mass, item.Volume);
            }

            bld.AppendLine();
            bld.AppendFormat("Player Ore (Player inventories)\r\n");
            bld.AppendFormat("Name\tMass Kg\tVolume L\r\n");
            foreach (var item in _playerOre)
            {
                bld.AppendFormat("{0}\t{1:#,##0.000}\t{2:#,##0.000}\r\n", item.FriendlyName, item.Mass, item.Volume);
            }

            bld.AppendLine();
            bld.AppendFormat("NPC Ore (Controlled by NPC)\r\n");
            bld.AppendFormat("Name\tMass Kg\tVolume L\r\n");
            foreach (var item in _npcOre)
            {
                bld.AppendFormat("{0}\t{1:#,##0.000}\t{2:#,##0.000}\r\n", item.FriendlyName, item.Mass, item.Volume);
            }

            #endregion

            #region In game assets

            bld.AppendLine();
            bld.AppendLine("In game assets");
            bld.AppendLine("Counts of all current items in game Assets. These indicate actual time spent to construct, part construct or refine.");

            bld.AppendLine();
            bld.AppendFormat("All Cubes\r\n");
            bld.AppendFormat("Name\tCount\tMass Kg\tTime\r\n");
            foreach (var item in _allCubes)
            {
                bld.AppendFormat("{0}\t{1:#,##0}\t{2:#,##0.000}\t{3}\r\n", item.FriendlyName, item.Count, item.Mass, item.Time);
            }

            bld.AppendLine();
            bld.AppendFormat("All Components\r\n");
            bld.AppendFormat("Name\tCount\tMass Kg\tVolume L\tTime\r\n");
            foreach (var item in _allComponents)
            {
                bld.AppendFormat("{0}\t{1:#,##0}\t{2:#,##0.000}\t{3:#,##0.000}\t{4}\r\n", item.FriendlyName, item.Count, item.Mass, item.Volume, item.Time);
            }

            bld.AppendLine();
            bld.AppendFormat("All Items\r\n");
            bld.AppendFormat("Name\tCount\tMass Kg\tVolume L\tTime\r\n");
            foreach (var item in _allItems)
            {
                bld.AppendFormat("{0}\t{1:#,##0}\t{2:#,##0.000}\t{3:#,##0.000}\t{4}\r\n", item.FriendlyName, item.Count, item.Mass, item.Volume, item.Time);
            }

            #endregion

            #region Asteroid breakdown

            bld.AppendLine();
            bld.AppendFormat("Untouched Ores (Asteroids)\r\n");
            bld.AppendFormat("Asteroid\tOre Name\tVolume m³\r\n");
            foreach (var asteroid in _untouchedOreByAsteroid)
            {
                foreach (var item in asteroid.UntouchedOreList)
                {
                    bld.AppendFormat("{0}\t{1}\t{2:#,##0.000}\r\n", asteroid.Name, item.MaterialName, item.Volume);
                }
            }

            #endregion

            #region Ship breakdown

            // TODO:

            #endregion

            return bld.ToString();
        }

Usage Example

コード例 #1
0
        /// <summary>
        /// Command line driven method.
        /// <example>
        /// /WR "Easy Start Report" "c:\temp\Easy Start Report.txt"
        /// /WR "C:\Users\%USERNAME%\AppData\Roaming\SpaceEngineersDedicated\Saves\Super Excellent Map\sandbox.sbc" "c:\temp\Super Excellent Map.txt"
        /// /WR "C:\Users\%USERNAME%\AppData\Roaming\SpaceEngineersDedicated\Saves\Super Excellent Map" "c:\temp\Super Excellent Map.txt"
        /// /WR "\\SERVER\Dedicated Saves\Super Excellent Map" "\\SERVER\Reports\Super Excellent Map.txt"
        /// </example>
        /// </summary>
        /// <param name="baseModel"></param>
        /// <param name="args"></param>
        public static void GenerateOfflineReport(ExplorerModel baseModel, string[] args)
        {
            var argList = args.ToList();
            var comArgs = args.Where(a => a.ToUpper() == "/WR" || a.ToUpper() == "-WR").Select(a => { return a; }).ToArray();
            foreach (var a in comArgs) argList.Remove(a);

            if (argList.Count < 2)
            {
                Environment.Exit(2);
                return;
            }

            var findSession = argList[0].ToUpper();
            var reportFile = argList[1];
            var reportExtension = Path.GetExtension(reportFile).ToUpper();

            if (reportExtension != ".HTM" &&
                reportExtension != ".HTML" &&
                reportExtension != ".TXT" &&
                reportExtension != ".XML")
            {
                Environment.Exit(1);
                return;
            }

            if (File.Exists(findSession))
            {
                findSession = Path.GetDirectoryName(findSession);
            }

            WorldResource world;

            if (Directory.Exists(findSession))
            {
                world = SelectWorldModel.LoadSession(findSession);
            }
            else
            {
                world = SelectWorldModel.FindSaveSession(SpaceEngineersConsts.BaseLocalPath.SavesPath, findSession);
            }

            if (world == null)
            {
                Environment.Exit(3);
                return;
            }

            baseModel.ActiveWorld = world;
            baseModel.ActiveWorld.LoadDefinitionsAndMods();
            baseModel.ActiveWorld.LoadSector(true);
            baseModel.ParseSandBox();

            var model = new ResourceReportModel();
            model.Load(baseModel.ActiveWorld.Savename, baseModel.Structures);
            model.GenerateReport();
            TempfileUtil.Dispose();

            if (reportExtension == ".HTM" || reportExtension == ".HTML")
                File.WriteAllText(reportFile, model.CreateHtmlReport());

            if (reportExtension == ".TXT")
                File.WriteAllText(reportFile, model.CreateTextReport());

            if (reportExtension == ".XML")
                File.WriteAllText(reportFile, model.CreateXmlReport());

            Environment.Exit(0);
        }