# HG changeset patch # User unc0rr # Date 1124988358 0 # Node ID 0dafbd19a04c0e49d570bf2c72be210a65f30dac # Parent bcbd7adb4e4b15c6aa2887aa60620ab16dff5334 Show wind speed on bar diff -r bcbd7adb4e4b -r 0dafbd19a04c hedgewars/Data/Graphics/WindBar.png Binary file hedgewars/Data/Graphics/WindBar.png has changed diff -r bcbd7adb4e4b -r 0dafbd19a04c hedgewars/Data/Graphics/WindL.png Binary file hedgewars/Data/Graphics/WindL.png has changed diff -r bcbd7adb4e4b -r 0dafbd19a04c hedgewars/Data/Graphics/WindR.png Binary file hedgewars/Data/Graphics/WindR.png has changed diff -r bcbd7adb4e4b -r 0dafbd19a04c hedgewars/uConsts.pas --- a/hedgewars/uConsts.pas Tue Aug 23 16:17:53 2005 +0000 +++ b/hedgewars/uConsts.pas Thu Aug 25 16:45:58 2005 +0000 @@ -35,7 +35,8 @@ interface uses SDLh; {$INCLUDE options.inc} -type TStuff = (sHorizont, sSky, sConsoleBG, sPowerBar, sQuestion); +type TStuff = (sHorizont, sSky, sConsoleBG, sPowerBar, sQuestion, sWindBar, + sWindL, sWindR); TGameState = (gsLandGen, gsStart, gsGame, gsConsole, gsExit); TGameType = (gmtLocal, gmtDemo, gmtNet); TPathType = (ptData, ptGraphics, ptThemes, ptThemeCurrent, ptTeams, ptMaps, @@ -186,14 +187,20 @@ (FileName: 'Sky.png'; Path: ptThemeCurrent ), // sSky (FileName: 'Console.png'; Path: ptGraphics ), // sConsoleBG (FileName: 'PowerBar.png'; Path: ptGraphics ), // sPowerBar - (FileName: 'thinking.png'; Path: ptGraphics ) // sQuestion + (FileName: 'thinking.png'; Path: ptGraphics ), // sQuestion + (FileName: 'WindBar.png'; Path: ptGraphics ), // sWindBar + (FileName: 'WindL.png'; Path: ptGraphics ), // sWindL + (FileName: 'WindR.png'; Path: ptGraphics ) // sWindR ); StuffPoz: array[TStuff] of TSDL_Rect = ( (x: 0; y: 0; w: 512; h: 256), // sHorizont (x: 512; y: 0; w: 64; h:1024), // sSky (x: 256; y: 256; w: 256; h: 256), // sConsoleBG (x: 256; y: 768; w: 256; h: 32), // sPowerBar - (x: 256; y: 512; w: 32; h: 32) // sQuestion + (x: 256; y: 512; w: 32; h: 32), // sQuestion + (x: 256; y: 800; w: 151; h: 17), // sWindBar + (x: 256; y: 817; w: 80; h: 13), // sWindL + (x: 336; y: 817; w: 80; h: 13) // sWindR ); SpritesData: array[TSprite] of record FileName: String[31]; diff -r bcbd7adb4e4b -r 0dafbd19a04c hedgewars/uRandom.pas --- a/hedgewars/uRandom.pas Tue Aug 23 16:17:53 2005 +0000 +++ b/hedgewars/uRandom.pas Thu Aug 25 16:45:58 2005 +0000 @@ -68,7 +68,7 @@ SHA1Update(sc1, @Fill[1], Length(Fill)); sc2:= sc1; dig:= SHA1Final(sc1); -Result:= (((dig.LongWords[0] mod m) + (dig.LongWords[2] mod m)) mod m + (dig.LongWords[3] mod m)) mod m; +Result:= (dig.LongWords[0] + dig.LongWords[2] + dig.LongWords[3]) mod m; sc1:= sc2 end; diff -r bcbd7adb4e4b -r 0dafbd19a04c hedgewars/uTeams.pas --- a/hedgewars/uTeams.pas Tue Aug 23 16:17:53 2005 +0000 +++ b/hedgewars/uTeams.pas Thu Aug 25 16:45:58 2005 +0000 @@ -48,7 +48,7 @@ Team: PTeam; AttacksNum: Longword; visStepPos: LongWord; - BotLevel : LongWord; // 0 - человек + BotLevel : LongWord; // 0 - Human player end; THHAmmo = array[0..cMaxSlot, 0..cMaxSlotAmmo] of TAmmo; TTeam = record diff -r bcbd7adb4e4b -r 0dafbd19a04c hedgewars/uWorld.pas --- a/hedgewars/uWorld.pas Tue Aug 23 16:17:53 2005 +0000 +++ b/hedgewars/uWorld.pas Thu Aug 25 16:45:58 2005 +0000 @@ -78,7 +78,7 @@ r: TSDL_Rect; team: PTeam; begin -// синее небо +// Sky inc(RealTicks, Lag); r.h:= WorldDy; if r.h > 0 then @@ -89,22 +89,21 @@ r.w:= cScreenWidth; SDL_FillRect(Surface, @r, cSkyColor) end; -// задний фон +// background for i:= 0 to (cScreenWidth shr 6) do DrawGear(sSky, i*64, WorldDy, Surface); -for i:= -1 to 3 do // горизонт +for i:= -1 to 3 do DrawGear(sHorizont, i * 512 + (((WorldDx * 3) div 5) and $1FF), cWaterLine - 256 + WorldDy, Surface); -// волны +// Waves {$WARNINGS OFF} for i:= -1 to cWaterSprCount do DrawSprite(sprWater, i * 256 + ((WorldDx + (RealTicks shr 6) ) and $FF), cWaterLine + WorldDy - 40, (((GameTicks shr 7) + 2) mod 12), Surface); for i:= -1 to cWaterSprCount do DrawSprite(sprWater, i * 256 + ((WorldDx - (RealTicks shr 6) + 192) and $FF), cWaterLine + WorldDy - 30, (((GameTicks shr 7) + 8) mod 12), Surface); {$WARNINGS ON} -// поле DrawLand(WorldDx, WorldDy, Surface); -// вода +// Water r.y:= WorldDy + cWaterLine + 32; if r.y < cScreenHeight then begin @@ -123,7 +122,7 @@ with team.Hedgehogs[i] do if Gear<>nil then if Gear.State = 0 then - begin // ёжик не находится под управлением + begin DrawCaption( round(Gear.X) + WorldDx, round(Gear.Y) - cHHHalfHeight - 30 + WorldDy, HealthRect, Surface, true); @@ -133,9 +132,9 @@ // DrawCaption( round(Gear.X) + WorldDx, // round(Gear.Y) - Gear.HalfHeight - 60 + WorldDy, // Team.NameRect, Surface); - end else // ёжик, которым счас управляем + end else // Current hedgehog begin - if (Gear.State and (gstMoving or gstAttacked or gstDrowning or gstFalling))=0 then // рисуем прицел и, если бот думает, знак вопроса + if (Gear.State and (gstMoving or gstAttacked or gstDrowning or gstFalling))=0 then if (Gear.State and gstHHThinking) <> 0 then DrawGear(sQuestion, Round(Gear.X) - 10 + WorldDx, Round(Gear.Y) - cHHHalfHeight - 34 + WorldDy, Surface) else @@ -146,7 +145,7 @@ team:= team.Next end; -// волны +// Waves {$WARNINGS OFF} for i:= -1 to cWaterSprCount do DrawSprite(sprWater, i * 256 + ((WorldDx + (RealTicks shr 6) + 64) and $FF), cWaterLine + WorldDy - 20, (((GameTicks shr 7) + 4 ) mod 12), Surface); for i:= -1 to cWaterSprCount do DrawSprite(sprWater, i * 256 + ((WorldDx - (RealTicks shr 6) + 128) and $FF), cWaterLine + WorldDy - 10, (((GameTicks shr 7) + 10) mod 12), Surface); @@ -179,7 +178,7 @@ end; end; -// Указатель на цель +// Target if TargetPoint.X <> NoPointX then DrawSprite(sprTargetP, TargetPoint.X + WorldDx - 16, TargetPoint.Y + WorldDy - 16, 0, Surface); // Captions @@ -197,10 +196,36 @@ Captions[Pred(cMaxCaptions)].EndTime:= 0 end; -// Указание на лаг +// Lag alert if isInLag then DrawSprite(sprLag, 32, 32 + cConsoleYAdd, (RealTicks shr 7) mod 7, Surface); -// Курсор +// Wind bar +DrawGear(sWindBar, cScreenWidth - 180, cScreenHeight - 30, Surface); +if cWindSpeed > 0 then + begin + t:= round(72 * cWindSpeed / cMaxWindSpeed); + with StuffPoz[sWindR] do + begin + r.x:= x + 8 - (RealTicks shr 6) mod 8; + r.y:= y; + r.w:= t; + r.h:= 13; + end; + DrawSpriteFromRect(r, cScreenWidth - 103, cScreenHeight - 28, 13, 0, Surface); + end else + begin + t:= - round(72 * cWindSpeed / cMaxWindSpeed); + with StuffPoz[sWindL] do + begin + r.x:= x + (RealTicks shr 6) mod 8; + r.y:= y; + r.w:= t; + r.h:= 13; + end; + DrawSpriteFromRect(r, cScreenWidth - 106 - t, cScreenHeight - 28, 13, 0, Surface); + end; + +// Cursor if isCursorVisible then DrawSprite(sprArrow, CursorPoint.X, CursorPoint.Y, (RealTicks shr 6) mod 8, Surface); {$IFDEF COUNTTICKS}