Modify GenLevelScreen and MiscOptionsScreen to have nicer buttons, add ClassicOptionsScreen.

This commit is contained in:
UnknownShadow200 2016-01-28 00:02:10 +11:00
parent 1af8e2488a
commit 92d3936766
7 changed files with 133 additions and 27 deletions

View File

@ -0,0 +1,105 @@
using System;
using System.Drawing;
using ClassicalSharp.Singleplayer;
namespace ClassicalSharp {
public class ClassicOptionsScreen : MenuOptionsScreen {
public ClassicOptionsScreen( Game game ) : base( game ) {
}
public override void Init() {
base.Init();
INetworkProcessor network = game.Network;
widgets = new ButtonWidget[] {
// Column 1
Make( -140, -200, "Music", OnWidgetClick,
g => g.UseMusic ? "yes" : "no",
(g, v) => { g.UseMusic = v == "yes";
g.AudioPlayer.SetMusic( g.UseMusic );
Options.Set( OptionsKey.UseMusic, v == "yes" ); }),
Make( -140, -150, "Invert mouse", OnWidgetClick,
g => g.InvertMouse ? "yes" : "no",
(g, v) => { g.InvertMouse = v == "yes";
Options.Set( OptionsKey.InvertMouse, v == "yes" ); }),
Make( -140, -100, "View distance", OnWidgetClick,
g => g.ViewDistance.ToString(),
(g, v) => g.SetViewDistance( Int32.Parse( v ), true ) ),
!network.IsSinglePlayer ? null :
Make( -140, -50, "Block physics", OnWidgetClick,
g => ((SinglePlayerServer)network).physics.Enabled ? "yes" : "no",
(g, v) => {
((SinglePlayerServer)network).physics.Enabled = v == "yes";
Options.Set( OptionsKey.SingleplayerPhysics, v == "yes" );
}),
Make( -140, 0, "Mouse sensitivity", OnWidgetClick,
g => g.MouseSensitivity.ToString(),
(g, v) => { g.MouseSensitivity = Int32.Parse( v );
Options.Set( OptionsKey.Sensitivity, v ); } ),
// Column 2
Make( 140, -200, "Sound", OnWidgetClick,
g => g.UseSound ? "yes" : "no",
(g, v) => { g.UseSound = v == "yes";
g.AudioPlayer.SetSound( g.UseSound );
Options.Set( OptionsKey.UseSound, v == "yes" ); }),
Make( 140, -150, "Show FPS", OnWidgetClick,
g => g.ShowFPS ? "yes" : "no",
(g, v) => g.ShowFPS = v == "yes" ),
Make( 140, -100, "View bobbing", OnWidgetClick,
g => g.ViewBobbing ? "yes" : "no",
(g, v) => { g.ViewBobbing = v == "yes";
Options.Set( OptionsKey.ViewBobbing, v == "yes" ); }),
Make( 140, -50, "FPS limit", OnWidgetClick,
g => g.FpsLimit.ToString(),
(g, v) => { object raw = Enum.Parse( typeof(FpsLimitMethod), v );
g.SetFpsLimitMethod( (FpsLimitMethod)raw );
Options.Set( OptionsKey.FpsLimit, v ); } ),
MakeBack( false, titleFont,
(g, w) => g.SetNewScreen( new PauseScreen( g ) ) ),
null,
};
widgets[8].Metadata = typeof(FpsLimitMethod);
MakeValidators();
MakeDescriptions();
okayIndex = widgets.Length - 1;
}
void MakeValidators() {
INetworkProcessor network = game.Network;
validators = new MenuInputValidator[] {
new BooleanValidator(),
new BooleanValidator(),
new IntegerValidator( 16, 4096 ),
network.IsSinglePlayer ? new BooleanValidator() : null,
new IntegerValidator( 1, 100 ),
new BooleanValidator(),
new BooleanValidator(),
new BooleanValidator(),
new EnumValidator(),
};
}
void MakeDescriptions() {
descriptions = new string[widgets.Length][];
descriptions[8] = new[] {
"&aDetermines the method used to limit the number of FPS",
"&eVSync: &fNumber of frames rendered is at most the monitor's refresh rate.",
"&e30/60/120 FPS: &f30/60/120 frames rendered at most each second.",
"&eNoLimit: &Renders as many frames as the GPU can handle each second.",
"&cUsing NoLimit mode is discouraged for general usage.",
};
}
}
}

