# HG changeset patch # User Anton Malmygin # Date 1558034787 -7200 # Node ID 9719a998670b56e0e287d446c8e760410151fac8 # Parent 65be598c64b93bc6ae75362bdeab82c659db5b31# Parent 6b5efc69047231d6e03b26a7b4cea19da0d86a24 Merge pull request #63 from hedgewars/ci-patch-osx-server Update hedgewars-server.cabal diff -r 6b5efc690472 -r 9719a998670b ChangeLog.txt --- a/ChangeLog.txt Thu May 16 00:17:49 2019 +0200 +++ b/ChangeLog.txt Thu May 16 21:26:27 2019 +0200 @@ -78,6 +78,7 @@ * Fix birdy being drawn behind hedgehogs and objects Game HUD: + + Display current hog health at top right corner + Colorize switching arrows, pointing arrow and target cross in clan color + Skip ammo menu animation when playing with turn time of 10s or less + Don't show crate spawn message for initial crates in missions diff -r 6b5efc690472 -r 9719a998670b hedgewars/uGearsList.pas --- a/hedgewars/uGearsList.pas Thu May 16 00:17:49 2019 +0200 +++ b/hedgewars/uGearsList.pas Thu May 16 21:26:27 2019 +0200 @@ -667,7 +667,7 @@ gear^.Radius:= 16; // todo: check gear^.Health := 2000; gear^.FlightTime := 2; - gear^.Z:= cCurrHHZ+1; + gear^.Z:= cCurrHHZ; end; gtEgg: begin gear^.AdvBounce:= 1; diff -r 6b5efc690472 -r 9719a998670b hedgewars/uTypes.pas --- a/hedgewars/uTypes.pas Thu May 16 00:17:49 2019 +0200 +++ b/hedgewars/uTypes.pas Thu May 16 21:26:27 2019 +0200 @@ -92,7 +92,9 @@ sprFrozenHog, sprAmRubber, sprBoing, sprCustom1, sprCustom2, sprCustom3, sprCustom4, sprCustom5, sprCustom6, sprCustom7, sprCustom8, sprFrozenAirMine, sprAirMine, sprHandAirMine, sprFlakeL, sprSDFlakeL, sprCloudL, sprSDCloudL, sprCreeper, sprHandCreeper, sprMinigun, - sprSliderInverted, sprFingerBack, sprFingerBackInv, sprTargetPBack, sprTargetPBackInv + sprSliderInverted, sprFingerBack, sprFingerBackInv, sprTargetPBack, sprTargetPBackInv, + sprHealthHud, sprHealthPoisonHud, sprVampHud, sprKarmaHud, sprMedicHud, sprMedicPoisonHud, + sprHaloHud, sprInvulnHUD ); // Gears that interact with other Gears and/or Land diff -r 6b5efc690472 -r 9719a998670b hedgewars/uVariables.pas --- a/hedgewars/uVariables.pas Thu May 16 00:17:49 2019 +0200 +++ b/hedgewars/uVariables.pas Thu May 16 21:26:27 2019 +0200 @@ -220,6 +220,7 @@ cZoomDelta : real; cZoomDeltaSmall : real; cMinMaxZoomLevelDelta : real; + cDemoClockFPSOffsetY : LongInt; flagMakeCapture : boolean; @@ -822,7 +823,23 @@ (FileName: 'TargetpBack'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprTargetPBack (FileName: 'TargetpBackInv'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true)// sprTargetPBackInv + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprTargetPBackInv + (FileName: 'HealthHUD'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 18; Height: 18; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHealthHud + (FileName: 'HealthPoisonHUD'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 18; Height: 18; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHealthPoisonHud + (FileName: 'VampHUD'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 24; Height: 18; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprVampHUD + (FileName: 'KarmaHUD'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 18; Height: 18; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprKarmaHUD + (FileName: 'MedicHUD'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 18; Height: 18; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprMedicHud + (FileName: 'MedicPoisonHUD'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 18; Height: 18; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprMedicPoisonHud + (FileName: 'HaloHUD'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 22; Height: 11; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHaloHUD + (FileName: 'InvulnHUD'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 18; Height: 18; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true)// sprInvulnHUD ); @@ -2825,6 +2842,8 @@ cMinMaxZoomLevelDelta:= cMaxZoomLevel - cMinZoomLevel; + cDemoClockFPSOffsetY := 0; + // int, longint longword and byte CursorMovementX := 0; CursorMovementY := 0; diff -r 6b5efc690472 -r 9719a998670b hedgewars/uWorld.pas --- a/hedgewars/uWorld.pas Thu May 16 00:17:49 2019 +0200 +++ b/hedgewars/uWorld.pas Thu May 16 21:26:27 2019 +0200 @@ -1584,6 +1584,71 @@ if (UIDisplay = uiAll) and (isNotHiddenByCinematic) then RenderTeamsHealth; +// Current hedgehog health in top left corner +if ((UIDisplay = uiAll) or (UIDisplay = uiNoTeams)) and (isNotHiddenByCinematic) and + (CurrentHedgehog <> nil) and (CurrentHedgehog^.Gear <> nil) and + (CurrentHedgehog^.HealthTagTex <> nil) and + ((CurrentHedgehog^.Gear^.State and gstHHDriven) <> 0) then + begin + t:= 11; + i:= t; +{$IFDEF USE_TOUCH_INTERFACE} + i:= t + pauseButton.frame.y + pauseButton.frame.h; +{$ENDIF} + + // Hide health and healh icons in gfInvulnerable mode (except heResurrectable) + if ((GameFlags and gfInvulnerable) = 0) then + begin + // Health tag + DrawTexture(cScreenWidth div 2 - CurrentHedgehog^.HealthTagTex^.w - 16, i, CurrentHedgehog^.HealthTagTex); + inc(t, CurrentHedgehog^.HealthTagTex^.h); + cDemoClockFPSOffsetY:= t; + + t:= SpritesData[sprHealthHud].Width + 18; + // Main health icon. Appearance depends on game mode and poisoning state + if ((GameFlags and gfResetHealth) = 0) then + if (CurrentHedgehog^.Effects[hePoisoned] <> 0) then + DrawSprite(sprHealthPoisonHud, (cScreenWidth div 2 - CurrentHedgehog^.HealthTagTex^.w - t), i, 0) + else + DrawSprite(sprHealthHud, (cScreenWidth div 2 - CurrentHedgehog^.HealthTagTex^.w - t), i, 0) + else + if (CurrentHedgehog^.Effects[hePoisoned] <> 0) then + DrawSprite(sprMedicPoisonHud, (cScreenWidth div 2 - CurrentHedgehog^.HealthTagTex^.w - t), i, 0) + else + DrawSprite(sprMedicHud, (cScreenWidth div 2 - CurrentHedgehog^.HealthTagTex^.w - t), i, 0); + // Put halo above health icon for resurrectable hog + if (CurrentHedgehog^.Effects[heResurrectable] <> 0) then + DrawSprite(sprHaloHud, (cScreenWidth div 2 - CurrentHedgehog^.HealthTagTex^.w - t - 2), i - SpritesData[sprHaloHud].Height + 1, 0); + + // Additional health-related states + inc(t, 2); + // Invulnerable + if (CurrentHedgehog^.Effects[heInvulnerable] <> 0) then + begin + inc(t, SpritesData[sprInvulnHud].Width + 2); + DrawSprite(sprInvulnHud, (cScreenWidth div 2 - CurrentHedgehog^.HealthTagTex^.w - t), i, 0) + end + // Karma + else if ((GameFlags and gfKarma) <> 0) then + begin + inc(t, SpritesData[sprKarmaHud].Width + 2); + DrawSprite(sprKarmaHud, (cScreenWidth div 2 - CurrentHedgehog^.HealthTagTex^.w - t), i, 0) + end; + // Vampirism + if cVampiric then + begin + inc(t, SpritesData[sprVampHud].Width + 2); + DrawSprite(sprVampHud, (cScreenWidth div 2 - CurrentHedgehog^.HealthTagTex^.w - t), i, 0); + end; + end + // in gfInvulnerable mode ... + else if (CurrentHedgehog^.Effects[heResurrectable] <> 0) then + // show halo for resurrectable hog + DrawSprite(sprHaloHud, (cScreenWidth div 2 - CurrentHedgehog^.HealthTagTex^.w - t - 2), i, 0); + end +else + cDemoClockFPSOffsetY:= 0; + // Wind bar if (UIDisplay <> uiNone) and (isNotHiddenByCinematic) then begin @@ -1734,11 +1799,11 @@ // FPS and demo replay time {$IFDEF USE_TOUCH_INTERFACE} -offsetX:= pauseButton.frame.y + pauseButton.frame.h + 12; +offsetY:= cDemoClockFPSOffsetY + 10 + pauseButton.frame.y + pauseButton.frame.h; {$ELSE} -offsetX:= 10; +offsetY:= cDemoClockFPSOffsetY + 10; {$ENDIF} -offsetY:= cOffsetY; +offsetX:= cOffsetY; if (RM = rmDefault) or (RM = rmRightEye) then begin inc(Frames); @@ -1769,11 +1834,11 @@ SDL_FreeSurface(tmpSurface) end; - if timeTexture <> nil then - DrawTexture((cScreenWidth shr 1) - 20 - timeTexture^.w - offsetY, offsetX + timeTexture^.h+5, timeTexture); + if (timeTexture <> nil) and (UIDisplay <> uiNone) then + DrawTexture((cScreenWidth shr 1) - 20 - timeTexture^.w - offsetX, offsetY, timeTexture); // FPS counter - if cShowFPS then + if cShowFPS and (UIDisplay <> uiNone) then begin if CountTicks >= 1000 then begin @@ -1788,7 +1853,13 @@ SDL_FreeSurface(tmpSurface) end; if fpsTexture <> nil then - DrawTexture((cScreenWidth shr 1) - 20 - fpsTexture^.w - offsetY, offsetX, fpsTexture); + begin + if timeTexture <> nil then + i:= fpsTexture^.h + 5 + else + i:= 0; + DrawTexture((cScreenWidth shr 1) - 60 - offsetX, offsetY + i, fpsTexture); + end; end; end; diff -r 6b5efc690472 -r 9719a998670b share/hedgewars/Data/Graphics/HaloHUD.png Binary file share/hedgewars/Data/Graphics/HaloHUD.png has changed diff -r 6b5efc690472 -r 9719a998670b share/hedgewars/Data/Graphics/HealthHUD.png Binary file share/hedgewars/Data/Graphics/HealthHUD.png has changed diff -r 6b5efc690472 -r 9719a998670b share/hedgewars/Data/Graphics/HealthPoisonHUD.png Binary file share/hedgewars/Data/Graphics/HealthPoisonHUD.png has changed diff -r 6b5efc690472 -r 9719a998670b share/hedgewars/Data/Graphics/InvulnHUD.png Binary file share/hedgewars/Data/Graphics/InvulnHUD.png has changed diff -r 6b5efc690472 -r 9719a998670b share/hedgewars/Data/Graphics/KarmaHUD.png Binary file share/hedgewars/Data/Graphics/KarmaHUD.png has changed diff -r 6b5efc690472 -r 9719a998670b share/hedgewars/Data/Graphics/MedicHUD.png Binary file share/hedgewars/Data/Graphics/MedicHUD.png has changed diff -r 6b5efc690472 -r 9719a998670b share/hedgewars/Data/Graphics/MedicPoisonHUD.png Binary file share/hedgewars/Data/Graphics/MedicPoisonHUD.png has changed diff -r 6b5efc690472 -r 9719a998670b share/hedgewars/Data/Graphics/VampHUD.png Binary file share/hedgewars/Data/Graphics/VampHUD.png has changed diff -r 6b5efc690472 -r 9719a998670b share/hedgewars/Data/Missions/Training/Basic_Training_-_Movement.lua --- a/share/hedgewars/Data/Missions/Training/Basic_Training_-_Movement.lua Thu May 16 00:17:49 2019 +0200 +++ b/share/hedgewars/Data/Missions/Training/Basic_Training_-_Movement.lua Thu May 16 21:26:27 2019 +0200 @@ -408,8 +408,9 @@ loc("Zoom: [Pinch] with 2 fingers") end ShowMission(loc("Basic Movement Training"), loc("Health"), loc("You just got yourself some extra health.|The more health your hedgehogs have, the better!").."|".. + loc("The health of your current hedgehog|is shown at the top right corner.").."|".. loc("Now go to the next crate.").."|".. - ctrl, 2, 10000) + ctrl, 2, 11500) elseif gear == crates[10] then -- FIXME: This crate is unused in touch atm ShowMission(loc("Basic Movement Training"), loc("Turning Around"),