# HG changeset patch # User mbait # Date 1269817833 0 # Node ID a9af6bf223cfdbbff2ceed2b6df7a4003863943a # Parent f1ba655a6941dfe0f6e86b14e0b515a7834ef5ec Birdy's falling feathers diff -r f1ba655a6941 -r a9af6bf223cf cmake_modules/FindLua.cmake --- a/cmake_modules/FindLua.cmake Sun Mar 28 23:05:33 2010 +0000 +++ b/cmake_modules/FindLua.cmake Sun Mar 28 23:10:33 2010 +0000 @@ -10,7 +10,7 @@ #locate the system's lua library FIND_LIBRARY(LUA_DEFAULT NAMES lua51 lua5.1 lua-5.1 lua PATHS /lib /usr/lib /usr/local/lib /usr/pkg/lib) IF(${LUA_DEFAULT} MATCHES "LUA_DEFAULT-NOTFOUND") - UNSET(LUA_DEFAULT) + #UNSET(LUA_DEFAULT) MESSAGE(FATAL_ERROR "Couldn't find Lua 5.1 library!") ENDIF() #remove the path (fpc doesn't like it - why?) @@ -18,4 +18,4 @@ ENDIF(APPLE) ENDIF(WIN32) SET(LUA_LIBRARY ${LUA_DEFAULT} CACHE STRING "Lua library to link to; file name without path only!") -UNSET(LUA_DEFAULT) +#UNSET(LUA_DEFAULT) diff -r f1ba655a6941 -r a9af6bf223cf hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Sun Mar 28 23:05:33 2010 +0000 +++ b/hedgewars/GSHandlers.inc Sun Mar 28 23:10:33 2010 +0000 @@ -2833,6 +2833,8 @@ if Gear^.Health < 0 then Gear^.Health:= 0; if (GameTicks and $3F) = 0 then begin + if Gear^.Timer < 500 then + AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtFeather); if Gear^.Tex <> nil then FreeTexture(Gear^.Tex); Gear^.Tex:= RenderStringTex(trmsg[sidFuel] + ': ' + inttostr(round(Gear^.Health / 20)) + '%', cWhiteColor, fntSmall) end; diff -r f1ba655a6941 -r a9af6bf223cf hedgewars/uConsts.pas --- a/hedgewars/uConsts.pas Sun Mar 28 23:05:33 2010 +0000 +++ b/hedgewars/uConsts.pas Sun Mar 28 23:10:33 2010 +0000 @@ -76,7 +76,8 @@ sprAmTeleport, sprSplash, sprDroplet, sprBirdy, sprHandCake, sprHandConstruction, sprHandGrenade, sprHandMelon, sprHandMortar, sprHandSkip, sprHandCluster, sprHandDynamite, sprHandHellish, sprHandMine, sprHandSeduction, sprHandVamp, - sprBigExplosion, sprSmokeRing, sprBeeTrace, sprEgg, sprTargetBee, sprHandBee); + sprBigExplosion, sprSmokeRing, sprBeeTrace, sprEgg, sprTargetBee, sprHandBee, + sprFeather); TGearType = (gtAmmo_Bomb, gtHedgehog, gtAmmo_Grenade, gtHealthTag, // 3 gtGrave, gtBee, gtShotgunShot, gtPickHammer, gtRope, // 8 @@ -93,7 +94,8 @@ TVisualGearType = (vgtFlake, vgtCloud, vgtExplPart, vgtExplPart2, vgtFire, vgtSmallDamageTag, vgtTeamHealthSorter, vgtSpeechBubble, vgtBubble, vgtSteam, vgtAmmo, vgtSmoke, vgtSmokeWhite, vgtHealth, vgtShell, - vgtDust, vgtSplash, vgtDroplet, vgtSmokeRing, vgtBeeTrace, vgtEgg); + vgtDust, vgtSplash, vgtDroplet, vgtSmokeRing, vgtBeeTrace, vgtEgg, + vgtFeather); TGearsType = set of TGearType; @@ -733,7 +735,9 @@ (FileName: 'TargetBee'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false), // sprTargetBee (FileName: 'amBee'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false) // sprHandBee + Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false), // sprHandBee + (FileName: 'Feather'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 8; Height: 8; imageWidth: 0; imageHeight: 0; saveSurf: false) // sprFeather ); Wavez: array [TWave] of record @@ -1843,4 +1847,4 @@ end; -end. \ No newline at end of file +end. diff -r f1ba655a6941 -r a9af6bf223cf hedgewars/uVisualGears.pas --- a/hedgewars/uVisualGears.pas Sun Mar 28 23:05:33 2010 +0000 +++ b/hedgewars/uVisualGears.pas Sun Mar 28 23:10:33 2010 +0000 @@ -344,6 +344,20 @@ end; end; +procedure doStepFeather(Gear: PVisualGear; Steps: Longword); +begin +Gear^.X:= Gear^.X + Gear^.dX * Steps; + +Gear^.Y:= Gear^.Y + Gear^.dY * Steps; +Gear^.dY:= Gear^.dY + cGravity * Steps; + +Gear^.Angle:= round(Gear^.Angle + Steps) mod cMaxAngle; + +if Gear^.FrameTicks <= Steps then + DeleteVisualGear(Gear) +else + dec(Gear^.FrameTicks, Steps) +end; //////////////////////////////////////////////////////////////////////////////// const cSorterWorkTime = 640; var thexchar: array[0..cMaxTeams] of @@ -486,7 +500,8 @@ @doStepDroplet, @doStepSmokeRing, @doStepBeeTrace, - @doStepEgg + @doStepEgg, + @doStepFeather ); function AddVisualGear(X, Y: LongInt; Kind: TVisualGearType): PVisualGear; @@ -649,6 +664,16 @@ alpha:= 1; angle:= random(360); end; + vgtFeather: begin + t:= random(1024); + sp:= _0_001 * (random(85) + 95); + dx:= AngleSin(t) * sp; + dx.isNegative:= random(2) = 0; + dy:= AngleCos(t) * sp; + dy.isNegative:= random(2) = 0; + FrameTicks:= 650 + random(250); + Frame:= 1 + end; end; if VisualGearsList <> nil then @@ -789,6 +814,13 @@ DrawRotatedTextureF(SpritesData[sprSmokeRing].Texture, Gear^.scale, 0, 0, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, 1, 200, 200, Gear^.Angle); glColor4f(1, 1, 1, 1); end; + vgtFeather: begin + if Gear^.FrameTicks < 250 then + glColor4f(1, 1, 1, Gear^.FrameTicks / 250); + DrawRotatedF(sprFeather, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle); + if Gear^.FrameTicks < 250 then + glColor4f(1, 1, 1, 1); + end; end; case Gear^.Kind of vgtSmallDamageTag: DrawCentered(hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Tex); diff -r f1ba655a6941 -r a9af6bf223cf share/hedgewars/Data/Graphics/Feather.png Binary file share/hedgewars/Data/Graphics/Feather.png has changed