# HG changeset patch # User koda # Date 1295302972 -3600 # Node ID 9a0f5377c529f4985d08a96d75899a17331d6f5c # Parent 673f74c89687de84afd64d30d39aeb415aa9d162# Parent 9f20a38a385a391516804cdadf024b430476b496 merge latest 0.9.15 changes into head diff -r 673f74c89687 -r 9a0f5377c529 .hgtags --- a/.hgtags Sun Jan 16 13:53:32 2011 -0500 +++ b/.hgtags Mon Jan 17 23:22:52 2011 +0100 @@ -24,4 +24,12 @@ adffb668f06e265b45d1e4aedc283e6f4e5ba7e8 Hedgewars-iOS-1.1 ede569bb76f389bd5dfbb7ebf68af3087e3e881c Hedgewars-iOS-1.2 a5735e877aae61cd705265e2f8c0c7ad08d45f0e Hedgewars-iOS-1.2.1 +bd74fd83929a09251d1ede09e6c03a641a0ee35f 0.9.15 +bd74fd83929a09251d1ede09e6c03a641a0ee35f 0.9.15 +0000000000000000000000000000000000000000 0.9.15 +0000000000000000000000000000000000000000 0.9.15 +29ab0d49c3e6e72a7633d0bd316ae533db15c65d 0.9.15 +29ab0d49c3e6e72a7633d0bd316ae533db15c65d 0.9.15 +0000000000000000000000000000000000000000 0.9.15 +29ab0d49c3e6e72a7633d0bd316ae533db15c65d 0.9.15-release 5ea3d182415e4327e7584b1aa68197931d232ac3 Hedgewars-iOS-1.2.2 diff -r 673f74c89687 -r 9a0f5377c529 CMakeLists.txt --- a/CMakeLists.txt Sun Jan 16 13:53:32 2011 -0500 +++ b/CMakeLists.txt Mon Jan 17 23:22:52 2011 +0100 @@ -77,7 +77,6 @@ set(CMAKE_OSX_ARCHITECTURES "i386;ppc7400") - #create universal binaries only when it's time to bundle the application, also build server IF(BUNDLE) set(WITH_SERVER true) @@ -86,7 +85,11 @@ set(CMAKE_CXX_COMPILER "g++-4.0") else() if(current_macosx_version MATCHES "10.6") - set(CMAKE_OSX_ARCHITECTURES "x86_64") + if(MACAPPSTORE) + set(CMAKE_OSX_ARCHITECTURES "x86_64;i386") + else() + set(CMAKE_OSX_ARCHITECTURES "x86_64") + endif() endif() endif() ELSE() diff -r 673f74c89687 -r 9a0f5377c529 QTfrontend/game.cpp --- a/QTfrontend/game.cpp Sun Jan 16 13:53:32 2011 -0500 +++ b/QTfrontend/game.cpp Mon Jan 17 23:22:52 2011 +0100 @@ -56,7 +56,7 @@ emit HaveRecord(true, demo); break; default: - if (gameState == gsInterrupted) emit HaveRecord(false, demo); + if (gameState == gsInterrupted || gameState == gsHalted) emit HaveRecord(false, demo); else if (gameState == gsFinished) emit HaveRecord(true, demo); } SetGameState(gsStopped); @@ -229,6 +229,10 @@ SetGameState(gsFinished); break; } + case 'H': { + SetGameState(gsHalted); + break; + } case 's': { int size = msg.size(); QString msgbody = QString::fromUtf8(msg.mid(2).left(size - 4)); @@ -250,8 +254,8 @@ { emit SendNet(msg); } - if (msg.at(1) != 's') - demo.append(msg); + if (msg.at(1) != 's') + demo.append(msg); } } } diff -r 673f74c89687 -r 9a0f5377c529 QTfrontend/game.h --- a/QTfrontend/game.h Sun Jan 16 13:53:32 2011 -0500 +++ b/QTfrontend/game.h Mon Jan 17 23:22:52 2011 +0100 @@ -35,7 +35,8 @@ gsInterrupted = 2, gsFinished = 3, gsStopped = 4, - gsDestroyed = 5 + gsDestroyed = 5, + gsHalted = 6 }; bool checkForDir(const QString & dir); diff -r 673f74c89687 -r 9a0f5377c529 QTfrontend/hwform.cpp --- a/QTfrontend/hwform.cpp Sun Jan 16 13:53:32 2011 -0500 +++ b/QTfrontend/hwform.cpp Mon Jan 17 23:22:52 2011 +0100 @@ -974,12 +974,13 @@ if (id == ID_PAGE_INGAME || // was room chief and the game was aborted (hwnet && hwnet->isRoomChief() && hwnet->isInRoom() && - (gameState == gsInterrupted || gameState == gsStopped || gameState == gsDestroyed))) { + (gameState == gsInterrupted || gameState == gsStopped || gameState == gsDestroyed || gameState == gsHalted))) { if (id == ID_PAGE_INGAME) GoBack(); Music(ui.pageOptions->CBEnableFrontendMusic->isChecked()); if (wBackground) wBackground->startAnimation(); if (hwnet) hwnet->gameFinished(); } + if (gameState == gsHalted) close(); }; } } diff -r 673f74c89687 -r 9a0f5377c529 hedgewars/hwengine.pas --- a/hedgewars/hwengine.pas Sun Jan 16 13:53:32 2011 -0500 +++ b/hedgewars/hwengine.pas Mon Jan 17 23:22:52 2011 +0100 @@ -157,8 +157,8 @@ cHasFocus:= true; {$ELSE} KeyPressChat(event.key.keysym.unicode); - SDL_MOUSEBUTTONDOWN: if event.button.button = SDL_BUTTON_WHEELDOWN then uKeys.wheelDown:= true; - SDL_MOUSEBUTTONUP: if event.button.button = SDL_BUTTON_WHEELUP then uKeys.wheelUp:= true; + SDL_MOUSEBUTTONDOWN: if event.button.button = SDL_BUTTON_WHEELDOWN then wheelDown:= true; + SDL_MOUSEBUTTONUP: if event.button.button = SDL_BUTTON_WHEELUP then wheelUp:= true; SDL_ACTIVEEVENT: if (event.active.state and SDL_APPINPUTFOCUS) <> 0 then cHasFocus:= event.active.gain = 1; diff -r 673f74c89687 -r 9a0f5377c529 hedgewars/uCommandHandlers.pas --- a/hedgewars/uCommandHandlers.pas Sun Jan 16 13:53:32 2011 -0500 +++ b/hedgewars/uCommandHandlers.pas Mon Jan 17 23:22:52 2011 +0100 @@ -23,27 +23,41 @@ procedure chQuit(var s: shortstring); const prevGState: TGameState = gsConfirm; begin -s:= s; // avoid compiler hint -if GameState <> gsConfirm then - begin + s:= s; // avoid compiler hint + if GameState <> gsConfirm then + begin prevGState:= GameState; GameState:= gsConfirm - end else - GameState:= prevGState + end else + GameState:= prevGState +end; + +procedure chForceQuit(var s: shortstring); +begin + s:= s; // avoid compiler hint + GameState:= gsConfirm; + ParseCommand('confirm', true); end; procedure chConfirm(var s: shortstring); begin -s:= s; // avoid compiler hint -if GameState = gsConfirm then + s:= s; // avoid compiler hint + if GameState = gsConfirm then begin - SendIPC('Q'); - GameState:= gsExit + SendIPC('Q'); + GameState:= gsExit end else ParseCommand('chat team', true); end; +procedure chHalt (var s: shortstring); +begin + s:= s; // avoid compiler hint + SendIPC('H'); + GameState:= gsExit +end; + procedure chCheckProto(var s: shortstring); var i, c: LongInt; begin @@ -581,7 +595,9 @@ RegisterVariable('grave' , vtCommand, @chGrave , false); RegisterVariable('hat' , vtCommand, @chSetHat , false); RegisterVariable('quit' , vtCommand, @chQuit , true ); + RegisterVariable('forcequit', vtCommand, @chForceQuit , true ); RegisterVariable('confirm' , vtCommand, @chConfirm , true ); + RegisterVariable('halt', vtCommand, @chHalt , true ); RegisterVariable('+speedup', vtCommand, @chSpeedup_p , true ); RegisterVariable('-speedup', vtCommand, @chSpeedup_m , true ); RegisterVariable('zoomin' , vtCommand, @chZoomIn , true ); diff -r 673f74c89687 -r 9a0f5377c529 hedgewars/uKeys.pas --- a/hedgewars/uKeys.pas Sun Jan 16 13:53:32 2011 -0500 +++ b/hedgewars/uKeys.pas Mon Jan 17 23:22:52 2011 +0100 @@ -40,47 +40,10 @@ procedure ControllerHatEvent(joy, hat, value: Byte); procedure ControllerButtonEvent(joy, button: Byte; pressed: Boolean); -var hideAmmoMenu: boolean; - wheelUp: boolean; - wheelDown: boolean; - - ControllerNumControllers: Integer; - ControllerEnabled: Integer; - ControllerNumAxes: array[0..5] of Integer; - //ControllerNumBalls: array[0..5] of Integer; - ControllerNumHats: array[0..5] of Integer; - ControllerNumButtons: array[0..5] of Integer; - ControllerAxes: array[0..5] of array[0..19] of Integer; - //ControllerBalls: array[0..5] of array[0..19] of array[0..1] of Integer; - ControllerHats: array[0..5] of array[0..19] of Byte; - ControllerButtons: array[0..5] of array[0..19] of Byte; - - DefaultBinds, CurrentBinds: TBinds; - - coeff: LongInt; -{$IFDEF HWLIBRARY} - leftClick: boolean; - middleClick: boolean; - rightClick: boolean; - - upKey: boolean; - downKey: boolean; - rightKey: boolean; - leftKey: boolean; - preciseKey: boolean; - - backspaceKey: boolean; - spaceKey: boolean; - enterKey: boolean; - tabKey: boolean; - - chatAction: boolean; - pauseAction: boolean; - {$IFDEF IPHONEOS} procedure setiPhoneBinds; {$ENDIF} -{$ENDIF} + implementation uses uConsole, uCommands, uMisc, uVariables, uConsts, uUtils, uDebug; @@ -109,7 +72,7 @@ // move cursor/camera // TODO: Scale on screen dimensions and/or axis value (game controller)? -movecursor(coeff * CursorMovementX, coeff * CursorMovementY); +movecursor(5 * CursorMovementX, 5 * CursorMovementY); k:= SDL_GetMouseState(nil, nil); @@ -139,8 +102,7 @@ {$IFDEF IPHONEOS} setiPhoneBinds(); -{$ENDIF} - +{$ELSE} // Controller(s) k:= j; // should we test k for hitting the limit? sounds rather unlikely to ever reach it for j:= 0 to Pred(ControllerNumControllers) do @@ -165,6 +127,18 @@ inc(k, 1); end; end; +{$ENDIF} + +// ctrl/cmd + w/q to close engine and/or frontend +{$IFDEF DARWIN} + if ((tkbdn[KeyNameToCode('left_meta')] = 1) or (tkbdn[KeyNameToCode('right_meta')] = 1)) then +{$ELSE} + if ((tkbdn[KeyNameToCode('left_ctrl')] = 1) or (tkbdn[KeyNameToCode('right_ctrl')] = 1)) then +{$ENDIF} + begin + if tkbdn[KeyNameToCode('q')] = 1 then ParseCommand ('halt', true) + else if tkbdn[KeyNameToCode('w')] = 1 then ParseCommand ('forcequit', true); + end; // now process strokes for i:= 0 to cKeyMaxIndex do @@ -222,8 +196,7 @@ {$IFDEF IPHONEOS} setiPhoneBinds(); -{$ENDIF} - +{$ELSE} // Controller(s) k:= j; // should we test k for hitting the limit? sounds rather unlikely to ever reach it for j:= 0 to Pred(ControllerNumControllers) do @@ -248,6 +221,7 @@ inc(k, 1); end; end; +{$ENDIF} for t:= 0 to cKeyMaxIndex do tkbd[i]:= tkbdn[i] @@ -502,7 +476,6 @@ begin wheelUp:= false; wheelDown:= false; - coeff:= 5; {$IFDEF HWLIBRARY} // this function is called by HW_allKeysUp so be careful diff -r 673f74c89687 -r 9a0f5377c529 hedgewars/uVariables.pas