# HG changeset patch # User koda # Date 1280783734 -7200 # Node ID de3b3df215c37e663a6bd62524883a42410c91ad # Parent 787f363798d88e3c09381182837092d784883469# Parent 411f5c2b5292cbe3f149df4dcac36510648a2c45 merge diff -r 787f363798d8 -r de3b3df215c3 .hgignore --- a/.hgignore Mon Aug 02 23:15:22 2010 +0200 +++ b/.hgignore Mon Aug 02 23:15:34 2010 +0200 @@ -22,3 +22,4 @@ glob:project_files/HedgewarsMobile/Data/ glob:project_files/HedgewarsMobile/build/ glob:project_files/HedgewarsMobile/Hedgewars.xcodeproj/vittorio.* +glob:moc_*.cxx_parameters diff -r 787f363798d8 -r de3b3df215c3 CMakeLists.txt --- a/CMakeLists.txt Mon Aug 02 23:15:22 2010 +0200 +++ b/CMakeLists.txt Mon Aug 02 23:15:34 2010 +0200 @@ -205,7 +205,7 @@ set(CPACK_PACKAGE_INSTALL_DIRECTORY "Hedgewars ${HEDGEWARS_VERSION}") if(WIN32 AND NOT UNIX) - set(CPACK_NSIS_DISPLAY_NAME ${CPACK_PACKAGE_DESCRIPTION_SUMMARY}) + set(CPACK_NSIS_DISPLAY_NAME "Hedgewars") set(CPACK_NSIS_HELP_LINK "http://www.hedgewars.org/") set(CPACK_NSIS_URL_INFO_ABOUT "http://www.hedgewars.org/") set(CPACK_NSIS_CONTACT "unC0Rr@gmail.com") diff -r 787f363798d8 -r de3b3df215c3 QTfrontend/CMakeLists.txt --- a/QTfrontend/CMakeLists.txt Mon Aug 02 23:15:22 2010 +0200 +++ b/QTfrontend/CMakeLists.txt Mon Aug 02 23:15:34 2010 +0200 @@ -31,6 +31,7 @@ if(WIN32 AND NOT UNIX) set(HEDGEWARS_BINDIR ".") set(HEDGEWARS_DATADIR "../share/") + add_definitions(-DUSE_XFIRE) else() set(HEDGEWARS_BINDIR ${CMAKE_INSTALL_PREFIX}) if(DEFINED DATA_INSTALL_DIR) diff -r 787f363798d8 -r de3b3df215c3 QTfrontend/game.cpp --- a/QTfrontend/game.cpp Mon Aug 02 23:15:22 2010 +0200 +++ b/QTfrontend/game.cpp Mon Aug 02 23:15:34 2010 +0200 @@ -277,21 +277,16 @@ arguments << QString("%1").arg(ipc_port); arguments << (config->vid_Fullscreen() ? "1" : "0"); arguments << (config->isSoundEnabled() ? "1" : "0"); -#ifdef _WIN32 - arguments << (config->isSoundHardware() ? "1" : "0"); -#else - arguments << "0"; -#endif - arguments << (config->isWeaponTooltip() ? "1" : "0"); - arguments << tr("en.txt"); + arguments << (config->isMusicEnabled() ? "1" : "0"); arguments << QString::number(config->volume()); // sound volume arguments << QString::number(config->timerInterval()); arguments << datadir->absolutePath(); arguments << (config->isShowFPSEnabled() ? "1" : "0"); arguments << (config->isAltDamageEnabled() ? "1" : "0"); arguments << config->netNick().toUtf8().toBase64(); - arguments << (config->isMusicEnabled() ? "1" : "0"); - arguments << (config->isReducedQuality() ? "1" : "0"); + arguments << QString::number(config->translateQuality()); + arguments << tr("en.txt"); + return arguments; } diff -r 787f363798d8 -r de3b3df215c3 QTfrontend/gameuiconfig.cpp --- a/QTfrontend/gameuiconfig.cpp Mon Aug 02 23:15:22 2010 +0200 +++ b/QTfrontend/gameuiconfig.cpp Mon Aug 02 23:15:34 2010 +0200 @@ -47,13 +47,10 @@ bool ffscr=value("frontend/fullscreen", false).toBool(); Form->ui.pageOptions->CBFrontendFullscreen->setChecked(ffscr); - Form->ui.pageOptions->CBReduceQuality->setChecked(value("video/reducequality", false).toBool()); + Form->ui.pageOptions->SLQuality->setValue(value("video/quality", 5).toUInt()); 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()); -#ifdef _WIN32 -// Form->ui.pageOptions->CBHardwareSound->setChecked(value("audio/hardware", false).toBool()); -#endif Form->ui.pageOptions->CBEnableMusic->setChecked(value("audio/music", true).toBool()); Form->ui.pageOptions->CBEnableFrontendMusic->setChecked(value("frontend/music", true).toBool()); Form->ui.pageOptions->volumeBox->setValue(value("audio/volume", 100).toUInt()); @@ -115,11 +112,11 @@ setValue("video/resolution", Form->ui.pageOptions->CBResolution->currentText()); setValue("video/fullscreen", vid_Fullscreen()); - setValue("video/reducequality", isReducedQuality()); + setValue("video/quality", Form->ui.pageOptions->SLQuality->value()); setValue("frontend/effects", isFrontendEffects()); - setValue("misc/weaponTooltips", isWeaponTooltip()); + setValue("misc/weaponTooltips", Form->ui.pageOptions->WeaponTooltip->isChecked()); bool ffscr = isFrontendFullscreen(); setValue("frontend/fullscreen", ffscr); @@ -133,9 +130,6 @@ setValue("audio/sound", isSoundEnabled()); setValue("frontend/sound", isFrontendSoundEnabled()); -#ifdef _WIN32 -// setValue("audio/hardware", isSoundHardware()); -#endif setValue("audio/music", isMusicEnabled()); setValue("frontend/music", isFrontendMusicEnabled()); setValue("audio/volume", Form->ui.pageOptions->volumeBox->value()); @@ -181,20 +175,59 @@ return Form->ui.pageOptions->CBFullscreen->isChecked(); } -bool GameUIConfig::isReducedQuality() const +quint32 GameUIConfig::translateQuality() { - return Form->ui.pageOptions->CBReduceQuality->isChecked(); + quint32 rqNone = 0x00000000; // don't reduce quality + quint32 rqLowRes = 0x00000001; // use half land array + quint32 rqBlurryLand = 0x00000002; // downscaled terrain + quint32 rqNoBackground = 0x00000004; // don't draw background + quint32 rqSimpleRope = 0x00000008; // avoid drawing rope + quint32 rq2DWater = 0x00000010; // disabe 3D water effect + quint32 rqFancyBoom = 0x00000020; // no fancy explosion effects + quint32 rqKillFlakes = 0x00000040; // no flakes + quint32 rqSlowMenu = 0x00000080; // ammomenu appears with no animation + quint32 rqPlainSplash = 0x00000100; // no droplets + quint32 rqClampLess = 0x00000200; // don't clamp textures + quint32 rqTooltipsOff = 0x00000400; // tooltips are not drawn + quint32 rqDesyncVBlank = 0x00000800; // don't sync on vblank + + quint32 result = (Form->ui.pageOptions->WeaponTooltip->isChecked()) ? rqNone : rqTooltipsOff; + + switch (Form->ui.pageOptions->SLQuality->value()) { + case 5: + break; + case 4: + result |= rqBlurryLand; + break; + case 3: + result |= rqBlurryLand | rqKillFlakes | rqPlainSplash; + break; + case 2: + result |= rqBlurryLand | rqKillFlakes | rqPlainSplash | rq2DWater | + rqFancyBoom | rqSlowMenu; + break; + case 1: + result |= rqBlurryLand | rqKillFlakes | rqPlainSplash | rq2DWater | + rqFancyBoom | rqSlowMenu | rqSimpleRope | rqDesyncVBlank; + break; + case 0: + result |= rqBlurryLand | rqKillFlakes | rqPlainSplash | rq2DWater | + rqFancyBoom | rqSlowMenu | rqSimpleRope | rqDesyncVBlank | + rqNoBackground | rqClampLess; + break; + default: + fprintf(stderr,"unset value from slider"); + break; + } + + return result; } + bool GameUIConfig::isFrontendEffects() const { return Form->ui.pageOptions->CBFrontendEffects->isChecked(); } -bool GameUIConfig::isWeaponTooltip() const -{ - return Form->ui.pageOptions->WeaponTooltip->isChecked(); -} - bool GameUIConfig::isFrontendFullscreen() const { return Form->ui.pageOptions->CBFrontendFullscreen->isChecked(); @@ -209,14 +242,6 @@ return Form->ui.pageOptions->CBEnableFrontendSound->isChecked(); } -#ifdef _WIN32 -bool GameUIConfig::isSoundHardware() -{ -// return Form->ui.pageOptions->CBHardwareSound->isChecked(); -return false; -} -#endif - bool GameUIConfig::isMusicEnabled() { return Form->ui.pageOptions->CBEnableMusic->isChecked(); diff -r 787f363798d8 -r de3b3df215c3 QTfrontend/gameuiconfig.h --- a/QTfrontend/gameuiconfig.h Mon Aug 02 23:15:22 2010 +0200 +++ b/QTfrontend/gameuiconfig.h Mon Aug 02 23:15:34 2010 +0200 @@ -35,12 +35,10 @@ QStringList GetTeamsList(); QRect vid_Resolution(); bool vid_Fullscreen(); + quint32 translateQuality(); bool isSoundEnabled(); bool isFrontendSoundEnabled(); QString language(); -#ifdef _WIN32 - bool isSoundHardware(); -#endif bool isMusicEnabled(); bool isFrontendMusicEnabled(); bool isShowFPSEnabled(); @@ -53,7 +51,6 @@ bool isReducedQuality() const; bool isFrontendEffects() const; bool isFrontendFullscreen() const; - bool isWeaponTooltip() const; void resizeToConfigValues(); #ifdef __APPLE__ diff -r 787f363798d8 -r de3b3df215c3 QTfrontend/hwconsts.cpp.in --- a/QTfrontend/hwconsts.cpp.in Mon Aug 02 23:15:22 2010 +0200 +++ b/QTfrontend/hwconsts.cpp.in Mon Aug 02 23:15:34 2010 +0200 @@ -31,10 +31,10 @@ QStringList * mapList; QString * cDefaultAmmoStore = new QString( - "9391929422199121032235111001201000000211110111" - "0405040541600655546554464776576666666155510111" - "0000000000000205500000040007004000000000200000" - "1311110312111111123114111111111111111211111111" + "93919294221991210322351110012010000002111101110" + "04050405416006555465544647765766666661555101111" + "00000000000002055000000400070040000000002000000" + "13111103121111111231141111111111111112111111112" ); int cAmmoNumber = cDefaultAmmoStore->size() / 4; @@ -42,30 +42,30 @@ QList< QPair >() << qMakePair(QString("Default"), *cDefaultAmmoStore) << qMakePair(QString("Crazy"), QString( - "9999999999999999992999999999999999299999999999" // TODO: Remove Piano's unlimited uses! - "1111110111111111111111111111111111111111111111" - "0000000000000000000000000000000000000000000000" - "1311110312111111123114111111111111111211110101")) + "99999999999999999929999999999999992999999999999" // TODO: Remove Piano's unlimited uses! + "11111101111111111111111111111111111111111111111" + "00000000000000000000000000000000000000000000000" + "13111103121111111231141111111111111112111101011")) << qMakePair(QString("Pro mode"), QString( - "9090009000000000000009000000000000000000000900" - "0000000000000000000000000000000000000000000000" - "0000000000000205500000040007004000000000200000" - "1111111111111111111111111111111111111111100111")) + "90900090000000000000090000000000000000000009000" + "00000000000000000000000000000000000000000000000" + "00000000000002055000000400070040000000002000000" + "11111111111111111111111111111111111111111001112")) << qMakePair(QString("Shoppa"), QString( - "0000009900000000000000000000000000000000000000" - "4444410044244402210112121222422000000002000400" - "0000000000000000000000000000000000000000000000" - "1111111111111111111111111111111111111111101111")) + "00000099000000000000000000000000000000000000000" + "44444100442444022101121212224220000000020004000" + "00000000000000000000000000000000000000000000000" + "11111111111111111111111111111111111111111011111")) << qMakePair(QString("Basketball"),QString( - "0000009000000900000000000000000000000000000000" - "0000000000000000000000000000000000000000000000" - "0000000000000005500000040007004000000000200000" - "1111111111111111111111111111111111111111111111")) + "00000090000009000000000000000000000000000000000" + "00000000000000000000000000000000000000000000000" + "00000000000000055000000400070040000000002000000" + "11111111111111111111111111111111111111111111111")) << qMakePair(QString("Minefield"), QString( - "0000009900090000000300000000000000000000000000" - "0000000000000000000000000000000000000000000000" - "0000000000000205500000040007004000000000200000" - "1111111111111111111111111111111111111111111111")) + "00000099000900000003000000000000000000000000000" + "00000000000000000000000000000000000000000000000" + "00000000000002055000000400070040000000002000000" + "11111111111111111111111111111111111111111111111")) ; QColor * color1 = new QColor(221, 0, 0); diff -r 787f363798d8 -r de3b3df215c3 QTfrontend/pages.cpp --- a/QTfrontend/pages.cpp Mon Aug 02 23:15:22 2010 +0200 +++ b/QTfrontend/pages.cpp Mon Aug 02 23:15:34 2010 +0200 @@ -39,7 +39,7 @@ #include #include #include - +#include #include "ammoSchemeModel.h" #include "pages.h" @@ -573,6 +573,7 @@ QVBoxLayout * GBAlayout = new QVBoxLayout(AGGroupBox); QHBoxLayout * GBAreslayout = new QHBoxLayout(0); + QHBoxLayout * GBAqualayout = new QHBoxLayout(0); CBFrontendFullscreen = new QCheckBox(AGGroupBox); CBFrontendFullscreen->setText(QCheckBox::tr("Frontend fullscreen")); @@ -608,9 +609,17 @@ CBFullscreen->setText(QCheckBox::tr("Fullscreen")); GBAlayout->addWidget(CBFullscreen); - CBReduceQuality = new QCheckBox(AGGroupBox); - CBReduceQuality->setText(QCheckBox::tr("Reduced quality")); - GBAlayout->addWidget(CBReduceQuality); + QLabel * quality = new QLabel(AGGroupBox); + quality->setText(QLabel::tr("Quality")); + GBAqualayout->addWidget(quality); + + SLQuality = new QSlider(Qt::Horizontal, AGGroupBox); + SLQuality->setTickPosition(QSlider::TicksBelow); + SLQuality->setMaximum(5); + SLQuality->setMinimum(0); + SLQuality->setFixedWidth(150); + GBAqualayout->addWidget(SLQuality); + GBAlayout->addLayout(GBAqualayout); hr = new QFrame(AGGroupBox); hr->setFrameStyle(QFrame::HLine); diff -r 787f363798d8 -r de3b3df215c3 QTfrontend/pages.h --- a/QTfrontend/pages.h Mon Aug 02 23:15:22 2010 +0200 +++ b/QTfrontend/pages.h Mon Aug 02 23:15:34 2010 +0200 @@ -48,6 +48,7 @@ class QDataWidgetMapper; class QAbstractItemModel; class QSettings; +class QSlider; class GameCFGWidget; class TeamSelWidget; @@ -221,9 +222,6 @@ QComboBox *CBResolution; QCheckBox *CBEnableSound; QCheckBox *CBEnableFrontendSound; -#ifdef _WIN32 - QCheckBox *CBHardwareSound; -#endif QCheckBox *CBEnableMusic; QCheckBox *CBEnableFrontendMusic; QCheckBox *CBFullscreen; @@ -240,7 +238,7 @@ QLabel *labelNN; QSpinBox * volumeBox; QLineEdit *editNetNick; - QCheckBox *CBReduceQuality; + QSlider *SLQuality; QCheckBox *CBFrontendEffects; }; diff -r 787f363798d8 -r de3b3df215c3 QTfrontend/xfire.h --- a/QTfrontend/xfire.h Mon Aug 02 23:15:22 2010 +0200 +++ b/QTfrontend/xfire.h Mon Aug 02 23:15:34 2010 +0200 @@ -19,10 +19,6 @@ #ifndef XFIRE_H #define XFIRE_H -#ifdef _WIN32 -// TODO: Move to CMAKE -#define USE_XFIRE -#endif #ifdef USE_XFIRE enum XFIRE_KEYS diff -r 787f363798d8 -r de3b3df215c3 hedgewars/ArgParsers.inc --- a/hedgewars/ArgParsers.inc Mon Aug 02 23:15:22 2010 +0200 +++ b/hedgewars/ArgParsers.inc Mon Aug 02 23:15:34 2010 +0200 @@ -11,31 +11,20 @@ begin val(ParamStr(2), cScreenWidth); val(ParamStr(3), cScreenHeight); - cBitsStr:= ParamStr(4); - val(cBitsStr, cBits); + val(ParamStr(4), cBits); val(ParamStr(5), ipcPort); cFullScreen:= ParamStr(6) = '1'; isSoundEnabled:= ParamStr(7) = '1'; - //cVSyncInUse:= ParamStr(8) = '1'; //merged with rqFlags - //cWeaponTooltips:= ParamStr(9) = '1'; //merged with rqFlags - cLocaleFName:= ParamStr(10); - val(ParamStr(11), cInitVolume); - val(ParamStr(12), cTimerInterval); - PathPrefix:= ParamStr(13); - cShowFPS:= ParamStr(14) = '1'; - cAltDamage:= ParamStr(15) = '1'; - UserNick:= DecodeBase64(ParamStr(16)); - isMusicEnabled:= ParamStr(17) = '1'; + isMusicEnabled:= ParamStr(8) = '1'; + val(ParamStr(9), cInitVolume); + val(ParamStr(10), cTimerInterval); + PathPrefix:= ParamStr(11); + cShowFPS:= ParamStr(12) = '1'; + cAltDamage:= ParamStr(13) = '1'; + UserNick:= DecodeBase64(ParamStr(14)); + val(ParamStr(15), cReducedQuality); + cLocaleFName:= ParamStr(16); - if (ParamStr(18) = '1') then //HACK - always disable rqLowRes as it is a game breaker - cReducedQuality:= $FFFFFFFF xor rqLowRes - else - val(ParamStr(18), cReducedQuality); - - if (ParamStr(8) = '0') then //HACK - ifcVSyncInUse not true, disable it - cReducedQuality:= cReducedQuality xor rqDesyncVBlank; - if (ParamStr(9) = '0') then //HACK - if cWeaponTooltips not true, disable it - cReducedQuality:= cReducedQuality xor rqTooltipsOff; end; procedure setVideo(screenWidth: LongInt; screenHeight: LongInt; bitsStr: LongInt); @@ -50,8 +39,7 @@ begin val(screenWidthParam, screenWidthAsInt); val(screenHeightParam, screenHeightAsInt); - cBitsStr:= bitsParam; - val(cBitsStr, bitsStrAsInt); + val(bitsParam, bitsStrAsInt); setVideo(screenWidthAsInt,screenHeightAsInt,bitsStrAsInt); end; diff -r 787f363798d8 -r de3b3df215c3 hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Mon Aug 02 23:15:22 2010 +0200 +++ b/hedgewars/GSHandlers.inc Mon Aug 02 23:15:34 2010 +0200 @@ -1436,6 +1436,55 @@ end; //////////////////////////////////////////////////////////////////////////////// +procedure doStepSMine(Gear: PGear); +begin + if (Gear^.State and gstMoving) <> 0 then + begin + if ((Gear^.State and gstCollision) <> 0) and (Gear^.dX < _0_2) and (Gear^.dY < _0_2) then + begin + Gear^.dX := _0; + Gear^.dY := _0 + // TODO: calc attach dir + end + else + CalcRotationDirAngle(Gear); + + DeleteCI(Gear); + doStepFallingGear(Gear); + if (Gear^.State and gstMoving) = 0 then + AddGearCI(Gear); + AllInactive := false + end + else + begin + if ((GameTicks and $3F) = 25) then + doStepFallingGear(Gear); + end; + + if ((Gear^.State and gsttmpFlag) <> 0) and (Gear^.Health <> 0) then + if ((Gear^.State and gstAttacking) = 0) then + begin + if ((GameTicks and $1F) = 0) then + if CheckGearNear(Gear, gtHedgehog, 46, 32) <> nil then Gear^.State := Gear^.State or + gstAttacking + end + else // gstAttacking <> 0 + begin + AllInactive := false; + if (Gear^.Timer and $FF) = 0 then PlaySound(sndMineTick); + if Gear^.Timer = 0 then + begin + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound); + DeleteGear(Gear); + exit + end; + dec(Gear^.Timer); + end + else // gsttmpFlag = 0 + if TurnTimeLeft = 0 then Gear^.State := Gear^.State or gsttmpFlag; +end; + +//////////////////////////////////////////////////////////////////////////////// procedure doStepDynamite(Gear: PGear); begin doStepFallingGear(Gear); @@ -3547,6 +3596,7 @@ 7: PlaySound(sndPiano7); else PlaySound(sndPiano8); end; + AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtNote); CurrentHedgehog^.Gear^.MsgParam := 0; CurrentHedgehog^.Gear^.Message := CurrentHedgehog^.Gear^.Message and not gm_Slot; end; @@ -3593,6 +3643,8 @@ doMakeExplosion(hwRound(Gear^.X) - 30 - r0, hwRound(Gear^.Y) + 40, 40 + r1, 0); doMakeExplosion(hwRound(Gear^.X) + 30 + r1, hwRound(Gear^.Y) + 40, 40 + r0, 0); doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 80 + r0, EXPLAutoSound); + for r0:= 0 to 4 do + AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtNote); Gear^.dY := -_1; Gear^.Pos := Gear^.Pos + 1; end diff -r 787f363798d8 -r de3b3df215c3 hedgewars/GearDrawing.inc --- a/hedgewars/GearDrawing.inc Mon Aug 02 23:15:22 2010 +0200 +++ b/hedgewars/GearDrawing.inc Mon Aug 02 23:15:34 2010 +0200 @@ -398,6 +398,7 @@ amHellishBomb: DrawRotated(sprHandHellish, hx, hy, hwSign(Gear^.dX), aangle); amGasBomb: DrawRotated(sprHandCheese, hx, hy, hwSign(Gear^.dX), aangle); amMine: DrawRotated(sprHandMine, hx, hy, hwSign(Gear^.dX), aangle); + amSMine: DrawRotated(sprHandSMine, hx, hy, hwSign(Gear^.dX), aangle); amSeduction: DrawRotated(sprHandSeduction, hx, hy, hwSign(Gear^.dX), aangle); amVampiric: DrawRotatedF(sprHandVamp, hx, hy, (RealTicks div 125) mod 4, hwSign(Gear^.dX), aangle); amRCPlane: begin @@ -692,6 +693,10 @@ DrawRotated(sprMineOff, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, Gear^.DirAngle) else if Gear^.Health <> 0 then DrawRotated(sprMineOn, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, Gear^.DirAngle) else DrawRotated(sprMineDead, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, Gear^.DirAngle); + gtSMine: if (((Gear^.State and gstAttacking) = 0)or((Gear^.Timer and $3FF) < 420)) and (Gear^.Health <> 0) then + DrawRotated(sprSMineOff, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, Gear^.DirAngle) + else if Gear^.Health <> 0 then DrawRotated(sprSMineOn, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, Gear^.DirAngle) + else DrawRotated(sprMineDead, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, Gear^.DirAngle); gtCase: case Gear^.Pos of posCaseAmmo : begin i:= (GameTicks shr 6) mod 64; diff -r 787f363798d8 -r de3b3df215c3 hedgewars/HHHandlers.inc --- a/hedgewars/HHHandlers.inc Mon Aug 02 23:15:22 2010 +0200 +++ b/hedgewars/HHHandlers.inc Mon Aug 02 23:15:34 2010 +0200 @@ -184,6 +184,7 @@ amSkip: ParseCommand('/skip', true); amRope: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtRope, 0, xx, yy, 0); amMine: AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtMine, gstWait, SignAs(_0_02, dX), _0, 3000); + amSMine: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtSMine, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); amDEagle: CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtDEagleShot, 0, xx * _0_5, yy * _0_5, 0); amSineGun: CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSineGunShot, 0, xx * _0_5, yy * _0_5, 0); amPortalGun: AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtPortal, 0, xx * _0_6, yy * _0_6, 0); diff -r 787f363798d8 -r de3b3df215c3 hedgewars/VGSHandlers.inc --- a/hedgewars/VGSHandlers.inc Mon Aug 02 23:15:22 2010 +0200 +++ b/hedgewars/VGSHandlers.inc Mon Aug 02 23:15:34 2010 +0200 @@ -109,6 +109,24 @@ end; //////////////////////////////////////////////////////////////////////////////// +procedure doStepNote(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 / 2; + +Gear^.Angle:= Gear^.Angle + (Gear^.Frame + 1) * Steps / 10; +while Gear^.Angle > cMaxAngle do + Gear^.Angle:= Gear^.Angle - cMaxAngle; + +if Gear^.FrameTicks <= Steps then + DeleteVisualGear(Gear) +else + dec(Gear^.FrameTicks, Steps) +end; + +//////////////////////////////////////////////////////////////////////////////// procedure doStepEgg(Gear: PVisualGear; Steps: Longword); begin Gear^.X:= Gear^.X + Gear^.dX * Steps; diff -r 787f363798d8 -r de3b3df215c3 hedgewars/hwengine.pas --- a/hedgewars/hwengine.pas Mon Aug 02 23:15:22 2010 +0200 +++ b/hedgewars/hwengine.pas Mon Aug 02 23:15:34 2010 +0200 @@ -315,7 +315,7 @@ begin Randomize(); - uConsts.initModule; + // uConsts does not need initialization as they are all consts uMisc.initModule; uConsole.initModule; // MUST happen after uMisc @@ -386,7 +386,6 @@ uConsole.freeModule; uMisc.freeModule; // uMisc closes the debug log. - uConsts.freeModule; //stub end; ///////////////////////// @@ -446,7 +445,7 @@ if (ParamCount = 3) then internalSetGameTypeLandPreviewFromParameters() else - if (ParamCount = 18) then + if (ParamCount = cDefaultParamNum) then internalStartGameWithParameters() else playReplayFileWithParameters(); diff -r 787f363798d8 -r de3b3df215c3 hedgewars/uAIAmmoTests.pas --- a/hedgewars/uAIAmmoTests.pas Mon Aug 02 23:15:22 2010 +0200 +++ b/hedgewars/uAIAmmoTests.pas Mon Aug 02 23:15:34 2010 +0200 @@ -97,7 +97,8 @@ (proc: nil; flags: 0), // amPiano (proc: @TestGrenade; flags: 0), // amGasBomb (proc: @TestShotgun; flags: 0), // amSineGun - (proc: nil; flags: 0) // amFlamethrower + (proc: nil; flags: 0), // amFlamethrower + (proc: @TestGrenade; flags: 0) // amSMine ); const BadTurn = Low(LongInt) div 4; diff -r 787f363798d8 -r de3b3df215c3 hedgewars/uConsts.pas --- a/hedgewars/uConsts.pas Mon Aug 02 23:15:22 2010 +0200 +++ b/hedgewars/uConsts.pas Mon Aug 02 23:15:34 2010 +0200 @@ -73,7 +73,8 @@ sprHandDynamite, sprHandHellish, sprHandMine, sprHandSeduction, sprHandVamp, sprBigExplosion, sprSmokeRing, sprBeeTrace, sprEgg, sprTargetBee, sprHandBee, sprFeather, sprPiano, sprHandSineGun, sprPortalGun, sprPortal, - sprCheese, sprHandCheese, sprHandFlamethrower, sprChunk + sprCheese, sprHandCheese, sprHandFlamethrower, sprChunk, sprNote, + sprSMineOff, sprSMineOn, sprHandSMine ); // Gears that interact with other Gears and/or Land @@ -86,7 +87,8 @@ gtWhip, gtKamikaze, gtCake, gtSeduction, gtWatermelon, gtMelonPiece, // 34 gtHellishBomb, gtWaterUp, gtDrill, gtBallGun, gtBall, gtRCPlane, // 40 gtSniperRifleShot, gtJetpack, gtMolotov, gtExplosives, gtBirdy, // 45 - gtEgg, gtPortal, gtPiano, gtGasBomb, gtSineGunShot, gtFlamethrower); // 51 + gtEgg, gtPortal, gtPiano, gtGasBomb, gtSineGunShot, gtFlamethrower, // 51 + gtSMine); // Gears that are _only_ of visual nature (e.g. background stuff, visual effects, speechbubbles, etc.) TVisualGearType = (vgtFlake, vgtCloud, vgtExplPart, vgtExplPart2, vgtFire, @@ -94,7 +96,7 @@ vgtSteam, vgtAmmo, vgtSmoke, vgtSmokeWhite, vgtHealth, vgtShell, vgtDust, vgtSplash, vgtDroplet, vgtSmokeRing, vgtBeeTrace, vgtEgg, vgtFeather, vgtHealthTag, vgtSmokeTrace, vgtEvilTrace, vgtExplosion, - vgtBigExplosion, vgtChunk); + vgtBigExplosion, vgtChunk, vgtNote); TGearsType = set of TGearType; @@ -129,7 +131,7 @@ amSeduction, amWatermelon, amHellishBomb, amNapalm, amDrill, amBallgun, amRCPlane, amLowGravity, amExtraDamage, amInvulnerable, amExtraTime, amLaserSight, amVampiric, amSniperRifle, amJetpack, amMolotov, amBirdy, amPortalGun, - amPiano, amGasBomb, amSineGun, amFlamethrower); + amPiano, amGasBomb, amSineGun, amFlamethrower, amSMine); THWFont = (fnt16, fntBig, fntSmall, CJKfnt16, CJKfntBig, CJKfntSmall); @@ -183,7 +185,9 @@ THogEffect = (heInvulnerable, hePoisoned); TScreenFade = (sfNone, sfInit, sfToBlack, sfFromBlack, sfToWhite, sfFromWhite); -const sfMax = 1000; +const + sfMax = 1000; + cDefaultParamNum = 16; // message constants errmsgCreateSurface = 'Error creating SDL surface'; @@ -452,16 +456,6 @@ 'Graphics/Flags' // ptFlags ); -var PathPrefix: shortstring = './'; - Pathz: array[TPathType] of shortstring; - CountTexz: array[1..Pred(AMMO_INFINITE)] of PTexture; - LAND_WIDTH :longint; - LAND_HEIGHT :longint; - LAND_WIDTH_MASK :longWord; - LAND_HEIGHT_MASK :longWord; - cMaxCaptions : LongInt; - -const cTagsMasks : array[0..15] of byte = (7, 0, 0, 0, 15, 6, 4, 5, 0, 0, 0, 0, 0, 14, 12, 13); cTagsMasksNoHealth: array[0..15] of byte = (3, 2, 11, 1, 0, 0, 0, 0, 0, 10, 0, 9, 0, 0, 0, 0); @@ -799,7 +793,15 @@ (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 (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 + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprChunk + (FileName: 'Note'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprNote + (FileName: 'SMineOff'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 8; Height: 8; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSMineOff + (FileName: 'SMineOn'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 8; Height: 8; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSMineOn + (FileName: 'amSMine'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true) // sprHandSMine ); Wavez: array [TWave] of record @@ -2150,7 +2152,31 @@ PosCount: 1; PosSprite: sprWater; ejectX: 0; //20; - ejectY: -3) + ejectY: -3), + +// Mine + (NameId: sidSMine; + NameTex: nil; + Probability: 100; + NumberInCase: 1; + Ammo: (Propz: ammoprop_Power or ammoprop_AltUse; + Count: 2; + InitialCount: 0; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amSMine; + AttackVoice: sndLaugh); + Slot: 4; + TimeAfterTurn: 5000; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0) ); @@ -2181,47 +2207,6 @@ alpha : 255 ); -procedure initModule; -procedure freeModule; - implementation -uses uMisc; - -procedure initModule; -begin - Pathz:= cPathz; - {* REFERENCE - 4096 -> $FFFFF000 - 2048 -> $FFFFF800 - 1024 -> $FFFFFC00 - 512 -> $FFFFFE00 *} - if (cReducedQuality and rqLowRes) <> 0 then - begin - LAND_WIDTH:= 2048; - LAND_HEIGHT:= 1024; - LAND_WIDTH_MASK:= $FFFFF800; - LAND_HEIGHT_MASK:= $FFFFFC00; - end - else - begin - LAND_WIDTH:= 4096; - LAND_HEIGHT:= 2048; - LAND_WIDTH_MASK:= $FFFFF000; - LAND_HEIGHT_MASK:= $FFFFF800 - end; - -{$IFDEF IPHONEOS} - if isPhone() then - cMaxCaptions:= 3 - else -{$ENDIF} - cMaxCaptions:= 4; - -end; - -procedure freeModule; -begin - PathPrefix := './'; -end; end. diff -r 787f363798d8 -r de3b3df215c3 hedgewars/uGears.pas --- a/hedgewars/uGears.pas Mon Aug 02 23:15:22 2010 +0200 +++ b/hedgewars/uGears.pas Mon Aug 02 23:15:34 2010 +0200 @@ -201,7 +201,8 @@ @doStepPiano, @doStepBomb, @doStepSineGunShot, - @doStepFlamethrower + @doStepFlamethrower, + @doStepSMine ); procedure InsertGearToList(Gear: PGear); @@ -354,6 +355,14 @@ else gear^.Timer:= cMinesTime*1; end; + gtSMine: begin + gear^.Health:= 10; + gear^.State:= gear^.State or gstMoving; + gear^.Radius:= 2; + gear^.Elasticity:= _0_55; + gear^.Friction:= _0_995; + gear^.Timer:= 500; + end; gtCase: begin gear^.ImpactSound:= sndGraveImpact; gear^.nImpactSounds:= 1; @@ -1211,6 +1220,7 @@ case Gear^.Kind of gtHedgehog, gtMine, + gtSMine, gtCase, gtTarget, gtFlame, @@ -1286,6 +1296,7 @@ case t^.Kind of gtHedgehog, gtMine, + gtSMine, gtCase, gtTarget, gtExplosives: begin @@ -1340,6 +1351,7 @@ case Gear^.Kind of gtHedgehog, gtMine, + gtSMine, gtTarget, gtCase, gtExplosives: begin diff -r 787f363798d8 -r de3b3df215c3 hedgewars/uLocale.pas --- a/hedgewars/uLocale.pas Mon Aug 02 23:15:22 2010 +0200 +++ b/hedgewars/uLocale.pas Mon Aug 02 23:15:34 2010 +0200 @@ -29,7 +29,8 @@ sidHellishBomb, sidDrill, sidBallgun, sidNapalm, sidRCPlane, sidLowGravity, sidExtraDamage, sidInvulnerable, sidExtraTime, sidLaserSight, sidVampiric, sidSniperRifle, sidJetpack, - sidMolotov, sidBirdy, sidPortalGun, sidPiano, sidGasBomb, sidSineGun, sidFlamethrower); + sidMolotov, sidBirdy, sidPortalGun, sidPiano, sidGasBomb, sidSineGun, sidFlamethrower, + sidSMine); TMsgStrId = (sidStartFight, sidDraw, sidWinner, sidVolume, sidPaused, sidConfirm, sidSuddenDeath, sidRemaining, sidFuel, sidSync, diff -r 787f363798d8 -r de3b3df215c3 hedgewars/uMisc.pas --- a/hedgewars/uMisc.pas Mon Aug 02 23:15:22 2010 +0200 +++ b/hedgewars/uMisc.pas Mon Aug 02 23:15:34 2010 +0200 @@ -71,11 +71,19 @@ TimeTrialStartTime: Longword; TimeTrialStopTime : Longword; + // originally from uConsts + Pathz: array[TPathType] of shortstring; + CountTexz: array[1..Pred(AMMO_INFINITE)] of PTexture; + LAND_WIDTH :longint; + LAND_HEIGHT :longint; + LAND_WIDTH_MASK :longWord; + LAND_HEIGHT_MASK :longWord; + cMaxCaptions : LongInt; + // init flags cScreenWidth : LongInt = 1024; cScreenHeight : LongInt = 768; cBits : LongInt = 32; - cBitsStr : string[2] = '32'; //ipcPort is in uIO cFullScreen : boolean = false; isSoundEnabled : boolean = true; @@ -83,7 +91,7 @@ cLocaleFName : shortstring = 'en.txt'; cInitVolume : LongInt = 50; cTimerInterval : LongInt = 8; - //pathPrefix is in uConsts + PathPrefix: shortstring = './'; cShowFPS : boolean = false; cAltDamage : boolean = true; cReducedQuality : LongInt = rqNone; @@ -672,6 +680,27 @@ procedure initModule; {$IFDEF DEBUGFILE}{$IFNDEF IPHONEOS}var i: LongInt;{$ENDIF}{$ENDIF} begin + Pathz:= cPathz; + {* REFERENCE + 4096 -> $FFFFF000 + 2048 -> $FFFFF800 + 1024 -> $FFFFFC00 + 512 -> $FFFFFE00 *} + if (cReducedQuality and rqLowRes) <> 0 then + begin + LAND_WIDTH:= 2048; + LAND_HEIGHT:= 1024; + LAND_WIDTH_MASK:= $FFFFF800; + LAND_HEIGHT_MASK:= $FFFFFC00; + end + else + begin + LAND_WIDTH:= 4096; + LAND_HEIGHT:= 2048; + LAND_WIDTH_MASK:= $FFFFF000; + LAND_HEIGHT_MASK:= $FFFFF800 + end; + cDrownSpeed.QWordValue := 257698038; // 0.06 cDrownSpeedf := 0.06; cMaxWindSpeed.QWordValue:= 1073742; // 0.00025 @@ -747,6 +776,13 @@ ScreenFade := sfNone; +{$IFDEF IPHONEOS} + if isPhone() then + cMaxCaptions:= 3 + else +{$ENDIF} + cMaxCaptions:= 4; + {$IFDEF SDL13} SDLwindow := nil; {$ENDIF} @@ -757,7 +793,7 @@ Rewrite(f); {$ELSE} if (ParamStr(1) <> '') and (ParamStr(2) <> '') then - if (ParamCount <> 3) and (ParamCount <> 18) then + if (ParamCount <> 3) and (ParamCount <> cDefaultParamNum) then begin for i:= 0 to 7 do begin @@ -796,11 +832,10 @@ close(f); {$ENDIF} - // re-init flags so they'll always contain safe values + // re-init flags so they will always contain safe values cScreenWidth := 1024; cScreenHeight := 768; cBits := 32; - cBitsStr := '32'; //ipcPort is in uIO cFullScreen := false; isSoundEnabled := true; @@ -808,7 +843,7 @@ cLocaleFName := 'en.txt'; cInitVolume := 50; cTimerInterval := 8; - //pathPrefix is in uConsts + PathPrefix := './'; cShowFPS := false; cAltDamage := true; cReducedQuality := rqNone; diff -r 787f363798d8 -r de3b3df215c3 hedgewars/uVisualGears.pas --- a/hedgewars/uVisualGears.pas Mon Aug 02 23:15:22 2010 +0200 +++ b/hedgewars/uVisualGears.pas Mon Aug 02 23:15:34 2010 +0200 @@ -116,7 +116,8 @@ @doStepSmokeTrace, @doStepExplosion, @doStepBigExplosion, - @doStepChunk + @doStepChunk, + @doStepNote ); function AddVisualGear(X, Y: LongInt; Kind: TVisualGearType; State: LongWord = 0): PVisualGear; @@ -139,7 +140,8 @@ vgtHealthTag, vgtExplosion, vgtSmokeTrace, - vgtEvilTrace]) then + vgtEvilTrace, + vgtNote]) then begin AddVisualGear:= nil; exit @@ -305,9 +307,15 @@ t:= random(1024); sp:= 0.001 * (random(85) + 47); dx:= AngleSin(t).QWordValue/4294967296 * sp; - dy:= AngleCos(t).QWordValue/4294967296 * sp; + dy:= AngleCos(t).QWordValue/4294967296 * sp * -2; if random(2) = 0 then dx := -dx; - (*if random(2) = 0 then*) dy := -2 * dy; + end; + vgtNote: begin + dx:= 0.005 * (random(15) + 10); + dy:= -0.001 * (random(40) + 20); + if random(2) = 0 then dx := -dx; + Frame:= random(4); + FrameTicks:= random(2000) + 1500; end; end; @@ -466,6 +474,7 @@ 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); + vgtNote: DrawRotatedF(sprNote, 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 787f363798d8 -r de3b3df215c3 share/hedgewars/Data/Graphics/AmmoMenu/Ammos.png Binary file share/hedgewars/Data/Graphics/AmmoMenu/Ammos.png has changed diff -r 787f363798d8 -r de3b3df215c3 share/hedgewars/Data/Graphics/AmmoMenu/Ammos_bw.png Binary file share/hedgewars/Data/Graphics/AmmoMenu/Ammos_bw.png has changed diff -r 787f363798d8 -r de3b3df215c3 share/hedgewars/Data/Graphics/Hedgehog/amSMine.png Binary file share/hedgewars/Data/Graphics/Hedgehog/amSMine.png has changed diff -r 787f363798d8 -r de3b3df215c3 share/hedgewars/Data/Graphics/Note.png Binary file share/hedgewars/Data/Graphics/Note.png has changed diff -r 787f363798d8 -r de3b3df215c3 share/hedgewars/Data/Graphics/SMineOff.png Binary file share/hedgewars/Data/Graphics/SMineOff.png has changed diff -r 787f363798d8 -r de3b3df215c3 share/hedgewars/Data/Graphics/SMineOn.png Binary file share/hedgewars/Data/Graphics/SMineOn.png has changed diff -r 787f363798d8 -r de3b3df215c3 share/hedgewars/Data/Locale/en.txt --- a/share/hedgewars/Data/Locale/en.txt Mon Aug 02 23:15:22 2010 +0200 +++ b/share/hedgewars/Data/Locale/en.txt Mon Aug 02 23:15:34 2010 +0200 @@ -47,6 +47,7 @@ 00:44=Old Limburger 00:45=Sine Gun 00:46=Flamethrower +00:47=Sticky Mine 01:00=Let's fight! 01:01=Round draw diff -r 787f363798d8 -r de3b3df215c3 share/hedgewars/Data/Themes/Art/Chunk.png Binary file share/hedgewars/Data/Themes/Art/Chunk.png has changed diff -r 787f363798d8 -r de3b3df215c3 share/hedgewars/Data/Themes/Bamboo/Chunk.png Binary file share/hedgewars/Data/Themes/Bamboo/Chunk.png has changed diff -r 787f363798d8 -r de3b3df215c3 share/hedgewars/Data/Themes/Bath/Chunk.png Binary file share/hedgewars/Data/Themes/Bath/Chunk.png has changed diff -r 787f363798d8 -r de3b3df215c3 share/hedgewars/Data/Themes/Brick/Chunk.png Binary file share/hedgewars/Data/Themes/Brick/Chunk.png has changed diff -r 787f363798d8 -r de3b3df215c3 share/hedgewars/Data/Themes/Castle/Chunk.png Binary file share/hedgewars/Data/Themes/Castle/Chunk.png has changed diff -r 787f363798d8 -r de3b3df215c3 share/hedgewars/Data/Themes/Cheese/Chunk.png Binary file share/hedgewars/Data/Themes/Cheese/Chunk.png has changed diff -r 787f363798d8 -r de3b3df215c3 share/hedgewars/Data/Themes/City/Chunk.png Binary file share/hedgewars/Data/Themes/City/Chunk.png has changed diff -r 787f363798d8 -r de3b3df215c3 share/hedgewars/Data/Themes/Compost/Chunk.png Binary file share/hedgewars/Data/Themes/Compost/Chunk.png has changed diff -r 787f363798d8 -r de3b3df215c3 share/hedgewars/Data/Themes/Desert/Chunk.png Binary file share/hedgewars/Data/Themes/Desert/Chunk.png has changed diff -r 787f363798d8 -r de3b3df215c3 share/hedgewars/Data/Themes/EarthRise/Chunk.png Binary file share/hedgewars/Data/Themes/EarthRise/Chunk.png has changed diff -r 787f363798d8 -r de3b3df215c3 share/hedgewars/Data/Themes/Freeway/Chunk.png Binary file share/hedgewars/Data/Themes/Freeway/Chunk.png has changed diff -r 787f363798d8 -r de3b3df215c3 share/hedgewars/Data/Themes/Halloween/Chunk.png Binary file share/hedgewars/Data/Themes/Halloween/Chunk.png has changed diff -r 787f363798d8 -r de3b3df215c3 share/hedgewars/Data/Themes/Hell/Chunk.png Binary file share/hedgewars/Data/Themes/Hell/Chunk.png has changed diff -r 787f363798d8 -r de3b3df215c3 share/hedgewars/Data/Themes/Island/Chunk.png Binary file share/hedgewars/Data/Themes/Island/Chunk.png has changed diff -r 787f363798d8 -r de3b3df215c3 share/hedgewars/Data/Themes/Nature/Chunk.png Binary file share/hedgewars/Data/Themes/Nature/Chunk.png has changed diff -r 787f363798d8 -r de3b3df215c3 share/hedgewars/Data/Themes/Sheep/Chunk.png Binary file share/hedgewars/Data/Themes/Sheep/Chunk.png has changed diff -r 787f363798d8 -r de3b3df215c3 share/hedgewars/Data/Themes/Snow/Chunk.png Binary file share/hedgewars/Data/Themes/Snow/Chunk.png has changed diff -r 787f363798d8 -r de3b3df215c3 share/hedgewars/Data/Themes/Stage/Chunk.png Binary file share/hedgewars/Data/Themes/Stage/Chunk.png has changed