# 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 <ttsmj@pokec.sk> "
"Frontend improvements: Kristian Lehmann <email@thexception.net> "
"Mac OS X/iPhone port, OpenGL-ES conversion: Vittorio Giovara <vittorio.giovara@gmail.com> "
- "Gamepad and Lua integration, misc effects: Mario Liebisch <mario.liebisch@googlemail.com> "
+ "Gamepad and Lua integration, misc effects: Mario Liebisch <mario.liebisch@gmail.com> "
"Many engine improvements and graphics: Carlos Vives <mail@carlosvives.es> "
"Few engine and frontend improvements: Richard Karolyi <sheepluva@ercatec.net> "
"Maze maps: Henning Kühn <prg@cooco.de>"
@@ -115,7 +115,7 @@
"English: Andrey Korotaev <unC0Rr@gmail.com> "
"Finnish: Nina Kuisma <ninnnu@gmail.com> "
"French: Antoine Turmel <geekshadow@gmail.com> "
- "German: Peter Hüwe <PeterHuewe@gmx.de>, Mario Liebisch <mario.liebisch@googlemail.com> "
+ "German: Peter Hüwe <PeterHuewe@gmx.de>, Mario Liebisch <mario.liebisch@gmail.com> "
"Italian: Luca Bonora <bonora.luca@gmail.com> "
"Japanese: ADAM Etienne <etienne.adam@gmail.com> "
"Polish: Maciej Mroziński <mynick2@o2.pl>, Wojciech Latkowski <magikmagik17l@gmail.com>, Maciej Górny "
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 0 do begin
- if Len 0 do begin
+ if Len 0 do begin
+ if Len 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
- *
- * 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
-#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
+ *
+ * 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
+#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 @@
- Connect a gamepad before launching the game to be able to assign its controls to your team.
- Tips
-
-
- Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.Tips
@@ -442,6 +437,11 @@
Tips
+
+ Connect one or more gamepads before launching the game to be able to assign their controls to your teams.
+ Tips
+
+ PageMultiplayer
@@ -1068,11 +1068,11 @@
- 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!
+ Tip:
- Tip:
+ 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!
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 @@
- Connect a gamepad before launching the game to be able to assign its controls to your team.
- Tips
-
-
- Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.Tips
@@ -445,6 +440,11 @@
Tips
+
+ Connect one or more gamepads before launching the game to be able to assign their controls to your teams.
+ Tips
+
+ PageMultiplayer
@@ -1073,11 +1073,11 @@
- 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!
+ Tip:
- Tip:
+ 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!
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 @@
- Connect a gamepad before launching the game to be able to assign its controls to your team.
- Tips
-
-
- Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.Tips
@@ -465,6 +460,11 @@
Tips
+
+ Connect one or more gamepads before launching the game to be able to assign their controls to your teams.
+ Tips
+
+ PageMultiplayer
@@ -1099,11 +1099,11 @@
Einige Dinge könnten nicht funktionieren oder unvollständig sein. Benutzung auf eigene Gefahr!
- 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!
+ Tip:
- Tip:
+ 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!
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 @@
- Connect a gamepad before launching the game to be able to assign its controls to your team.
- Tips
-
-
- Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.Tips
@@ -460,6 +455,11 @@
Tips
+
+ Connect one or more gamepads before launching the game to be able to assign their controls to your teams.
+ Tips
+
+ PageMultiplayer
@@ -1088,11 +1088,11 @@
Explosives
- 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!
+ Tip:
- Tip:
+ 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!
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 @@
- Connect a gamepad before launching the game to be able to assign its controls to your team.
- Tips
-
-
- Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.Tips
@@ -464,6 +459,11 @@
Tips
+
+ Connect one or more gamepads before launching the game to be able to assign their controls to your teams.
+ Tips
+
+ PageMultiplayer
@@ -1099,11 +1099,11 @@
Explosivos
- 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!
+ Tip:
- Tip:
+ 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!
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 @@
- Connect a gamepad before launching the game to be able to assign its controls to your team.
- Tips
-
-
- Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.Tips
@@ -460,6 +455,11 @@
Tips
+
+ Connect one or more gamepads before launching the game to be able to assign their controls to your teams.
+ Tips
+
+ PageMultiplayer
@@ -1088,11 +1088,11 @@
- 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!
+ Tip:
- Tip:
+ 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!
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 @@
- Connect a gamepad before launching the game to be able to assign its controls to your team.
- Tips
-
-
- Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.Tips
@@ -460,6 +455,11 @@
Tips
+
+ Connect one or more gamepads before launching the game to be able to assign their controls to your teams.
+ Tips
+
+ PageMultiplayer
@@ -1088,11 +1088,11 @@
- 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!
+ Tip:
- Tip:
+ 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!
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 @@
- Connect a gamepad before launching the game to be able to assign its controls to your team.
- Tips
-
-
- Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.Tips
@@ -464,6 +459,11 @@
Tips
+
+ Connect one or more gamepads before launching the game to be able to assign their controls to your teams.
+ Tips
+
+ PageMultiplayer
@@ -1098,11 +1098,11 @@
Esplosivi
- 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!
+ Tip:
- Tip:
+ 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!
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 @@
- Connect a gamepad before launching the game to be able to assign its controls to your team.
- Tips
-
-
- Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.Tips
@@ -439,6 +434,11 @@
Tips
+
+ Connect one or more gamepads before launching the game to be able to assign their controls to your teams.
+ Tips
+
+ PageMultiplayer
@@ -1063,11 +1063,11 @@
- 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!
+ Tip:
- Tip:
+ 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!
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 @@
Connect a gamepad before launching the game to be able to assign its controls to your team.Tips
- Jeśli podłączysz Gamepada przed włączeniem gry, będziesz miał możliwość przypisania klawiszy by sterować nim własne jeże.
+ Jeśli podłączysz Gamepada przed włączeniem gry, będziesz miał możliwość przypisania klawiszy by sterować nim własne jeże.Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.
@@ -470,6 +470,18 @@
TipsŻadny jeż nie został ranny w czasie tworzenia tej gry.
+
+ Connect one or more gamepads before launching the game to be able to assign their controls to your teams.
+ Tips
+
+
+
+
+ PageMultiplayer
+
+ Start
+ Start
+ PageNet
@@ -1104,9 +1116,13 @@
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!
- Ta wersja jest w fazie produkcji i może nie być kompatybilna z innymi wersjami gry.
+ 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!
+
+ 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!
+
+ QLineEdit
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 @@
- Connect a gamepad before launching the game to be able to assign its controls to your team.
- Tips
-
-
- Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.Tips
@@ -455,6 +450,11 @@
Tips
+
+ Connect one or more gamepads before launching the game to be able to assign their controls to your teams.
+ Tips
+
+ PageMultiplayer
@@ -1089,11 +1089,11 @@
Explosivos
- 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!
+ Tip:
- Tip:
+ 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!
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 @@
- Connect a gamepad before launching the game to be able to assign its controls to your team.
- Tips
-
-
- Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.Tips
@@ -460,6 +455,11 @@
Tips
+
+ Connect one or more gamepads before launching the game to be able to assign their controls to your teams.
+ Tips
+
+ PageMultiplayer
@@ -1088,11 +1088,11 @@
Explosivos
- 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!
+ Tip:
- Tip:
+ 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!
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 @@
- Connect a gamepad before launching the game to be able to assign its controls to your team.
- Tips
-
-
- Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.Tips
@@ -463,6 +458,11 @@
Tips
+
+ Connect one or more gamepads before launching the game to be able to assign their controls to your teams.
+ Tips
+
+ PageMultiplayer
@@ -1099,11 +1099,11 @@
Взрывчатка
- 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!
+ Tip:
- Tip:
+ 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!
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 @@
- Connect a gamepad before launching the game to be able to assign its controls to your team.
- Tips
-
-
- Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.Tips
@@ -463,6 +458,11 @@
Tips
+
+ Connect one or more gamepads before launching the game to be able to assign their controls to your teams.
+ Tips
+
+ PageMultiplayer
@@ -1099,11 +1099,11 @@
Výbušniny
- 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!
+ Tip:
- Tip:
+ 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!
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 @@
- Connect a gamepad before launching the game to be able to assign its controls to your team.
- Tips
-
-
- Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.Tips
@@ -460,6 +455,11 @@
Tips
+
+ Connect one or more gamepads before launching the game to be able to assign their controls to your teams.
+ Tips
+
+ PageMultiplayer
@@ -1094,11 +1094,11 @@
Bombtunnor
- 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!
+ Tip:
- Tip:
+ 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!
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 @@
- Connect a gamepad before launching the game to be able to assign its controls to your team.
- Tips
-
-
- Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.Tips
@@ -447,6 +442,11 @@
Tips
+
+ Connect one or more gamepads before launching the game to be able to assign their controls to your teams.
+ Tips
+
+ PageMultiplayer
@@ -1071,11 +1071,11 @@
- 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!
+ Tip:
- Tip:
+ 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!
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 @@
- Connect a gamepad before launching the game to be able to assign its controls to your team.
- Tips
-
-
- Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.Tips
@@ -463,6 +458,11 @@
Tips
+
+ Connect one or more gamepads before launching the game to be able to assign their controls to your teams.
+ Tips
+
+ PageMultiplayer
@@ -1099,11 +1099,11 @@
Деякі функції можуть бути зламані чи неповні. Використовуйте її на свій страх і ризик!
- 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!
+ Tip:
- Tip:
+ 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!
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 @@
- Connect a gamepad before launching the game to be able to assign its controls to your team.
- Tips
-
-
- Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.Tips
@@ -457,6 +452,11 @@
Tips
+
+ Connect one or more gamepads before launching the game to be able to assign their controls to your teams.
+ Tips
+
+ PageMultiplayer
@@ -1083,11 +1083,11 @@
- 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!
+ Tip:
- Tip:
+ 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!
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 @@
- Connect a gamepad before launching the game to be able to assign its controls to your team.
- Tips
-
-
- Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.Tips
@@ -457,6 +452,11 @@
Tips
+
+ Connect one or more gamepads before launching the game to be able to assign their controls to your teams.
+ Tips
+
+ PageMultiplayer
@@ -1083,11 +1083,11 @@
- 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!
+ Tip:
- Tip:
+ 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!
diff -r aaf832c6fbd7 -r 09892cdb8f95 share/hedgewars/Data/Themes/Olympics/Chunk.png
Binary file share/hedgewars/Data/Themes/Olympics/Chunk.png has changed