Files
crystall-punk-14/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs

231 lines
7.1 KiB
C#
Raw Normal View History

using System;
using Robust.Client.Graphics.Drawing;
using Robust.Client.UserInterface;
2020-05-01 23:34:04 -05:00
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.CustomControls;
using Robust.Shared.Localization;
using Robust.Shared.Maths;
namespace Content.Client.GameObjects.Components.Kitchen
{
public class MicrowaveMenu : SS14Window
{
protected override Vector2? CustomSize => (512, 256);
2020-05-03 01:34:00 -05:00
private MicrowaveBoundUserInterface Owner { get; set; }
2020-05-01 23:34:04 -05:00
public event Action<BaseButton.ButtonEventArgs> OnCookTimeSelected;
public uint VisualCookTime = 1;
2020-05-03 03:09:54 -05:00
public Button StartButton { get;}
public Button EjectButton { get;}
2020-05-01 23:34:04 -05:00
public PanelContainer TimerFacePlate { get; }
public ButtonGroup CookTimeButtonGroup { get; }
private VBoxContainer CookTimeButtonVbox { get; }
2020-05-03 03:09:54 -05:00
private VBoxContainer ButtonGridContainer { get; }
private PanelContainer DisableCookingPanelOverlay { get;}
2020-05-03 03:09:54 -05:00
public ItemList IngredientsList { get;}
public ItemList IngredientsListReagents { get; }
private Label _cookTimeInfoLabel { get; }
2020-05-01 23:34:04 -05:00
public MicrowaveMenu(MicrowaveBoundUserInterface owner = null)
{
Owner = owner;
Title = Loc.GetString("Microwave");
DisableCookingPanelOverlay = new PanelContainer
{
MouseFilter = MouseFilterMode.Stop,
PanelOverride = new StyleBoxFlat {BackgroundColor = Color.Black.WithAlpha(0.60f)},
SizeFlagsHorizontal = SizeFlags.Fill,
SizeFlagsVertical = SizeFlags.Fill,
};
var hSplit = new HBoxContainer
2020-05-01 23:34:04 -05:00
{
2020-05-03 03:09:54 -05:00
SizeFlagsHorizontal = SizeFlags.Fill,
2020-05-01 23:34:04 -05:00
SizeFlagsVertical = SizeFlags.Fill
};
IngredientsListReagents = new ItemList
{
SizeFlagsVertical = SizeFlags.FillExpand,
SizeFlagsHorizontal = SizeFlags.FillExpand,
SelectMode = ItemList.ItemListSelectMode.Button,
SizeFlagsStretchRatio = 2,
CustomMinimumSize = (100,128)
};
2020-05-03 03:09:54 -05:00
IngredientsList = new ItemList
2020-05-01 23:34:04 -05:00
{
SizeFlagsVertical = SizeFlags.FillExpand,
SizeFlagsHorizontal = SizeFlags.FillExpand,
2020-05-03 03:09:54 -05:00
SelectMode = ItemList.ItemListSelectMode.Button,
SizeFlagsStretchRatio = 2,
CustomMinimumSize = (100,128)
2020-05-01 23:34:04 -05:00
};
hSplit.AddChild(IngredientsListReagents);
//Padding between the lists.
hSplit.AddChild(new Control
{
CustomMinimumSize = (0,5),
});
2020-05-03 03:09:54 -05:00
hSplit.AddChild(IngredientsList);
var vSplit = new VBoxContainer
{
SizeFlagsVertical = SizeFlags.FillExpand,
SizeFlagsHorizontal = SizeFlags.FillExpand,
};
2020-05-03 03:09:54 -05:00
hSplit.AddChild(vSplit);
ButtonGridContainer = new VBoxContainer
2020-05-01 23:34:04 -05:00
{
Align = BoxContainer.AlignMode.Center,
SizeFlagsStretchRatio = 3
2020-05-01 23:34:04 -05:00
};
2020-05-03 03:09:54 -05:00
StartButton = new Button
2020-05-01 23:34:04 -05:00
{
Text = Loc.GetString("Start"),
TextAlign = Label.AlignMode.Center,
2020-05-01 23:34:04 -05:00
};
2020-05-03 03:09:54 -05:00
EjectButton = new Button
2020-05-01 23:34:04 -05:00
{
Text = Loc.GetString("Eject All Contents"),
ToolTip = Loc.GetString("This vaporizes all reagents, but ejects any solids."),
TextAlign = Label.AlignMode.Center,
2020-05-01 23:34:04 -05:00
};
ButtonGridContainer.AddChild(StartButton);
ButtonGridContainer.AddChild(EjectButton);
vSplit.AddChild(ButtonGridContainer);
//Padding
vSplit.AddChild(new Control
{
CustomMinimumSize = (0, 15),
SizeFlagsVertical = SizeFlags.Fill,
});
2020-05-01 23:34:04 -05:00
CookTimeButtonGroup = new ButtonGroup();
CookTimeButtonVbox = new VBoxContainer
2020-05-01 23:34:04 -05:00
{
SizeFlagsVertical = SizeFlags.FillExpand,
Align = BoxContainer.AlignMode.Center,
};
2020-05-01 23:34:04 -05:00
var index = 0;
for (var i = 0; i <= 12; i++)
{
var newButton = new Button
{
Text = (index <= 0 ? 1 : index).ToString(),
TextAlign = Label.AlignMode.Center,
Group = CookTimeButtonGroup,
};
CookTimeButtonVbox.AddChild(newButton);
newButton.OnPressed += args =>
{
OnCookTimeSelected?.Invoke(args);
_cookTimeInfoLabel.Text = $"{Loc.GetString("COOK TIME")}: {VisualCookTime}";
};
index+=5;
}
var cookTimeOneSecondButton = (Button)CookTimeButtonVbox.GetChild(0);
cookTimeOneSecondButton.Pressed = true;
_cookTimeInfoLabel = new Label
{
Text = Loc.GetString($"COOK TIME: {VisualCookTime}"),
Align = Label.AlignMode.Center,
Modulate = Color.White,
SizeFlagsVertical = SizeFlags.ShrinkCenter
2020-05-03 03:09:54 -05:00
};
var innerTimerPanel = new PanelContainer
{
SizeFlagsVertical = SizeFlags.FillExpand,
ModulateSelfOverride = Color.Red,
CustomMinimumSize = (100, 128),
PanelOverride = new StyleBoxFlat {BackgroundColor = Color.Black.WithAlpha(0.5f)},
Children =
{
new VBoxContainer
{
Children =
{
new PanelContainer
{
PanelOverride = new StyleBoxFlat(){BackgroundColor = Color.Gray.WithAlpha(0.2f)},
Children =
{
_cookTimeInfoLabel
}
},
new ScrollContainer()
{
SizeFlagsVertical = SizeFlags.FillExpand,
Children =
{
CookTimeButtonVbox,
}
},
}
}
}
};
2020-05-03 03:09:54 -05:00
TimerFacePlate = new PanelContainer()
{
SizeFlagsVertical = SizeFlags.FillExpand,
SizeFlagsHorizontal = SizeFlags.FillExpand,
Children =
{
innerTimerPanel
},
};
2020-05-03 03:09:54 -05:00
vSplit.AddChild(TimerFacePlate);
2020-05-03 03:09:54 -05:00
Contents.AddChild(hSplit);
Contents.AddChild(DisableCookingPanelOverlay);
2020-05-01 23:34:04 -05:00
}
public void ToggleBusyDisableOverlayPanel(bool shouldDisable)
{
DisableCookingPanelOverlay.Visible = shouldDisable;
}
2020-05-01 23:34:04 -05:00
}
}