ui/PanelComponents/MainMenu.razor
@using Sandbox;
@using Sandbox.UI;
@namespace SS1
@inherits PanelComponent
<root>
<div class="title" style="color:@(Color.Lerp(new Color(0f, 0.5f, 0f), new Color(0.7f, 1f, 0.7f), 0.5f + Utils.FastSin(Time.Now * 2f) * 0.5f).Rgba);">Sausage Survivors</div>
<div class="content">
<div class="button-container">
@if (State == MenuState.Main)
{
<div class="button" onclick="@(() => ButtonStart(true))">Play</div>
<div class="button red" onclick="@(() => Quit())">Quit</div>
@*<div class="button" onclick="@(() => ButtonStart(true))">Start Singleplayer</div>
<div class="button" onclick="@(() => ButtonStart())">Start Multiplayer</div>
<div class="button blue" onclick="@(() => ButtonLobbies())">Lobbies</div>
<div class="button red" onclick="@(() => Quit())">Quit</div>*@
}
else if (State == MenuState.Lobbies)
{
<div class="button red" onclick="@(() => ButtonBack())">Back</div>
}
</div>
@if (State == MenuState.Lobbies)
{
<div class="content-panel">
<LobbyList />
</div>
}
else if (State == MenuState.Stats)
{
<div class="content-panel">
</div>
}
</div>
<DifficultyPanel></DifficultyPanel>
<LeaderboardPanel [email protected] IsSurvival=@(false) LabelText=@("Fastest Victory") style="right: 165px;"></LeaderboardPanel>
@*<LeaderboardPanel [email protected] IsSurvival=@(true) LabelText=@("Longest Survival") style="right: 400px;"></LeaderboardPanel>*@
@if (MenuManager.Instance.ElapsedTime < 0.75f)
{
<div class="fade_in" style="background-color:@(Color.Black.WithAlpha(Utils.Map(MenuManager.Instance.ElapsedTime, 0f, 0.75f, 1f, 0f)).Rgba);"></div>
}
</root>
@code
{
public static MainMenu Instance { get; private set; }
public static bool IsSingleplayerGame { get; private set; } = true;
public MenuState State = MenuState.Main;
Angles cameraAngles = Angles.Zero;
public enum MenuState
{
Main,
Lobbies,
Stats
}
protected override void OnAwake()
{
Instance = this;
}
protected override void OnStart()
{
cameraAngles = Scene.Camera.WorldRotation;
}
void ButtonStart(bool isSingleplayer = false)
{
IsSingleplayerGame = isSingleplayer;
Game.ActiveScene.LoadFromFile("scenes/game.scene");
}
void ButtonLobbies()
{
State = MenuState.Lobbies;
Sound.Play("ui.button.press");
}
void ButtonBack()
{
State = MenuState.Main;
Sound.Play("ui.navigate.back");
}
void Quit()
{
if (Game.IsEditor)
{
Log.Info("Quit");
}
else
{
Game.Close();
}
}
protected override int BuildHash()
{
float timeHash = MenuManager.Instance.ElapsedTime < 0.75f ? MenuManager.Instance.ElapsedTime : 0f;
return HashCode.Combine(
State,
timeHash,
Time.Now // todo
);
}
}