Construct Compound

This commit is contained in:
h z
2024-06-22 02:28:37 +08:00
parent 5a5bc2d556
commit d0d90501a5
5 changed files with 34 additions and 31 deletions

View File

@@ -10,11 +10,10 @@ public partial class Bottle : MenuButton, IChemicalContainer
private HeterogeneousMixture HeterogeneousMixture { get; set; }
public double Volume() => ContainerVolume;
public HeterogeneousMixture Content { get; set; }
public HeterogeneousMixture Content { get; set; } = HeterogeneousMixture.Null;
public double EnvironmentPressure { get; set; }
public double EnvironmentTemperature { get; set; }
public HeterogeneousMixture ChemicalContent { get; set; } = HeterogeneousMixture.Null;
public HomogeneousMixture MainComponent => ChemicalContent.Layers
public HomogeneousMixture MainComponent => Content.Layers
.DefaultIfEmpty(HomogeneousMixture.Null)
.MaxBy(x => x.Amount);
public Compound MainCompound => MainComponent.Compounds
@@ -23,12 +22,24 @@ public partial class Bottle : MenuButton, IChemicalContainer
private const string Empty = "Empty";
private string PotionName => $"Main: {(MainCompound == Compound.Null ? Empty : MainCompound.Expression)}";
private string PotionAmount => $"Amount: {(MainCompound == Compound.Null ? 0d : ChemicalContent.Amount)}";
private string PotionAmount => $"Amount: {(MainCompound == Compound.Null ? 0d : Content.Amount)}";
public Sprite2D ContentTexture { get; set; }
private void BuildMenu()
public void BuildMenu()
{
if (Content == HeterogeneousMixture.Null)
ContentTexture.Modulate = Color.Color8(0, 0, 0, 0);
else
{
ContentTexture.Modulate = Color.Color8(
MainComponent.ColorRed,
MainComponent.ColorGreen,
MainComponent.ColorBlue,
MainComponent.ColorTransparent
);
}
PopupMenu menu = GetPopup();
menu.Clear();
foreach (var w in menu.GetSignalConnectionList(PopupMenu.SignalName.IdPressed))
@@ -55,8 +66,8 @@ public partial class Bottle : MenuButton, IChemicalContainer
GlobalScene.MainScene.SwitchToConstructor();
return;
case 3:
ChemicalContent = GlobalScene.Flask.Content;
ChemicalContent.Container = this;
Content = GlobalScene.Flask.Content;
Content.Container = this;
GlobalScene.Flask.Content = HeterogeneousMixture.Null;
GlobalScene.Flask.Update();
return;
@@ -71,17 +82,6 @@ public partial class Bottle : MenuButton, IChemicalContainer
public override void _Ready()
{
ContentTexture = GetNode<Sprite2D>("Content");
if (ChemicalContent == HeterogeneousMixture.Null)
ContentTexture.Modulate = new Color(0, 0, 0, 0);
else
{
ContentTexture.Modulate = new Color(
MainComponent.ColorRed,
MainComponent.ColorGreen,
MainComponent.ColorBlue,
MainComponent.ColorTransparent
);
}
BuildMenu();
}