# HG changeset patch # User koda # Date 1280565760 -7200 # Node ID 09892cdb8f95caacee25eb246941fa3386a16fbc # Parent aaf832c6fbd7dd88f5399efa5916d2ee77e1e34f# Parent 34fe2149f75dd275a5c4247c8e6aaea32cf7c589 merge diff -r aaf832c6fbd7 -r 09892cdb8f95 CMakeLists.txt --- a/CMakeLists.txt Sat Jul 31 10:39:20 2010 +0200 +++ b/CMakeLists.txt Sat Jul 31 10:42:40 2010 +0200 @@ -19,7 +19,7 @@ OUTPUT_VARIABLE version_suffix ) STRING(REGEX REPLACE "(.*) +(.*)" "\\2:\\1" version_suffix ${version_suffix}) - MESSAGE(STATUS "Builing revision ${version_suffix}") + MESSAGE(STATUS "Building revision ${version_suffix}") set(version_suffix ".${version_suffix}") # #truncate to numbers only - trying to fix a problem described in http://www.hedgewars.org/node/2019 # STRING(REGEX REPLACE "^\\.(\\d+)" ".\\1" version_suffix ${version_suffix}) @@ -156,6 +156,7 @@ endif(LOWRES) if(Optz) +# set(pascal_compiler_flags_cmn "-O3" "-OpPENTIUM4" "-CfSSE3" "-Xs" "-Si" ${pascal_compiler_flags_cmn}) set(pascal_compiler_flags_cmn "-O2" "-Xs" "-Si" ${pascal_compiler_flags_cmn}) set(haskell_compiler_flags_cmn "-O2" "-w") else(Optz) diff -r aaf832c6fbd7 -r 09892cdb8f95 QTfrontend/about.cpp --- a/QTfrontend/about.cpp Sat Jul 31 10:39:20 2010 +0200 +++ b/QTfrontend/about.cpp Sat Jul 31 10:42:40 2010 +0200 @@ -74,7 +74,7 @@ "Frontend improvements: Martin Minarik <<a href=\"mailto:ttsmj@pokec.sk\">ttsmj@pokec.sk</a>><br>" "Frontend improvements: Kristian Lehmann <<a href=\"mailto:email@thexception.net\">email@thexception.net</a>><br>" "Mac OS X/iPhone port, OpenGL-ES conversion: Vittorio Giovara <<a href=\"mailto:vittorio.giovara@gmail.com\">vittorio.giovara@gmail.com</a>><br>" - "Gamepad and Lua integration, misc effects: Mario Liebisch <<a href=\"mailto:mario.liebisch@googlemail.com\">mario.liebisch@googlemail.com</a>><br>" + "Gamepad and Lua integration, misc effects: Mario Liebisch <<a href=\"mailto:mario.liebisch@gmail.com\">mario.liebisch@gmail.com</a>><br>" "Many engine improvements and graphics: Carlos Vives <<a href=\"mailto:mail@carlosvives.es\">mail@carlosvives.es</a>><br>" "Few engine and frontend improvements: Richard Karolyi <<a href=\"mailto:sheepluva@ercatec.net\">sheepluva@ercatec.net</a>><br>" "Maze maps: Henning Kühn <<a href=\"mailto:prg@cooco.de\">prg@cooco.de</a>>" @@ -115,7 +115,7 @@ "English: Andrey Korotaev <<a href=\"mailto:unC0Rr@gmail.com\">unC0Rr@gmail.com</a>><br>" "Finnish: Nina Kuisma <<a href=\"mailto:ninnnu@gmail.com\">ninnnu@gmail.com</a>><br>" "French: Antoine Turmel <<a href=\"mailto:geekshadow@gmail.com\">geekshadow@gmail.com</a>><br>" - "German: Peter Hüwe <<a href=\"mailto:PeterHuewe@gmx.de\">PeterHuewe@gmx.de</a>>, Mario Liebisch <<a href=\"mailto:mario.liebisch@googlemail.com\">mario.liebisch@googlemail.com</a>><br>" + "German: Peter Hüwe <<a href=\"mailto:PeterHuewe@gmx.de\">PeterHuewe@gmx.de</a>>, Mario Liebisch <<a href=\"mailto:mario.liebisch@gmail.com\">mario.liebisch@gmail.com</a>><br>" "Italian: Luca Bonora <<a href=\"mailto:bonora.luca@gmail.com\">bonora.luca@gmail.com</a>><br>" "Japanese: ADAM Etienne <<a href=\"mailto:etienne.adam@gmail.com\">etienne.adam@gmail.com</a>><br>" "Polish: Maciej Mroziński <<a href=\"mailto:mynick2@o2.pl\">mynick2@o2.pl</a>>, Wojciech Latkowski <<a href=\"mailto:magik17l@gmail.com\">magikmagik17l@gmail.com</a>>, Maciej Górny<br>" diff -r aaf832c6fbd7 -r 09892cdb8f95 QTfrontend/game.cpp --- a/QTfrontend/game.cpp Sat Jul 31 10:39:20 2010 +0200 +++ b/QTfrontend/game.cpp Sat Jul 31 10:42:40 2010 +0200 @@ -292,6 +292,7 @@ arguments << config->netNick().toUtf8().toBase64(); arguments << (config->isMusicEnabled() ? "1" : "0"); arguments << (config->isReducedQuality() ? "1" : "0"); + arguments << (config->isStereoEnabled() ? "1" : "0"); return arguments; } diff -r aaf832c6fbd7 -r 09892cdb8f95 QTfrontend/gameuiconfig.cpp --- a/QTfrontend/gameuiconfig.cpp Sat Jul 31 10:39:20 2010 +0200 +++ b/QTfrontend/gameuiconfig.cpp Sat Jul 31 10:42:40 2010 +0200 @@ -48,6 +48,7 @@ Form->ui.pageOptions->CBFrontendFullscreen->setChecked(ffscr); Form->ui.pageOptions->CBReduceQuality->setChecked(value("video/reducequality", false).toBool()); + Form->ui.pageOptions->CBEnableStereo->setChecked(value("video/anaglyph", false).toBool()); Form->ui.pageOptions->CBFrontendEffects->setChecked(frontendEffects); Form->ui.pageOptions->CBEnableSound->setChecked(value("audio/sound", true).toBool()); Form->ui.pageOptions->CBEnableFrontendSound->setChecked(value("frontend/sound", true).toBool()); @@ -116,6 +117,7 @@ setValue("video/fullscreen", vid_Fullscreen()); setValue("video/reducequality", isReducedQuality()); + setValue("video/anaglyph", isStereoEnabled()); setValue("frontend/effects", isFrontendEffects()); @@ -236,6 +238,11 @@ return Form->ui.pageOptions->CBAltDamage->isChecked(); } +bool GameUIConfig::isStereoEnabled() const +{ + return Form->ui.pageOptions->CBEnableStereo->isChecked(); +} + bool GameUIConfig::appendDateTimeToRecordName() { return Form->ui.pageOptions->CBNameWithDate->isChecked(); diff -r aaf832c6fbd7 -r 09892cdb8f95 QTfrontend/gameuiconfig.h --- a/QTfrontend/gameuiconfig.h Sat Jul 31 10:39:20 2010 +0200 +++ b/QTfrontend/gameuiconfig.h Sat Jul 31 10:42:40 2010 +0200 @@ -55,6 +55,7 @@ bool isFrontendFullscreen() const; bool isWeaponTooltip() const; void resizeToConfigValues(); + bool isStereoEnabled() const; #ifdef __APPLE__ #ifdef SPARKLE_ENABLED diff -r aaf832c6fbd7 -r 09892cdb8f95 QTfrontend/main.cpp --- a/QTfrontend/main.cpp Sat Jul 31 10:39:20 2010 +0200 +++ b/QTfrontend/main.cpp Sat Jul 31 10:42:40 2010 +0200 @@ -404,10 +404,19 @@ app.installTranslator(&Translator); } + // Win32 registry setup (used for xfire detection etc. - don't set it if we're running in "portable" mode with a custom config dir) +#ifdef _WIN32 + if(cConfigDir->length() == 0) + { + QSettings registry(QSettings::NativeFormat, QSettings::UserScope, "Hedgewars Project", "Hedgewars"); + QFileInfo f(argv[0]); + registry.setValue("file", f.absoluteFilePath()); + registry.setValue("path", f.absolutePath()); + } +#endif HWForm *Form = new HWForm(); - Form->show(); return app.exec(); } diff -r aaf832c6fbd7 -r 09892cdb8f95 QTfrontend/pages.cpp --- a/QTfrontend/pages.cpp Sat Jul 31 10:39:20 2010 +0200 +++ b/QTfrontend/pages.cpp Sat Jul 31 10:42:40 2010 +0200 @@ -108,7 +108,7 @@ Tips << tr("Hedgewars is available in many languages. If the translation in your language seems to be missing or outdated, feel free to contact us!", "Tips"); Tips << tr("Hedgewars can be run on lots of different operating systems including Microsoft Windows, Mac OS X and Linux.", "Tips"); Tips << tr("Always remember you're able to set up your own games in local and network/online play. You're not restricted to the 'Simple Game' option.", "Tips"); - Tips << tr("Connect a gamepad before launching the game to be able to assign its controls to your team.", "Tips"); + Tips << tr("Connect one or more gamepads before launching the game to be able to assign their controls to your teams.", "Tips"); Tips << tr("Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.", "Tips"); Tips << tr("While playing you should give yourself a short break at least once an hour.", "Tips"); Tips << tr("If your graphics card isn't able to provide hardware accelerated OpenGL, try to enable the low quality mode to improve performance.", "Tips"); @@ -122,7 +122,7 @@ if(isDevBuild) - mainNote->setText(QLabel::tr("This HG build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!")); + mainNote->setText(QLabel::tr("This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!")); else mainNote->setText(QLabel::tr("Tip: ") + Tips[QTime(0, 0, 0).secsTo(QTime::currentTime()) % Tips.length()]); @@ -612,6 +612,10 @@ CBReduceQuality->setText(QCheckBox::tr("Reduced quality")); GBAlayout->addWidget(CBReduceQuality); + CBEnableStereo = new QCheckBox(AGGroupBox); + CBEnableStereo->setText(QCheckBox::tr("Anaglyph rendering (red/cyan)")); + GBAlayout->addWidget(CBEnableStereo); + hr = new QFrame(AGGroupBox); hr->setFrameStyle(QFrame::HLine); hr->setLineWidth(3); diff -r aaf832c6fbd7 -r 09892cdb8f95 QTfrontend/pages.h --- a/QTfrontend/pages.h Sat Jul 31 10:39:20 2010 +0200 +++ b/QTfrontend/pages.h Sat Jul 31 10:42:40 2010 +0200 @@ -221,6 +221,7 @@ QComboBox *CBResolution; QCheckBox *CBEnableSound; QCheckBox *CBEnableFrontendSound; + QCheckBox *CBEnableStereo; #ifdef _WIN32 QCheckBox *CBHardwareSound; #endif diff -r aaf832c6fbd7 -r 09892cdb8f95 gameServer/Actions.hs --- a/gameServer/Actions.hs Sat Jul 31 10:39:20 2010 +0200 +++ b/gameServer/Actions.hs Sat Jul 31 10:42:40 2010 +0200 @@ -56,8 +56,10 @@ processAction :: Action -> StateT ServerState IO () -processAction (AnswerClients chans msg) = - liftIO $ mapM_ (flip writeChan msg) chans +processAction (AnswerClients chans msg) = do + liftIO (putStr $ "AnswerClients... " ++ (show $ length chans) ++ " (" ++ (show msg) ++")") + liftIO $ map (flip seq ()) chans `seq` mapM_ (flip writeChan msg) chans + liftIO (putStrLn "done") processAction SendServerMessage = do @@ -68,7 +70,7 @@ serverMessageForOldVersions si else serverMessage si - liftIO $ writeChan chan ["SERVER_MESSAGE", message] + processAction $ AnswerClients [chan] ["SERVER_MESSAGE", message] {- processAction (clID, serverInfo, rnc) SendServerVars = do @@ -87,12 +89,12 @@ processAction (ProtocolError msg) = do chan <- client's sendChan - liftIO $ writeChan chan ["ERROR", msg] + processAction $ AnswerClients [chan] ["ERROR", msg] processAction (Warning msg) = do chan <- client's sendChan - liftIO $ writeChan chan ["WARNING", msg] + processAction $ AnswerClients [chan] ["WARNING", msg] processAction (ByeClient msg) = do (Just ci) <- gets clientIndex @@ -109,13 +111,13 @@ infoM "Clients" (show ci ++ " quits: " ++ (B.unpack msg)) --mapM_ (processAction (ci, serverInfo, rnc)) $ answerOthersQuit ++ answerInformRoom - writeChan chan ["BYE", msg] modifyRoom rnc (\r -> r{ --playersIDs = IntSet.delete ci (playersIDs r) playersIn = (playersIn r) - 1, readyPlayers = if ready then readyPlayers r - 1 else readyPlayers r }) ri + processAction $ AnswerClients [chan] ["BYE", msg] modify (\s -> s{removedClients = ci `Set.insert` removedClients s}) processAction (DeleteClient ci) = do @@ -336,13 +338,13 @@ case info of HasAccount passwd isAdmin -> do chan <- client's sendChan - liftIO $ writeChan chan ["ASKPASSWORD"] + processAction $ AnswerClients [chan] ["ASKPASSWORD"] Guest -> do processAction JoinLobby Admin -> do mapM processAction [ModifyClient (\cl -> cl{isAdministrator = True}), JoinLobby] chan <- client's sendChan - liftIO $ writeChan chan ["ADMIN_ACCESS"] + processAction $ AnswerClients [chan] ["ADMIN_ACCESS"] processAction JoinLobby = do @@ -402,8 +404,8 @@ forkIO $ clientSendLoop (clientSocket client) (coreChan si) (sendChan client) ci infoM "Clients" (show ci ++ ": New client. Time: " ++ show (connectTime client)) - writeChan (sendChan client) ["CONNECTED", "Hedgewars server http://www.hedgewars.org/"] + processAction $ AnswerClients [sendChan client] ["CONNECTED", "Hedgewars server http://www.hedgewars.org/"] {- let newLogins = takeWhile (\(_ , time) -> (connectTime client) `diffUTCTime` time <= 11) $ lastLogins serverInfo if False && (isJust $ host client `Prelude.lookup` newLogins) then diff -r aaf832c6fbd7 -r 09892cdb8f95 gameServer/ClientIO.hs --- a/gameServer/ClientIO.hs Sat Jul 31 10:39:20 2010 +0200 +++ b/gameServer/ClientIO.hs Sat Jul 31 10:42:40 2010 +0200 @@ -60,17 +60,17 @@ clientSendLoop :: Socket -> Chan CoreMessage -> Chan [B.ByteString] -> ClientIndex -> IO() clientSendLoop s coreChan chan ci = do answer <- readChan chan - doClose <- Exception.handle - (\(e :: Exception.IOException) -> if isQuit answer then return True else sendQuit e >> return True) $ do + Exception.handle + (\(e :: Exception.IOException) -> when (not $ isQuit answer) $ sendQuit e) $ do sendAll s $ (B.unlines answer) `B.append` (B.singleton '\n') - return $ isQuit answer - if doClose then + if (isQuit answer) then Exception.handle (\(_ :: Exception.IOException) -> putStrLn "error on sClose") $ sClose s else clientSendLoop s coreChan chan ci where - sendQuit e = writeChan coreChan $ ClientMessage (ci, ["QUIT", B.pack $ show e]) + --sendQuit e = writeChan coreChan $ ClientMessage (ci, ["QUIT", B.pack $ show e]) + sendQuit e = putStrLn $ show e isQuit ("BYE":xs) = True isQuit _ = False diff -r aaf832c6fbd7 -r 09892cdb8f95 gameServer/CoreTypes.hs --- a/gameServer/CoreTypes.hs Sat Jul 31 10:39:20 2010 +0200 +++ b/gameServer/CoreTypes.hs Sat Jul 31 10:42:40 2010 +0200 @@ -175,6 +175,13 @@ | TimerAction Int | Remove ClientIndex +instance Show CoreMessage where + show (Accept _) = "Accept" + show (ClientMessage _) = "ClientMessage" + show (ClientAccountInfo _) = "ClientAccountInfo" + show (TimerAction _) = "TimerAction" + show (Remove _) = "Remove" + type MRnC = MRoomsAndClients RoomInfo ClientInfo type IRnC = IRoomsAndClients RoomInfo ClientInfo diff -r aaf832c6fbd7 -r 09892cdb8f95 gameServer/ServerCore.hs --- a/gameServer/ServerCore.hs Sat Jul 31 10:39:20 2010 +0200 +++ b/gameServer/ServerCore.hs Sat Jul 31 10:42:40 2010 +0200 @@ -35,6 +35,7 @@ si <- gets serverInfo r <- liftIO $ readChan $ coreChan si + liftIO $ putStrLn $ "Core msg: " ++ show r case r of Accept ci -> processAction (AddClient ci) @@ -46,7 +47,9 @@ modify (\as -> as{clientIndex = Just ci}) reactCmd cmd - Remove ci -> processAction (DeleteClient ci) + Remove ci -> do + liftIO $ debugM "Clients" $ "DeleteClient: " ++ show ci + processAction (DeleteClient ci) --else --do @@ -54,10 +57,13 @@ --return (serverInfo, rnc) ClientAccountInfo (ci, info) -> do - removed <- gets removedClients - when (not $ ci `Set.member` removed) $ - processAction (ProcessAccountInfo info) - + --should instead check ci exists and has same nick/hostname + --removed <- gets removedClients + --when (not $ ci `Set.member` removed) $ do + -- modify (\as -> as{clientIndex = Just ci}) + -- processAction (ProcessAccountInfo info) + return () + TimerAction tick -> mapM_ processAction $ PingAll : [StatsAction | even tick] diff -r aaf832c6fbd7 -r 09892cdb8f95 gameServer/Store.hs --- a/gameServer/Store.hs Sat Jul 31 10:39:20 2010 +0200 +++ b/gameServer/Store.hs Sat Jul 31 10:42:40 2010 +0200 @@ -77,7 +77,7 @@ removeElem :: MStore e -> ElemIndex -> IO () removeElem (MStore ref) (ElemIndex n) = do (busyElems, freeElems, arr) <- readIORef ref - IOA.writeArray arr n (error "Store: no element") + IOA.writeArray arr n (error $ "Store: no element " ++ show n) writeIORef ref (IntSet.delete n busyElems, IntSet.insert n freeElems, arr) diff -r aaf832c6fbd7 -r 09892cdb8f95 gameServer/stresstest3.hs --- a/gameServer/stresstest3.hs Sat Jul 31 10:39:20 2010 +0200 +++ b/gameServer/stresstest3.hs Sat Jul 31 10:42:40 2010 +0200 @@ -63,7 +63,7 @@ hFlush stdout forks = forever $ do - delay <- randomRIO (20000::Int, 40000) + delay <- randomRIO (10000::Int, 30000) threadDelay delay forkIO testing diff -r aaf832c6fbd7 -r 09892cdb8f95 hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Sat Jul 31 10:39:20 2010 +0200 +++ b/hedgewars/GSHandlers.inc Sat Jul 31 10:42:40 2010 +0200 @@ -186,12 +186,12 @@ if (Gear^.Invulnerable) then exit; - if _0_6 < Gear^.dY then - PlaySound(sndOw4, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack) - else - PlaySound(sndOw1, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack); - - ApplyDamage(Gear, dmg); + //if _0_6 < Gear^.dY then + // PlaySound(sndOw4, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack) + //else + // PlaySound(sndOw1, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack); + + ApplyDamage(Gear, dmg, dsFall); end end; diff -r aaf832c6fbd7 -r 09892cdb8f95 hedgewars/HHHandlers.inc --- a/hedgewars/HHHandlers.inc Sat Jul 31 10:39:20 2010 +0200 +++ b/hedgewars/HHHandlers.inc Sat Jul 31 10:42:40 2010 +0200 @@ -17,6 +17,29 @@ *) //////////////////////////////////////////////////////////////////////////////// + +procedure HHHurt(Hedgehog: PHedgehog; Source: TDamageSource); +begin +if (Source = dsFall) or (Source = dsExplosion) then + case random(3) of + 0: PlaySound(sndOoff1, Hedgehog^.Team^.voicepack); + 1: PlaySound(sndOoff2, Hedgehog^.Team^.voicepack); + 2: PlaySound(sndOoff3, Hedgehog^.Team^.voicepack); + end +else if (Source = dsPoison) then + case random(2) of + 0: PlaySound(sndPoisonCough, Hedgehog^.Team^.voicepack); + 1: PlaySound(sndPoisonMoan, Hedgehog^.Team^.voicepack); + end +else + case random(4) of + 0: PlaySound(sndOw1, Hedgehog^.Team^.voicepack); + 1: PlaySound(sndOw2, Hedgehog^.Team^.voicepack); + 2: PlaySound(sndOw3, Hedgehog^.Team^.voicepack); + 3: PlaySound(sndOw4, Hedgehog^.Team^.voicepack); + end +end; + procedure ChangeAmmo(Gear: PGear); var slot, i: Longword; begin diff -r aaf832c6fbd7 -r 09892cdb8f95 hedgewars/VGSHandlers.inc --- a/hedgewars/VGSHandlers.inc Sat Jul 31 10:39:20 2010 +0200 +++ b/hedgewars/VGSHandlers.inc Sat Jul 31 10:42:40 2010 +0200 @@ -543,3 +543,19 @@ Gear^.doStep:= @doStepBigExplosionWork; if Steps > 1 then Gear^.doStep(Gear, Steps-1); end; + +procedure doStepChunk(Gear: PVisualGear; Steps: Longword); +begin +Gear^.X:= Gear^.X + Gear^.dX * Steps; + +Gear^.Y:= Gear^.Y + Gear^.dY * Steps; +Gear^.dY:= Gear^.dY + cGravityf * Steps; + +Gear^.Angle:= round(Gear^.Angle + Steps) mod cMaxAngle; + +if round(Gear^.Y) > cWaterLine then + begin + DeleteVisualGear(Gear); + AddVisualGear(round(Gear^.X), round(Gear^.Y), vgtDroplet); + end +end; diff -r aaf832c6fbd7 -r 09892cdb8f95 hedgewars/adler32.pas --- a/hedgewars/adler32.pas Sat Jul 31 10:39:20 2010 +0200 +++ b/hedgewars/adler32.pas Sat Jul 31 10:42:40 2010 +0200 @@ -1,152 +1,152 @@ -unit Adler32; - -{ZLib - Adler32 checksum function} - - -interface - -(************************************************************************* - - DESCRIPTION : ZLib - Adler32 checksum function - - REQUIREMENTS : TP5-7, D1-D7/D9-D10/D12, FPC, VP - - EXTERNAL DATA : --- - - MEMORY USAGE : --- - - DISPLAY MODE : --- - - REFERENCES : RFC 1950 (http://tools.ietf.org/html/rfc1950) - - - Version Date Author Modification - ------- -------- ------- ------------------------------------------ - 0.10 30.08.03 W.Ehrhardt Initial version based on MD5 layout - 2.10 30.08.03 we Common vers., XL versions for Win32 - 2.20 27.09.03 we FPC/go32v2 - 2.30 05.10.03 we STD.INC, TP5.0 - 2.40 10.10.03 we common version, english comments - 3.00 01.12.03 we Common version 3.0 - 3.01 22.05.05 we Adler32UpdateXL (i,n: integer) - 3.02 17.12.05 we Force $I- in Adler32File - 3.03 07.08.06 we $ifdef BIT32: (const fname: shortstring...) - 3.04 10.02.07 we Adler32File: no eof, XL and filemode via $ifdef - 3.05 04.07.07 we BASM16: speed-up factor 15 - 3.06 12.11.08 we uses BTypes, Ptr2Inc and/or Str255 - 3.07 25.04.09 we updated RFC URL(s) - 3.08 19.07.09 we D12 fix: assign with typecast string(fname) -**************************************************************************) - -(*------------------------------------------------------------------------- - (C) Copyright 2002-2009 Wolfgang Ehrhardt - - This software is provided 'as-is', without any express or implied warranty. - In no event will the authors be held liable for any damages arising from - the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software in - a product, an acknowledgment in the product documentation would be - appreciated but is not required. - - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - - 3. This notice may not be removed or altered from any source distribution. -----------------------------------------------------------------------------*) - -(* -As per the license above, noting that this implementation of adler32 was stripped of everything we didn't need. -That means no btypes, file loading, and the assembly version disabled. -*) - -procedure Adler32Update(var adler: longint; Msg: pointer; Len: longint); - -implementation - -(* -$ifdef BASM16 - -procedure Adler32Update(var adler: longint; Msg: pointer; Len: longint); - //-update Adler32 with Msg data -const - BASE = 65521; // max. prime < 65536 - NMAX = 5552; // max. n with 255n(n+1)/2 + (n+1)(BASE-1) < 2^32 -type - LH = packed record - L,H: word; - end; -var - s1,s2: longint; - n: integer; -begin - s1 := LH(adler).L; - s2 := LH(adler).H; - while Len > 0 do begin - if Len<NMAX then n := Len else n := NMAX; - //BASM increases speed from about 52 cyc/byte to about 3.7 cyc/byte - asm - mov cx,[n] - db $66; mov ax,word ptr [s1] - db $66; mov di,word ptr [s2] - les si,[msg] - @@1: db $66, $26, $0f, $b6, $1c // movzx ebx,es:[si] - inc si - db $66; add ax,bx // inc(s1, pByte(Msg)^) - db $66; add di,ax // inc(s2, s1 - dec cx - jnz @@1 - db $66; sub cx,cx - mov cx,BASE - db $66; sub dx,dx - db $66; div cx - db $66; mov word ptr [s1],dx // s1 := s1 mod BASE - db $66; sub dx,dx - db $66; mov ax,di - db $66; div cx - db $66; mov word ptr [s2],dx // s2 := s2 mod BASE - mov word ptr [msg],si // save offset for next chunk - end; - dec(len, n); - end; - LH(adler).L := word(s1); - LH(adler).H := word(s2); -end; -*) - -procedure Adler32Update(var adler: longint; Msg: pointer; Len: longint); - {-update Adler32 with Msg data} -const - BASE = 65521; {max. prime < 65536 } - NMAX = 3854; {max. n with 255n(n+1)/2 + (n+1)(BASE-1) < 2^31} -type - LH = packed record - L,H: word; - end; -var - s1,s2: longint; - i,n: integer; -begin - s1 := LH(adler).L; - s2 := LH(adler).H; - while Len > 0 do begin - if Len<NMAX then n := Len else n := NMAX; - for i:=1 to n do begin - inc(s1, pByte(Msg)^); - inc(Msg); - inc(s2, s1); - end; - s1 := s1 mod BASE; - s2 := s2 mod BASE; - dec(len, n); - end; - LH(adler).L := word(s1); - LH(adler).H := word(s2); -end; - -end. +unit Adler32; + +{ZLib - Adler32 checksum function} + + +interface + +(************************************************************************* + + DESCRIPTION : ZLib - Adler32 checksum function + + REQUIREMENTS : TP5-7, D1-D7/D9-D10/D12, FPC, VP + + EXTERNAL DATA : --- + + MEMORY USAGE : --- + + DISPLAY MODE : --- + + REFERENCES : RFC 1950 (http://tools.ietf.org/html/rfc1950) + + + Version Date Author Modification + ------- -------- ------- ------------------------------------------ + 0.10 30.08.03 W.Ehrhardt Initial version based on MD5 layout + 2.10 30.08.03 we Common vers., XL versions for Win32 + 2.20 27.09.03 we FPC/go32v2 + 2.30 05.10.03 we STD.INC, TP5.0 + 2.40 10.10.03 we common version, english comments + 3.00 01.12.03 we Common version 3.0 + 3.01 22.05.05 we Adler32UpdateXL (i,n: integer) + 3.02 17.12.05 we Force $I- in Adler32File + 3.03 07.08.06 we $ifdef BIT32: (const fname: shortstring...) + 3.04 10.02.07 we Adler32File: no eof, XL and filemode via $ifdef + 3.05 04.07.07 we BASM16: speed-up factor 15 + 3.06 12.11.08 we uses BTypes, Ptr2Inc and/or Str255 + 3.07 25.04.09 we updated RFC URL(s) + 3.08 19.07.09 we D12 fix: assign with typecast string(fname) +**************************************************************************) + +(*------------------------------------------------------------------------- + (C) Copyright 2002-2009 Wolfgang Ehrhardt + + This software is provided 'as-is', without any express or implied warranty. + In no event will the authors be held liable for any damages arising from + the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software in + a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source distribution. +----------------------------------------------------------------------------*) + +(* +As per the license above, noting that this implementation of adler32 was stripped of everything we didn't need. +That means no btypes, file loading, and the assembly version disabled. +*) + +procedure Adler32Update(var adler: longint; Msg: pointer; Len: longint); + +implementation + +(* +$ifdef BASM16 + +procedure Adler32Update(var adler: longint; Msg: pointer; Len: longint); + //-update Adler32 with Msg data +const + BASE = 65521; // max. prime < 65536 + NMAX = 5552; // max. n with 255n(n+1)/2 + (n+1)(BASE-1) < 2^32 +type + LH = packed record + L,H: word; + end; +var + s1,s2: longint; + n: integer; +begin + s1 := LH(adler).L; + s2 := LH(adler).H; + while Len > 0 do begin + if Len<NMAX then n := Len else n := NMAX; + //BASM increases speed from about 52 cyc/byte to about 3.7 cyc/byte + asm + mov cx,[n] + db $66; mov ax,word ptr [s1] + db $66; mov di,word ptr [s2] + les si,[msg] + @@1: db $66, $26, $0f, $b6, $1c // movzx ebx,es:[si] + inc si + db $66; add ax,bx // inc(s1, pByte(Msg)^) + db $66; add di,ax // inc(s2, s1 + dec cx + jnz @@1 + db $66; sub cx,cx + mov cx,BASE + db $66; sub dx,dx + db $66; div cx + db $66; mov word ptr [s1],dx // s1 := s1 mod BASE + db $66; sub dx,dx + db $66; mov ax,di + db $66; div cx + db $66; mov word ptr [s2],dx // s2 := s2 mod BASE + mov word ptr [msg],si // save offset for next chunk + end; + dec(len, n); + end; + LH(adler).L := word(s1); + LH(adler).H := word(s2); +end; +*) + +procedure Adler32Update(var adler: longint; Msg: pointer; Len: longint); + {-update Adler32 with Msg data} +const + BASE = 65521; {max. prime < 65536 } + NMAX = 3854; {max. n with 255n(n+1)/2 + (n+1)(BASE-1) < 2^31} +type + LH = packed record + L,H: word; + end; +var + s1,s2: longint; + i,n: integer; +begin + s1 := LH(adler).L; + s2 := LH(adler).H; + while Len > 0 do begin + if Len<NMAX then n := Len else n := NMAX; + for i:=1 to n do begin + inc(s1, pByte(Msg)^); + inc(Msg); + inc(s2, s1); + end; + s1 := s1 mod BASE; + s2 := s2 mod BASE; + dec(len, n); + end; + LH(adler).L := word(s1); + LH(adler).H := word(s2); +end; + +end. diff -r aaf832c6fbd7 -r 09892cdb8f95 hedgewars/hwengine.pas diff -r aaf832c6fbd7 -r 09892cdb8f95 hedgewars/uAIAmmoTests.pas --- a/hedgewars/uAIAmmoTests.pas Sat Jul 31 10:39:20 2010 +0200 +++ b/hedgewars/uAIAmmoTests.pas Sat Jul 31 10:42:40 2010 +0200 @@ -103,7 +103,7 @@ const BadTurn = Low(LongInt) div 4; implementation -uses uMisc, uAIMisc, uLand; +uses uMisc, uAIMisc, uLand, uTeams; function Metric(x1, y1, x2, y2: LongInt): LongInt; begin @@ -121,8 +121,11 @@ t: LongInt; value: LongInt; begin - x:= Me^.X; - y:= Me^.Y; + with PHedgehog(Me^.Hedgehog)^ do + begin + x:= Me^.X + int2hwfloat(round(GetLaunchX(Ammo^[CurSlot, CurAmmo].AmmoType, hwSign(Me^.dX), Me^.Angle))); + y:= Me^.Y + int2hwfloat(round(GetLaunchY(Ammo^[CurSlot, CurAmmo].AmmoType, Me^.Angle))) + end; dX:= Vx; dY:= -Vy; t:= rTime; @@ -176,8 +179,11 @@ var x, y, dY: hwFloat; t: LongInt; begin - x:= Me^.X; - y:= Me^.Y; + with PHedgehog(Me^.Hedgehog)^ do + begin + x:= Me^.X + int2hwfloat(round(GetLaunchX(Ammo^[CurSlot, CurAmmo].AmmoType, hwSign(Me^.dX), Me^.Angle))); + y:= Me^.Y + int2hwfloat(round(GetLaunchY(Ammo^[CurSlot, CurAmmo].AmmoType, Me^.Angle))) + end; dY:= -Vy; t:= TestTime; repeat @@ -228,8 +234,11 @@ var x, y, dY: hwFloat; t: LongInt; begin - x:= Me^.X; - y:= Me^.Y; + with PHedgehog(Me^.Hedgehog)^ do + begin + x:= Me^.X + int2hwfloat(round(GetLaunchX(Ammo^[CurSlot, CurAmmo].AmmoType, hwSign(Me^.dX), Me^.Angle))); + y:= Me^.Y + int2hwfloat(round(GetLaunchY(Ammo^[CurSlot, CurAmmo].AmmoType, Me^.Angle))) + end; dY:= -Vy; t:= TestTime; repeat @@ -280,8 +289,11 @@ var x, y, dY: hwFloat; t: LongInt; begin - x:= Me^.X; - y:= Me^.Y; + with PHedgehog(Me^.Hedgehog)^ do + begin + x:= Me^.X + int2hwfloat(round(GetLaunchX(Ammo^[CurSlot, CurAmmo].AmmoType, hwSign(Me^.dX), Me^.Angle))); + y:= Me^.Y + int2hwfloat(round(GetLaunchY(Ammo^[CurSlot, CurAmmo].AmmoType, Me^.Angle))) + end; dY:= -Vy; t:= TestTime; repeat @@ -336,8 +348,11 @@ var x, y, dY: hwFloat; t: LongInt; begin - x:= Me^.X; - y:= Me^.Y; + with PHedgehog(Me^.Hedgehog)^ do + begin + x:= Me^.X + int2hwfloat(round(GetLaunchX(Ammo^[CurSlot, CurAmmo].AmmoType, hwSign(Me^.dX), Me^.Angle))); + y:= Me^.Y + int2hwfloat(round(GetLaunchY(Ammo^[CurSlot, CurAmmo].AmmoType, Me^.Angle))) + end; dY:= -Vy; t:= TestTime; repeat @@ -388,8 +403,11 @@ var x, y, dY: hwFloat; value: LongInt; begin - x:= Me^.X; - y:= Me^.Y; + with PHedgehog(Me^.Hedgehog)^ do + begin + x:= Me^.X + int2hwfloat(round(GetLaunchX(Ammo^[CurSlot, CurAmmo].AmmoType, hwSign(Me^.dX), Me^.Angle))); + y:= Me^.Y + int2hwfloat(round(GetLaunchY(Ammo^[CurSlot, CurAmmo].AmmoType, Me^.Angle))) + end; dY:= -Vy; repeat @@ -473,12 +491,15 @@ ap.ExplR:= 0; ap.Time:= 0; ap.Power:= 1; -range:= Metric(hwRound(Me^.X), hwRound(Me^.Y), Targ.X, Targ.Y); +with PHedgehog(Me^.Hedgehog)^ do + begin + x:= Me^.X + int2hwfloat(round(GetLaunchX(Ammo^[CurSlot, CurAmmo].AmmoType, hwSign(Me^.dX), Me^.Angle))); + y:= Me^.Y + int2hwfloat(round(GetLaunchY(Ammo^[CurSlot, CurAmmo].AmmoType, Me^.Angle))) + end; +range:= Metric(hwRound(x), hwRound(y), Targ.X, Targ.Y); if ( range < MIN_RANGE ) or ( range > MAX_RANGE ) then exit(BadTurn); -Vx:= (int2hwFloat(Targ.X) - Me^.X) * _1div1024; -Vy:= (int2hwFloat(Targ.Y) - Me^.Y) * _1div1024; -x:= Me^.X; -y:= Me^.Y; +Vx:= (int2hwFloat(Targ.X) - x) * _1div1024; +Vy:= (int2hwFloat(Targ.Y) - y) * _1div1024; ap.Angle:= DxDy2AttackAngle(Vx, -Vy); repeat x:= x + vX; @@ -507,13 +528,16 @@ ap.ExplR:= 0; ap.Time:= 0; ap.Power:= 1; +with PHedgehog(Me^.Hedgehog)^ do + begin + x:= Me^.X + int2hwfloat(round(GetLaunchX(Ammo^[CurSlot, CurAmmo].AmmoType, hwSign(Me^.dX), Me^.Angle))); + y:= Me^.Y + int2hwfloat(round(GetLaunchY(Ammo^[CurSlot, CurAmmo].AmmoType, Me^.Angle))) + end; if Abs(hwRound(Me^.X) - Targ.X) + Abs(hwRound(Me^.Y) - Targ.Y) < 80 then exit(BadTurn); -t:= _0_5 / Distance(int2hwFloat(Targ.X) - Me^.X, int2hwFloat(Targ.Y) - Me^.Y); -Vx:= (int2hwFloat(Targ.X) - Me^.X) * t; -Vy:= (int2hwFloat(Targ.Y) - Me^.Y) * t; -x:= Me^.X; -y:= Me^.Y; +t:= _0_5 / Distance(int2hwFloat(Targ.X) - x, int2hwFloat(Targ.Y) - y); +Vx:= (int2hwFloat(Targ.X) - x) * t; +Vy:= (int2hwFloat(Targ.Y) - y) * t; ap.Angle:= DxDy2AttackAngle(Vx, -Vy); d:= 0; @@ -531,6 +555,7 @@ function TestBaseballBat(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; var valueResult: LongInt; + x, y: hwFloat; begin Level:= Level; // avoid compiler hint ap.ExplR:= 0; @@ -539,26 +564,37 @@ ap.Time:= 0; ap.Power:= 1; -if (Targ.X) - hwRound(Me^.X) >= 0 then ap.Angle:= cMaxAngle div 4 +with PHedgehog(Me^.Hedgehog)^ do + begin + x:= Me^.X + int2hwfloat(round(GetLaunchX(Ammo^[CurSlot, CurAmmo].AmmoType, hwSign(Me^.dX), Me^.Angle))); + y:= Me^.Y + int2hwfloat(round(GetLaunchY(Ammo^[CurSlot, CurAmmo].AmmoType, Me^.Angle))) + end; +if (Targ.X) - hwRound(x) >= 0 then ap.Angle:= cMaxAngle div 4 else ap.Angle:= - cMaxAngle div 4; -valueResult:= RateShove(Me, hwRound(Me^.X) + 10 * hwSign(int2hwFloat(Targ.X) - Me^.X), hwRound(Me^.Y), 15, 30); +valueResult:= RateShove(Me, hwRound(x) + 10 * hwSign(int2hwFloat(Targ.X) - x), hwRound(y), 15, 30); if valueResult <= 0 then valueResult:= BadTurn else inc(valueResult); TestBaseballBat:= valueResult; end; function TestFirePunch(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; var i, valueResult: LongInt; + x, y: hwFloat; begin Level:= Level; // avoid compiler hint ap.ExplR:= 0; ap.Time:= 0; ap.Power:= 1; ap.Angle:= 0; -if (Abs(hwRound(Me^.X) - Targ.X) > 25) -or (Abs(hwRound(Me^.Y) - 50 - Targ.Y) > 50) then +with PHedgehog(Me^.Hedgehog)^ do begin - if TestColl(hwRound(Me^.Y), hwRound(Me^.Y) - 16, 6) - and (RateShove(Me, hwRound(Me^.X) + 10 * hwSign(Me^.dX), hwRound(Me^.Y) - 40, 30, 30) = 0) then + x:= Me^.X + int2hwfloat(round(GetLaunchX(Ammo^[CurSlot, CurAmmo].AmmoType, hwSign(Me^.dX), Me^.Angle))); + y:= Me^.Y + int2hwfloat(round(GetLaunchY(Ammo^[CurSlot, CurAmmo].AmmoType, Me^.Angle))) + end; +if (Abs(hwRound(x) - Targ.X) > 25) +or (Abs(hwRound(y) - 50 - Targ.Y) > 50) then + begin + if TestColl(hwRound(x), hwRound(y) - 16, 6) + and (RateShove(Me, hwRound(x) + 10 * hwSign(Me^.dX), hwRound(y) - 40, 30, 30) = 0) then valueResult:= Succ(BadTurn) else valueResult:= BadTurn; @@ -567,8 +603,8 @@ valueResult:= 0; for i:= 0 to 4 do - valueResult:= valueResult + RateShove(Me, hwRound(Me^.X) + 10 * hwSign(int2hwFloat(Targ.X) - Me^.X), - hwRound(Me^.Y) - 20 * i - 5, 10, 30); + valueResult:= valueResult + RateShove(Me, hwRound(x) + 10 * hwSign(int2hwFloat(Targ.X) - x), + hwRound(y) - 20 * i - 5, 10, 30); if valueResult <= 0 then valueResult:= BadTurn else diff -r aaf832c6fbd7 -r 09892cdb8f95 hedgewars/uConsts.pas --- a/hedgewars/uConsts.pas Sat Jul 31 10:39:20 2010 +0200 +++ b/hedgewars/uConsts.pas Sat Jul 31 10:42:40 2010 +0200 @@ -73,7 +73,7 @@ sprHandDynamite, sprHandHellish, sprHandMine, sprHandSeduction, sprHandVamp, sprBigExplosion, sprSmokeRing, sprBeeTrace, sprEgg, sprTargetBee, sprHandBee, sprFeather, sprPiano, sprHandSineGun, sprPortalGun, sprPortal, - sprCheese, sprHandCheese, sprHandFlamethrower + sprCheese, sprHandCheese, sprHandFlamethrower, sprChunk ); // Gears that interact with other Gears and/or Land @@ -94,10 +94,12 @@ vgtSteam, vgtAmmo, vgtSmoke, vgtSmokeWhite, vgtHealth, vgtShell, vgtDust, vgtSplash, vgtDroplet, vgtSmokeRing, vgtBeeTrace, vgtEgg, vgtFeather, vgtHealthTag, vgtSmokeTrace, vgtEvilTrace, vgtExplosion, - vgtBigExplosion); + vgtBigExplosion, vgtChunk); TGearsType = set of TGearType; + TDamageSource = (dsUnknown, dsFall, dsBullet, dsExplosion, dsShove, dsPoison); + TSound = (sndNone, sndGrenadeImpact, sndExplosion, sndThrowPowerUp, sndThrowRelease, sndSplash, sndShotgunReload, sndShotgunFire, sndGraveImpact, @@ -106,7 +108,7 @@ sndMissed, sndStupid, sndFirstBlood, sndBoring, sndByeBye, sndSameTeam, sndNutter, sndReinforce, sndTraitor, sndRegret, sndEnemyDown, sndCoward, sndHurry, sndWatchIt, sndKamikaze, - sndCake, sndOw1, sndOw4, sndFirePunch1, sndFirePunch2, + sndCake, sndOw1, sndOw2, sndOw3, sndOw4, sndFirePunch1, sndFirePunch2, sndFirePunch3, sndFirePunch4, sndFirePunch5, sndFirePunch6, sndMelon, sndHellish, sndYoohoo, sndRCPlane, sndWhipCrack, sndRideOfTheValkyries, sndDenied, sndPlaced, sndBaseballBat, @@ -118,7 +120,7 @@ sndMelonImpact, sndDroplet1, sndDroplet2, sndDroplet3, sndEggBreak, sndDrillRocket, sndPoisonCough, sndPoisonMoan, sndBirdyLay, sndWhistle, sndBeeWater, sndPiano0, sndPiano1, sndPiano2, sndPiano3, sndPiano4, sndPiano5, sndPiano6, sndPiano7, sndPiano8, - sndSkip, sndSineGun); + sndSkip, sndSineGun, sndOoff1, sndOoff2, sndOoff3); TAmmoType = (amNothing, amGrenade, amClusterBomb, amBazooka, amBee, amShotgun, amPickHammer, amSkip, amRope, amMine, amDEagle, amDynamite, amFirePunch, amWhip, @@ -559,17 +561,17 @@ (FileName: 'SkyR'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil; Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: true; getImageDimensions: true),// sprSky (FileName: 'BorderHorizontal'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 33; Height: 2; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLow; getDimensions: false; getImageDimensions: true),// sprAMBorderHorizontal + Width: 33; Height: 2; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLow; getDimensions: false; getImageDimensions: true),// sprAMBorderHorizontal (FileName: 'BorderVertical'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 2; Height: 33; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLow; getDimensions: false; getImageDimensions: true),// sprAMBorderVertical + Width: 2; Height: 33; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLow; getDimensions: false; getImageDimensions: true),// sprAMBorderVertical (FileName: 'Slot'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 33; Height: 33; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAMSlot + Width: 33; Height: 33; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAMSlot (FileName: 'Ammos'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAMAmmos (FileName: 'SlotKeys'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAMSlotKeys (FileName: 'Corners'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 2; Height: 2; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAMCorners + Width: 2; Height: 2; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAMCorners (FileName: 'Finger'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; Width: 32; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprFinger (FileName: 'AirBomb'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; @@ -795,7 +797,9 @@ (FileName: 'amCheese'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandCheese (FileName: 'amFlamethrower'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true) // sprHandFlamethrower + Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandFlamethrower + (FileName: 'Chunk'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true) // sprChunk ); Wavez: array [TWave] of record @@ -856,6 +860,8 @@ (FileName: 'Kamikaze.ogg'; Path: ptVoices),// sndKamikaze (FileName: 'cake2.ogg'; Path: ptSounds),// sndCake (FileName: 'Ow1.ogg'; Path: ptVoices),// sndOw1 + (FileName: 'Ow2.ogg'; Path: ptVoices),// sndOw2 + (FileName: 'Ow3.ogg'; Path: ptVoices),// sndOw3 (FileName: 'Ow4.ogg'; Path: ptVoices),// sndOw4 (FileName: 'Firepunch1.ogg'; Path: ptVoices),// sndFirepunch1 (FileName: 'Firepunch2.ogg'; Path: ptVoices),// sndFirepunch2 @@ -917,7 +923,10 @@ (FileName: '8C.ogg'; Path: ptSounds),// sndPiano7 (FileName: '9D.ogg'; Path: ptSounds),// sndPiano8 (FileName: 'skip.ogg'; Path: ptSounds),// sndSkip - (FileName: 'shotgunfire.ogg'; Path: ptSounds) // sndSineGun + (FileName: 'shotgunfire.ogg'; Path: ptSounds),// sndSineGun + (FileName: 'Ooff1.ogg'; Path: ptVoices),// sndOoff1 + (FileName: 'Ooff2.ogg'; Path: ptVoices),// sndOoff2 + (FileName: 'Ooff3.ogg'; Path: ptVoices) // sndOoff3 ); Ammoz: array [TAmmoType] of record diff -r aaf832c6fbd7 -r 09892cdb8f95 hedgewars/uGears.pas --- a/hedgewars/uGears.pas Sat Jul 31 10:39:20 2010 +0200 +++ b/hedgewars/uGears.pas Sat Jul 31 10:42:40 2010 +0200 @@ -83,7 +83,7 @@ function AddGear(X, Y: LongInt; Kind: TGearType; State: Longword; dX, dY: hwFloat; Timer: LongWord): PGear; procedure ProcessGears; procedure EndTurnCleanup; -procedure ApplyDamage(Gear: PGear; Damage: Longword); +procedure ApplyDamage(Gear: PGear; Damage: Longword; Source: TDamageSource); procedure SetAllToActive; procedure SetAllHHToActive; procedure DrawGears; @@ -635,22 +635,18 @@ team: PTeam; i: LongWord; flag: Boolean; + tmp: LongWord; begin - Gear:= GearsList; + Gear:= GearsList; - while Gear <> nil do - begin - if Gear^.Kind = gtHedgehog then - begin + while Gear <> nil do + begin + if Gear^.Kind = gtHedgehog then + begin + tmp:= 0; if PHedgehog(Gear^.Hedgehog)^.Effects[hePoisoned] then - begin - inc(Gear^.Damage, min(ModifyDamage(5,Gear), max(0,Gear^.Health - 1 - Gear^.Damage))); - if getRandom(2) = 0 then - PlaySound(sndPoisonCough, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack) - else - PlaySound(sndPoisonMoan, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack); - end; - inc(Gear^.Damage, min(cHealthDecrease, max(0,Gear^.Health - 1 - Gear^.Damage))); + inc(tmp, min(ModifyDamage(5,Gear), max(0,Gear^.Health - 1 - Gear^.Damage))); + inc(tmp, min(cHealthDecrease, max(0,Gear^.Health - 1 - Gear^.Damage))); if PHedgehog(Gear^.Hedgehog)^.King then begin flag:= false; @@ -660,12 +656,13 @@ (not team^.Hedgehogs[i].King) and (team^.Hedgehogs[i].Gear^.Health > team^.Hedgehogs[i].Gear^.Damage) then flag:= true; - if not flag then inc(Gear^.Damage, min(5, max(0,Gear^.Health - 1 - Gear^.Damage))) + if not flag then inc(tmp, min(5, max(0,Gear^.Health - 1 - Gear^.Damage))) end; - end; + if tmp > 0 then ApplyDamage(Gear, tmp, dsPoison); + end; - Gear:= Gear^.NextGear - end; + Gear:= Gear^.NextGear + end; end; procedure ProcessGears; @@ -891,13 +888,14 @@ end end; -procedure ApplyDamage(Gear: PGear; Damage: Longword); +procedure ApplyDamage(Gear: PGear; Damage: Longword; Source: TDamageSource); var s: shortstring; vampDmg, tmpDmg, i: Longword; vg: PVisualGear; begin if (Gear^.Kind = gtHedgehog) and (Damage>=1) then begin + HHHurt(Gear^.Hedgehog, Source); AddDamageTag(hwRound(Gear^.X), hwRound(Gear^.Y), Damage, PHedgehog(Gear^.Hedgehog)^.Team^.Clan^.Color); tmpDmg:= min(Damage, max(0,Gear^.Health-Gear^.Damage)); if (Gear <> CurrentHedgehog^.Gear) and (CurrentHedgehog^.Gear <> nil) and (tmpDmg >= 1) then @@ -1179,6 +1177,7 @@ dmg, dmgRadius, dmgBase: LongInt; fX, fY: hwFloat; vg: PVisualGear; + i, cnt: LongInt; begin TargetPoint.X:= NoPointX; {$IFDEF DEBUGFILE}if Radius > 4 then AddFileLog('Explosion: at (' + inttostr(x) + ',' + inttostr(y) + ')');{$ENDIF} @@ -1226,7 +1225,7 @@ if (Mask and EXPLNoDamage) = 0 then begin if not Gear^.Invulnerable then - ApplyDamage(Gear, dmg) + ApplyDamage(Gear, dmg, dsExplosion) else Gear^.State:= Gear^.State or gstWinner; end; @@ -1263,7 +1262,13 @@ end; if (Mask and EXPLDontDraw) = 0 then - if (GameFlags and gfSolidLand) = 0 then DrawExplosion(X, Y, Radius); + if (GameFlags and gfSolidLand) = 0 then + begin + cnt:= DrawExplosion(X, Y, Radius) div 1608; // approx 2 16x16 circles to erase per chunk + if cnt > 0 then + for i:= 0 to cnt do + AddVisualGear(X, Y, vgtChunk) + end; uAIMisc.AwareOfExplosion(0, 0, 0) end; @@ -1285,7 +1290,7 @@ gtTarget, gtExplosives: begin if (not t^.Invulnerable) then - ApplyDamage(t, dmg) + ApplyDamage(t, dmg, dsBullet) else Gear^.State:= Gear^.State or gstWinner; @@ -1340,10 +1345,10 @@ gtExplosives: begin if (Ammo^.Kind = gtDrill) then begin Ammo^.Timer:= 0; exit; end; if (not Gear^.Invulnerable) then - ApplyDamage(Gear, tmpDmg) + ApplyDamage(Gear, tmpDmg, dsShove) else Gear^.State:= Gear^.State or gstWinner; - if (Gear^.Kind = gtExplosives) and (Ammo^.Kind = gtBlowtorch) then ApplyDamage(Gear, tmpDmg * 100); // crank up damage for explosives + blowtorch + if (Gear^.Kind = gtExplosives) and (Ammo^.Kind = gtBlowtorch) then ApplyDamage(Gear, tmpDmg * 100, dsUnknown); // crank up damage for explosives + blowtorch DeleteCI(Gear); if (Gear^.Kind = gtHedgehog) and PHedgehog(Gear^.Hedgehog)^.King then diff -r aaf832c6fbd7 -r 09892cdb8f95 hedgewars/uLandGraphics.pas --- a/hedgewars/uLandGraphics.pas Sat Jul 31 10:39:20 2010 +0200 +++ b/hedgewars/uLandGraphics.pas Sat Jul 31 10:42:40 2010 +0200 @@ -30,7 +30,7 @@ function SweepDirty: boolean; function Despeckle(X, Y: LongInt): boolean; function CheckLandValue(X, Y: LongInt; LandFlag: Word): boolean; -procedure DrawExplosion(X, Y, Radius: LongInt); +function DrawExplosion(X, Y, Radius: LongInt): Longword; procedure DrawHLinesExplosions(ar: PRangeArray; Radius: LongInt; y, dY: LongInt; Count: Byte); procedure DrawTunnel(X, Y, dX, dY: hwFloat; ticks, HalfWidth: LongInt); procedure FillRoundInLand(X, Y, Radius: LongInt; Value: Longword); @@ -181,17 +181,22 @@ end; -procedure FillLandCircleLinesBG(x, y, dx, dy: LongInt); +function FillLandCircleLinesBG(x, y, dx, dy: LongInt): Longword; var i, t: LongInt; + cnt: Longword; begin +cnt:= 0; t:= y + dy; if (t and LAND_HEIGHT_MASK) = 0 then for i:= max(x - dx, 0) to min(x + dx, LAND_WIDTH - 1) do if ((Land[t, i] and lfBasic) <> 0) then + begin + inc(cnt); if (cReducedQuality and rqBlurryLand) = 0 then LandPixels[t, i]:= LandBackPixel(i, t) else LandPixels[t div 2, i div 2]:= LandBackPixel(i, t) + end else if ((Land[t, i] and lfObject) <> 0) then if (cReducedQuality and rqBlurryLand) = 0 then @@ -203,10 +208,13 @@ if (t and LAND_HEIGHT_MASK) = 0 then for i:= max(x - dx, 0) to min(x + dx, LAND_WIDTH - 1) do if ((Land[t, i] and lfBasic) <> 0) then + begin + inc(cnt); if (cReducedQuality and rqBlurryLand) = 0 then LandPixels[t, i]:= LandBackPixel(i, t) else LandPixels[t div 2, i div 2]:= LandBackPixel(i, t) + end else if ((Land[t, i] and lfObject) <> 0) then if (cReducedQuality and rqBlurryLand) = 0 then @@ -218,10 +226,13 @@ if (t and LAND_HEIGHT_MASK) = 0 then for i:= max(x - dy, 0) to min(x + dy, LAND_WIDTH - 1) do if ((Land[t, i] and lfBasic) <> 0) then + begin + inc(cnt); if (cReducedQuality and rqBlurryLand) = 0 then LandPixels[t, i]:= LandBackPixel(i, t) else LandPixels[t div 2, i div 2]:= LandBackPixel(i, t) + end else if ((Land[t, i] and lfObject) <> 0) then if (cReducedQuality and rqBlurryLand) = 0 then @@ -233,18 +244,20 @@ if (t and LAND_HEIGHT_MASK) = 0 then for i:= max(x - dy, 0) to min(x + dy, LAND_WIDTH - 1) do if ((Land[t, i] and lfBasic) <> 0) then - if (cReducedQuality and rqBlurryLand) = 0 then - LandPixels[t, i]:= LandBackPixel(i, t) - else - LandPixels[t div 2, i div 2]:= LandBackPixel(i, t) - + begin + inc(cnt); + if (cReducedQuality and rqBlurryLand) = 0 then + LandPixels[t, i]:= LandBackPixel(i, t) + else + LandPixels[t div 2, i div 2]:= LandBackPixel(i, t) + end else if ((Land[t, i] and lfObject) <> 0) then if (cReducedQuality and rqBlurryLand) = 0 then LandPixels[t, i]:= 0 else LandPixels[t div 2, i div 2]:= 0; - +FillLandCircleLinesBG:= cnt; end; procedure FillLandCircleLinesEBC(x, y, dx, dy: LongInt); @@ -310,19 +323,21 @@ end; end; -procedure DrawExplosion(X, Y, Radius: LongInt); +function DrawExplosion(X, Y, Radius: LongInt): Longword; var dx, dy, ty, tx, d: LongInt; + cnt: Longword; begin // draw background land texture begin + cnt:= 0; dx:= 0; dy:= Radius; d:= 3 - 2 * Radius; while (dx < dy) do begin - FillLandCircleLinesBG(x, y, dx, dy); + inc(cnt, FillLandCircleLinesBG(x, y, dx, dy)); if (d < 0) then d:= d + 4 * dx + 6 else begin @@ -331,7 +346,7 @@ end; inc(dx) end; - if (dx = dy) then FillLandCircleLinesBG(x, y, dx, dy); + if (dx = dy) then inc(cnt, FillLandCircleLinesBG(x, y, dx, dy)); end; // draw a hole in land @@ -382,7 +397,8 @@ dx:= min(X + Radius + 1, LAND_WIDTH) - tx; ty:= max(Y - Radius - 1, 0); dy:= min(Y + Radius + 1, LAND_HEIGHT) - ty; -UpdateLandTexture(tx, dx, ty, dy) +UpdateLandTexture(tx, dx, ty, dy); +DrawExplosion:= cnt end; procedure DrawHLinesExplosions(ar: PRangeArray; Radius: LongInt; y, dY: LongInt; Count: Byte); diff -r aaf832c6fbd7 -r 09892cdb8f95 hedgewars/uMisc.pas --- a/hedgewars/uMisc.pas Sat Jul 31 10:39:20 2010 +0200 +++ b/hedgewars/uMisc.pas Sat Jul 31 10:42:40 2010 +0200 @@ -35,6 +35,8 @@ isSpeed : boolean; isFirstFrame : boolean; + isStereoEnabled : boolean; + fastUntilLag : boolean; GameState : TGameState; @@ -757,7 +759,7 @@ Rewrite(f); {$ELSE} if (ParamStr(1) <> '') and (ParamStr(2) <> '') then - if (ParamCount <> 3) and (ParamCount <> 18) then + if (ParamCount <> 3) and (ParamCount <> 19) then begin for i:= 0 to 7 do begin @@ -782,7 +784,6 @@ {$ENDIF} {$I+} {$ENDIF} - end; procedure freeModule; diff -r aaf832c6fbd7 -r 09892cdb8f95 hedgewars/uStore.pas --- a/hedgewars/uStore.pas Sat Jul 31 10:39:20 2010 +0200 +++ b/hedgewars/uStore.pas Sat Jul 31 10:42:40 2010 +0200 @@ -39,7 +39,9 @@ rotationQt: GLfloat; wScreen: LongInt; hScreen: LongInt; - + framel, framer, depthl, depthr: GLuint; + texl, texr: GLuint; + procedure initModule; procedure freeModule; @@ -356,8 +358,9 @@ if TeamsArray[t] <> nil then with TeamsArray[t]^ do begin - if GraveName = '' then GraveName:= 'Simple'; - texsurf:= LoadImage(Pathz[ptGraves] + '/' + GraveName, ifCritical or ifTransparent); + if GraveName = '' then GraveName:= 'Statue'; + texsurf:= LoadImage(Pathz[ptGraves] + '/' + GraveName, ifTransparent); + if texsurf = nil then texsurf:= LoadImage(Pathz[ptGraves] + '/Statue', ifCritical or ifTransparent); GraveTex:= Surface2Tex(texsurf, false); SDL_FreeSurface(texsurf) end @@ -801,6 +804,15 @@ SDL_FreeSurface(MissionIcons); FreeTexture(ropeIconTex); FreeTexture(HHTexture); + if isStereoEnabled then + begin + glDeleteTextures(1, @texl); + glDeleteRenderbuffersEXT(1, @depthl); + glDeleteFramebuffersEXT(1, @framel); + glDeleteTextures(1, @texr); + glDeleteRenderbuffersEXT(1, @depthr); + glDeleteFramebuffersEXT(1, @framer) + end end; @@ -1170,7 +1182,9 @@ {$ENDIF} end; -{$IFNDEF IPHONEOS} +{$IFDEF IPHONEOS} + cGPUVendor:= gvApple; +{$ELSE} if StrPos(Str2PChar(vendor), Str2PChar('nvidia')) <> nil then cGPUVendor:= gvNVIDIA else if StrPos(Str2PChar(vendor), Str2PChar('intel')) <> nil then @@ -1178,8 +1192,43 @@ else if StrPos(Str2PChar(vendor), Str2PChar('ati')) <> nil then cGPUVendor:= gvIntel; //SupportNPOTT:= glLoadExtension('GL_ARB_texture_non_power_of_two'); -{$ELSE} - cGPUVendor:= gvApple; + + if isStereoEnabled then + begin + // prepare left and right frame buffers and associated textures + glLoadExtension('GL_EXT_framebuffer_object'); + + // left + glGenFramebuffersEXT(1, @framel); + glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, framel); + glGenRenderbuffersEXT(1, @depthl); + glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, depthl); + glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, cScreenWidth, cScreenHeight); + glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, depthl); + glGenTextures(1, @texl); + glBindTexture(GL_TEXTURE_2D, texl); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, cScreenWidth, cScreenHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, nil); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, texl, 0); + + // right + glGenFramebuffersEXT(1, @framer); + glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, framer); + glGenRenderbuffersEXT(1, @depthr); + glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, depthr); + glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, cScreenWidth, cScreenHeight); + glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, depthr); + glGenTextures(1, @texr); + glBindTexture(GL_TEXTURE_2D, texr); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, cScreenWidth, cScreenHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, nil); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, texr, 0); + + // reset + glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0) + end; {$ENDIF} {$IFDEF DEBUGFILE} diff -r aaf832c6fbd7 -r 09892cdb8f95 hedgewars/uVisualGears.pas --- a/hedgewars/uVisualGears.pas Sat Jul 31 10:39:20 2010 +0200 +++ b/hedgewars/uVisualGears.pas Sat Jul 31 10:42:40 2010 +0200 @@ -115,7 +115,8 @@ @doStepSmokeTrace, @doStepSmokeTrace, @doStepExplosion, - @doStepBigExplosion + @doStepBigExplosion, + @doStepChunk ); function AddVisualGear(X, Y: LongInt; Kind: TVisualGearType; State: LongWord = 0): PVisualGear; @@ -299,6 +300,15 @@ vgtBigExplosion: begin gear^.Angle:= random(360); end; + vgtChunk: begin + gear^.Frame:= random(4); + t:= random(1024); + sp:= 0.001 * (random(85) + 47); + dx:= AngleSin(t).QWordValue/4294967296 * sp; + dy:= AngleCos(t).QWordValue/4294967296 * sp; + if random(2) = 0 then dx := -dx; + (*if random(2) = 0 then*) dy := -2 * dy; + end; end; if State <> 0 then gear^.State:= State; @@ -455,6 +465,7 @@ Tint($FF, $FF, $FF, floor(Gear^.alpha * $FF)); DrawRotatedTextureF(SpritesData[sprSmokeRing].Texture, Gear^.scale, 0, 0, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, 0, 1, 200, 200, Gear^.Angle); end; + vgtChunk: DrawRotatedF(sprChunk, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle); end; case Gear^.Kind of vgtSmallDamageTag: DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex); diff -r aaf832c6fbd7 -r 09892cdb8f95 hedgewars/uWorld.pas --- a/hedgewars/uWorld.pas Sat Jul 31 10:39:20 2010 +0200 +++ b/hedgewars/uWorld.pas Sat Jul 31 10:42:40 2010 +0200 @@ -22,6 +22,7 @@ interface uses SDLh, uGears, uConsts, uFloat, uRandom; +type TRenderMode = (rmDefault, rmLeftEye, rmRightEye); var FollowGear: PGear; WindBarWidth: LongInt; @@ -44,6 +45,7 @@ procedure InitWorld; procedure DrawWorld(Lag: LongInt); +procedure DrawWorldStereo(Lag: LongInt; RM: TRenderMode); procedure AddCaption(s: shortstring; Color: Longword; Group: TCapGroup); procedure ShowMission(caption, subcaption, text: ansistring; icon, time : LongInt); procedure HideMission; @@ -71,6 +73,11 @@ amSel: TAmmoType = amNothing; missionTex: PTexture; missionTimer: LongInt; + stereoDepth: GLfloat = 0; + +const cStereo_Sky = 0.0750; + cStereo_Horizon = 0.0250; + cStereo_Water = 0.0125; procedure InitWorld; var i, t: LongInt; @@ -528,14 +535,7 @@ procedure DrawWorld(Lag: LongInt); -var i, t: LongInt; - r: TSDL_Rect; - tdx, tdy: Double; - grp: TCapGroup; - s: string[15]; - highlight: Boolean; - offset, offsetX, offsetY, ScreenBottom: LongInt; - VertexBuffer: array [0..3] of TVertex2f; +var cc: array[0..3] of GLfloat; begin if not isPaused then begin @@ -564,6 +564,101 @@ if not isPaused then MoveCamera; + if not isStereoEnabled then + begin + glClear(GL_COLOR_BUFFER_BIT); + DrawWorldStereo(Lag, rmDefault) + end + else + begin + // create left fb + glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, framel); + glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); + DrawWorldStereo(Lag, rmLeftEye); + + // create right fb + glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, framer); + glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); + DrawWorldStereo(0, rmRightEye); + + // detatch drawing from fbs + glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); + glGetFloatv(GL_COLOR_CLEAR_VALUE, @cc); + glClearColor(0, 0, 0, 0); + glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); + glClearColor(cc[0], cc[1], cc[2], cc[3]); + SetScale(cDefaultZoomLevel); + + // enable gl stuff + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + glBlendFunc(GL_ONE, GL_ONE); + + // draw left frame + glBindTexture(GL_TEXTURE_2D, texl); + glColor3f(0.0, 1.0, 1.0); + glBegin(GL_QUADS); + glTexCoord2f(0.0, 0.0); + glVertex2d(cScreenWidth / -2, cScreenHeight); + glTexCoord2f(1.0, 0.0); + glVertex2d(cScreenWidth / 2, cScreenHeight); + glTexCoord2f(1.0, 1.0); + glVertex2d(cScreenWidth / 2, 0); + glTexCoord2f(0.0, 1.0); + glVertex2d(cScreenWidth / -2, 0); + glEnd(); + + // draw right frame + glBindTexture(GL_TEXTURE_2D, texr); + glColor3f(1.0, 0.0, 0.0); + glBegin(GL_QUADS); + glTexCoord2f(0.0, 0.0); + glVertex2d(cScreenWidth / -2, cScreenHeight); + glTexCoord2f(1.0, 0.0); + glVertex2d(cScreenWidth / 2, cScreenHeight); + glTexCoord2f(1.0, 1.0); + glVertex2d(cScreenWidth / 2, 0); + glTexCoord2f(0.0, 1.0); + glVertex2d(cScreenWidth / -2, 0); + glEnd(); + + // reset + glColor3f(1.0, 1.0, 1.0); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + SetScale(zoom); + end +end; + +procedure ChangeDepth(rm: TRenderMode; d: GLfloat); +begin + if rm = rmDefault then exit + else if rm = rmRightEye then d:= -d; + stereoDepth:= stereoDepth + d; + glMatrixMode(GL_PROJECTION); + glTranslatef(d, 0, 0); + glMatrixMode(GL_MODELVIEW) +end; + +procedure ResetDepth(rm: TRenderMode); +begin + if rm = rmDefault then exit; + glMatrixMode(GL_PROJECTION); + glTranslatef(-stereoDepth, 0, 0); + glMatrixMode(GL_MODELVIEW); + stereoDepth:= 0; +end; + +procedure DrawWorldStereo(Lag: LongInt; RM: TRenderMode); +var i, t: LongInt; + r: TSDL_Rect; + tdx, tdy: Double; + grp: TCapGroup; + s: string[15]; + highlight: Boolean; + offset, offsetX, offsetY, screenBottom: LongInt; + scale: GLfloat; + VertexBuffer: array [0..3] of TVertex2f; +begin if (cReducedQuality and rqNoBackground) = 0 then begin // Offsets relative to camera - spare them to wimpier cpus, no bg or flakes for them anyway @@ -575,9 +670,13 @@ HorizontOffset:= HorizontOffset + ((ScreenBottom-SkyOffset) div 20); // background + ChangeDepth(RM, cStereo_Sky); DrawRepeated(sprSky, sprSkyL, sprSkyR, (WorldDx + LAND_WIDTH div 2) * 3 div 8, SkyOffset); + ChangeDepth(RM, -cStereo_Horizon); DrawRepeated(sprHorizont, sprHorizontL, sprHorizontR, (WorldDx + LAND_WIDTH div 2) * 3 div 5, HorizontOffset); - end; + end + else + ChangeDepth(RM, cStereo_Sky - cStereo_Horizon); DrawVisualGears(0); @@ -585,13 +684,21 @@ begin // Waves DrawWater(255, SkyOffset); + ChangeDepth(RM, -cStereo_Water); DrawWaves( 1, 0 - WorldDx div 32, - cWaveHeight + offsetY div 35, 64); + ChangeDepth(RM, -cStereo_Water); DrawWaves( -1, 25 + WorldDx div 25, - cWaveHeight + offsetY div 38, 48); + ChangeDepth(RM, -cStereo_Water); DrawWaves( 1, 75 - WorldDx div 19, - cWaveHeight + offsetY div 45, 32); + ChangeDepth(RM, -cStereo_Water); DrawWaves(-1, 100 + WorldDx div 14, - cWaveHeight + offsetY div 70, 24); end else + begin + ChangeDepth(RM, -4 * cStereo_Water); DrawWaves(-1, 100, - (cWaveHeight + (cWaveHeight shr 1)), 0); + end; + ResetDepth(RM); DrawLand(WorldDx, WorldDy); @@ -628,20 +735,27 @@ DrawWater(cWaterOpacity, 0); // Waves + ChangeDepth(RM, cStereo_Water); DrawWaves( 1, 25 - WorldDx div 9, - cWaveHeight, 12); if (cReducedQuality and rq2DWater) = 0 then begin //DrawWater(cWaterOpacity, - offsetY div 40); + ChangeDepth(RM, cStereo_Water); DrawWaves(-1, 50 + WorldDx div 6, - cWaveHeight - offsetY div 40, 8); DrawWater(cWaterOpacity, - offsetY div 20); + ChangeDepth(RM, cStereo_Water); DrawWaves( 1, 75 - WorldDx div 4, - cWaveHeight - offsetY div 20, 2); DrawWater(cWaterOpacity, - offsetY div 10); + ChangeDepth(RM, cStereo_Water); DrawWaves( -1, 25 + WorldDx div 3, - cWaveHeight - offsetY div 10, 0); end else + begin + ChangeDepth(RM, cStereo_Water); DrawWaves(-1, 50, - (cWaveHeight shr 1), 0); - + end; + ResetDepth(RM); {$WARNINGS OFF} // Target @@ -862,58 +976,65 @@ offsetX:= 10; {$ENDIF} offsetY:= cOffsetY; -inc(Frames); + +// don't increment fps when drawing the right frame +if (RM = rmDefault) or (RM = rmLeftEye) then +begin + inc(Frames); -if cShowFPS or (GameType = gmtDemo) then inc(CountTicks, Lag); -if (GameType = gmtDemo) and (CountTicks >= 1000) then - begin - i:=GameTicks div 1000; - t:= i mod 60; - s:= inttostr(t); - if t < 10 then s:= '0' + s; - i:= i div 60; - t:= i mod 60; - s:= inttostr(t) + ':' + s; - if t < 10 then s:= '0' + s; - s:= inttostr(i div 60) + ':' + s; + if cShowFPS or (GameType = gmtDemo) then + inc(CountTicks, Lag); + if (GameType = gmtDemo) and (CountTicks >= 1000) then + begin + i:=GameTicks div 1000; + t:= i mod 60; + s:= inttostr(t); + if t < 10 then s:= '0' + s; + i:= i div 60; + t:= i mod 60; + s:= inttostr(t) + ':' + s; + if t < 10 then s:= '0' + s; + s:= inttostr(i div 60) + ':' + s; - if timeTexture <> nil then - FreeTexture(timeTexture); - timeTexture:= nil; + if timeTexture <> nil then + FreeTexture(timeTexture); + timeTexture:= nil; - tmpSurface:= TTF_RenderUTF8_Blended(Fontz[fnt16].Handle, Str2PChar(s), cWhiteColorChannels); - tmpSurface:= doSurfaceConversion(tmpSurface); - timeTexture:= Surface2Tex(tmpSurface, false); - SDL_FreeSurface(tmpSurface) - end; + tmpSurface:= TTF_RenderUTF8_Blended(Fontz[fnt16].Handle, Str2PChar(s), cWhiteColorChannels); + tmpSurface:= doSurfaceConversion(tmpSurface); + timeTexture:= Surface2Tex(tmpSurface, false); + SDL_FreeSurface(tmpSurface) + end; -if timeTexture <> nil then - DrawTexture((cScreenWidth shr 1) - 20 - timeTexture^.w - offsetY, offsetX + timeTexture^.h+5, timeTexture); + if timeTexture <> nil then + DrawTexture((cScreenWidth shr 1) - 20 - timeTexture^.w - offsetY, offsetX + timeTexture^.h+5, timeTexture); -if cShowFPS then - begin - if CountTicks >= 1000 then - begin - FPS:= Frames; - Frames:= 0; - CountTicks:= 0; - s:= inttostr(FPS) + ' fps'; - if fpsTexture <> nil then - FreeTexture(fpsTexture); - fpsTexture:= nil; - tmpSurface:= TTF_RenderUTF8_Blended(Fontz[fnt16].Handle, Str2PChar(s), cWhiteColorChannels); - tmpSurface:= doSurfaceConversion(tmpSurface); - fpsTexture:= Surface2Tex(tmpSurface, false); - SDL_FreeSurface(tmpSurface) - end; - if fpsTexture <> nil then - DrawTexture((cScreenWidth shr 1) - 60 - offsetY, offsetX, fpsTexture); - end; + if cShowFPS then + begin + if CountTicks >= 1000 then + begin + FPS:= Frames; + Frames:= 0; + CountTicks:= 0; + s:= inttostr(FPS) + ' fps'; + if fpsTexture <> nil then + FreeTexture(fpsTexture); + fpsTexture:= nil; + tmpSurface:= TTF_RenderUTF8_Blended(Fontz[fnt16].Handle, Str2PChar(s), cWhiteColorChannels); + tmpSurface:= doSurfaceConversion(tmpSurface); + fpsTexture:= Surface2Tex(tmpSurface, false); + SDL_FreeSurface(tmpSurface) + end; + if fpsTexture <> nil then + DrawTexture((cScreenWidth shr 1) - 60 - offsetY, offsetX, fpsTexture); + end; -if CountTicks >= 1000 then CountTicks:= 0; + if CountTicks >= 1000 then CountTicks:= 0; -// lag warning (?) -inc(SoundTimerTicks, Lag); + // lag warning (?) + inc(SoundTimerTicks, Lag); +end; + if SoundTimerTicks >= 50 then begin SoundTimerTicks:= 0; diff -r aaf832c6fbd7 -r 09892cdb8f95 misc/libopenalbridge/openalbridge_t.h --- a/misc/libopenalbridge/openalbridge_t.h Sat Jul 31 10:39:20 2010 +0200 +++ b/misc/libopenalbridge/openalbridge_t.h Sat Jul 31 10:42:40 2010 +0200 @@ -1,74 +1,74 @@ -/* - * OpenAL Bridge - a simple portable library for OpenAL interface - * Copyright (c) 2009 Vittorio Giovara <vittorio.giovara@gmail.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; version 2 of the License - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include <stdint.h> -#include "al.h" - -#ifndef _OALB_INTERFACE_TYPES_H -#define _OALB_INTERFACE_TYPES_H - -enum al_fade_enum {AL_FADE_IN, AL_FADE_OUT}; -typedef enum al_fade_enum al_fade_t; - - -// data type to handle which source source is playing what -#pragma pack(1) -typedef struct _al_sound_t { - const char *filename; // name of the sound file - ALuint buffer; // actual sound content - uint32_t source_index; // index of the associated source - ALboolean is_used; // tells if the element can be overwritten -} al_sound_t; -#pragma pack() - - -// data type for passing data between threads -#pragma pack(1) -typedef struct _fade_t { - uint32_t index; - uint16_t quantity; - al_fade_t type; -} fade_t; -#pragma pack() - - -// data type for WAV header -#pragma pack(1) -typedef struct _WAV_header_t { - uint32_t ChunkID; - uint32_t ChunkSize; - uint32_t Format; - uint32_t Subchunk1ID; - uint32_t Subchunk1Size; - uint16_t AudioFormat; - uint16_t NumChannels; - uint32_t SampleRate; - uint32_t ByteRate; - uint16_t BlockAlign; - uint16_t BitsPerSample; - uint32_t Subchunk2ID; - uint32_t Subchunk2Size; -} WAV_header_t; -#pragma pack() - - -#ifdef __CPLUSPLUS -} -#endif - -#endif /*_OALB_INTERFACE_TYPES_H*/ +/* + * OpenAL Bridge - a simple portable library for OpenAL interface + * Copyright (c) 2009 Vittorio Giovara <vittorio.giovara@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; version 2 of the License + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdint.h> +#include "al.h" + +#ifndef _OALB_INTERFACE_TYPES_H +#define _OALB_INTERFACE_TYPES_H + +enum al_fade_enum {AL_FADE_IN, AL_FADE_OUT}; +typedef enum al_fade_enum al_fade_t; + + +// data type to handle which source source is playing what +#pragma pack(1) +typedef struct _al_sound_t { + const char *filename; // name of the sound file + ALuint buffer; // actual sound content + uint32_t source_index; // index of the associated source + ALboolean is_used; // tells if the element can be overwritten +} al_sound_t; +#pragma pack() + + +// data type for passing data between threads +#pragma pack(1) +typedef struct _fade_t { + uint32_t index; + uint16_t quantity; + al_fade_t type; +} fade_t; +#pragma pack() + + +// data type for WAV header +#pragma pack(1) +typedef struct _WAV_header_t { + uint32_t ChunkID; + uint32_t ChunkSize; + uint32_t Format; + uint32_t Subchunk1ID; + uint32_t Subchunk1Size; + uint16_t AudioFormat; + uint16_t NumChannels; + uint32_t SampleRate; + uint32_t ByteRate; + uint16_t BlockAlign; + uint16_t BitsPerSample; + uint32_t Subchunk2ID; + uint32_t Subchunk2Size; +} WAV_header_t; +#pragma pack() + + +#ifdef __CPLUSPLUS +} +#endif + +#endif /*_OALB_INTERFACE_TYPES_H*/ diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Graphics/AmmoMenu/Ammos.png Binary file share/hedgewars/Data/Graphics/AmmoMenu/Ammos.png has changed diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Graphics/AmmoMenu/Ammos_bw.png Binary file share/hedgewars/Data/Graphics/AmmoMenu/Ammos_bw.png has changed diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Graphics/Chunk.png Binary file share/hedgewars/Data/Graphics/Chunk.png has changed diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/CMakeLists.txt --- a/share/hedgewars/Data/Locale/CMakeLists.txt Sat Jul 31 10:39:20 2010 +0200 +++ b/share/hedgewars/Data/Locale/CMakeLists.txt Sat Jul 31 10:42:40 2010 +0200 @@ -1,12 +1,9 @@ file(GLOB txttrans2 ??.txt) file(GLOB txttrans5 ?????.txt) - -set(ts_files *.ts) -QT4_CREATE_TRANSLATION(qm_files ts_files) -#file(GLOB qmtrans hedgewars_*.qm) +file(GLOB qmtrans hedgewars_*.qm) install(FILES ${txttrans2} ${txttrans5} - ${qm_files} + ${qmtrans} DESTINATION ${SHAREPATH}Data/Locale) diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_bg.qm Binary file share/hedgewars/Data/Locale/hedgewars_bg.qm has changed diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_bg.ts --- a/share/hedgewars/Data/Locale/hedgewars_bg.ts Sat Jul 31 10:39:20 2010 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_bg.ts Sat Jul 31 10:42:40 2010 +0200 @@ -388,11 +388,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Connect a gamepad before launching the game to be able to assign its controls to your team.</source> - <comment>Tips</comment> - <translation type="unfinished"></translation> - </message> - <message> <source>Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.</source> <comment>Tips</comment> <translation type="unfinished"></translation> @@ -442,6 +437,11 @@ <comment>Tips</comment> <translation type="unfinished"></translation> </message> + <message> + <source>Connect one or more gamepads before launching the game to be able to assign their controls to your teams.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageMultiplayer</name> @@ -1068,11 +1068,11 @@ <translation type="unfinished"></translation> </message> <message> - <source>This SVN build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> + <source>Tip: </source> <translation type="unfinished"></translation> </message> <message> - <source>Tip: </source> + <source>This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> <translation type="unfinished"></translation> </message> </context> diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_cs.qm Binary file share/hedgewars/Data/Locale/hedgewars_cs.qm has changed diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_cs.ts --- a/share/hedgewars/Data/Locale/hedgewars_cs.ts Sat Jul 31 10:39:20 2010 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_cs.ts Sat Jul 31 10:42:40 2010 +0200 @@ -391,11 +391,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Connect a gamepad before launching the game to be able to assign its controls to your team.</source> - <comment>Tips</comment> - <translation type="unfinished"></translation> - </message> - <message> <source>Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.</source> <comment>Tips</comment> <translation type="unfinished"></translation> @@ -445,6 +440,11 @@ <comment>Tips</comment> <translation type="unfinished"></translation> </message> + <message> + <source>Connect one or more gamepads before launching the game to be able to assign their controls to your teams.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageMultiplayer</name> @@ -1073,11 +1073,11 @@ <translation type="unfinished"></translation> </message> <message> - <source>This SVN build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> + <source>Tip: </source> <translation type="unfinished"></translation> </message> <message> - <source>Tip: </source> + <source>This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> <translation type="unfinished"></translation> </message> </context> diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_de.qm Binary file share/hedgewars/Data/Locale/hedgewars_de.qm has changed diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_de.ts --- a/share/hedgewars/Data/Locale/hedgewars_de.ts Sat Jul 31 10:39:20 2010 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_de.ts Sat Jul 31 10:42:40 2010 +0200 @@ -411,11 +411,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Connect a gamepad before launching the game to be able to assign its controls to your team.</source> - <comment>Tips</comment> - <translation type="unfinished"></translation> - </message> - <message> <source>Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.</source> <comment>Tips</comment> <translation type="unfinished"></translation> @@ -465,6 +460,11 @@ <comment>Tips</comment> <translation type="unfinished"></translation> </message> + <message> + <source>Connect one or more gamepads before launching the game to be able to assign their controls to your teams.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageMultiplayer</name> @@ -1099,11 +1099,11 @@ Einige Dinge könnten nicht funktionieren oder unvollständig sein. Benutzung auf eigene Gefahr!</translation> </message> <message> - <source>This SVN build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> + <source>Tip: </source> <translation type="unfinished"></translation> </message> <message> - <source>Tip: </source> + <source>This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> <translation type="unfinished"></translation> </message> </context> diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_en.qm Binary file share/hedgewars/Data/Locale/hedgewars_en.qm has changed diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_en.ts --- a/share/hedgewars/Data/Locale/hedgewars_en.ts Sat Jul 31 10:39:20 2010 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_en.ts Sat Jul 31 10:42:40 2010 +0200 @@ -406,11 +406,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Connect a gamepad before launching the game to be able to assign its controls to your team.</source> - <comment>Tips</comment> - <translation type="unfinished"></translation> - </message> - <message> <source>Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.</source> <comment>Tips</comment> <translation type="unfinished"></translation> @@ -460,6 +455,11 @@ <comment>Tips</comment> <translation type="unfinished"></translation> </message> + <message> + <source>Connect one or more gamepads before launching the game to be able to assign their controls to your teams.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageMultiplayer</name> @@ -1088,11 +1088,11 @@ <translation>Explosives</translation> </message> <message> - <source>This SVN build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> + <source>Tip: </source> <translation type="unfinished"></translation> </message> <message> - <source>Tip: </source> + <source>This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> <translation type="unfinished"></translation> </message> </context> diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_es.qm Binary file share/hedgewars/Data/Locale/hedgewars_es.qm has changed diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_es.ts --- a/share/hedgewars/Data/Locale/hedgewars_es.ts Sat Jul 31 10:39:20 2010 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_es.ts Sat Jul 31 10:42:40 2010 +0200 @@ -410,11 +410,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Connect a gamepad before launching the game to be able to assign its controls to your team.</source> - <comment>Tips</comment> - <translation type="unfinished"></translation> - </message> - <message> <source>Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.</source> <comment>Tips</comment> <translation type="unfinished"></translation> @@ -464,6 +459,11 @@ <comment>Tips</comment> <translation type="unfinished"></translation> </message> + <message> + <source>Connect one or more gamepads before launching the game to be able to assign their controls to your teams.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageMultiplayer</name> @@ -1099,11 +1099,11 @@ <translation>Explosivos</translation> </message> <message> - <source>This SVN build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> + <source>Tip: </source> <translation type="unfinished"></translation> </message> <message> - <source>Tip: </source> + <source>This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> <translation type="unfinished"></translation> </message> </context> diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_fi.qm Binary file share/hedgewars/Data/Locale/hedgewars_fi.qm has changed diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_fi.ts --- a/share/hedgewars/Data/Locale/hedgewars_fi.ts Sat Jul 31 10:39:20 2010 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_fi.ts Sat Jul 31 10:42:40 2010 +0200 @@ -406,11 +406,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Connect a gamepad before launching the game to be able to assign its controls to your team.</source> - <comment>Tips</comment> - <translation type="unfinished"></translation> - </message> - <message> <source>Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.</source> <comment>Tips</comment> <translation type="unfinished"></translation> @@ -460,6 +455,11 @@ <comment>Tips</comment> <translation type="unfinished"></translation> </message> + <message> + <source>Connect one or more gamepads before launching the game to be able to assign their controls to your teams.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageMultiplayer</name> @@ -1088,11 +1088,11 @@ <translation type="unfinished"></translation> </message> <message> - <source>This SVN build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> + <source>Tip: </source> <translation type="unfinished"></translation> </message> <message> - <source>Tip: </source> + <source>This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> <translation type="unfinished"></translation> </message> </context> diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_fr.qm Binary file share/hedgewars/Data/Locale/hedgewars_fr.qm has changed diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_fr.ts --- a/share/hedgewars/Data/Locale/hedgewars_fr.ts Sat Jul 31 10:39:20 2010 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_fr.ts Sat Jul 31 10:42:40 2010 +0200 @@ -406,11 +406,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Connect a gamepad before launching the game to be able to assign its controls to your team.</source> - <comment>Tips</comment> - <translation type="unfinished"></translation> - </message> - <message> <source>Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.</source> <comment>Tips</comment> <translation type="unfinished"></translation> @@ -460,6 +455,11 @@ <comment>Tips</comment> <translation type="unfinished"></translation> </message> + <message> + <source>Connect one or more gamepads before launching the game to be able to assign their controls to your teams.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageMultiplayer</name> @@ -1088,11 +1088,11 @@ <translation type="unfinished"></translation> </message> <message> - <source>This SVN build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> + <source>Tip: </source> <translation type="unfinished"></translation> </message> <message> - <source>Tip: </source> + <source>This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> <translation type="unfinished"></translation> </message> </context> diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_it.qm Binary file share/hedgewars/Data/Locale/hedgewars_it.qm has changed diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_it.ts --- a/share/hedgewars/Data/Locale/hedgewars_it.ts Sat Jul 31 10:39:20 2010 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_it.ts Sat Jul 31 10:42:40 2010 +0200 @@ -410,11 +410,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Connect a gamepad before launching the game to be able to assign its controls to your team.</source> - <comment>Tips</comment> - <translation type="unfinished"></translation> - </message> - <message> <source>Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.</source> <comment>Tips</comment> <translation type="unfinished"></translation> @@ -464,6 +459,11 @@ <comment>Tips</comment> <translation type="unfinished"></translation> </message> + <message> + <source>Connect one or more gamepads before launching the game to be able to assign their controls to your teams.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageMultiplayer</name> @@ -1098,11 +1098,11 @@ <translation>Esplosivi</translation> </message> <message> - <source>This SVN build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> + <source>Tip: </source> <translation type="unfinished"></translation> </message> <message> - <source>Tip: </source> + <source>This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> <translation type="unfinished"></translation> </message> </context> diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_ja.qm Binary file share/hedgewars/Data/Locale/hedgewars_ja.qm has changed diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_ja.ts --- a/share/hedgewars/Data/Locale/hedgewars_ja.ts Sat Jul 31 10:39:20 2010 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_ja.ts Sat Jul 31 10:42:40 2010 +0200 @@ -385,11 +385,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Connect a gamepad before launching the game to be able to assign its controls to your team.</source> - <comment>Tips</comment> - <translation type="unfinished"></translation> - </message> - <message> <source>Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.</source> <comment>Tips</comment> <translation type="unfinished"></translation> @@ -439,6 +434,11 @@ <comment>Tips</comment> <translation type="unfinished"></translation> </message> + <message> + <source>Connect one or more gamepads before launching the game to be able to assign their controls to your teams.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageMultiplayer</name> @@ -1063,11 +1063,11 @@ <translation type="unfinished"></translation> </message> <message> - <source>This SVN build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> + <source>Tip: </source> <translation type="unfinished"></translation> </message> <message> - <source>Tip: </source> + <source>This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> <translation type="unfinished"></translation> </message> </context> diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_pl.qm Binary file share/hedgewars/Data/Locale/hedgewars_pl.qm has changed diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_pl.ts --- a/share/hedgewars/Data/Locale/hedgewars_pl.ts Sat Jul 31 10:39:20 2010 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_pl.ts Sat Jul 31 10:42:40 2010 +0200 @@ -418,7 +418,7 @@ <message> <source>Connect a gamepad before launching the game to be able to assign its controls to your team.</source> <comment>Tips</comment> - <translation type="unfinished">Jeśli podłączysz Gamepada przed włączeniem gry, będziesz miał możliwość przypisania klawiszy by sterować nim własne jeże.</translation> + <translation type="obsolete">Jeśli podłączysz Gamepada przed włączeniem gry, będziesz miał możliwość przypisania klawiszy by sterować nim własne jeże.</translation> </message> <message> <source>Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.</source> @@ -470,6 +470,18 @@ <comment>Tips</comment> <translation type="unfinished">Żadny jeż nie został ranny w czasie tworzenia tej gry.</translation> </message> + <message> + <source>Connect one or more gamepads before launching the game to be able to assign their controls to your teams.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageMultiplayer</name> + <message> + <source>Start</source> + <translation type="unfinished">Start</translation> + </message> </context> <context> <name>PageNet</name> @@ -1104,9 +1116,13 @@ </message> <message> <source>This HG build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> - <translation>Ta wersja jest w fazie produkcji i może nie być kompatybilna z innymi wersjami gry. + <translation type="obsolete">Ta wersja jest w fazie produkcji i może nie być kompatybilna z innymi wersjami gry. Niektóre funkcje mogą nie działać lub być niekompletne. Używaj na własne ryzyko!</translation> </message> + <message> + <source>This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLineEdit</name> diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_pt_BR.qm Binary file share/hedgewars/Data/Locale/hedgewars_pt_BR.qm has changed diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_pt_BR.ts --- a/share/hedgewars/Data/Locale/hedgewars_pt_BR.ts Sat Jul 31 10:39:20 2010 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_pt_BR.ts Sat Jul 31 10:42:40 2010 +0200 @@ -401,11 +401,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Connect a gamepad before launching the game to be able to assign its controls to your team.</source> - <comment>Tips</comment> - <translation type="unfinished"></translation> - </message> - <message> <source>Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.</source> <comment>Tips</comment> <translation type="unfinished"></translation> @@ -455,6 +450,11 @@ <comment>Tips</comment> <translation type="unfinished"></translation> </message> + <message> + <source>Connect one or more gamepads before launching the game to be able to assign their controls to your teams.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageMultiplayer</name> @@ -1089,11 +1089,11 @@ <translation>Explosivos</translation> </message> <message> - <source>This SVN build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> + <source>Tip: </source> <translation type="unfinished"></translation> </message> <message> - <source>Tip: </source> + <source>This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> <translation type="unfinished"></translation> </message> </context> diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_pt_PT.qm Binary file share/hedgewars/Data/Locale/hedgewars_pt_PT.qm has changed diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_pt_PT.ts --- a/share/hedgewars/Data/Locale/hedgewars_pt_PT.ts Sat Jul 31 10:39:20 2010 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_pt_PT.ts Sat Jul 31 10:42:40 2010 +0200 @@ -406,11 +406,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Connect a gamepad before launching the game to be able to assign its controls to your team.</source> - <comment>Tips</comment> - <translation type="unfinished"></translation> - </message> - <message> <source>Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.</source> <comment>Tips</comment> <translation type="unfinished"></translation> @@ -460,6 +455,11 @@ <comment>Tips</comment> <translation type="unfinished"></translation> </message> + <message> + <source>Connect one or more gamepads before launching the game to be able to assign their controls to your teams.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageMultiplayer</name> @@ -1088,11 +1088,11 @@ <translation>Explosivos</translation> </message> <message> - <source>This SVN build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> + <source>Tip: </source> <translation type="unfinished"></translation> </message> <message> - <source>Tip: </source> + <source>This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> <translation type="unfinished"></translation> </message> </context> diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_ru.qm Binary file share/hedgewars/Data/Locale/hedgewars_ru.qm has changed diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_ru.ts --- a/share/hedgewars/Data/Locale/hedgewars_ru.ts Sat Jul 31 10:39:20 2010 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_ru.ts Sat Jul 31 10:42:40 2010 +0200 @@ -409,11 +409,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Connect a gamepad before launching the game to be able to assign its controls to your team.</source> - <comment>Tips</comment> - <translation type="unfinished"></translation> - </message> - <message> <source>Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.</source> <comment>Tips</comment> <translation type="unfinished"></translation> @@ -463,6 +458,11 @@ <comment>Tips</comment> <translation type="unfinished"></translation> </message> + <message> + <source>Connect one or more gamepads before launching the game to be able to assign their controls to your teams.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageMultiplayer</name> @@ -1099,11 +1099,11 @@ <translation>Взрывчатка</translation> </message> <message> - <source>This SVN build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> + <source>Tip: </source> <translation type="unfinished"></translation> </message> <message> - <source>Tip: </source> + <source>This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> <translation type="unfinished"></translation> </message> </context> diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_sk.qm Binary file share/hedgewars/Data/Locale/hedgewars_sk.qm has changed diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_sk.ts --- a/share/hedgewars/Data/Locale/hedgewars_sk.ts Sat Jul 31 10:39:20 2010 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_sk.ts Sat Jul 31 10:42:40 2010 +0200 @@ -409,11 +409,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Connect a gamepad before launching the game to be able to assign its controls to your team.</source> - <comment>Tips</comment> - <translation type="unfinished"></translation> - </message> - <message> <source>Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.</source> <comment>Tips</comment> <translation type="unfinished"></translation> @@ -463,6 +458,11 @@ <comment>Tips</comment> <translation type="unfinished"></translation> </message> + <message> + <source>Connect one or more gamepads before launching the game to be able to assign their controls to your teams.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageMultiplayer</name> @@ -1099,11 +1099,11 @@ <translation>Výbušniny</translation> </message> <message> - <source>This SVN build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> + <source>Tip: </source> <translation type="unfinished"></translation> </message> <message> - <source>Tip: </source> + <source>This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> <translation type="unfinished"></translation> </message> </context> diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_sv.qm Binary file share/hedgewars/Data/Locale/hedgewars_sv.qm has changed diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_sv.ts --- a/share/hedgewars/Data/Locale/hedgewars_sv.ts Sat Jul 31 10:39:20 2010 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_sv.ts Sat Jul 31 10:42:40 2010 +0200 @@ -406,11 +406,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Connect a gamepad before launching the game to be able to assign its controls to your team.</source> - <comment>Tips</comment> - <translation type="unfinished"></translation> - </message> - <message> <source>Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.</source> <comment>Tips</comment> <translation type="unfinished"></translation> @@ -460,6 +455,11 @@ <comment>Tips</comment> <translation type="unfinished"></translation> </message> + <message> + <source>Connect one or more gamepads before launching the game to be able to assign their controls to your teams.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageMultiplayer</name> @@ -1094,11 +1094,11 @@ <translation>Bombtunnor</translation> </message> <message> - <source>This SVN build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> + <source>Tip: </source> <translation type="unfinished"></translation> </message> <message> - <source>Tip: </source> + <source>This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> <translation type="unfinished"></translation> </message> </context> diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_tr_TR.qm Binary file share/hedgewars/Data/Locale/hedgewars_tr_TR.qm has changed diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_tr_TR.ts --- a/share/hedgewars/Data/Locale/hedgewars_tr_TR.ts Sat Jul 31 10:39:20 2010 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_tr_TR.ts Sat Jul 31 10:42:40 2010 +0200 @@ -393,11 +393,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Connect a gamepad before launching the game to be able to assign its controls to your team.</source> - <comment>Tips</comment> - <translation type="unfinished"></translation> - </message> - <message> <source>Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.</source> <comment>Tips</comment> <translation type="unfinished"></translation> @@ -447,6 +442,11 @@ <comment>Tips</comment> <translation type="unfinished"></translation> </message> + <message> + <source>Connect one or more gamepads before launching the game to be able to assign their controls to your teams.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageMultiplayer</name> @@ -1071,11 +1071,11 @@ <translation type="unfinished"></translation> </message> <message> - <source>This SVN build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> + <source>Tip: </source> <translation type="unfinished"></translation> </message> <message> - <source>Tip: </source> + <source>This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> <translation type="unfinished"></translation> </message> </context> diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_uk.qm Binary file share/hedgewars/Data/Locale/hedgewars_uk.qm has changed diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_uk.ts --- a/share/hedgewars/Data/Locale/hedgewars_uk.ts Sat Jul 31 10:39:20 2010 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_uk.ts Sat Jul 31 10:42:40 2010 +0200 @@ -409,11 +409,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Connect a gamepad before launching the game to be able to assign its controls to your team.</source> - <comment>Tips</comment> - <translation type="unfinished"></translation> - </message> - <message> <source>Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.</source> <comment>Tips</comment> <translation type="unfinished"></translation> @@ -463,6 +458,11 @@ <comment>Tips</comment> <translation type="unfinished"></translation> </message> + <message> + <source>Connect one or more gamepads before launching the game to be able to assign their controls to your teams.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageMultiplayer</name> @@ -1099,11 +1099,11 @@ Деякі функції можуть бути зламані чи неповні. Використовуйте її на свій страх і ризик!</translation> </message> <message> - <source>This SVN build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> + <source>Tip: </source> <translation type="unfinished"></translation> </message> <message> - <source>Tip: </source> + <source>This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> <translation type="unfinished"></translation> </message> </context> diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_zh_CN.qm Binary file share/hedgewars/Data/Locale/hedgewars_zh_CN.qm has changed diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_zh_CN.ts --- a/share/hedgewars/Data/Locale/hedgewars_zh_CN.ts Sat Jul 31 10:39:20 2010 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_zh_CN.ts Sat Jul 31 10:42:40 2010 +0200 @@ -403,11 +403,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Connect a gamepad before launching the game to be able to assign its controls to your team.</source> - <comment>Tips</comment> - <translation type="unfinished"></translation> - </message> - <message> <source>Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.</source> <comment>Tips</comment> <translation type="unfinished"></translation> @@ -457,6 +452,11 @@ <comment>Tips</comment> <translation type="unfinished"></translation> </message> + <message> + <source>Connect one or more gamepads before launching the game to be able to assign their controls to your teams.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageMultiplayer</name> @@ -1083,11 +1083,11 @@ <translation type="unfinished"></translation> </message> <message> - <source>This SVN build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> + <source>Tip: </source> <translation type="unfinished"></translation> </message> <message> - <source>Tip: </source> + <source>This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> <translation type="unfinished"></translation> </message> </context> diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_zh_TW.qm Binary file share/hedgewars/Data/Locale/hedgewars_zh_TW.qm has changed diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Locale/hedgewars_zh_TW.ts --- a/share/hedgewars/Data/Locale/hedgewars_zh_TW.ts Sat Jul 31 10:39:20 2010 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_zh_TW.ts Sat Jul 31 10:42:40 2010 +0200 @@ -403,11 +403,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Connect a gamepad before launching the game to be able to assign its controls to your team.</source> - <comment>Tips</comment> - <translation type="unfinished"></translation> - </message> - <message> <source>Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.</source> <comment>Tips</comment> <translation type="unfinished"></translation> @@ -457,6 +452,11 @@ <comment>Tips</comment> <translation type="unfinished"></translation> </message> + <message> + <source>Connect one or more gamepads before launching the game to be able to assign their controls to your teams.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageMultiplayer</name> @@ -1083,11 +1083,11 @@ <translation type="unfinished"></translation> </message> <message> - <source>This SVN build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> + <source>Tip: </source> <translation type="unfinished"></translation> </message> <message> - <source>Tip: </source> + <source>This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> <translation type="unfinished"></translation> </message> </context> diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Themes/Olympics/Chunk.png Binary file share/hedgewars/Data/Themes/Olympics/Chunk.png has changed