alt-f4 quits; window is placed at (0,0); ctrl/alt/shift work on mouse click

This commit is contained in:
Bob
2010-02-22 15:02:13 +13:00
parent 70a0d13c50
commit ebeb10e018
2 changed files with 11 additions and 6 deletions

View File

@@ -288,7 +288,7 @@ namespace OpenRa
} }
static int2 lastPos; static int2 lastPos;
public static void DispatchMouseInput(MouseInputEvent ev, MouseEventArgs e, Keys ModifierKeys) public static void DispatchMouseInput(MouseInputEvent ev, MouseEventArgs e, Modifiers modifierKeys)
{ {
int sync = Game.world.SyncHash(); int sync = Game.world.SyncHash();
@@ -308,7 +308,7 @@ namespace OpenRa
Button = (MouseButton)(int)e.Button, Button = (MouseButton)(int)e.Button,
Event = ev, Event = ev,
Location = new int2(e.Location), Location = new int2(e.Location),
Modifiers = (Modifiers)(int)ModifierKeys, Modifiers = modifierKeys,
}); });
if( sync != Game.world.SyncHash() ) if( sync != Game.world.SyncHash() )

View File

@@ -60,6 +60,8 @@ namespace OpenRa.GlRenderer
Sdl.SDL_GL_SetAttribute(Sdl.SDL_GL_BLUE_SIZE, 8); Sdl.SDL_GL_SetAttribute(Sdl.SDL_GL_BLUE_SIZE, 8);
Sdl.SDL_GL_SetAttribute(Sdl.SDL_GL_ALPHA_SIZE, 8); Sdl.SDL_GL_SetAttribute(Sdl.SDL_GL_ALPHA_SIZE, 8);
Sdl.SDL_putenv( "SDL_VIDEO_WINDOW_POS=0,0" );
surf = Sdl.SDL_SetVideoMode(width, height, 0, Sdl.SDL_OPENGL | (windowed ? 0 : Sdl.SDL_FULLSCREEN)); surf = Sdl.SDL_SetVideoMode(width, height, 0, Sdl.SDL_OPENGL | (windowed ? 0 : Sdl.SDL_FULLSCREEN));
Sdl.SDL_WM_SetCaption("OpenRA", "OpenRA"); Sdl.SDL_WM_SetCaption("OpenRA", "OpenRA");
Sdl.SDL_ShowCursor(0); Sdl.SDL_ShowCursor(0);
@@ -122,6 +124,7 @@ namespace OpenRa.GlRenderer
CheckGlError(); CheckGlError();
} }
Modifiers mods = 0;
MouseButtons lastButtonBits = (MouseButtons)0; MouseButtons lastButtonBits = (MouseButtons)0;
static MouseButtons MakeButton(byte b) static MouseButtons MakeButton(byte b)
@@ -152,7 +155,7 @@ namespace OpenRa.GlRenderer
Game.DispatchMouseInput(MouseInputEvent.Down, Game.DispatchMouseInput(MouseInputEvent.Down,
new MouseEventArgs(button, 1, e.button.x, e.button.y, 0), new MouseEventArgs(button, 1, e.button.x, e.button.y, 0),
Keys.None); mods);
} break; } break;
case Sdl.SDL_MOUSEBUTTONUP: case Sdl.SDL_MOUSEBUTTONUP:
@@ -162,19 +165,19 @@ namespace OpenRa.GlRenderer
Game.DispatchMouseInput(MouseInputEvent.Up, Game.DispatchMouseInput(MouseInputEvent.Up,
new MouseEventArgs(button, 1, e.button.x, e.button.y, 0), new MouseEventArgs(button, 1, e.button.x, e.button.y, 0),
Keys.None); mods);
} break; } break;
case Sdl.SDL_MOUSEMOTION: case Sdl.SDL_MOUSEMOTION:
{ {
Game.DispatchMouseInput(MouseInputEvent.Move, Game.DispatchMouseInput(MouseInputEvent.Move,
new MouseEventArgs(lastButtonBits, 0, e.motion.x, e.motion.y, 0), new MouseEventArgs(lastButtonBits, 0, e.motion.x, e.motion.y, 0),
Keys.None); mods);
} break; } break;
case Sdl.SDL_KEYDOWN: case Sdl.SDL_KEYDOWN:
{ {
var mods = ( ( e.key.keysym.mod & Sdl.KMOD_ALT ) != 0 ? Modifiers.Alt : 0 ) mods = ( ( e.key.keysym.mod & Sdl.KMOD_ALT ) != 0 ? Modifiers.Alt : 0 )
| ( ( e.key.keysym.mod & Sdl.KMOD_CTRL ) != 0 ? Modifiers.Ctrl : 0 ) | ( ( e.key.keysym.mod & Sdl.KMOD_CTRL ) != 0 ? Modifiers.Ctrl : 0 )
| ( ( e.key.keysym.mod & Sdl.KMOD_SHIFT ) != 0 ? Modifiers.Shift : 0 ); | ( ( e.key.keysym.mod & Sdl.KMOD_SHIFT ) != 0 ? Modifiers.Shift : 0 );
if( e.key.keysym.unicode != 0 ) if( e.key.keysym.unicode != 0 )
@@ -185,6 +188,8 @@ namespace OpenRa.GlRenderer
var keyName = Sdl.SDL_GetKeyName( e.key.keysym.sym ); var keyName = Sdl.SDL_GetKeyName( e.key.keysym.sym );
if( keyName.Length == 1 ) if( keyName.Length == 1 )
Game.HandleKeyPress( new KeyPressEventArgs( keyName[ 0 ] ), mods ); Game.HandleKeyPress( new KeyPressEventArgs( keyName[ 0 ] ), mods );
else if( keyName == "f4" && ( ( mods & Modifiers.Alt ) != 0 ) )
OpenRa.Game.Exit();
} }
} break; } break;