View File

@ -58,16 +58,16 @@ namespace ClassicalSharp {
titleFont = new Font( "Arial", size, FontStyle.Bold );
regularFont = new Font( "Arial", 16, FontStyle.Regular );
inputs = new [] { MakeInput( -80 ), MakeInput( -40 ),
MakeInput( 0 ), MakeInput( 40 )
inputs = new [] { MakeInput( -100 ), MakeInput( -60 ),
MakeInput( -20 ), MakeInput( 20 )
};
labels = new [] { MakeLabel( -80, "Width:" ), MakeLabel( -40, "Height:" ),
MakeLabel( 0, "Length:" ), MakeLabel( 40, "Seed:" ),
labels = new [] { MakeLabel( -100, "Width:" ), MakeLabel( -60, "Height:" ),
MakeLabel( -20, "Length:" ), MakeLabel( 20, "Seed:" ),
};
widgets = new [] {
ButtonWidget.Create( game, 0, 90, 250, 30, "Generate flatgrass", Anchor.Centre,
ButtonWidget.Create( game, 0, 80, 250, 35, "Generate flatgrass", Anchor.Centre,
Anchor.Centre, titleFont, GenFlatgrassClick ),
ButtonWidget.Create( game, 0, 140, 250, 30, "Generate notchy", Anchor.Centre,
ButtonWidget.Create( game, 0, 130, 250, 35, "Generate notchy", Anchor.Centre,
Anchor.Centre, titleFont, GenNotchyClick ),
MakeBack( false, titleFont,
(g, w) => g.SetNewScreen( new PauseScreen( g ) ) ),

View File

@ -20,11 +20,11 @@ namespace ClassicalSharp {
g => g.LocalPlayer.ReachDistance.ToString(),
(g, v) => g.LocalPlayer.ReachDistance = Single.Parse( v ) ),
Make( -140, -150, "Use sound", OnWidgetClick,
g => g.UseSound ? "yes" : "no",
(g, v) => { g.UseSound = v == "yes";
g.AudioPlayer.SetSound( g.UseSound );
Options.Set( OptionsKey.UseSound, v == "yes" ); }),
Make( -140, -150, "Music", OnWidgetClick,
g => g.UseMusic ? "yes" : "no",
(g, v) => { g.UseMusic = v == "yes";
g.AudioPlayer.SetMusic( g.UseMusic );
Options.Set( OptionsKey.UseMusic, v == "yes" ); }),
Make( -140, -100, "Names mode", OnWidgetClick,
g => g.Players.NamesMode.ToString(),
@ -51,11 +51,11 @@ namespace ClassicalSharp {
Options.Set( OptionsKey.SingleplayerPhysics, v == "yes" );
}),
Make( 140, -150, "Use music", OnWidgetClick,
g => g.UseMusic ? "yes" : "no",
(g, v) => { g.UseMusic = v == "yes";
g.AudioPlayer.SetMusic( g.UseMusic );
Options.Set( OptionsKey.UseMusic, v == "yes" ); }),
Make( 140, -150, "Sound", OnWidgetClick,
g => g.UseSound ? "yes" : "no",
(g, v) => { g.UseSound = v == "yes";
g.AudioPlayer.SetSound( g.UseSound );
Options.Set( OptionsKey.UseSound, v == "yes" ); }),
Make( 140, -100, "View bobbing", OnWidgetClick,
g => g.ViewBobbing ? "yes" : "no",

View File

@ -69,20 +69,18 @@ namespace ClassicalSharp {
void MakeClassic() {
widgets = new ButtonWidget[] {
MakeClassic( 0, -150, "Options", Anchor.Centre,
(g, w) => g.SetNewScreen( new MiscOptionsScreen( g ) ) ),
(g, w) => g.SetNewScreen( new ClassicOptionsScreen( g ) ) ),
MakeClassic( 0, -100, "Key bindings", Anchor.Centre,
(g, w) => g.SetNewScreen( new NormalKeyBindingsScreen( g ) ) ),
MakeClassic( 0, -50, "Save level", Anchor.Centre,
(g, w) => g.SetNewScreen( new SaveLevelScreen( g ) ) ),
!game.Network.IsSinglePlayer ? null :
MakeClassic( 0, -50, "Generate level", Anchor.Centre,
(g, w) => g.SetNewScreen( new GenLevelScreen( g ) ) ),
!game.Network.IsSinglePlayer ? null :
MakeClassic( 0, 0, "Load level", Anchor.Centre,
(g, w) => g.SetNewScreen( new LoadLevelScreen( g ) ) ),
!game.Network.IsSinglePlayer ? null :
MakeClassic( 0, 50, "Generate level", Anchor.Centre,
(g, w) => g.SetNewScreen( new GenLevelScreen( g ) ) ),
MakeClassic( 0, 100, "Nostalgia options", Anchor.Centre,
(g, w) => g.SetNewScreen( new NostalgiaScreen( g ) ) ),
MakeClassic( 0, 50, "Save level", Anchor.Centre,
(g, w) => g.SetNewScreen( new SaveLevelScreen( g ) ) ),
MakeBack( true, titleFont,
(g, w) => g.SetNewScreen( null ) ),

View File

@ -95,6 +95,7 @@
<Compile Include="2D\Screens\FpsScreen.cs" />
<Compile Include="2D\Screens\HotkeyScreen.cs" />
<Compile Include="2D\Screens\LoadingMapScreen.cs" />
<Compile Include="2D\Screens\Menu\ClassicOptionsScreen.cs" />
<Compile Include="2D\Screens\Menu\EnvSettingsScreen.cs" />
<Compile Include="2D\Screens\Menu\GenLevelScreen.cs" />
<Compile Include="2D\Screens\Menu\GuiOptionsScreen.cs" />

View File

@ -20,7 +20,7 @@ namespace ClassicalSharp {
/// <summary> Mode of how names of hovered entities are rendered (with or without depth testing),
/// and how other entity names are rendered. </summary>
public NameMode NamesMode = NameMode.AllNames;
public NameMode NamesMode = NameMode.AllNamesAndHovered;
public EntityList( Game game ) {
this.game = game;

View File

@ -48,8 +48,8 @@ namespace Launcher2 {
MakeButtonAt( "Update check", 160, buttonHeight, buttonFont,
Anchor.BottomOrRight, Anchor.BottomOrRight, -10, -10,
(x, y) => game.SetScreen( new UpdatesScreen( game ) ) );
string mode = game.ClassicMode ? "Normal mode" : "Classic mode";
MakeButtonAt( mode, 160, buttonHeight, buttonFont,
string mode = game.ClassicMode ? "Normal mode" : "Pure classic mode";
MakeButtonAt( mode, 190, buttonHeight, buttonFont,
Anchor.Centre, Anchor.BottomOrRight, 0, -10, ModeClick );
if( widgets[widgetIndex] != null ) {
@ -89,6 +89,8 @@ namespace Launcher2 {
game.ClassicMode = !game.ClassicMode;
Options.Load();
Options.Set( "mode-classic", game.ClassicMode );
if( game.ClassicMode )
Options.Set( "namesmode", "AllNamesAndHovered" );
Options.Set( "nostalgia-customblocks", !game.ClassicMode );
Options.Set( "nostalgia-usecpe", !game.ClassicMode );