Added support for keyboard scrolling

This commit is contained in:
unknown
2010-05-29 00:50:12 +02:00
committed by Chris Forbes
parent b45c74fa0b
commit f2bcf1afae
2 changed files with 370 additions and 321 deletions

View File

@@ -64,6 +64,11 @@ namespace OpenRA
static bool mapChangePending;
static Pair<Assembly, string>[] ModAssemblies;
static internal bool scrollUp = false;
static internal bool scrollDown = false;
static internal bool scrollLeft = false;
static internal bool scrollRight = false;
static void LoadModPackages(Manifest manifest)
{
FileSystem.UnmountAll();
@@ -308,6 +313,15 @@ namespace OpenRA
}
}
if (scrollUp == true)
viewport.Scroll(new float2(0, -10));
if (scrollRight == true)
viewport.Scroll(new float2(10, 0));
if (scrollDown == true)
viewport.Scroll(new float2(0, 10));
if (scrollLeft == true)
viewport.Scroll(new float2(-10, 0));
using (new PerfSample("render"))
{
++RenderFrame;
@@ -511,6 +525,26 @@ namespace OpenRA
throw new InvalidOperationException("Desync in OnKeyPress");
}
public static void HandleArrowKeyScroll(String k, Boolean pressed)
{
if (k == "up")
{
scrollUp = pressed;
}
if (k == "left")
{
scrollLeft = pressed;
}
if (k == "down")
{
scrollDown = pressed;
}
if (k == "right")
{
scrollRight = pressed;
}
}
public static void HandleModifierKeys(Modifiers mods)
{
controller.SetModifiers(mods);

View File

@@ -195,6 +195,14 @@ namespace OpenRA.GlRenderer
case Sdl.SDL_KEYDOWN:
{
switch (e.key.keysym.sym)
{
case Sdl.SDLK_UP: Game.HandleArrowKeyScroll("up", true); break;
case Sdl.SDLK_LEFT: Game.HandleArrowKeyScroll("left", true); break;
case Sdl.SDLK_DOWN: Game.HandleArrowKeyScroll("down", true); break;
case Sdl.SDLK_RIGHT: Game.HandleArrowKeyScroll("right", true); break;
}
if (e.key.keysym.unicode != 0)
Game.HandleKeyPress(new KeyPressEventArgs((char)e.key.keysym.unicode), mods);
@@ -210,6 +218,13 @@ namespace OpenRA.GlRenderer
case Sdl.SDL_KEYUP:
{
switch (e.key.keysym.sym)
{
case Sdl.SDLK_UP: Game.HandleArrowKeyScroll("up", false); break;
case Sdl.SDLK_LEFT: Game.HandleArrowKeyScroll("left", false); break;
case Sdl.SDLK_DOWN: Game.HandleArrowKeyScroll("down", false); break;
case Sdl.SDLK_RIGHT: Game.HandleArrowKeyScroll("right", false); break;
}
} break;
}
}