# HG changeset patch # User koda # Date 1371483601 -7200 # Node ID 2bf3796c58551a23af3f68663d4cb35ec863e073 # Parent e653e96b0ec32a81084b3bb4ac4ce659ef807400# Parent a6ae0286787c9bb095cd72b13bd13f7074632110 This commit changes many aspect of our cmake build system - shared libraries are compiled by default: * this modifies RPATH of unix executables; * this will prevent a lot of linking issues, esp. from pascal world; * the old behaviour (static libs) is still available with -DBUILD_SHARED_LIBS=off; * of course in this case you have to provide the full list of dependencies with FPFLAGS and CMAKE_C_FLAGS; - pascal is now fully integrated with cmake, meaning you can just do add_sources and use CMAKE_Pascal_FLAGS: * some of the language features are only partially implemented, for example .inc files will not get rebuilt if you modify them; * target_link_libraries for pascal targets is just dummy as linking is determined within pascal files; * universal builds for osx are not available any more; - bundled libraries and system libraries are addressed using the target name: * this avoids depedency tracking; * this allows to name output as we wish. diff -r a6ae0286787c -r 2bf3796c5855 gameServer/Actions.hs --- a/gameServer/Actions.hs Fri Jun 14 15:58:58 2013 +0200 +++ b/gameServer/Actions.hs Mon Jun 17 17:40:01 2013 +0200 @@ -174,8 +174,12 @@ chans <- liftM (map sendChan) $ roomClientsS ri clNick <- client's nick + allClientsChans <- liftM (Prelude.map sendChan . Prelude.filter isVisible) $! allClientsS - processAction $ AnswerClients chans ["JOINED", clNick] + mapM_ processAction [ + AnswerClients chans ["JOINED", clNick] + , AnswerClients allClientsChans ["CLIENT_FLAGS", "+i", clNick] + ] processAction (MoveToLobby msg) = do @@ -196,6 +200,9 @@ else mapM_ processAction [RemoveClientTeams, AnswerClients chans ["LEFT", clNick, msg]] + allClientsChans <- liftM (Prelude.map sendChan . Prelude.filter isVisible) $! allClientsS + processAction $ AnswerClients allClientsChans ["CLIENT_FLAGS", "-i", clNick] + -- when not removing room ready <- client's isReady when (not master || playersNum > 1) . io $ do diff -r a6ae0286787c -r 2bf3796c5855 hedgewars/uGearsList.pas --- a/hedgewars/uGearsList.pas Fri Jun 14 15:58:58 2013 +0200 +++ b/hedgewars/uGearsList.pas Mon Jun 17 17:40:01 2013 +0200 @@ -265,7 +265,7 @@ end; State:= State or gstInvisible; Health:= random(vobFrameTicks); - Timer:= random(vobFramesCount); + if gear^.Timer = 0 then Timer:= random(vobFramesCount); Damage:= (random(2) * 2 - 1) * (vobVelocity + random(vobVelocity)) * 8; end end; @@ -277,7 +277,7 @@ end; gtBee: begin gear^.Radius:= 5; - gear^.Timer:= 500; + if gear^.Timer = 0 then gear^.Timer:= 500; gear^.RenderTimer:= true; gear^.Elasticity:= _0_9; gear^.Tag:= 0; @@ -286,16 +286,16 @@ gear^.Radius:= 250; end; gtShotgunShot: begin - gear^.Timer:= 900; + if gear^.Timer = 0 then gear^.Timer:= 900; gear^.Radius:= 2 end; gtPickHammer: begin gear^.Radius:= 10; - gear^.Timer:= 4000 + if gear^.Timer = 0 then gear^.Timer:= 4000 end; gtHammerHit: begin gear^.Radius:= 8; - gear^.Timer:= 125 + if gear^.Timer = 0 then gear^.Timer:= 125 end; gtRope: begin gear^.Radius:= 3; @@ -311,10 +311,13 @@ gear^.Elasticity:= _0_55; gear^.Friction:= _0_995; gear^.Density:= _1; - if cMinesTime < 0 then - gear^.Timer:= getrandom(51)*100 - else - gear^.Timer:= cMinesTime; + if gear^.Timer = 0 then + begin + if cMinesTime < 0 then + gear^.Timer:= getrandom(51)*100 + else + gear^.Timer:= cMinesTime + end end; gtSMine: begin gear^.Health:= 10; @@ -323,7 +326,7 @@ gear^.Elasticity:= _0_55; gear^.Friction:= _0_995; gear^.Density:= _1_6; - gear^.Timer:= 500; + if gear^.Timer = 0 then gear^.Timer:= 500; end; gtKnife: begin gear^.Density:= _4; @@ -334,7 +337,7 @@ gear^.nImpactSounds:= 1; gear^.Radius:= 16; gear^.Elasticity:= _0_3; - gear^.Timer:= 500 + if gear^.Timer = 0 then gear^.Timer:= 500 end; gtExplosives: begin gear^.ImpactSound:= sndGrenadeImpact; @@ -359,7 +362,7 @@ gear^.Elasticity:= _0_55; gear^.Friction:= _0_03; gear^.Density:= _2; - gear^.Timer:= 5000; + if gear^.Timer = 0 then gear^.Timer:= 5000; end; gtCluster: begin gear^.Radius:= 2; @@ -389,7 +392,7 @@ end; gtBlowTorch: begin gear^.Radius:= cHHRadius + cBlowTorchC; - gear^.Timer:= 7500 + if gear^.Timer = 0 then gear^.Timer:= 7500 end; gtSwitcher: begin gear^.Z:= cCurrHHZ @@ -399,10 +402,8 @@ gear^.nImpactSounds:= 1; gear^.Radius:= 10; gear^.Elasticity:= _0_3; - gear^.Timer:= 0 end; gtTardis: begin - gear^.Timer:= 0; gear^.Pos:= 1; gear^.Z:= cCurrHHZ+1; end; @@ -438,7 +439,7 @@ gear^.Friction:= _0_96; gear^.Density:= _1_5; gear^.RenderTimer:= true; - gear^.Timer:= 5000 + if gear^.Timer = 0 then gear^.Timer:= 5000 end; gtDrill: begin if gear^.Timer = 0 then @@ -454,23 +455,23 @@ gear^.AdvBounce:= 1; gear^.Radius:= 5; gear^.Tag:= random(8); - gear^.Timer:= 5000; + if gear^.Timer = 0 then gear^.Timer:= 5000; gear^.Elasticity:= _0_7; gear^.Friction:= _0_995; gear^.Density:= _1_5; end; gtBallgun: begin - gear^.Timer:= 5001; + if gear^.Timer = 0 then gear^.Timer:= 5001; end; gtRCPlane: begin - gear^.Timer:= 15000; + if gear^.Timer = 0 then gear^.Timer:= 15000; gear^.Health:= 3; gear^.Radius:= 8 end; gtJetpack: begin gear^.Health:= 2000; gear^.Damage:= 100; - gear^.State:= gstSubmersible + gear^.State:= Gear^.State or gstSubmersible end; gtMolotov: begin gear^.Radius:= 6; @@ -478,7 +479,6 @@ end; gtBirdy: begin gear^.Radius:= 16; // todo: check - gear^.Timer:= 0; gear^.Health := 2000; gear^.FlightTime := 2; end; @@ -511,18 +511,18 @@ end; gtFlamethrower: begin gear^.Tag:= 10; - gear^.Timer:= 10; + if gear^.Timer = 0 then gear^.Timer:= 10; gear^.Health:= 500; gear^.Damage:= 100; end; gtLandGun: begin gear^.Tag:= 10; - gear^.Timer:= 10; + if gear^.Timer = 0 then gear^.Timer:= 10; gear^.Health:= 1000; gear^.Damage:= 100; end; gtPoisonCloud: begin - gear^.Timer:= 5000; + if gear^.Timer = 0 then gear^.Timer:= 5000; gear^.dY:= int2hwfloat(-4 + longint(getRandom(8))) / 1000; end; gtResurrector: begin @@ -533,7 +533,7 @@ gear^.Tag := 47; end; gtNapalmBomb: begin - gear^.Timer:= 1000; + if gear^.Timer = 0 then gear^.Timer:= 1000; gear^.Radius:= 5; gear^.Density:= _1_5; end;