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();
}