diff --git a/Launcher2/Gui/Screens/ChooseModeScreen.cs b/Launcher2/Gui/Screens/ChooseModeScreen.cs
index 681ea57d1..53c3c32a9 100644
--- a/Launcher2/Gui/Screens/ChooseModeScreen.cs
+++ b/Launcher2/Gui/Screens/ChooseModeScreen.cs
@@ -10,21 +10,17 @@ namespace Launcher.Gui.Screens {
ChooseModeView view;
public ChooseModeScreen( LauncherWindow game, bool firstTime ) : base( game ) {
- game.Window.Mouse.Move += MouseMove;
- game.Window.Mouse.ButtonDown += MouseButtonDown;
-
view = new ChooseModeView( game );
view.FirstTime = firstTime;
widgets = view.widgets;
}
public override void Init() {
- game.Window.Keyboard.KeyDown += KeyDown;
- game.Window.Keyboard.KeyUp += KeyUp;
+ base.Init();
view.Init();
widgets[view.nIndex].OnClick = (x, y) => ModeClick( false, false );
- widgets[view.clIndex ].OnClick = (x, y) => ModeClick( true, false );
+ widgets[view.clIndex].OnClick = (x, y) => ModeClick( true, false );
widgets[view.clHaxIndex].OnClick = (x, y) => ModeClick( true, true );
if( view.backIndex >= 0 ) {
@@ -36,21 +32,6 @@ namespace Launcher.Gui.Screens {
public override void Tick() { }
- void KeyDown( object sender, KeyboardKeyEventArgs e ) {
- if( e.Key == Key.Tab ) {
- HandleTab();
- } else if( e.Key == Key.Enter ) {
- Widget widget = selectedWidget;
- if( widget != null && widget.OnClick != null )
- widget.OnClick( 0, 0 );
- }
- }
-
- void KeyUp( object sender, KeyboardKeyEventArgs e ) {
- if( e.Key == Key.Tab )
- tabDown = false;
- }
-
public override void Resize() {
view.DrawAll();
game.Dirty = true;
@@ -75,10 +56,7 @@ namespace Launcher.Gui.Screens {
}
public override void Dispose() {
- game.Window.Keyboard.KeyDown -= KeyDown;
- game.Window.Keyboard.KeyUp -= KeyUp;
- game.Window.Mouse.Move -= MouseMove;
- game.Window.Mouse.ButtonDown -= MouseButtonDown;
+ base.Dispose();
view.Dispose();
}
}
diff --git a/Launcher2/Gui/Screens/InputScreen.cs b/Launcher2/Gui/Screens/InputScreen.cs
index 82ffe39e1..4c3af2410 100644
--- a/Launcher2/Gui/Screens/InputScreen.cs
+++ b/Launcher2/Gui/Screens/InputScreen.cs
@@ -13,13 +13,9 @@ namespace Launcher.Gui.Screens {
public InputScreen( LauncherWindow game ) : base( game ) { }
public override void Init() {
- game.Window.Mouse.Move += MouseMove;
- game.Window.Mouse.ButtonDown += MouseButtonDown;
+ base.Init();
game.Window.Mouse.WheelChanged += MouseWheelChanged;
-
game.Window.KeyPress += KeyPress;
- game.Window.Keyboard.KeyDown += KeyDown;
- game.Window.Keyboard.KeyUp += KeyUp;
game.Window.Keyboard.KeyRepeat = true;
}
@@ -49,7 +45,7 @@ namespace Launcher.Gui.Screens {
lastCaretFlash = caretShow;
}
- protected virtual void KeyDown( object sender, KeyboardKeyEventArgs e ) {
+ protected override void KeyDown( object sender, KeyboardKeyEventArgs e ) {
if( e.Key == Key.Enter && enterIndex >= 0 ) {
Widget widget = (selectedWidget != null && mouseMoved) ?
selectedWidget : widgets[enterIndex];
@@ -93,11 +89,6 @@ namespace Launcher.Gui.Screens {
return keyboard[Key.ControlLeft] || keyboard[Key.ControlRight];
}
}
-
- protected void KeyUp( object sender, KeyboardKeyEventArgs e ) {
- if( e.Key == Key.Tab )
- tabDown = false;
- }
protected void KeyPress( object sender, KeyPressEventArgs e ) {
if( curInput != null && curInput.Chars.Append( e.KeyChar ) ) {
@@ -171,13 +162,9 @@ namespace Launcher.Gui.Screens {
}
public override void Dispose() {
- game.Window.Mouse.Move -= MouseMove;
- game.Window.Mouse.ButtonDown -= MouseButtonDown;
- game.Window.Mouse.WheelChanged -= MouseWheelChanged;
-
+ base.Dispose();
+ game.Window.Mouse.WheelChanged -= MouseWheelChanged;
game.Window.KeyPress -= KeyPress;
- game.Window.Keyboard.KeyDown -= KeyDown;
- game.Window.Keyboard.KeyUp -= KeyUp;
game.Window.Keyboard.KeyRepeat = false;
}
}
diff --git a/Launcher2/Gui/Screens/ResourcesScreen.cs b/Launcher2/Gui/Screens/ResourcesScreen.cs
index 405e631db..70abc151b 100644
--- a/Launcher2/Gui/Screens/ResourcesScreen.cs
+++ b/Launcher2/Gui/Screens/ResourcesScreen.cs
@@ -11,14 +11,14 @@ namespace Launcher.Gui.Screens {
ResourceFetcher fetcher;
ResourcesView view;
public ResourcesScreen( LauncherWindow game ) : base( game ) {
- game.Window.Mouse.Move += MouseMove;
- game.Window.Mouse.ButtonDown += MouseButtonDown;
view = new ResourcesView( game );
widgets = view.widgets;
}
public override void Init() {
+ base.Init();
view.Init();
+
SetWidgetHandlers();
Resize();
}
@@ -103,8 +103,7 @@ namespace Launcher.Gui.Screens {
}
public override void Dispose() {
- game.Window.Mouse.Move -= MouseMove;
- game.Window.Mouse.ButtonDown -= MouseButtonDown;
+ base.Dispose();
view.Dispose();
}
}
diff --git a/Launcher2/Gui/Screens/Screen.cs b/Launcher2/Gui/Screens/Screen.cs
index 870ada2fc..ea2194b15 100644
--- a/Launcher2/Gui/Screens/Screen.cs
+++ b/Launcher2/Gui/Screens/Screen.cs
@@ -19,7 +19,12 @@ namespace Launcher.Gui.Screens {
}
/// Function called to setup the widgets and other data for this screen.
- public abstract void Init();
+ public virtual void Init() {
+ game.Window.Mouse.Move += MouseMove;
+ game.Window.Mouse.ButtonDown += MouseButtonDown;
+ game.Window.Keyboard.KeyDown += KeyDown;
+ game.Window.Keyboard.KeyUp += KeyUp;
+ }
/// Function that is repeatedly called multiple times every second.
public abstract void Tick();
@@ -28,7 +33,12 @@ namespace Launcher.Gui.Screens {
public abstract void Resize();
/// Cleans up all native resources held by this screen.
- public abstract void Dispose();
+ public virtual void Dispose() {
+ game.Window.Mouse.Move -= MouseMove;
+ game.Window.Mouse.ButtonDown -= MouseButtonDown;
+ game.Window.Keyboard.KeyDown -= KeyDown;
+ game.Window.Keyboard.KeyUp -= KeyUp;
+ }
/// Function called when the pixels from the framebuffer
/// are about to be transferred to the window.
@@ -75,6 +85,7 @@ namespace Launcher.Gui.Screens {
game.Dirty = true;
}
+
protected Widget lastClicked;
protected void MouseButtonDown( object sender, MouseButtonEventArgs e ) {
if( e.Button != MouseButton.Left ) return;
@@ -86,8 +97,7 @@ namespace Launcher.Gui.Screens {
lastClicked = selectedWidget;
}
- protected virtual void WidgetUnclicked( Widget widget ) {
- }
+ protected virtual void WidgetUnclicked( Widget widget ) { }
protected virtual void MouseMove( object sender, MouseMoveEventArgs e ) {
if( supressMove ) { supressMove = false; return; }
@@ -117,6 +127,22 @@ namespace Launcher.Gui.Screens {
selectedWidget = null;
}
+
+ protected virtual void KeyDown( object sender, KeyboardKeyEventArgs e ) {
+ if( e.Key == Key.Tab ) {
+ HandleTab();
+ } else if( e.Key == Key.Enter ) {
+ Widget widget = selectedWidget;
+ if( widget != null && widget.OnClick != null )
+ widget.OnClick( 0, 0 );
+ }
+ }
+
+ protected virtual void KeyUp( object sender, KeyboardKeyEventArgs e ) {
+ if( e.Key == Key.Tab )
+ tabDown = false;
+ }
+
protected bool tabDown = false;
MouseMoveEventArgs moveArgs = new MouseMoveEventArgs();
MouseButtonEventArgs pressArgs = new MouseButtonEventArgs();
@@ -131,7 +157,7 @@ namespace Launcher.Gui.Screens {
Utils.Clamp( ref index, 0, widgets.Length - 1 );
for( int j = 0; j < widgets.Length * 2; j++ ) {
- int i = (j * dir + index) % widgets.Length;
+ int i = (index + j * dir) % widgets.Length;
if( i < 0 ) i += widgets.Length;
if( !widgets[i].Visible || !widgets[i].TabSelectable ) continue;
diff --git a/Launcher2/Gui/Screens/UpdatesScreen.cs b/Launcher2/Gui/Screens/UpdatesScreen.cs
index b0357a608..6b1c5f19a 100644
--- a/Launcher2/Gui/Screens/UpdatesScreen.cs
+++ b/Launcher2/Gui/Screens/UpdatesScreen.cs
@@ -14,43 +14,25 @@ namespace Launcher.Gui.Screens {
UpdatesView view;
public UpdatesScreen( LauncherWindow game ) : base( game ) {
- game.Window.Mouse.Move += MouseMove;
- game.Window.Mouse.ButtonDown += MouseButtonDown;
-
view = new UpdatesView( game );
widgets = view.widgets;
}
UpdateCheckTask checkTask;
public override void Init() {
- view.Init();
+ base.Init();
+ view.Init();
+
if( game.checkTask != null && game.checkTask.Done && game.checkTask.Success )
SuccessfulUpdateCheck( game.checkTask );
checkTask = new UpdateCheckTask();
checkTask.CheckForUpdatesAsync();
- game.Window.Keyboard.KeyDown += KeyDown;
- game.Window.Keyboard.KeyUp += KeyUp;
SetWidgetHandlers();
Resize();
}
- void KeyDown( object sender, KeyboardKeyEventArgs e ) {
- if( e.Key == Key.Tab ) {
- HandleTab();
- } else if( e.Key == Key.Enter ) {
- Widget widget = selectedWidget;
- if( widget != null && widget.OnClick != null )
- widget.OnClick( 0, 0 );
- }
- }
-
- void KeyUp( object sender, KeyboardKeyEventArgs e ) {
- if( e.Key == Key.Tab )
- tabDown = false;
- }
-
Build dev, stable;
public override void Tick() {
if( checkTask != null && checkTask.Done ) {
@@ -136,10 +118,7 @@ namespace Launcher.Gui.Screens {
}
public override void Dispose() {
- game.Window.Keyboard.KeyDown -= KeyDown;
- game.Window.Keyboard.KeyUp -= KeyUp;
- game.Window.Mouse.Move -= MouseMove;
- game.Window.Mouse.ButtonDown -= MouseButtonDown;
+ base.Dispose();
view.Dispose();
}
}
diff --git a/Launcher2/Gui/Views/MainView.cs b/Launcher2/Gui/Views/MainView.cs
index 3b0fa98b0..7983106e8 100644
--- a/Launcher2/Gui/Views/MainView.cs
+++ b/Launcher2/Gui/Views/MainView.cs
@@ -9,7 +9,7 @@ namespace Launcher.Gui.Views {
Font buttonFont, updateFont;
internal int loginIndex, resIndex, dcIndex, spIndex, colIndex, statusIndex;
- internal int updatesIndex, modeIndex, sslIndex;
+ internal int updatesIndex, modeIndex, sslIndex, settingsIndex;
const int buttonWidth = 220, buttonHeight = 35, sideButtonWidth = 150;
public MainView( LauncherWindow game ) : base( game ) {
@@ -91,6 +91,7 @@ namespace Launcher.Gui.Views {
widgets[sslIndex].Visible = sslVisible;
widgets[sslIndex + 1].Visible = sslVisible;
+ settingsIndex = widgetIndex;
Makers.Bitmap( this, Bitmaps.OptionsIndices,
Bitmaps.OptionsPalette, Bitmaps.OptionsSize )
.SetLocation( Anchor.BottomOrRight, Anchor.LeftOrTop, -5, 5 );