Adds temperature to solutions (#5834)
This commit is contained in:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user