public void Load()
{
CubeAssets = new ObservableCollection<ComponentItemModel>();
ComponentAssets = new ObservableCollection<ComponentItemModel>();
ItemAssets = new ObservableCollection<ComponentItemModel>();
MaterialAssets = new ObservableCollection<ComponentItemModel>();
var contentPath = ToolboxUpdater.GetApplicationContentPath();
foreach (var cubeDefinition in SpaceEngineersCore.Resources.CubeBlockDefinitions)
{
var props = new Dictionary<string, string>();
var fields = cubeDefinition.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance);
foreach (var field in fields)
{
props.Add(field.Name, GetValue(field, cubeDefinition));
}
CubeAssets.Add(new ComponentItemModel
{
Name = cubeDefinition.DisplayNameText,
TypeId = cubeDefinition.Id.TypeId,
TypeIdString = cubeDefinition.Id.TypeId.ToString(),
SubtypeId = cubeDefinition.Id.SubtypeName,
TextureFile = (cubeDefinition.Icons == null || cubeDefinition.Icons.First() == null) ? null : SpaceEngineersCore.GetDataPathOrDefault(cubeDefinition.Icons.First(), Path.Combine(contentPath, cubeDefinition.Icons.First())),
Time = TimeSpan.FromSeconds(cubeDefinition.MaxIntegrity / cubeDefinition.IntegrityPointsPerSec),
Accessible = cubeDefinition.Public,
Mass = SpaceEngineersApi.FetchCubeBlockMass(cubeDefinition.Id.TypeId, cubeDefinition.CubeSize, cubeDefinition.Id.SubtypeName),
CubeSize = cubeDefinition.CubeSize,
Size = new BindableSize3DIModel(cubeDefinition.Size),
CustomProperties = props,
});
}
foreach (var componentDefinition in SpaceEngineersCore.Resources.ComponentDefinitions)
{
var bp = SpaceEngineersApi.GetBlueprint(componentDefinition.Id.TypeId, componentDefinition.Id.SubtypeName);
float amount = 0;
if (bp != null && bp.Results.Length > 0)
amount = (float)bp.Results[0].Amount;
ComponentAssets.Add(new ComponentItemModel
{
Name = componentDefinition.DisplayNameText,
TypeId = componentDefinition.Id.TypeId,
TypeIdString = componentDefinition.Id.TypeId.ToString(),
SubtypeId = componentDefinition.Id.SubtypeName,
Mass = componentDefinition.Mass,
TextureFile = (componentDefinition.Icons == null || componentDefinition.Icons.First() == null) ? null : SpaceEngineersCore.GetDataPathOrDefault(componentDefinition.Icons.First(), Path.Combine(contentPath, componentDefinition.Icons.First())),
Volume = componentDefinition.Volume * SpaceEngineersConsts.VolumeMultiplyer,
Accessible = componentDefinition.Public,
Time = bp != null ? TimeSpan.FromSeconds(bp.BaseProductionTimeInSeconds / amount) : (TimeSpan?)null,
});
}
foreach (var physicalItemDefinition in SpaceEngineersCore.Resources.PhysicalItemDefinitions)
{
var bp = SpaceEngineersApi.GetBlueprint(physicalItemDefinition.Id.TypeId, physicalItemDefinition.Id.SubtypeName);
float amount = 0;
if (bp != null)
{
if (bp.Results != null && bp.Results.Length > 0)
amount = (float)bp.Results[0].Amount;
}
float timeMassMultiplyer = 1f;
if (physicalItemDefinition.Id.TypeId == typeof(MyObjectBuilder_Ore)
|| physicalItemDefinition.Id.TypeId == typeof(MyObjectBuilder_Ingot))
timeMassMultiplyer = physicalItemDefinition.Mass;
ItemAssets.Add(new ComponentItemModel
{
Name = physicalItemDefinition.DisplayNameText,
TypeId = physicalItemDefinition.Id.TypeId,
TypeIdString = physicalItemDefinition.Id.TypeId.ToString(),
SubtypeId = physicalItemDefinition.Id.SubtypeName,
Mass = physicalItemDefinition.Mass,
Volume = physicalItemDefinition.Volume * SpaceEngineersConsts.VolumeMultiplyer,
TextureFile = physicalItemDefinition.Icons == null ? null : SpaceEngineersCore.GetDataPathOrDefault(physicalItemDefinition.Icons.First(), Path.Combine(contentPath, physicalItemDefinition.Icons.First())),
Accessible = physicalItemDefinition.Public,
Time = bp != null ? TimeSpan.FromSeconds(bp.BaseProductionTimeInSeconds / amount / timeMassMultiplyer) : (TimeSpan?)null,
});
}
foreach (MyVoxelMaterialDefinition voxelMaterialDefinition in SpaceEngineersCore.Resources.VoxelMaterialDefinitions)
{
string texture = voxelMaterialDefinition.GetVoxelDisplayTexture();
MaterialAssets.Add(new ComponentItemModel
{
Name = voxelMaterialDefinition.Id.SubtypeName,
TextureFile = texture == null ? null : SpaceEngineersCore.GetDataPathOrDefault(texture, Path.Combine(contentPath, texture)),
IsRare = voxelMaterialDefinition.IsRare,
OreName = voxelMaterialDefinition.MinedOre,
MineOreRatio = voxelMaterialDefinition.MinedOreRatio,
});
}
}