- Added virtual getters for Z and TileID to TWorldItem
- Added ghost information to TMap - Added ghost tiles (currently for map tiles only)
This commit is contained in:
@@ -43,11 +43,21 @@ type
|
||||
TMapCell = class(TWorldItem)
|
||||
constructor Create(AOwner: TWorldBlock; AData: TStream; AX, AY: Word); overload;
|
||||
constructor Create(AOwner: TWorldBlock; AData: TStream); overload;
|
||||
protected
|
||||
FIsGhost: Boolean;
|
||||
FGhostZ: ShortInt;
|
||||
FGhostID: Word;
|
||||
function GetTileID: Word; override;
|
||||
function GetZ: ShortInt; override;
|
||||
public
|
||||
property Altitude: ShortInt read GetZ write SetZ;
|
||||
property IsGhost: Boolean read FIsGhost write FIsGhost;
|
||||
property GhostZ: ShortInt write FGhostZ;
|
||||
property GhostID: Word write FGhostID;
|
||||
|
||||
function Clone: TMapCell; override;
|
||||
function GetSize: Integer; override;
|
||||
procedure Write(AData: TStream); override;
|
||||
public
|
||||
property Altitude: ShortInt read FZ write FZ;
|
||||
end;
|
||||
|
||||
TMapCellList = specialize TFPGObjectList<TMapCell>;
|
||||
@@ -58,14 +68,14 @@ type
|
||||
constructor Create(AData: TStream; AX, AY: Word); overload;
|
||||
constructor Create(AData: TStream); overload;
|
||||
destructor Destroy; override;
|
||||
function Clone: TMapBlock; override;
|
||||
function GetSize: Integer; override;
|
||||
procedure Write(AData: TStream); override;
|
||||
protected
|
||||
FHeader: LongInt;
|
||||
public
|
||||
Cells: array[0..63] of TMapCell;
|
||||
property Header: LongInt read FHeader write FHeader;
|
||||
function Clone: TMapBlock; override;
|
||||
function GetSize: Integer; override;
|
||||
procedure Write(AData: TStream); override;
|
||||
end;
|
||||
|
||||
function GetMapCellOffset(ABlock: Integer): Integer;
|
||||
@@ -87,13 +97,17 @@ end;
|
||||
constructor TMapCell.Create(AOwner: TWorldBlock; AData: TStream; AX, AY: Word);
|
||||
begin
|
||||
inherited Create(AOwner);
|
||||
|
||||
FX := AX;
|
||||
FY := AY;
|
||||
if assigned(AData) then
|
||||
if AData <> nil then
|
||||
begin
|
||||
AData.Read(FTileID, SizeOf(Word));
|
||||
AData.Read(FZ, SizeOf(ShortInt));
|
||||
end;
|
||||
|
||||
FIsGhost := False;
|
||||
|
||||
InitOriginalState;
|
||||
end;
|
||||
|
||||
@@ -102,6 +116,22 @@ begin
|
||||
Create(AOwner, AData, 0, 0);
|
||||
end;
|
||||
|
||||
function TMapCell.GetTileID: Word;
|
||||
begin
|
||||
if FIsGhost then
|
||||
Result := FGhostID
|
||||
else
|
||||
Result := FTileID;
|
||||
end;
|
||||
|
||||
function TMapCell.GetZ: ShortInt;
|
||||
begin
|
||||
if FIsGhost then
|
||||
Result := FGhostZ
|
||||
else
|
||||
Result := FZ;
|
||||
end;
|
||||
|
||||
function TMapCell.Clone: TMapCell;
|
||||
begin
|
||||
Result := TMapCell.Create(nil, nil);
|
||||
|
||||
@@ -52,6 +52,8 @@ type
|
||||
FPriority: Integer;
|
||||
FPriorityBonus: ShortInt;
|
||||
FPrioritySolver: Integer;
|
||||
function GetTileID: Word; virtual;
|
||||
function GetZ: ShortInt; virtual;
|
||||
procedure SetTileID(ATileID: Word);
|
||||
procedure SetX(AX: Word);
|
||||
procedure SetY(AY: Word);
|
||||
@@ -65,11 +67,12 @@ type
|
||||
procedure UpdatePos(AX, AY: Word; AZ: ShortInt);
|
||||
procedure Delete;
|
||||
procedure InitOriginalState; virtual;
|
||||
|
||||
property Owner: TWorldBlock read FOwner write SetOwner;
|
||||
property TileID: Word read FTileID write SetTileID;
|
||||
property TileID: Word read GetTileID write SetTileID;
|
||||
property X: Word read FX write SetX;
|
||||
property Y: Word read FY write SetY;
|
||||
property Z: ShortInt read FZ write SetZ;
|
||||
property Z: ShortInt read GetZ write SetZ;
|
||||
property Selected: Boolean read FSelected write SetSelected;
|
||||
property CanBeEdited: Boolean read FCanBeEdited write FCanBeEdited;
|
||||
property Locked: Boolean read FLocked write SetLocked;
|
||||
@@ -77,6 +80,9 @@ type
|
||||
property Priority: Integer read FPriority write FPriority;
|
||||
property PriorityBonus: ShortInt read FPriorityBonus write FPriorityBonus;
|
||||
property PrioritySolver: Integer read FPrioritySolver write FPrioritySolver;
|
||||
|
||||
property RawTileID: Word read FTileID;
|
||||
property RawZ: ShortInt read FZ;
|
||||
end;
|
||||
|
||||
TWorldItemList = specialize TFPGObjectList<TWorldItem>;
|
||||
@@ -151,6 +157,16 @@ begin
|
||||
FOwner := AOwner;
|
||||
end;
|
||||
|
||||
function TWorldItem.GetTileID: Word;
|
||||
begin
|
||||
Result := FTileID;
|
||||
end;
|
||||
|
||||
function TWorldItem.GetZ: ShortInt;
|
||||
begin
|
||||
Result := FZ;
|
||||
end;
|
||||
|
||||
procedure TWorldItem.Delete;
|
||||
begin
|
||||
SetSelected(False);
|
||||
|
||||
Reference in New Issue
Block a user