# HG changeset patch # User koda # Date 1318791810 -7200 # Node ID 4e8816cf94594a7b0ef19cbd1c3ccbc595c61a95 # Parent 026fd01a5e2c28209f520518743690adaab8aab1# Parent 74431bf4c632b6ad04be64b77013c406bc6d34a6 merge the changes applied to 0.9.16 diff -r 026fd01a5e2c -r 4e8816cf9459 .hgignore --- a/.hgignore Sun Oct 16 11:45:46 2011 -0400 +++ b/.hgignore Sun Oct 16 21:03:30 2011 +0200 @@ -8,7 +8,7 @@ glob:*.hi glob:*.*~ glob:*.core -glob:hedgewars/config.inc +glob:config.inc glob:cmake_install.cmake glob:QTfrontend/hwconsts.cpp glob:CPackConfig.cmake diff -r 026fd01a5e2c -r 4e8816cf9459 CMakeLists.txt diff -r 026fd01a5e2c -r 4e8816cf9459 QTfrontend/hwform.cpp --- a/QTfrontend/hwform.cpp Sun Oct 16 11:45:46 2011 -0400 +++ b/QTfrontend/hwform.cpp Sun Oct 16 21:03:30 2011 +0200 @@ -451,6 +451,10 @@ #ifdef USE_XFIRE updateXfire(); #endif + if (id == ID_PAGE_DATADOWNLOAD) + { + ui.pageDataDownload->fetchList(); + } if (id == ID_PAGE_DRAWMAP) { DrawMapScene * scene; if(lastid == ID_PAGE_MULTIPLAYER) diff -r 026fd01a5e2c -r 4e8816cf9459 QTfrontend/ui/page/pagedata.cpp diff -r 026fd01a5e2c -r 4e8816cf9459 QTfrontend/ui/page/pagesingleplayer.cpp --- a/QTfrontend/ui/page/pagesingleplayer.cpp Sun Oct 16 11:45:46 2011 -0400 +++ b/QTfrontend/ui/page/pagesingleplayer.cpp Sun Oct 16 21:03:30 2011 +0200 @@ -44,11 +44,11 @@ BtnCampaignPage = addButton(":/res/Campaign.png", middleLine, 0, true); - BtnCampaignPage->setToolTip(tr("Campaign Mode (...). IN DEVELOPMENT")); + BtnCampaignPage->setToolTip(tr("Campaign Mode (...)")); BtnCampaignPage->setVisible(false); BtnTrainPage = addButton(":/res/Trainings.png", middleLine, 1, true); - BtnTrainPage->setToolTip(tr("Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT")); + BtnTrainPage->setToolTip(tr("Training Mode (Practice your skills in a range of training missions)")); return vLayout; } diff -r 026fd01a5e2c -r 4e8816cf9459 hedgewars/CMakeLists.txt diff -r 026fd01a5e2c -r 4e8816cf9459 hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Sun Oct 16 11:45:46 2011 -0400 +++ b/hedgewars/GSHandlers.inc Sun Oct 16 21:03:30 2011 +0200 @@ -174,7 +174,7 @@ Gear^.RenderTimer := false; if (Gear^.Kind <> gtSniperRifleShot) and (Gear^.Kind <> gtShotgunShot) and (Gear^.Kind <> gtDEagleShot) and (Gear^.Kind <> gtSineGunShot) then - if Gear^.Kind = gtHedgehog then + if Gear^.Kind = gtHedgehog then begin if Gear^.Hedgehog^.Effects[heResurrectable] then ResurrectHedgehog(Gear) @@ -219,8 +219,8 @@ procedure CheckCollision(Gear: PGear); inline; begin - if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) or (TestCollisionYwithGear(Gear, hwSign(Gear^.dY)) <> 0) - then Gear^.State := Gear^.State or gstCollision + if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) or (TestCollisionYwithGear(Gear, hwSign(Gear^.dY)) <> 0) then + Gear^.State := Gear^.State or gstCollision else Gear^.State := Gear^.State and not gstCollision end; @@ -361,7 +361,7 @@ Gear^.dY := Gear^.dY * Gear^.Elasticity; Gear^.State := Gear^.State or gstCollision end - else if (Gear^.AdvBounce=1) and TestCollisionXwithGear(Gear, -hwSign(Gear^.dX)) then + else if (Gear^.AdvBounce=1) and TestCollisionXwithGear(Gear, -hwSign(Gear^.dX)) then collH := -hwSign(Gear^.dX); //if Gear^.AdvBounce and (collV <>0) and (collH <> 0) and (hwSqr(tdX) + hwSqr(tdY) > _0_08) then if (Gear^.AdvBounce=1) and (collV <>0) and (collH <> 0) and ((collV=-1) or ((tdX.QWordValue + @@ -377,7 +377,7 @@ if Gear^.AdvBounce > 1 then dec(Gear^.AdvBounce); - if isFalling then + if isFalling then begin Gear^.dY := Gear^.dY + cGravity; if (GameFlags and gfMoreWind) <> 0 then Gear^.dX := Gear^.dX + cWindSpeed / Gear^.Density @@ -477,7 +477,7 @@ begin dX := AngleCos(i * 16) * _0_5 * (GetRandom + _1); dY := AngleSin(i * 16) * _0_5 * (GetRandom + _1); - if i mod 2 = 0 then + if i mod 2 = 0 then begin AddGear(x, y, gtFlame, gstTmpFlag, dX, dY, 0); AddGear(x, y, gtFlame, 0, dX, -dY, 0) @@ -560,7 +560,7 @@ glass^.dY:= -1/(random(4)+5); end;*) glass:= AddVisualGear(gx+random(7)-3, gy+random(7)-3, vgtStraightShot); - if glass <> nil then + if glass <> nil then with glass^ do begin Frame:= 2; @@ -736,7 +736,7 @@ end end end; -if draw then +if draw then with Gear^ do begin // we've collided with land. draw some stuff and get back into the clouds @@ -894,7 +894,7 @@ for i:= 0 to 31 do begin flower:= AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtStraightShot); - if flower <> nil then + if flower <> nil then with flower^ do begin Scale:= 0.75; @@ -1250,7 +1250,7 @@ if (Gear^.Timer mod 47) = 0 then begin // ok. this was an attempt to turn off dust if not actually drilling land. I have no idea why it isn't working as expected - if (( (y + 12) and LAND_HEIGHT_MASK) = 0) and ((x and LAND_WIDTH_MASK) = 0) and (Land[y + 12, x] > 255) then + if (( (y + 12) and LAND_HEIGHT_MASK) = 0) and ((x and LAND_WIDTH_MASK) = 0) and (Land[y + 12, x] > 255) then for i:= 0 to 1 do AddVisualGear(x - 5 + Random(10), y + 12, vgtDust); @@ -1977,7 +1977,8 @@ end end else // gsttmpFlag = 0 - if (TurnTimeLeft = 0) or ((GameFlags and gfInfAttack <> 0) and (GameTicks > Gear^.FlightTime)) then Gear^.State := Gear^.State or gsttmpFlag; + if (TurnTimeLeft = 0) or ((GameFlags and gfInfAttack <> 0) and (GameTicks > Gear^.FlightTime)) then + Gear^.State := Gear^.State or gsttmpFlag; end; //////////////////////////////////////////////////////////////////////////////// @@ -2826,7 +2827,7 @@ if (GameTicks mod 2 = 0) and hasWishes then begin sparkles:= AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtDust, 1); - if sparkles <> nil then + if sparkles <> nil then begin sparkles^.Tint:= ((random(210)+45) shl 24) or ((random(210)+45) shl 16) or ((random(210)+45) shl 8) or $FF; sparkles^.Angle:= random * 360; @@ -3179,10 +3180,10 @@ PlaySound(sndYoohoo, Gear^.Hedgehog^.Team^.voicepack) end; - if (Gear^.Pos = 14) and (RealTicks and $3 = 0) then + if (Gear^.Pos = 14) and (RealTicks and $3 = 0) then begin heart:= AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtStraightShot); - if heart <> nil then + if heart <> nil then with heart^ do begin dx:= 0.001 * (random(200)); @@ -3579,7 +3580,7 @@ for i:= random(5)+5 downto 0 do begin bubble := AddVisualGear(hwRound(HHGear^.X)+random(8), hwRound(HHGear^.Y) - 8 + random(16), vgtBubble); - if bubble <> nil then + if bubble <> nil then begin bubble^.dX:= (random(10)/10 + 0.02) * -1; if (move.isNegative) then @@ -3741,7 +3742,7 @@ end; end; - if HHGear^.Message and (gmUp or gmPrecise or gmLeft or gmRight) <> 0 then + if HHGear^.Message and (gmUp or gmPrecise or gmLeft or gmRight) <> 0 then Gear^.State := Gear^.State and not gsttmpFlag; HHGear^.Message := HHGear^.Message and not (gmUp or gmPrecise or gmLeft or gmRight); HHGear^.State := HHGear^.State or gstMoving; @@ -4627,7 +4628,7 @@ SignAs(AngleSin(HHGear^.Angle) * speed, HHGear^.dX) + rx, AngleCos(HHGear^.Angle) * ( - speed) + ry, 0); - if (Gear^.Health mod 30) = 0 then + if (Gear^.Health mod 30) = 0 then AddGear(gx, gy, gtFlame, 0, SignAs(AngleSin(HHGear^.Angle) * speed, HHGear^.dX) + rx, AngleCos(HHGear^.Angle) * ( - speed) + ry, 0); @@ -4894,13 +4895,13 @@ (*DrawCircle(hwRound(Gear^.X), hwRound(Gear^.Y), Gear^.Radius, 1.5, 0, 0, $FF, $FF);*) - if ((Gear^.Message and gmUp) <> 0) then + if ((Gear^.Message and gmUp) <> 0) then begin if (GameTicks and $F) <> 0 then exit; end else if (GameTicks and $1FF) <> 0 then exit; - if Gear^.Power < 45 then + if Gear^.Power < 45 then begin inc(Gear^.Power); if TestCollisionYwithGear(hh^.Gear, -1) = 0 then hh^.Gear^.Y := hh^.Gear^.Y - _1; @@ -4908,7 +4909,7 @@ graves := GearsNear(Gear^.X, Gear^.Y, gtGrave, Gear^.Radius); - if Length(graves) = 0 then + if Length(graves) = 0 then begin StopSound(Gear^.SoundChannel); Gear^.Timer := 250; @@ -4916,7 +4917,7 @@ exit; end; - if ((Gear^.Message and gmAttack) <> 0) and (hh^.Gear^.Health > 0) and (TurnTimeLeft > 0) then + if ((Gear^.Message and gmAttack) <> 0) and (hh^.Gear^.Health > 0) and (TurnTimeLeft > 0) then begin if Length(graves) <= Gear^.Tag then Gear^.Tag:= 0; dec(hh^.Gear^.Health); @@ -5040,7 +5041,7 @@ if CurAmmoGear = Gear then begin - if (CurrentHedgehog = nil) or (CurrentHedgehog^.Gear = nil) then + if (CurrentHedgehog = nil) or (CurrentHedgehog^.Gear = nil) then begin DeleteGear(Gear); exit @@ -5131,7 +5132,7 @@ end end; -if (Gear^.Pos = 1) and (GameTicks and $1F = 0) and (Gear^.Power < 255) then +if (Gear^.Pos = 1) and (GameTicks and $1F = 0) and (Gear^.Power < 255) then begin inc(Gear^.Power); if (Gear^.Power = 172) and (HH^.Gear <> nil) and @@ -5176,7 +5177,7 @@ Gear^.Power:= 0; Gear^.Timer:= 0; if HH^.GearHidden <> nil then FindPlace(HH^.GearHidden, false, 0, LAND_WIDTH,true); - if HH^.GearHidden <> nil then + if HH^.GearHidden <> nil then begin Gear^.X:= HH^.GearHidden^.X; Gear^.Y:= HH^.GearHidden^.Y; @@ -5201,10 +5202,10 @@ 3. Hog is a king *) HH:= Gear^.Hedgehog; - if HH^.Gear <> nil then + if HH^.Gear <> nil then if (HH^.Gear = nil) or (HH^.King) or (SuddenDeathDmg) then begin - if HH^.Gear <> nil then + if HH^.Gear <> nil then begin HH^.Gear^.Message := HH^.Gear^.Message and not gmAttack; HH^.Gear^.State:= HH^.Gear^.State and not gstAttacking; @@ -5222,7 +5223,7 @@ HH^.Team^.Clan^.Teams[j]^.Hedgehogs[i].Gear^.Damage) then inc(cnt); if cnt < 2 then begin - if HH^.Gear <> nil then + if HH^.Gear <> nil then begin HH^.Gear^.Message := HH^.Gear^.Message and not gmAttack; HH^.Gear^.State:= HH^.Gear^.State and not gstAttacking; diff -r 026fd01a5e2c -r 4e8816cf9459 hedgewars/HHHandlers.inc diff -r 026fd01a5e2c -r 4e8816cf9459 hedgewars/hwengine.pas diff -r 026fd01a5e2c -r 4e8816cf9459 hedgewars/uAmmos.pas diff -r 026fd01a5e2c -r 4e8816cf9459 hedgewars/uCommandHandlers.pas --- a/hedgewars/uCommandHandlers.pas Sun Oct 16 11:45:46 2011 -0400 +++ b/hedgewars/uCommandHandlers.pas Sun Oct 16 21:03:30 2011 +0200 @@ -85,13 +85,13 @@ procedure chCheckProto(var s: shortstring); var i, c: LongInt; begin -if isDeveloperMode then -begin -val(s, i, c); -if (c <> 0) or (i = 0) then exit; -TryDo(i <= cNetProtoVersion, 'Protocol version mismatch: engine is too old', true); -TryDo(i >= cNetProtoVersion, 'Protocol version mismatch: engine is too new', true) -end + if isDeveloperMode then + begin + val(s, i, c); + if (c <> 0) or (i = 0) then exit; + TryDo(i <= cNetProtoVersion, 'Protocol version mismatch: engine is too old (got '+intToStr(i)+', expecting '+intToStr(cNetProtoVersion)+')', true); + TryDo(i >= cNetProtoVersion, 'Protocol version mismatch: engine is too new (got '+intToStr(i)+', expecting '+intToStr(cNetProtoVersion)+')', true); + end end; procedure chTeamLocal(var s: shortstring); diff -r 026fd01a5e2c -r 4e8816cf9459 hedgewars/uGears.pas diff -r 026fd01a5e2c -r 4e8816cf9459 hedgewars/uScript.pas diff -r 026fd01a5e2c -r 4e8816cf9459 hedgewars/uTeams.pas diff -r 026fd01a5e2c -r 4e8816cf9459 hedgewars/uWorld.pas diff -r 026fd01a5e2c -r 4e8816cf9459 project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj --- a/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj Sun Oct 16 11:45:46 2011 -0400 +++ b/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj Sun Oct 16 21:03:30 2011 +0200 @@ -539,7 +539,7 @@ 6179880C114AA34C00BA94A9 /* uTeams.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uTeams.pas; path = ../../hedgewars/uTeams.pas; sourceTree = SOURCE_ROOT; }; 6179880E114AA34C00BA94A9 /* uVisualGears.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uVisualGears.pas; path = ../../hedgewars/uVisualGears.pas; sourceTree = SOURCE_ROOT; }; 6179880F114AA34C00BA94A9 /* uWorld.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uWorld.pas; path = ../../hedgewars/uWorld.pas; sourceTree = SOURCE_ROOT; }; - 61798852114AA44900BA94A9 /* config.inc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = config.inc; path = ../../hedgewars/config.inc; sourceTree = SOURCE_ROOT; }; + 61589C5A144B4322007BFAA4 /* config.inc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; path = config.inc; sourceTree = ""; }; 617988D3114AAA3900BA94A9 /* SDLiPhoneOS.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDLiPhoneOS.xcodeproj; path = "../../../Library/SDL/Xcode-iPhoneOS/SDL/SDLiPhoneOS.xcodeproj"; sourceTree = SOURCE_ROOT; }; 61798934114AB25F00BA94A9 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; 6179898B114AB3FA00BA94A9 /* SDL_mixer.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDL_mixer.xcodeproj; path = "../../../Library/SDL_mixer/Xcode-iPhoneOS/SDL_mixer.xcodeproj"; sourceTree = SOURCE_ROOT; }; @@ -940,7 +940,7 @@ 61798892114AA56300BA94A9 /* inc */ = { isa = PBXGroup; children = ( - 61798852114AA44900BA94A9 /* config.inc */, + 61589C5A144B4322007BFAA4 /* config.inc */, 617987EB114AA34C00BA94A9 /* options.inc */, 617987E4114AA34C00BA94A9 /* GSHandlers.inc */, 617987E5114AA34C00BA94A9 /* HHHandlers.inc */, @@ -1498,7 +1498,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "#copy new stuff over old stuff\nrm -rf ${PROJECT_DIR}/Data\n\n#create config.inc\necho \"Updating config file...\"\nPROTO=`cat ${PROJECT_DIR}/../../CMakeLists.txt | grep HEDGEWARS_PROTO_VER | cut -d ' ' -f 2 | cut -d ')' -f 1`\nMAJN=`cat ${PROJECT_DIR}/../../CMakeLists.txt | grep CPACK_PACKAGE_VERSION_MAJOR | xargs | cut -d ' ' -f 2 |cut -d ')' -f 1`\nMINN=`cat ${PROJECT_DIR}/../../CMakeLists.txt | grep CPACK_PACKAGE_VERSION_MINOR | xargs | cut -d ' ' -f 2 |cut -d ')' -f 1`\nPATN=`cat ${PROJECT_DIR}/../../CMakeLists.txt | grep CPACK_PACKAGE_VERSION_PATCH | xargs | cut -d ' ' -f 2 |cut -d '$' -f 1`\nREVN=-`/usr/local/bin/hg id -n ${PROJECT_DIR}/../../`\necho \"const cNetProtoVersion = $PROTO; const cVersionString = '${MAJN}.${MINN}.${PATN}${REVN}'; const cLuaLibrary = '';\" > ${PROJECT_DIR}/../../hedgewars/config.inc\n\necho \"Copying Data...\"\ncp -R ${PROJECT_DIR}/../../share/hedgewars/Data ${PROJECT_DIR}/Data\n\n#copy some files from QTfrontend/res\necho \"Fetching additional graphics from QTfrontend...\"\nmkdir ${PROJECT_DIR}/Data/Graphics/Icons\ncp ${PROJECT_DIR}/../../QTfrontend/res/{btn*,icon*,StatsMedal*,ammopic*}.png ${PROJECT_DIR}/Data/Graphics/Icons/\n\necho \"Removing text and dummy files...\"\n#delete all CMakeLists.txt and image source files\nfind ${PROJECT_DIR}/Data -name CMakeLists.txt -delete\nfind ${PROJECT_DIR}/Data -name *.svg* -delete\nfind ${PROJECT_DIR}/Data -name *.psd -delete\nfind ${PROJECT_DIR}/Data -name *.sifz -delete\nfind ${PROJECT_DIR}/Data -name *.xcf -delete\nfind ${PROJECT_DIR}/Data -name *.orig -delete\nfind ${PROJECT_DIR}/Data -name *.ts -delete\n\n#delete dummy maps and hats, misc stuff\nrm -rf ${PROJECT_DIR}/Data/Maps/test*\nrm -rf ${PROJECT_DIR}/Data/Graphics/Hats/{TeamCap,TeamHeadband,TeamHair}\nrm -rf ${PROJECT_DIR}/Data/misc/\n\n#delete forbidden maps and WIP themes (remember to check that no Map uses them)\nrm -rf ${PROJECT_DIR}/Data/Maps/{Cheese,FlightJoust}\nrm -rf ${PROJECT_DIR}/Data/Themes/{Beach,Digital}\n\n#delete all names, reserved hats and unused fonts\nrm -rf ${PROJECT_DIR}/Data/Names/\nrm -rf ${PROJECT_DIR}/Data/Graphics/Hats/Reserved/\nrm -rf ${PROJECT_DIR}/Data/Fonts/{wqy-zenhei.ttc,DroidSansFallback.ttf}\n\necho \"Handling audio files...\"\n#delete the Classic voice\nrm -rf ${PROJECT_DIR}/Data/Sounds/voices/Classic\n#delete the main theme file\nrm -rf ${PROJECT_DIR}/Data/Music/main_theme.ogg\n#copy mono audio\ncp -R ${PROJECT_DIR}/Audio/* ${PROJECT_DIR}/Data/\n#remove unused voices\nfor i in {Amazing,Brilliant,Bugger,Bungee,Cutitout,Drat,Excellent,Fire,FlawlessPossibility,Gonnagetyou,Grenade,Hmm,Justyouwait,Leavemealone,Ohdear,Ouch,Perfect,Revenge,Runaway,Solong,Thisoneismine,VictoryPossibility,Watchthis,Whatthe,Whoopsee}; do find Data/Sounds/voices/ -name $i.ogg -delete; done\n\necho \"Tweaking Data contents...\"\n#move Lua maps in Missions\nmkdir ${PROJECT_DIR}/Data/Missions/Maps/\nfor i in `ls ${PROJECT_DIR}/Data/Maps/`; do if [[ `ls -f ${PROJECT_DIR}/Data/Maps/$i/map.lua 2> /dev/null` != '' ]]; then mv ${PROJECT_DIR}/Data/Maps/$i ${PROJECT_DIR}/Data/Missions/Maps/; fi; done;\n#workaround for missing map in CTF_Blizzard\nln -s ../../../Maps/Blizzard/map.png ${PROJECT_DIR}/Data/Missions/Maps/CTF_Blizzard/map.png\n#remove cfg files since we have plists\nfind ${PROJECT_DIR}/Data/Scripts -name *.cfg -delete\nif ((`ls ${PROJECT_DIR}/Data/Scripts/Multiplayer/*.lua|wc -l` >= `ls ${PROJECT_DIR}/Data/Scripts/plist/*.plist|wc -l` ))\nthen\necho \"${PROJECT_DIR}/Data/Scripts/Multiplayer/Normal.plist:0: warning, missing plist implementation of a Multiplayer script file\"\nfi\n\n#reduce the number of flakes for City\nsed -i -e 's/1500/50/' ${PROJECT_DIR}/Data/Themes/City/theme.cfg\n#cleanup missions/trainings info\nsed -i -e -n '/\"/p' ${PROJECT_DIR}/Data/Locale/missions_en.txt\n\necho \"Done\""; + shellScript = "#copy new stuff over old stuff\nrm -rf ${PROJECT_DIR}/Data\n\n#create config.inc\necho \"Updating config file...\"\nPROTO=`cat ${PROJECT_DIR}/../../CMakeLists.txt | grep HEDGEWARS_PROTO_VER | cut -d ' ' -f 2 | cut -d ')' -f 1`\nMAJN=`cat ${PROJECT_DIR}/../../CMakeLists.txt | grep CPACK_PACKAGE_VERSION_MAJOR | xargs | cut -d ' ' -f 2 |cut -d ')' -f 1`\nMINN=`cat ${PROJECT_DIR}/../../CMakeLists.txt | grep CPACK_PACKAGE_VERSION_MINOR | xargs | cut -d ' ' -f 2 |cut -d ')' -f 1`\nPATN=`cat ${PROJECT_DIR}/../../CMakeLists.txt | grep CPACK_PACKAGE_VERSION_PATCH | xargs | cut -d ' ' -f 2 |cut -d '$' -f 1`\nREVN=-`/usr/local/bin/hg id -n ${PROJECT_DIR}/../../`\necho \"const cNetProtoVersion = $PROTO; const cVersionString = '${MAJN}.${MINN}.${PATN}${REVN}'; const cLuaLibrary = '';\" > ${PROJECT_DIR}/config.inc\n\necho \"Copying Data...\"\ncp -R ${PROJECT_DIR}/../../share/hedgewars/Data ${PROJECT_DIR}/Data\n\n#copy some files from QTfrontend/res\necho \"Fetching additional graphics from QTfrontend...\"\nmkdir ${PROJECT_DIR}/Data/Graphics/Icons\ncp ${PROJECT_DIR}/../../QTfrontend/res/{btn*,icon*,StatsMedal*,ammopic*}.png ${PROJECT_DIR}/Data/Graphics/Icons/\n\necho \"Removing text and dummy files...\"\n#delete all CMakeLists.txt and image source files\nfind ${PROJECT_DIR}/Data -name CMakeLists.txt -delete\nfind ${PROJECT_DIR}/Data -name *.svg* -delete\nfind ${PROJECT_DIR}/Data -name *.psd -delete\nfind ${PROJECT_DIR}/Data -name *.sifz -delete\nfind ${PROJECT_DIR}/Data -name *.xcf -delete\nfind ${PROJECT_DIR}/Data -name *.orig -delete\nfind ${PROJECT_DIR}/Data -name *.ts -delete\n\n#delete dummy maps and hats, misc stuff\nrm -rf ${PROJECT_DIR}/Data/Maps/test*\nrm -rf ${PROJECT_DIR}/Data/Graphics/Hats/{TeamCap,TeamHeadband,TeamHair}\nrm -rf ${PROJECT_DIR}/Data/misc/\n\n#delete forbidden maps and WIP themes (remember to check that no Map uses them)\nrm -rf ${PROJECT_DIR}/Data/Maps/{Cheese,FlightJoust}\nrm -rf ${PROJECT_DIR}/Data/Themes/{Beach,Digital}\n\n#delete all names, reserved hats and unused fonts\nrm -rf ${PROJECT_DIR}/Data/Names/\nrm -rf ${PROJECT_DIR}/Data/Graphics/Hats/Reserved/\nrm -rf ${PROJECT_DIR}/Data/Fonts/{wqy-zenhei.ttc,DroidSansFallback.ttf}\n\necho \"Handling audio files...\"\n#delete the Classic voice\nrm -rf ${PROJECT_DIR}/Data/Sounds/voices/Classic\n#delete the main theme file\nrm -rf ${PROJECT_DIR}/Data/Music/main_theme.ogg\n#copy mono audio\ncp -R ${PROJECT_DIR}/Audio/* ${PROJECT_DIR}/Data/\n#remove unused voices\nfor i in {Amazing,Brilliant,Bugger,Bungee,Cutitout,Drat,Excellent,Fire,FlawlessPossibility,Gonnagetyou,Grenade,Hmm,Justyouwait,Leavemealone,Ohdear,Ouch,Perfect,Revenge,Runaway,Solong,Thisoneismine,VictoryPossibility,Watchthis,Whatthe,Whoopsee}; do find Data/Sounds/voices/ -name $i.ogg -delete; done\n\necho \"Tweaking Data contents...\"\n#move Lua maps in Missions\nmkdir ${PROJECT_DIR}/Data/Missions/Maps/\nfor i in `ls ${PROJECT_DIR}/Data/Maps/`; do if [[ `ls -f ${PROJECT_DIR}/Data/Maps/$i/map.lua 2> /dev/null` != '' ]]; then mv ${PROJECT_DIR}/Data/Maps/$i ${PROJECT_DIR}/Data/Missions/Maps/; fi; done;\n#workaround for missing map in CTF_Blizzard\nln -s ../../../Maps/Blizzard/map.png ${PROJECT_DIR}/Data/Missions/Maps/CTF_Blizzard/map.png\n#remove cfg files since we have plists\nfind ${PROJECT_DIR}/Data/Scripts -name *.cfg -delete\nif ((`ls ${PROJECT_DIR}/Data/Scripts/Multiplayer/*.lua|wc -l` >= `ls ${PROJECT_DIR}/Data/Scripts/plist/*.plist|wc -l` ))\nthen\necho \"${PROJECT_DIR}/Data/Scripts/Multiplayer/Normal.plist:0: warning, missing plist implementation of a Multiplayer script file\"\nfi\n\n#reduce the number of flakes for City\nsed -i -e 's/1500/50/' ${PROJECT_DIR}/Data/Themes/City/theme.cfg\n#cleanup missions/trainings info\nsed -i -e -n '/\"/p' ${PROJECT_DIR}/Data/Locale/missions_en.txt\n\necho \"Done\""; showEnvVarsInLog = 0; }; 9283011B0F10CB2D00CC5A3C /* Build libfpc.a */ = { diff -r 026fd01a5e2c -r 4e8816cf9459 share/hedgewars/Data/Locale/hedgewars_en.ts --- a/share/hedgewars/Data/Locale/hedgewars_en.ts Sun Oct 16 11:45:46 2011 -0400 +++ b/share/hedgewars/Data/Locale/hedgewars_en.ts Sun Oct 16 21:03:30 2011 +0200 @@ -1170,8 +1170,8 @@ Multiplayer (play a hotseat game against your friends, or AI teams) - Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT - Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT + Training Mode (Practice your skills in a range of training missions) + Training Mode (Practice your skills in a range of training missions) Demos (Watch recorded demos)