diff -r 7032f286301b -r a02adcdaa939 hedgewars/uWorld.pas --- a/hedgewars/uWorld.pas Thu Jun 25 10:50:44 2009 +0000 +++ b/hedgewars/uWorld.pas Fri Jun 26 19:40:10 2009 +0000 @@ -70,10 +70,9 @@ cWaveHeight:= SpritesData[sprWater].Height; cGearScrEdgesDist:= Min(cScreenWidth div 2 - 100, cScreenHeight div 2 - 50); SDL_WarpMouse(cScreenWidth div 2, cScreenHeight div 2); -prevPoint.X:= cScreenWidth div 2; +prevPoint.X:= 0; prevPoint.Y:= cScreenHeight div 2; WorldDx:= - (LAND_WIDTH div 2) + cScreenWidth div 2; -//WorldDy:= - (LAND_HEIGHT div 2) + cScreenHeight div 2; WorldDy:= - (LAND_HEIGHT - (playHeight div 2)) + (cScreenHeight div 2); AMxShift:= 210 end; @@ -98,7 +97,7 @@ CursorPoint.X:= cScreenWidth div 2; CursorPoint.Y:= cScreenHeight div 2; prevPoint:= CursorPoint; - SDL_WarpMouse(CursorPoint.X + cScreenWidth div 2, CursorPoint.Y) + SDL_WarpMouse(CursorPoint.X + cScreenWidth div 2, cScreenHeight - CursorPoint.Y) end; if cReducedQuality then AMxShift:= 210 @@ -124,7 +123,7 @@ for i:= cMaxSlotIndex downto 0 do if Ammo^[i, 0].Count > 0 then begin - if (CursorPoint.Y >= y - 33) and (CursorPoint.Y < y) then Slot:= i; + if (cScreenHeight - CursorPoint.Y >= y - 33) and (cScreenHeight - CursorPoint.Y < y) then Slot:= i; dec(y, 33); inc(SlotsNum); DrawSprite(sprAMSlot, x, y, 0); @@ -173,7 +172,7 @@ end; bSelected:= false; -if AMxShift = 0 then DrawSprite(sprArrow, CursorPoint.X, CursorPoint.Y, (RealTicks shr 6) mod 8) +if AMxShift = 0 then DrawSprite(sprArrow, CursorPoint.X, cScreenHeight - CursorPoint.Y, (RealTicks shr 6) mod 8) end; procedure MoveCamera; forward; @@ -406,10 +405,10 @@ with Ammoz[Ammo^[CurSlot, CurAmmo].AmmoType] do if PosCount > 1 then DrawSprite(PosSprite, CursorPoint.X - SpritesData[PosSprite].Width div 2, - CursorPoint.Y - SpritesData[PosSprite].Height div 2, + cScreenHeight - CursorPoint.Y - SpritesData[PosSprite].Height div 2, i); end; - DrawSprite(sprArrow, CursorPoint.X, CursorPoint.Y, (RealTicks shr 6) mod 8) + DrawSprite(sprArrow, CursorPoint.X, cScreenHeight - CursorPoint.Y, (RealTicks shr 6) mod 8) end; if isPaused then DrawCentered(cScreenWidth div 2, cScreenHeight div 2, PauseTexture); @@ -481,40 +480,38 @@ SDL_GetMouseState(@CursorPoint.X, @CursorPoint.Y); {$ENDIF} CursorPoint.X:= CursorPoint.X - cScreenWidth div 2; -// CursorPoint.X:= round((CursorPoint.X - cScreenWidth / 2) * 2 / cScaleFactor); -// CursorPoint.Y:= round(CursorPoint.Y * 2 / cScaleFactor); + CursorPoint.Y:= cScreenHeight - CursorPoint.Y; end; if (FollowGear <> nil) and (not isCursorVisible) then if abs(CursorPoint.X - prevPoint.X) + abs(CursorPoint.Y - prevpoint.Y) > 4 then begin FollowGear:= nil; - prevPoint.X:= CursorPoint.X; - prevPoint.Y:= CursorPoint.Y; + prevPoint:= CursorPoint; exit end else begin - //CursorPoint.x:= (prevPoint.x * 7 + (hwRound(FollowGear^.X) + hwSign(FollowGear^.dX) * 100) + WorldDx) div 8; - //CursorPoint.y:= (prevPoint.y * 7 + (hwRound(FollowGear^.Y) + WorldDy)) div 8 - CursorPoint.x:= (hwRound(FollowGear^.X) + hwSign(FollowGear^.dX) * 100) + WorldDx; + CursorPoint.x:= (hwRound(FollowGear^.X) + hwSign(FollowGear^.dX) * 100 + WorldDx); + //addcaption(inttostr(CursorPoint.X), $AFAFAF, capgrpGameState); + CursorPoint.y:= (prevPoint.y * 7 + cScreenHeight - (hwRound(FollowGear^.Y) + WorldDy)) div 8; end; -if ((CursorPoint.X = prevPoint.X)and(CursorPoint.Y = prevpoint.Y)) then exit; +if ((CursorPoint.X = prevPoint.X) and (CursorPoint.Y = prevpoint.Y)) then exit; if AMxShift < 210 then begin if CursorPoint.X < cScreenWidth div 2 + AMxShift - 175 then CursorPoint.X:= cScreenWidth div 2 + AMxShift - 175; if CursorPoint.X > cScreenWidth div 2 + AMxShift - 10 then CursorPoint.X:= cScreenWidth div 2 + AMxShift - 10; - if CursorPoint.Y < cScreenHeight - 75 - SlotsNum * 33 then CursorPoint.Y:= cScreenHeight - 75 - SlotsNum * 33; - if CursorPoint.Y > cScreenHeight - 76 then CursorPoint.Y:= cScreenHeight - 76; + if CursorPoint.Y > 75 + SlotsNum * 33 then CursorPoint.Y:= 75 + SlotsNum * 33; + if CursorPoint.Y < 76 then CursorPoint.Y:= 76; prevPoint:= CursorPoint; - if cHasFocus then SDL_WarpMouse(CursorPoint.X + cScreenWidth div 2, CursorPoint.Y); + if cHasFocus then SDL_WarpMouse(CursorPoint.X + cScreenWidth div 2, cScreenHeight - CursorPoint.Y); exit end; if isCursorVisible then begin - if (not CurrentTeam^.ExtDriven)and(GameTicks >= PrevSentPointTime + cSendCursorPosTime) then + if (not CurrentTeam^.ExtDriven) and (GameTicks >= PrevSentPointTime + cSendCursorPosTime) then begin SendIPCXY('P', CursorPoint.X - WorldDx, CursorPoint.Y - WorldDy); PrevSentPointTime:= GameTicks @@ -525,37 +522,37 @@ begin if isCursorVisible then EdgesDist:= cCursorEdgesDist else EdgesDist:= cGearScrEdgesDist; - if CursorPoint.X < - cw + EdgesDist then + if CursorPoint.X < - cScreenWidth div 2 + EdgesDist then begin - WorldDx:= WorldDx - CursorPoint.X - cw + EdgesDist; - CursorPoint.X:= EdgesDist + WorldDx:= WorldDx - CursorPoint.X - cScreenWidth div 2 + EdgesDist; + CursorPoint.X:= - cScreenWidth div 2 + EdgesDist end else - if CursorPoint.X > cw - EdgesDist then + if CursorPoint.X > cScreenWidth div 2 - EdgesDist then begin - WorldDx:= WorldDx - CursorPoint.X + cw - EdgesDist; - CursorPoint.X:= cScreenWidth - EdgesDist + WorldDx:= WorldDx - CursorPoint.X + cScreenWidth div 2 - EdgesDist; + CursorPoint.X:= cScreenWidth + cScreenWidth div 2 - EdgesDist end; if CursorPoint.Y < EdgesDist then begin - WorldDy:= WorldDy - CursorPoint.Y + EdgesDist; + WorldDy:= WorldDy + CursorPoint.Y - EdgesDist; CursorPoint.Y:= EdgesDist end else if CursorPoint.Y > cScreenHeight - EdgesDist then begin - WorldDy:= WorldDy - CursorPoint.Y + round(cScreenHeight * 2 / cScaleFactor) - EdgesDist; + WorldDy:= WorldDy + CursorPoint.Y - cScreenHeight + EdgesDist; CursorPoint.Y:= cScreenHeight - EdgesDist end; end else if cHasFocus then begin WorldDx:= WorldDx - CursorPoint.X + prevPoint.X; - WorldDy:= WorldDy - CursorPoint.Y + prevPoint.Y; + WorldDy:= WorldDy + CursorPoint.Y - prevPoint.Y; CursorPoint.X:= 0; CursorPoint.Y:= cScreenHeight div 2; end; -if cHasFocus then SDL_WarpMouse(CursorPoint.X + cScreenWidth div 2, CursorPoint.Y); prevPoint:= CursorPoint; +if cHasFocus then SDL_WarpMouse(CursorPoint.X + cScreenWidth div 2, cScreenHeight - CursorPoint.Y); if WorldDy < cScreenHeight - cWaterLine - cVisibleWater then WorldDy:= cScreenHeight - cWaterLine - cVisibleWater; if WorldDy > LAND_HEIGHT + 1024 then WorldDy:= LAND_HEIGHT + 1024; if WorldDx < -round(LAND_WIDTH * 2 / cScaleFactor) then WorldDx:= -round(LAND_WIDTH * 2 / cScaleFactor);