diff --git a/Launcher2/Gui/Screens/ChooseModeScreen.cs b/Launcher2/Gui/Screens/ChooseModeScreen.cs index 382e09bc9..619498816 100644 --- a/Launcher2/Gui/Screens/ChooseModeScreen.cs +++ b/Launcher2/Gui/Screens/ChooseModeScreen.cs @@ -8,9 +8,9 @@ using OpenTK.Input; namespace Launcher { - public sealed class ChooseModeScreen : LauncherScreen { + public abstract class ChooseModeScreen : LauncherScreen { - Font titleFont, infoFont; + protected Font titleFont, infoFont; public ChooseModeScreen( LauncherWindow game ) : base( game ) { game.Window.Mouse.Move += MouseMove; game.Window.Mouse.ButtonDown += MouseButtonDown; @@ -18,7 +18,7 @@ namespace Launcher { titleFont = new Font( game.FontName, 16, FontStyle.Bold ); infoFont = new Font( game.FontName, 14, FontStyle.Regular ); buttonFont = titleFont; - widgets = new LauncherWidget[13]; + widgets = new LauncherWidget[14]; } public override void Init() { @@ -61,32 +61,34 @@ namespace Launcher { void MakeWidgets() { widgetIndex = 0; + int middle = game.Width / 2; + MakeLabelAt("&fChoose game mode", titleFont, Anchor.Centre, Anchor.Centre, 0, -135 ); - MakeButtonAt( "Normal", 145, 35, titleFont, Anchor.LeftOrTop, Anchor.Centre, 70, -72, + MakeButtonAt( "Normal", 145, 35, titleFont, Anchor.LeftOrTop, Anchor.Centre, middle - 250, -72, (x, y) => ModeClick( false, false ) ); MakeLabelAt( "&eEnables custom blocks, env settings,", - infoFont, Anchor.LeftOrTop, Anchor.Centre, 235, -72 - 12 ); + infoFont, Anchor.LeftOrTop, Anchor.Centre, middle - 85, -72 - 12 ); MakeLabelAt( "&elonger messages, and more", - infoFont, Anchor.LeftOrTop, Anchor.Centre, 235, -72 + 12 ); + infoFont, Anchor.LeftOrTop, Anchor.Centre, middle - 85, -72 + 12 ); - MakeButtonAt( "Classic", 145, 35, titleFont, Anchor.LeftOrTop, Anchor.Centre, 70, 0, + MakeButtonAt( "Classic", 145, 35, titleFont, Anchor.LeftOrTop, Anchor.Centre, middle - 250, 0, (x, y) => ModeClick( true, false ) ); MakeLabelAt( "&eOnly uses blocks and features from", - infoFont, Anchor.LeftOrTop, Anchor.Centre, 235, 0 - 12 ); + infoFont, Anchor.LeftOrTop, Anchor.Centre, middle - 85, 0 - 12 ); MakeLabelAt( "ðe original minecraft classic", - infoFont, Anchor.LeftOrTop, Anchor.Centre, 235, 0 + 12 ); + infoFont, Anchor.LeftOrTop, Anchor.Centre, middle - 85, 0 + 12 ); - MakeButtonAt( "Classic +hax", 145, 35, titleFont, Anchor.LeftOrTop, Anchor.Centre, 70, 72, + MakeButtonAt( "Classic +hax", 145, 35, titleFont, Anchor.LeftOrTop, Anchor.Centre, middle - 250, 72, (x, y) => ModeClick( true, true ) ); MakeLabelAt( "&eSame as Classic mode, except that", - infoFont, Anchor.LeftOrTop, Anchor.Centre, 235, 72 - 12 ); + infoFont, Anchor.LeftOrTop, Anchor.Centre, middle - 85, 72 - 12 ); MakeLabelAt( "&ehacks (noclip/fly/speed) are enabled", - infoFont, Anchor.LeftOrTop, Anchor.Centre, 235, 72 + 12 ); - - MakeButtonAt( "Back", 80, 35, titleFont, Anchor.Centre, - 0, 175, (x, y) => game.SetScreen( new MainScreen( game ) ) ); + infoFont, Anchor.LeftOrTop, Anchor.Centre, middle - 85, 72 + 12 ); + MakeOtherWidgets(); } + protected virtual void MakeOtherWidgets() { } + void ModeClick( bool classic, bool classicHacks ) { game.ClassicMode = classic; Options.Load(); @@ -115,4 +117,24 @@ namespace Launcher { infoFont.Dispose(); } } + + public sealed class ChooseModeNormalScreen : ChooseModeScreen { + + public ChooseModeNormalScreen( LauncherWindow game ) : base( game ) { } + + protected override void MakeOtherWidgets() { + MakeButtonAt( "Back", 80, 35, titleFont, Anchor.Centre, + 0, 175, (x, y) => game.SetScreen( new MainScreen( game ) ) ); + } + } + + public sealed class ChooseModeFirstTimeScreen : ChooseModeScreen { + + public ChooseModeFirstTimeScreen( LauncherWindow game ) : base( game ) { } + + protected override void MakeOtherWidgets() { + MakeLabelAt( "&eClick &fNormal &eif you are unsure which mode to choose.", + infoFont, Anchor.Centre, Anchor.Centre, 0, 160 ); + } + } } diff --git a/Launcher2/Gui/Screens/MainScreen.cs b/Launcher2/Gui/Screens/MainScreen.cs index 239b80b06..85bc0a682 100644 --- a/Launcher2/Gui/Screens/MainScreen.cs +++ b/Launcher2/Gui/Screens/MainScreen.cs @@ -83,7 +83,7 @@ namespace Launcher { (x, y) => game.SetScreen( new UpdatesScreen( game ) ) ); MakeButtonAt( "Choose mode", 200, buttonHeight, buttonFont, Anchor.Centre, Anchor.BottomOrRight, 0, -10, - (x, y) => game.SetScreen( new ChooseModeScreen( game ) ) ); + (x, y) => game.SetScreen( new ChooseModeNormalScreen( game ) ) ); MakeLabelAt( updateText, updateFont, Anchor.BottomOrRight, Anchor.BottomOrRight, -10, -50 ); diff --git a/Launcher2/Gui/Screens/ResourcesScreen.cs b/Launcher2/Gui/Screens/ResourcesScreen.cs index 4355276f5..88574cc4c 100644 --- a/Launcher2/Gui/Screens/ResourcesScreen.cs +++ b/Launcher2/Gui/Screens/ResourcesScreen.cs @@ -1,6 +1,7 @@ // ClassicalSharp copyright 2014-2016 UnknownShadow200 | Licensed under MIT using System; using System.Drawing; +using System.IO; using ClassicalSharp; using ClassicalSharp.Network; @@ -37,7 +38,7 @@ namespace Launcher { fetcher = null; GC.Collect(); game.TryLoadTexturePack(); - game.SetScreen( new MainScreen( game ) ); + GotoNextMenu(); } } @@ -94,13 +95,20 @@ namespace Launcher { -50, 40, DownloadResources ); MakeButtonAt( "No", 60, 30, textFont, Anchor.Centre, - 50, 40, (x, y) => game.SetScreen( new MainScreen( game ) ) ); + 50, 40, (x, y) => GotoNextMenu() ); } else { MakeButtonAt( "Cancel", 120, 30, textFont, Anchor.Centre, - 0, 40, (x, y) => game.SetScreen( new MainScreen( game ) ) ); + 0, 40, (x, y) => GotoNextMenu() ); } } + void GotoNextMenu() { + if( File.Exists( "options.txt" ) ) + game.SetScreen( new MainScreen( game ) ); + else + game.SetScreen( new ChooseModeFirstTimeScreen( game ) ); + } + void SetStatus( string text ) { LauncherLabelWidget widget = (LauncherLabelWidget)widgets[0]; using( drawer ) {