Show the 'choose mode' menu to first time users always.

This commit is contained in:
UnknownShadow200 2016-03-26 19:28:18 +11:00
parent b857bf23ec
commit b08917f116
3 changed files with 49 additions and 19 deletions

View File

@ -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( "&ethe 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 );
}
}
}

View File

@ -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 );

View File

@ -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 ) {