Changeset 235 for trunk/UMapType.pas
- Timestamp:
- Sep 20, 2018, 11:44:42 AM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/UMapType.pas
r232 r235 7 7 uses 8 8 Classes, SysUtils, XMLRead, XMLWrite, DOM, UGeometry, fgl, UMap; 9 10 const11 SquareCellMulX = 1.05;12 SquareCellMulY = 1.05;13 TriangleCellMulX = 0.55;14 TriangleCellMulY = 1.05;15 9 16 10 type … … 32 26 function GetHexagonPolygon(Pos: TPoint; Size: TPoint): TPolygon; 33 27 public 28 function CalculatePixelRect: TRect; override; 34 29 procedure LoadFromFile(FileName: string); override; 35 30 procedure SaveToFile(FileName: string); override; … … 41 36 TSquareMap = class(TMap) 42 37 private 38 const 39 CellMulX = 1.05; 40 CellMulY = 1.05; 43 41 function GetSquarePolygon(Pos: TPoint; Size: TPoint): TPolygon; 44 42 public 45 43 procedure Generate; override; 44 function CalculatePixelRect: TRect; override; 46 45 end; 47 46 … … 50 49 TTriangleMap = class(TMap) 51 50 private 51 const 52 CellMulX = 0.55; 53 CellMulY = 1.05; 52 54 function GetTrianglePolygon(Pos: TPoint; Size: TPoint; Reverse: Boolean): TPolygon; 53 55 public 54 56 procedure Generate; override; 57 function CalculatePixelRect: TRect; override; 55 58 end; 56 59 … … 61 64 public 62 65 procedure Generate; override; 66 function CalculatePixelRect: TRect; override; 63 67 end; 64 68 … … 73 77 public 74 78 procedure Generate; override; 79 function CalculatePixelRect: TRect; override; 75 80 end; 76 81 … … 147 152 148 153 FPixelRect := CalculatePixelRect; 154 end; 155 156 function TIsometricMap.CalculatePixelRect: TRect; 157 begin 158 Result := inherited CalculatePixelRect; 159 Result.P2 := Result.P2 - TPoint.Create( 160 Trunc(0.45 * DefaultCellSize.X / CellMulX), 161 Trunc(0.90 * DefaultCellSize.Y / CellMulY) 162 ); 149 163 end; 150 164 … … 165 179 Result.Points[4] := TPoint.Create(Trunc(Pos.X - Shift.X * Size.X), Trunc(Pos.Y + Shift.Y * Size.Y)); 166 180 Result.Points[5] := TPoint.Create(Trunc(Pos.X - Shift.X * Size.X), Trunc(Pos.Y - Shift.Y * Size.Y)); 181 end; 182 183 function THexMap.CalculatePixelRect: TRect; 184 var 185 Shift: TPointF; 186 Angle: Double; 187 begin 188 Result := inherited CalculatePixelRect; 189 Angle := 30 / 180 * Pi; 190 Shift := TPointF.Create(0.5, 0.5) * TPointF.Create(Cos(Angle), Sin(Angle)); 191 Result.P2 := Result.P2 - TPoint.Create( 192 Trunc(0.47 * DefaultCellSize.X / CellMulX), 193 Trunc(1.2 * Shift.Y * DefaultCellSize.Y / CellMulY) 194 ); 167 195 end; 168 196 … … 293 321 NewCell := TCell.Create; 294 322 NewCell.Map := Self; 295 NewCell.PosPx := TPoint.Create(Trunc(X * DefaultCellSize.X * SquareCellMulX),296 Trunc(Y * DefaultCellSize.Y * SquareCellMulY));323 NewCell.PosPx := TPoint.Create(Trunc(X * DefaultCellSize.X * CellMulX), 324 Trunc(Y * DefaultCellSize.Y * CellMulY)); 297 325 NewCell.Polygon := GetSquarePolygon(NewCell.PosPx, DefaultCellSize); 298 326 NewCell.Id := GetNewCellId; … … 330 358 331 359 FPixelRect := CalculatePixelRect; 360 end; 361 362 function TSquareMap.CalculatePixelRect: TRect; 363 begin 364 Result := inherited CalculatePixelRect; 365 Result.P2 := Result.P2 + TPoint.Create( 366 Trunc(0.05 * DefaultCellSize.X / CellMulX), 367 Trunc(0.05 * DefaultCellSize.Y / CellMulY) 368 ); 332 369 end; 333 370 … … 413 450 end; 414 451 452 function TVoronoiMap.CalculatePixelRect: TRect; 453 begin 454 Result := inherited CalculatePixelRect; 455 Result.P2 := Result.P2 + TPoint.Create( 456 Trunc(0.02 * DefaultCellSize.X), 457 Trunc(0.02 * DefaultCellSize.Y) 458 ); 459 end; 460 415 461 { TTriangleMap } 416 462 … … 447 493 if Reverse then Rev := -1 448 494 else Rev := 1; 449 NewCell.PosPx := TPoint.Create(Trunc(X * DefaultCellSize.X * TriangleCellMulX),450 Trunc((Y * DefaultCellSize.Y * TriangleCellMulY) - (0.1 * Rev * DefaultCellSize.Y)));495 NewCell.PosPx := TPoint.Create(Trunc(X * DefaultCellSize.X * CellMulX), 496 Trunc((Y * DefaultCellSize.Y * CellMulY) - (0.1 * Rev * DefaultCellSize.Y))); 451 497 NewCell.Polygon := GetTrianglePolygon(NewCell.PosPx, DefaultCellSize, Reverse); 452 498 NewCell.Id := GetNewCellId; … … 483 529 end; 484 530 531 function TTriangleMap.CalculatePixelRect: TRect; 532 begin 533 Result := inherited CalculatePixelRect; 534 Result.P2 := Result.P2 + TPoint.Create( 535 Trunc(0.05 * DefaultCellSize.X / CellMulX - 0.30 * DefaultCellSize.X / CellMulX), 536 Trunc(0.05 * DefaultCellSize.Y / CellMulY) 537 ); 538 end; 539 485 540 486 541 end.
Note:
See TracChangeset
for help on using the changeset viewer.