- Added generic tiledata access to TTileDataProvider (to avoid cloning)

- Fixed TfrmMain.BuildTileList to use that non-cloning tiledata access to remove a memory leak
- Convert the filter text to ISO8859-1 first
This commit is contained in:
2009-12-10 22:18:25 +01:00
parent 34765f7235
commit 908bddda07
2 changed files with 16 additions and 3 deletions

View File

@@ -35,6 +35,9 @@ uses
type
TLandTileDataArray = array[$0..$3FFF] of TLandTileData;
TStaticTileDataArray = array[$0..$3FFF] of TStaticTileData;
{ TTiledataProvider }
TTiledataProvider = class(TMulProvider)
constructor Create(AData: TStream; AReadOnly: Boolean = False); overload; override;
constructor Create(AData: string; AReadOnly: Boolean = False); overload; override;
@@ -46,10 +49,12 @@ type
function CalculateOffset(AID: Integer): Integer; override;
function GetData(AID, AOffset: Integer): TMulBlock; override;
procedure SetData(AID, AOffset: Integer; ABlock: TMulBlock); override;
function GetTileData(AID: Integer): TTiledata;
public
function GetBlock(AID: Integer): TMulBlock; override;
property LandTiles: TLandTileDataArray read FLandTiles;
property StaticTiles: TStaticTileDataArray read FStaticTiles;
property TileData[AID: Integer]: TTiledata read GetTileData; //all tiles, no cloning
end;
implementation
@@ -139,5 +144,13 @@ begin
end;
end;
function TTiledataProvider.GetTileData(AID: Integer): TTiledata;
begin
if AID < $4000 then
Result := FLandTiles[AID]
else
Result := FStaticTiles[AID - $4000];
end;
end.