ui/SettingsPanel2.razor
@using Sandbox;
@using Sandbox.UI;
@inherits Panel
@attribute [StyleSheet("SettingsPanel2.razor.scss")]
@{
var manager = Manager.Instance;
}
<root>
<div class="outer_container" style="height: @(manager.GameState == GameState.Menu ? 35f : 60f)%;">
@* <div class="title" style="transform: rotate(@(Utils.FastSin(Time.Now * 0.9f) * 1.3f)) scale(@(0.95f + Utils.FastSin(Time.Now * 1.5f) * 0.02f));">Settings</div> *@
<div class="options">
<div class="volume_container">
<div class="volume_title">Volume</div>
<div class="volume_row muted">
<div class="volume_label" style="opacity:@(manager.IsMuted ? 0.3f : 1f);">SFX</div>
<SliderControl style="min-width: 300px;" Value:bind="@manager.SfxVolume" Min=@(0f) Max=@(100f) Step=@(1) OnValueChanged=@SetSfxVolume></SliderControl>
</div>
<div class="volume_row">
<div class="volume_label" style="opacity:@(manager.IsMuted ? 0.3f : 1f);">Music</div>
<SliderControl style="min-width: 300px;" Value:bind="@manager.MusicVolume" Min=@(0f) Max=@(100f) Step=@(1) OnValueChanged=@SetMusicVolume></SliderControl>
</div>
<div class="volume_row">
<div class="volume_label" style="color:@(manager.IsMuted ? "#ff5555bb" : "#ffffffbb");">Mute</div>
<SwitchControl Value:bind="@manager.IsMuted" OnValueChanged=@SetMute></SwitchControl>
</div>
</div>
</div>
<div class="button_container">
@if(manager.GameState != GameState.Menu)
{
<div class="button" onmouseover=@(() => OnMouseOverButton() ) onclick=@(() => RestartButtonClicked() )>
<div class="button_icon" style="background-image:url(@($"textures/ui_restart_border.png"));"></div>
<div class="button_text">Restart</div>
</div>
<div class="button" onmouseover=@(() => OnMouseOverButton() ) onclick=@(() => MenuButtonClicked() )>
<div class="button_icon" style="background-image:url(@($"textures/ui_door_border.png"));"></div>
<div class="button_text">Main Menu</div>
</div>
}
<div class="button" onmouseover=@(() => OnMouseOverButton() ) onclick=@(() => BackButtonClicked() )>
<div class="button_icon" style="background-image:url(@($"textures/ui_x_border.png"));"></div>
<div class="button_text">@(manager.GameState == GameState.Menu ? "Back" : "Close")</div>
</div>
</div>
</div>
</root>
@code
{
public void RestartButtonClicked()
{
Manager.Instance.PlaySfx("click_0");
if(Manager.Instance.GameState == GameState.Playing)
{
Manager.Instance.IsLevelActive = false;
Manager.Instance.ShouldRestart = true;
Manager.Instance.ShouldReturnToMenu = false;
}
else
{
Manager.Instance.StartNewRun();
}
Manager.Instance.IsSettingsOpen = false;
}
public void MenuButtonClicked()
{
Manager.Instance.PlaySfx("click_0");
if(Manager.Instance.GameState == GameState.Playing)
{
Manager.Instance.IsLevelActive = false;
Manager.Instance.ShouldReturnToMenu = true;
Manager.Instance.ShouldRestart = false;
}
else
{
Manager.Instance.StartMenu();
}
Manager.Instance.IsSettingsOpen = false;
}
public void BackButtonClicked()
{
Manager.Instance.PlaySfx("click_0");
Manager.Instance.IsSettingsOpen = false;
}
void OnMouseOverButton()
{
Manager.Instance.PlaySfx("click_1");
}
protected override int BuildHash()
{
// todo
return HashCode.Combine(
Manager.Instance.IsMuted,
Time.Now
);
}
void SetMusicVolume(float value)
{
if (Manager.Instance.IsMuted)
return;
Manager.Instance.RefreshMusicMixerVolume();
}
void SetSfxVolume(float value)
{
if (Manager.Instance.IsMuted)
return;
Manager.Instance.RefreshSfxMixerVolume();
}
void SetMute(bool value)
{
// Log.Info($"SetMute - Manager.Instance.IsMuted: {Manager.Instance.IsMuted} value: {value}");
Manager.Instance.SetMute(value);
Manager.Instance.PlaySfx("click_0");
}
}