diff -r 30b5fab302f6 -r eda8d563f677 hedgewars/uGearsRender.pas --- a/hedgewars/uGearsRender.pas Sun Jun 15 23:48:06 2014 +0200 +++ b/hedgewars/uGearsRender.pas Mon Jun 16 02:23:37 2014 +0200 @@ -963,12 +963,20 @@ if (cTagsMask and htHealth) <> 0 then ty := ty - HealthTagTex^.h - 2; tx := ox; - tx := round(max(((-cScreenWidth + 16) / cScaleFactor) + SpritesData[sprFinger].Width div 2, min(((cScreenWidth - 16) / cScaleFactor) - SpritesData[sprFinger].Width div 2, tx))); - ty := round(max(cScreenHeight div 2 - ((cScreenHeight - 16) / cScaleFactor) + SpritesData[sprFinger].Height div 2, min(cScreenHeight div 2 - ((-cScreenHeight + SpritesData[sprFinger].Height) / (cScaleFactor)) - SpritesData[sprFinger].Width div 2 - 96, ty))); + + // don't go offscreen + //tx := round(max(((-cScreenWidth + 16) / cScaleFactor) + SpritesData[sprFinger].Width div 2, min(((cScreenWidth - 16) / cScaleFactor) - SpritesData[sprFinger].Width div 2, tx))); + //ty := round(max(cScreenHeight div 2 - ((cScreenHeight - 16) / cScaleFactor) + SpritesData[sprFinger].Height div 2, min(cScreenHeight div 2 - ((-cScreenHeight + SpritesData[sprFinger].Height) / (cScaleFactor)) - SpritesData[sprFinger].Width div 2 - 96, ty))); + t:= 32;//trunc((SpritesData[sprFinger].Width + t) / cScaleFactor); + tx := min(max(tx, ViewLeftX + t), ViewRightX - t); + t:= 32;//trunc((SpritesData[sprFinger].Height + t) / cScaleFactor); + ty := min(ty, ViewBottomY - 96); + // don't overlap with HH or HH tags + if ty < ViewTopY + t then ty:= max(ViewTopY + t, oy + t); dAngle := DxDy2Angle(int2hwfloat(ty - oy), int2hwfloat(tx - ox)) + 90; - DrawSpriteRotatedF(sprFinger, tx, ty, GameTicks div 32 mod 16, 1, dAngle); + DrawSpriteRotatedF(sprFinger, tx, ty, RealTicks div 32 mod 16, 1, dAngle); end;