Changeset 548 for trunk/LocalPlayer


Ignore:
Timestamp:
Apr 21, 2024, 10:57:18 AM (4 weeks ago)
Author:
chronos
Message:
  • Fixed: Bad unit drawing in battle dialog.
  • Modified: Code cleanup.
Location:
trunk/LocalPlayer
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LocalPlayer/Battle.pas

    r505 r548  
    169169
    170170  IsoMap.SetOutput(Buffer);
    171   BitBltCanvas(Buffer.Canvas, 0, 0, 66, 48, ca, xm + 8 + 4,
    172     ym - 8 - 12 - 48);
     171  UnshareBitmap(Buffer);
     172  BitBltCanvas(Buffer.Canvas, 0, 0, 66, 48, ca, xm + 8 + 4, ym - 8 - 12 - 48);
    173173  { if TerrType<fForest then
    174174    Sprite(Buffer,HGrTerrain,0,16,66,32,1+TerrType*(xxt*2+1),1+yyt)
     
    181181    end; }
    182182  IsoMap.PaintUnit(1, 0, UnitInfo, 0);
    183   BitBltCanvas(ca, xm + 8 + 4, ym - 8 - 12 - 48, 66, 48, Buffer.Canvas,
    184     0, 0);
    185 
    186   BitBltCanvas(Buffer.Canvas, 0, 0, 66, 48, ca, xm - 8 - 4 - 66,
    187     ym + 8 + 12);
     183  BitBltCanvas(ca, xm + 8 + 4, ym - 8 - 12 - 48, 66, 48, Buffer.Canvas, 0, 0);
     184
     185  UnshareBitmap(Buffer);
     186  BitBltCanvas(Buffer.Canvas, 0, 0, 66, 48, ca, xm - 8 - 4 - 66, ym + 8 + 12);
    188187  MakeUnitInfo(Me, MyUn[uix], UnitInfo);
    189188  UnitInfo.Flags := UnitInfo.Flags and not unFortified;
  • trunk/LocalPlayer/CityScreen.pas

    r536 r548  
    13661366      and (Y >= ymOpt - 32) and (Y < ymOpt + 32) then
    13671367    begin
    1368       I := sqr(X - xmOpt) + sqr(Y - ymOpt); // click radius
     1368      I := Sqr(X - xmOpt) + Sqr(Y - ymOpt); // click radius
    13691369      if I <= 32 * 32 then
    13701370      begin
     
    13751375            I := 3 // rwGrowth
    13761376        else
    1377           case trunc(arctan2(X - xmOpt, ymOpt - Y) * 180 / pi) of
     1377          case Trunc(ArcTan2(X - xmOpt, ymOpt - Y) * 180 / Pi) of
    13781378            - 25 - 52 * 2 .. -26 - 52:
    13791379              I := 1;
  • trunk/LocalPlayer/IsoEngine.pas

    r538 r548  
    3636      Diry: array [0..7] of Integer = (-1, 0, 1, 2, 1, 0, -1, -2);
    3737    procedure CityGrid(xm, ym: Integer; CityAllowClick: Boolean);
     38    procedure ClippedLine(X, Y, dx0, dy0: Integer; Mirror: Boolean);
    3839    function IsShoreTile(Loc: Integer): Boolean;
    3940    procedure MakeDark(Line: PPixelPointer; Length: Integer);
     
    10531054  CityInfo: TCityInfo;
    10541055  UnitInfo: TUnitInfo;
    1055   fog: Boolean;
     1056  Fog: Boolean;
    10561057  SpecialRow: Integer;
    10571058  SpecialCol: Integer;
     
    11921193
    11931194  if moEditMode in MapOptions then
    1194     fog := (Loc < 0) or (Loc >= G.lx * G.ly)
    1195     // else if CityLoc>=0 then
    1196     // fog:= (Loc<0) or (Loc>=G.lx*G.ly) or (Distance(Loc,CityLoc)>5)
     1195    Fog := (Loc < 0) or (Loc >= G.lx * G.ly)
     1196    // else if CityLoc >= 0 then
     1197    // Fog:= (Loc < 0) or (Loc >= G.lx * G.ly) or (Distance(Loc, CityLoc) > 5)
    11971198  else if ShowGrWall then
    1198     fog := Tile and fGrWall = 0
     1199    Fog := Tile and fGrWall = 0
    11991200  else
    1200     fog := FoW and (Tile and fObserved = 0);
    1201   if fog and ShowObjects then
     1201    Fog := FoW and (Tile and fObserved = 0);
     1202  if Fog and ShowObjects then
    12021203    if Loc < -G.lx then
    12031204      Sprite(HGrTerrain, X, Y + yyt, xxt * 2, yyt, 1 + 6 * (xxt * 2 + 1),
     
    12981299end;
    12991300
     1301procedure TIsoMap.ClippedLine(X, Y, dx0, dy0: Integer; Mirror: Boolean);
     1302var
     1303  x0, x1, dxmin, dymin, dxmax, dymax, N: Integer;
     1304begin
     1305  with FOutput.Canvas do
     1306  begin
     1307    dxmin := (FLeft - X) div xxt;
     1308    dymin := (RealTop - Y) div yyt;
     1309    dxmax := (FRight - X - 1) div xxt + 1;
     1310    dymax := (RealBottom - Y - 1) div yyt + 1;
     1311    N := dymax - dy0;
     1312    if Mirror then
     1313    begin
     1314      if dx0 - dxmin < N then
     1315        N := dx0 - dxmin;
     1316      if dx0 > dxmax then
     1317      begin
     1318        N := N - (dx0 - dxmax);
     1319        dy0 := dy0 + (dx0 - dxmax);
     1320        dx0 := dxmax;
     1321      end;
     1322      if dy0 < dymin then
     1323      begin
     1324        N := N - (dymin - dy0);
     1325        dx0 := dx0 - (dymin - dy0);
     1326        dy0 := dymin;
     1327      end;
     1328    end
     1329    else
     1330    begin
     1331      if dxmax - dx0 < N then
     1332        N := dxmax - dx0;
     1333      if dx0 < dxmin then
     1334      begin
     1335        N := N - (dxmin - dx0);
     1336        dy0 := dy0 + (dxmin - dx0);
     1337        dx0 := dxmin;
     1338      end;
     1339      if dy0 < dymin then
     1340      begin
     1341        N := N - (dymin - dy0);
     1342        dx0 := dx0 + (dymin - dy0);
     1343        dy0 := dymin;
     1344      end;
     1345    end;
     1346    if N <= 0 then
     1347      Exit;
     1348    if Mirror then
     1349    begin
     1350      x0 := X + dx0 * xxt - 1;
     1351      x1 := X + (dx0 - N) * xxt - 1;
     1352    end
     1353    else
     1354    begin
     1355      x0 := X + dx0 * xxt;
     1356      x1 := X + (dx0 + N) * xxt;
     1357    end;
     1358    MoveTo(x0, Y + dy0 * yyt);
     1359    LineTo(x1, Y + (dy0 + N) * yyt);
     1360  end;
     1361end;
     1362
    13001363procedure TIsoMap.PaintGrid(X, Y, nx, ny: Integer);
    1301 
    1302   procedure ClippedLine(dx0, dy0: Integer; Mirror: Boolean);
    1303   var
    1304     x0, x1, dxmin, dymin, dxmax, dymax, N: Integer;
    1305   begin
    1306     with FOutput.Canvas do
    1307     begin
    1308       dxmin := (FLeft - X) div xxt;
    1309       dymin := (RealTop - Y) div yyt;
    1310       dxmax := (FRight - X - 1) div xxt + 1;
    1311       dymax := (RealBottom - Y - 1) div yyt + 1;
    1312       N := dymax - dy0;
    1313       if Mirror then
    1314       begin
    1315         if dx0 - dxmin < N then
    1316           N := dx0 - dxmin;
    1317         if dx0 > dxmax then
    1318         begin
    1319           N := N - (dx0 - dxmax);
    1320           dy0 := dy0 + (dx0 - dxmax);
    1321           dx0 := dxmax;
    1322         end;
    1323         if dy0 < dymin then
    1324         begin
    1325           N := N - (dymin - dy0);
    1326           dx0 := dx0 - (dymin - dy0);
    1327           dy0 := dymin;
    1328         end;
    1329       end
    1330       else
    1331       begin
    1332         if dxmax - dx0 < N then
    1333           N := dxmax - dx0;
    1334         if dx0 < dxmin then
    1335         begin
    1336           N := N - (dxmin - dx0);
    1337           dy0 := dy0 + (dxmin - dx0);
    1338           dx0 := dxmin;
    1339         end;
    1340         if dy0 < dymin then
    1341         begin
    1342           N := N - (dymin - dy0);
    1343           dx0 := dx0 + (dymin - dy0);
    1344           dy0 := dymin;
    1345         end;
    1346       end;
    1347       if N <= 0 then
    1348         Exit;
    1349       if Mirror then
    1350       begin
    1351         x0 := X + dx0 * xxt - 1;
    1352         x1 := X + (dx0 - N) * xxt - 1;
    1353       end
    1354       else
    1355       begin
    1356         x0 := X + dx0 * xxt;
    1357         x1 := X + (dx0 + N) * xxt;
    1358       end;
    1359       MoveTo(x0, Y + dy0 * yyt);
    1360       LineTo(x1, Y + (dy0 + N) * yyt);
    1361     end;
    1362   end;
    1363 
    13641364var
    13651365  I: Integer;
    13661366begin
    1367   FOutput.Canvas.pen.Color := $000000; // $FF shl (8 * Random(3));
     1367  FOutput.Canvas.Pen.Color := $000000; // $FF shl (8 * Random(3));
    13681368  for I := 0 to nx div 2 do
    1369     ClippedLine(I * 2, 0, False);
     1369    ClippedLine(X, Y, I * 2, 0, False);
    13701370  for I := 1 to (nx + 1) div 2 do
    1371     ClippedLine(I * 2, 0, True);
     1371    ClippedLine(X, Y, I * 2, 0, True);
    13721372  for I := 0 to ny div 2 do
    13731373  begin
    1374     ClippedLine(0, 2 * I + 2, False);
    1375     ClippedLine(nx + 1, 2 * I + 1 + nx and 1, True);
     1374    ClippedLine(X, Y, 0, 2 * I + 2, False);
     1375    ClippedLine(X, Y, nx + 1, 2 * I + 1 + nx and 1, True);
    13761376  end;
    13771377end;
     
    14251425    if Abs(y_n) < rShade then begin
    14261426      // Darken left and right parts of elipsis
    1427       w_n := sqrt(sqr(rShade) - sqr(y_n));
    1428       wBright := trunc(w_n * xxt + 0.5);
     1427      w_n := Sqrt(Sqr(rShade) - Sqr(y_n));
     1428      wBright := Trunc(w_n * xxt + 0.5);
    14291429      Line.SetX(0);
    14301430      MakeDark(@Line, ScaleToNative(xm - wBright));
  • trunk/LocalPlayer/Wonders.pas

    r530 r548  
    8888const
    8989  Darken = 24;
    90   // space=pi/120;
     90  // space = Pi / 120;
    9191  amax0 = 15734; // 1 shl 16*tan(pi/12-space);
    9292  amin1 = 19413; // 1 shl 16*tan(pi/12+space);
Note: See TracChangeset for help on using the changeset viewer.