49 lines
908 B
ObjectPascal
49 lines
908 B
ObjectPascal
|
unit Game.Base;
|
||
|
|
||
|
interface
|
||
|
uses
|
||
|
System.Classes;
|
||
|
|
||
|
|
||
|
type
|
||
|
TCustomGame = class(TInterfacedPersistent)
|
||
|
private
|
||
|
FLocation: string;
|
||
|
protected
|
||
|
procedure Notify(const APropertyName: string); virtual;
|
||
|
public
|
||
|
class function GetGameName: string; virtual; abstract;
|
||
|
|
||
|
constructor Create(const ALocation: string); virtual;
|
||
|
|
||
|
procedure Load; virtual; abstract;
|
||
|
procedure Save; virtual; abstract;
|
||
|
|
||
|
property Location: string read FLocation;
|
||
|
end;
|
||
|
|
||
|
TCustomGameClass = class of TCustomGame;
|
||
|
|
||
|
|
||
|
implementation
|
||
|
uses
|
||
|
System.Bindings.Helper,
|
||
|
System.SysUtils;
|
||
|
|
||
|
|
||
|
{ TCustomGame }
|
||
|
constructor TCustomGame.Create(const ALocation: string);
|
||
|
begin
|
||
|
inherited Create;
|
||
|
|
||
|
FLocation := IncludeTrailingPathDelimiter(ALocation);
|
||
|
end;
|
||
|
|
||
|
|
||
|
procedure TCustomGame.Notify(const APropertyName: string);
|
||
|
begin
|
||
|
TBindings.Notify(Self, APropertyName);
|
||
|
end;
|
||
|
|
||
|
end.
|