Adds temperature to solutions (#5834)

This commit is contained in:
TemporalOroboros
2021-12-24 01:22:34 -08:00
committed by GitHub
parent c94f93732b
commit 201952e618
18 changed files with 858 additions and 21 deletions

View File

@@ -9,6 +9,7 @@ using Robust.Client.UserInterface.XAML;
using Robust.Shared.GameObjects;
using Robust.Shared.IoC;
using Robust.Shared.Localization;
using Robust.Shared.Maths;
namespace Content.Client.Administration.UI.ManageSolutions
{
@@ -66,9 +67,8 @@ namespace Content.Client.Administration.UI.ManageSolutions
if (!_solutions.TryGetValue(_selectedSolution, out var solution))
return;
TotalLabel.Text = Loc.GetString("admin-solutions-window-capacity-label",
("currentVolume", solution.TotalVolume),
("maxVolume",solution.MaxVolume));
UpdateVolumeBox(solution);
UpdateThermalBox(solution);
foreach (var reagent in solution)
{
@@ -76,6 +76,109 @@ namespace Content.Client.Administration.UI.ManageSolutions
}
}
/// <summary>
/// Updates the entry displaying the current and maximum volume of the selected solution.
/// </summary>
/// <param name="solution">The selected solution.</param>
private void UpdateVolumeBox(Solution solution)
{
VolumeBox.DisposeAllChildren();
var volumeLabel = new Label();
volumeLabel.HorizontalExpand = true;
volumeLabel.Margin = new Thickness(0, 4);
volumeLabel.Text = Loc.GetString("admin-solutions-window-volume-label",
("currentVolume", solution.CurrentVolume),
("maxVolume", solution.MaxVolume));
var capacityBox = new BoxContainer();
capacityBox.Orientation = BoxContainer.LayoutOrientation.Horizontal;
capacityBox.HorizontalExpand = true;
capacityBox.Margin = new Thickness(0, 4);
var capacityLabel = new Label();
capacityLabel.HorizontalExpand = true;
capacityLabel.Margin = new Thickness(0, 1);
capacityLabel.Text = Loc.GetString("admin-solutions-window-capacity-label");
var capacitySpin = new FloatSpinBox(1, 2);
capacitySpin.HorizontalExpand = true;
capacitySpin.Margin = new Thickness(0, 1);
capacitySpin.Value = (float) solution.MaxVolume;
capacitySpin.OnValueChanged += SetCapacity;
capacityBox.AddChild(capacityLabel);
capacityBox.AddChild(capacitySpin);
VolumeBox.AddChild(volumeLabel);
VolumeBox.AddChild(capacityBox);
}
/// <summary>
/// Updates the entry displaying the current specific heat, heat capacity, temperature, and thermal energy
/// of the selected solution.
/// </summary>
/// <param name="solution">The selected solution.</param>
private void UpdateThermalBox(Solution solution)
{
ThermalBox.DisposeAllChildren();
var specificHeatLabel = new Label();
specificHeatLabel.HorizontalExpand = true;
specificHeatLabel.Margin = new Thickness(0, 1);
specificHeatLabel.Text = Loc.GetString("admin-solutions-window-specific-heat-label", ("specificHeat", solution.SpecificHeat));
var heatCapacityLabel = new Label();
heatCapacityLabel.HorizontalExpand = true;
heatCapacityLabel.Margin = new Thickness(0, 1);
heatCapacityLabel.Text = Loc.GetString("admin-solutions-window-heat-capacity-label", ("heatCapacity", solution.HeatCapacity));
// Temperature entry:
var temperatureBox = new BoxContainer();
temperatureBox.Orientation = BoxContainer.LayoutOrientation.Horizontal;
temperatureBox.HorizontalExpand = true;
temperatureBox.Margin = new Thickness(0, 1);
var temperatureLabel = new Label();
temperatureLabel.HorizontalExpand = true;
temperatureLabel.Margin = new Thickness(0, 1);
temperatureLabel.Text = Loc.GetString("admin-solutions-window-temperature-label");
var temperatureSpin = new FloatSpinBox(1, 2);
temperatureSpin.HorizontalExpand = true;
temperatureSpin.Margin = new Thickness(0, 1);
temperatureSpin.Value = solution.Temperature;
temperatureSpin.OnValueChanged += SetTemperature;
temperatureBox.AddChild(temperatureLabel);
temperatureBox.AddChild(temperatureSpin);
// Thermal energy entry:
var thermalEnergyBox = new BoxContainer();
thermalEnergyBox.Orientation = BoxContainer.LayoutOrientation.Horizontal;
thermalEnergyBox.HorizontalExpand = true;
thermalEnergyBox.Margin = new Thickness(0, 1);
var thermalEnergyLabel = new Label();
thermalEnergyLabel.HorizontalExpand = true;
thermalEnergyLabel.Margin = new Thickness(0, 1);
thermalEnergyLabel.Text = Loc.GetString("admin-solutions-window-thermal-energy-label");
var thermalEnergySpin = new FloatSpinBox(1, 2);
thermalEnergySpin.HorizontalExpand = true;
thermalEnergySpin.Margin = new Thickness(0, 1);
thermalEnergySpin.Value = solution.ThermalEnergy;
thermalEnergySpin.OnValueChanged += SetThermalEnergy;
thermalEnergyBox.AddChild(thermalEnergyLabel);
thermalEnergyBox.AddChild(thermalEnergySpin);
ThermalBox.AddChild(specificHeatLabel);
ThermalBox.AddChild(heatCapacityLabel);
ThermalBox.AddChild(temperatureBox);
ThermalBox.AddChild(thermalEnergyBox);
}
/// <summary>
/// Add a single reagent entry to the list
/// </summary>
@@ -112,6 +215,41 @@ namespace Content.Client.Administration.UI.ManageSolutions
_consoleHost.ExecuteCommand(command);
}
private void SetCapacity(FloatSpinBox.FloatSpinBoxEventArgs args)
{
if (_solutions == null || _selectedSolution == null)
return;
var command = $"setsolutioncapacity {_target} {_selectedSolution} {args.Value}";
_consoleHost.ExecuteCommand(command);
}
/// <summary>
/// Sets the temperature of the selected solution to a value.
/// </summary>
/// <param name="args">An argument struct containing the value to set the temperature to.</param>
private void SetTemperature(FloatSpinBox.FloatSpinBoxEventArgs args)
{
if (_solutions == null || _selectedSolution == null)
return;
var command = $"setsolutiontemperature {_target} {_selectedSolution} {args.Value}";
_consoleHost.ExecuteCommand(command);
}
/// <summary>
/// Sets the thermal energy of the selected solution to a value.
/// </summary>
/// <param name="args">An argument struct containing the value to set the thermal energy to.</param>
private void SetThermalEnergy(FloatSpinBox.FloatSpinBoxEventArgs args)
{
if (_solutions == null || _selectedSolution == null)
return;
var command = $"setsolutionthermalenergy {_target} {_selectedSolution} {args.Value}";
_consoleHost.ExecuteCommand(command);
}
/// <summary>
/// Open a new window that has options to add new reagents to the solution.
/// </summary>