with Tiles.Matrices; use Tiles.Matrices;
package Tools.Matrixbrushes is
type Matrixbrush is new Tool with private;
type A_Matrixbrush is access all Matrixbrush'Class;
function Create_Matrixbrush( matrix : not null A_Tile_Matrix;
offsetX,
offsetY : Integer ) return A_Tool;
pragma Postcondition( Create_Matrixbrush'Result /= null );
function Get_Matrix( this : not null access Matrixbrush'Class ) return A_Tile_Matrix;
pragma Postcondition( Get_Matrix'Result /= null );
procedure Get_Offset( this : not null access Matrixbrush'Class;
x, y : out Integer );
private
type Matrixbrush is new Tool with
record
matrix : A_Tile_Matrix := null;
offsetX,
offsetY : Integer := 0;
startTileX,
startTileY,
overTileX,
overTileY : Integer := -1;
end record;
procedure Adjust( this : access Matrixbrush );
procedure Apply( this : access Matrixbrush;
func : Function_Type;
modifiers : Modifiers_Array;
first : Boolean;
world : not null A_World;
worldX,
worldY,
layer : Integer );
procedure Construct( this : access Matrixbrush;
matrix : A_Tile_Matrix;
offsetX,
offsetY : Integer );
procedure Delete( this : in out Matrixbrush );
end Tools.Matrixbrushes;