diff --git a/src/stratagus/interface.cpp b/src/stratagus/interface.cpp index b3a98dcd6..1479404db 100644 --- a/src/stratagus/interface.cpp +++ b/src/stratagus/interface.cpp @@ -9,11 +9,10 @@ // FreeCraft - A free fantasy real time strategy game engine // /**@name interface.c - The interface. */ -/* -** (c) Copyright 1998-2000 by Lutz Sammer -** -** $Id$ -*/ +// +// (c) Copyright 1998-2001 by Lutz Sammer +// +// $Id$ //@{ @@ -90,17 +89,17 @@ local void ShowInput(void) local int CommandKey(int key) { switch( key ) { - case '\r': + case '\r': // Return enters chat/input mode. KeyState=KeyStateInput; Input[0]='\0'; InputIndex=0; ShowInput(); return 1; - case '^': + case '^': // Unselect everything UnSelectAll(); UpdateButtonPanel(); break; - case '0': + case '0': // Group selection case '1': case '2': case '3': @@ -126,6 +125,7 @@ local int CommandKey(int key) } else { SelectGroup(key-48); } + // FIXME: this should be moved into the select/group functions. UpdateButtonPanel(); MustRedraw|=RedrawCursor|RedrawMap|RedrawPanels; break; @@ -201,7 +201,7 @@ local int CommandKey(int key) { #include <SDL/SDL.h> // FIXME: move to system api part! - extern SDL_Surface *Screen; /// internal screen + extern SDL_Surface *Screen; // internal screen SDL_WM_ToggleFullScreen(Screen); } @@ -209,32 +209,36 @@ local int CommandKey(int key) #endif break; - case ' ': + case ' ': // center on last action CenterOnMessage(); - break; + break; -// TAB toggles minimap. -// FIXME: more... - case '\t': + case '\t': // TAB toggles minimap. + // FIXME: more... + // FIXME: shift+TAB DebugLevel1("TAB\n"); MinimapWithTerrain^=1; MustRedraw|=RedrawMinimap; break; - // FIXME: shift+TAB case 'Q': // should be better protected Exit(0); + case KeyCodeUp: - KeyScrollState |= ScrollUp; + case KeyCodeKP8: + KeyScrollState |= ScrollUp; break; case KeyCodeDown: - KeyScrollState |= ScrollDown; + case KeyCodeKP2: + KeyScrollState |= ScrollDown; break; case KeyCodeLeft: - KeyScrollState |= ScrollLeft; + case KeyCodeKP4: + KeyScrollState |= ScrollLeft; break; case KeyCodeRight: - KeyScrollState |= ScrollRight; + case KeyCodeKP6: + KeyScrollState |= ScrollRight; break; default: @@ -261,18 +265,13 @@ local int InputKey(int key) #endif // Handle cheats // FIXME: disable cheats - if (strcmp(Input, "there is no aliens level") == 0) - { + if (strcmp(Input, "there is no aliens level") == 0) { // FIXME: no function yet. SetMessage( "cheat enabled" ); - } else - if (strcmp(Input, "hatchet") == 0) - { + } else if (strcmp(Input, "hatchet") == 0) { SpeedChop = 52/2; SetMessage( "Wow -- I got jigsaw!" ); - } else - if (strcmp(Input, "glittering prizes") == 0) - { + } else if (strcmp(Input, "glittering prizes") == 0) { ThisPlayer->Resources[GoldCost] += 12000; ThisPlayer->Resources[WoodCost] += 5000; ThisPlayer->Resources[OilCost] += 5000; @@ -281,63 +280,51 @@ local int InputKey(int key) ThisPlayer->Resources[CoalCost] += 5000; MustRedraw|=RedrawResources; SetMessage( "!!! :)" ); - } else - if (strcmp(Input, "on screen") == 0) - { + } else if (strcmp(Input, "on screen") == 0) { RevealMap(); - } else - if (strcmp(Input, "fow on") == 0) - { + } else if (strcmp(Input, "fow on") == 0) { TheMap.NoFogOfWar = 0; MapUpdateVisible(); SetMessage( "Fog Of War is now ON" ); - } else - if (strcmp(Input, "fow off") == 0) - { + } else if (strcmp(Input, "fow off") == 0) { TheMap.NoFogOfWar = 1; MapUpdateVisible(); SetMessage( "Fog Of War is now OFF" ); - } else - if (strcmp(Input, "fast debug") == 0) - { - SpeedMine=10; /// speed factor for mine gold - SpeedGold=10; /// speed factor for getting gold - SpeedChop=10; /// speed factor for chop - SpeedWood=10; /// speed factor for getting wood - SpeedHaul=10; /// speed factor for haul oil - SpeedOil=10; /// speed factor for getting oil - SpeedBuild=10; /// speed factor for building - SpeedTrain=10; /// speed factor for training - SpeedUpgrade=10; /// speed factor for upgrading - SpeedResearch=10; /// speed factor for researching + } else if (strcmp(Input, "fast debug") == 0) { + SpeedMine=10; // speed factor for mine gold + SpeedGold=10; // speed factor for getting gold + SpeedChop=10; // speed factor for chop + SpeedWood=10; // speed factor for getting wood + SpeedHaul=10; // speed factor for haul oil + SpeedOil=10; // speed factor for getting oil + SpeedBuild=10; // speed factor for building + SpeedTrain=10; // speed factor for training + SpeedUpgrade=10; // speed factor for upgrading + SpeedResearch=10; // speed factor for researching SetMessage( "FAST DEBUG SPEED" ); - } else - if (strcmp(Input, "normal debug") == 0) - { - SpeedMine=1; /// speed factor for mine gold - SpeedGold=1; /// speed factor for getting gold - SpeedChop=1; /// speed factor for chop - SpeedWood=1; /// speed factor for getting wood - SpeedHaul=1; /// speed factor for haul oil - SpeedOil=1; /// speed factor for getting oil - SpeedBuild=1; /// speed factor for building - SpeedTrain=1; /// speed factor for training - SpeedUpgrade=1; /// speed factor for upgrading - SpeedResearch=1; /// speed factor for researching + } else if (strcmp(Input, "normal debug") == 0) { + SpeedMine=1; // speed factor for mine gold + SpeedGold=1; // speed factor for getting gold + SpeedChop=1; // speed factor for chop + SpeedWood=1; // speed factor for getting wood + SpeedHaul=1; // speed factor for haul oil + SpeedOil=1; // speed factor for getting oil + SpeedBuild=1; // speed factor for building + SpeedTrain=1; // speed factor for training + SpeedUpgrade=1; // speed factor for upgrading + SpeedResearch=1; // speed factor for researching SetMessage( "NORMAL DEBUG SPEED" ); - } - if (strcmp(Input, "make it so") == 0) - { - SpeedMine=10; /// speed factor for mine gold - SpeedGold=10; /// speed factor for getting gold - SpeedChop=10; /// speed factor for chop - SpeedWood=10; /// speed factor for getting wood - SpeedHaul=10; /// speed factor for haul oil - SpeedOil=10; /// speed factor for getting oil - SpeedBuild=10; /// speed factor for building - SpeedTrain=10; /// speed factor for training - SpeedUpgrade=10; /// speed factor for upgrading - SpeedResearch=10; /// speed factor for researching + } else if (strcmp(Input, "make it so") == 0) { + SpeedMine=10; // speed factor for mine gold + SpeedGold=10; // speed factor for getting gold + SpeedChop=10; // speed factor for chop + SpeedWood=10; // speed factor for getting wood + SpeedHaul=10; // speed factor for haul oil + SpeedOil=10; // speed factor for getting oil + SpeedBuild=10; // speed factor for building + SpeedTrain=10; // speed factor for training + SpeedUpgrade=10; // speed factor for upgrading + SpeedResearch=10; // speed factor for researching ThisPlayer->Resources[GoldCost] += 32000; ThisPlayer->Resources[WoodCost] += 32000; ThisPlayer->Resources[OilCost] += 32000; @@ -346,9 +333,10 @@ local int InputKey(int key) ThisPlayer->Resources[CoalCost] += 32000; MustRedraw|=RedrawResources; SetMessage( "SO!" ); - } else - // FIXME: only to selected players - NetworkChatMessage(Input); + } else { + // FIXME: only to selected players ... + NetworkChatMessage(Input); + } #if defined(USE_CCL) || defined(USE_CCL2) } #endif @@ -382,12 +370,11 @@ local int InputKey(int key) ** Handle key down. ** ** @param key Key scancode. -** @return True, if key is handles; otherwise false. +** @return True, if key is handled; otherwise false. */ global int HandleKeyDown(int key) { - -/// Handle Modifier Keys + // Handle Modifier Keys switch( key ) { case KeyCodeShift: KeyModifiers|=ModifierShift; @@ -408,16 +395,16 @@ global int HandleKeyDown(int key) break; } -/// Handle All other keys + // Handle All other keys switch( InterfaceState ) { - case IfaceStateNormal: /// Normal Game state + case IfaceStateNormal: // Normal Game state switch( KeyState ) { case KeyStateCommand: return CommandKey(key); case KeyStateInput: return InputKey(key); } - case IfaceStateMenu: /// Menu active + case IfaceStateMenu: // Menu active return MenuKey(key); } return 0; @@ -432,34 +419,39 @@ global int HandleKeyDown(int key) global int HandleKeyUp(int key) { switch( key ) { - case KeyCodeShift: + case KeyCodeShift: KeyModifiers&=~ModifierShift; break; - case KeyCodeControl: + case KeyCodeControl: KeyModifiers&=~ModifierControl; break; - case KeyCodeAlt: + case KeyCodeAlt: KeyModifiers&=~ModifierAlt; break; - case KeyCodeSuper: + case KeyCodeSuper: KeyModifiers&=~ModifierSuper; break; - case KeyCodeHyper: + case KeyCodeHyper: KeyModifiers&=~ModifierHyper; break; - case KeyCodeUp: + + case KeyCodeUp: + case KeyCodeKP8: KeyScrollState &= ~ScrollUp; break; - case KeyCodeDown: + case KeyCodeDown: + case KeyCodeKP2: KeyScrollState &= ~ScrollDown; break; - case KeyCodeLeft: + case KeyCodeLeft: + case KeyCodeKP4: KeyScrollState &= ~ScrollLeft; break; - case KeyCodeRight: + case KeyCodeRight: + case KeyCodeKP6: KeyScrollState &= ~ScrollRight; break; - default: + default: break; } return 0; @@ -468,12 +460,12 @@ global int HandleKeyUp(int key) /** ** Handle movement of the cursor. ** -** @param x X map tile position. -** @param y Y map tile position. +** @param x screen pixel X position. +** @param y screen pixel Y position. */ global void HandleMouseMove(int x,int y) { - // + // // Reduce coordinates to window-size. // if( x<0 ) { @@ -491,10 +483,10 @@ global void HandleMouseMove(int x,int y) CursorY=y; switch( InterfaceState ) { - case IfaceStateNormal: /// Normal Game state + case IfaceStateNormal: // Normal Game state UIHandleMouseMove(x, y); break; - case IfaceStateMenu: /// Menu active + case IfaceStateMenu: // Menu active MenuHandleMouseMove(x, y); break; } @@ -502,16 +494,21 @@ global void HandleMouseMove(int x,int y) /** ** Called if mouse button pressed down. +** +** FIXME: the mouse handling should be complete rewritten +** FIXME: this is needed for double click, long click,... +** +** @param b Mouse button number (0 left, 1 middle, 2 right) */ global void HandleButtonDown(int b) { MouseButtons|=1<<b; switch( InterfaceState ) { - case IfaceStateNormal: /// Normal Game state + case IfaceStateNormal: // Normal Game state UIHandleButtonDown(b); break; - case IfaceStateMenu: /// Menu active + case IfaceStateMenu: // Menu active MenuHandleButtonDown(b); break; } @@ -519,16 +516,21 @@ global void HandleButtonDown(int b) /** ** Called if mouse button released. +** +** FIXME: the mouse handling should be complete rewritten +** FIXME: this is needed for double click, long click,... +** +** @param b Mouse button number (0 left, 1 middle, 2 right) */ global void HandleButtonUp(int b) { MouseButtons&=~(1<<b); switch( InterfaceState ) { - case IfaceStateNormal: /// Normal Game state + case IfaceStateNormal: // Normal Game state UIHandleButtonUp(b); break; - case IfaceStateMenu: /// Menu active + case IfaceStateMenu: // Menu active MenuHandleButtonUp(b); break; }