🚧 Implement actions as objects
This commit is contained in:
@@ -299,6 +299,18 @@ type
|
||||
{ Events }
|
||||
procedure OnTileRemoved(ATile: TMulBlock);
|
||||
end;
|
||||
|
||||
{ TScreenBufferItemEnumerator }
|
||||
|
||||
TScreenBufferItemEnumerator = object
|
||||
private
|
||||
FScreenBuffer: TScreenBuffer;
|
||||
FCurrentBlock: PBlockInfo;
|
||||
FCurrentItem: TWorldItem;
|
||||
public
|
||||
function MoveNext: Boolean;
|
||||
property Current: TWorldItem read FCurrentItem;
|
||||
end;
|
||||
|
||||
TStaticInfo = packed record
|
||||
X: Word;
|
||||
@@ -308,6 +320,8 @@ type
|
||||
Hue: Word;
|
||||
end;
|
||||
|
||||
operator enumerator(AScreenBuffer: TScreenBuffer): TScreenBufferItemEnumerator;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
@@ -325,6 +339,21 @@ begin
|
||||
GLVector[2] := AVector.data[2];
|
||||
end;
|
||||
|
||||
operator enumerator(AScreenBuffer: TScreenBuffer): TScreenBufferItemEnumerator;
|
||||
begin
|
||||
Result.FScreenBuffer := AScreenBuffer;
|
||||
Result.MoveNext;
|
||||
end;
|
||||
|
||||
{ TScreenBufferItemEnumerator }
|
||||
|
||||
function TScreenBufferItemEnumerator.MoveNext: Boolean;
|
||||
begin
|
||||
Result := FScreenBuffer.Iterate(FCurrentBlock);
|
||||
if not Result then
|
||||
FCurrentItem := nil;
|
||||
end;
|
||||
|
||||
{ TLandTextureManager }
|
||||
|
||||
constructor TLandTextureManager.Create;
|
||||
|
||||
Reference in New Issue
Block a user