//******************************************************************************
// CLASS SUBASEOBJECT
//******************************************************************************
unit SUBaseObject;
interface
uses
SuBaseProperty, SUBaseContextMenu;
Type
PBaseObject = class
private
m_Serial : Cardinal;
m_Properties : PBaseProperty;
m_ContextMenu : PBaseContextMenu;
function SinGetX: Integer;
function SinGetY: Integer;
function SinGetZ: ShortInt;
function SinGetName: String;
function SinGetRawName: String;
function SinGetToolTip: String;
function SinGetAmount: Integer;
function SinGetDirection: Byte;
function SinGetDistance: Integer;
function SinGetExistence: Boolean;
function SinGetLayer: Byte;
function SinGetMovable: Boolean;
function SinGetObjectType: Word;
function SinGetParent: PBaseObject;
function SinGetPrice: Integer;
function SinGetContextMenu : PBaseContextMenu;
function SinGetColor: Word;
public
Constructor Create(Aowner:Cardinal); virtual;
class function CreateObject(AOwner:Cardinal):PBaseObject; virtual;
procedure RequestStats(); virtual;
function Click():Boolean; virtual;
function DoubleClick():Boolean; virtual;
procedure Ignore(); virtual;
procedure Unignore(); virtual;
procedure Update(); virtual;
property Serial : Cardinal read m_Serial;
property X : Integer read SinGetX;
property Y : Integer read SinGetY;
property Z : ShortInt read SinGetZ;
property Name : String read SinGetName;
property RawName : String read SinGetRawName;
property Properties : PBaseProperty read m_Properties;
property Tooltip : String read SinGetToolTip;
property ObjectType : Word read SinGetObjectType;
property Amount : Integer read SinGetAmount;
property Valid : Boolean read SinGetExistence;
property Price : Integer read SinGetPrice;
property Direction : Byte read SinGetDirection;
property Distance : Integer read SinGetDistance;
property Movable : Boolean read SinGetMovable;
property Parent : PBaseObject read SinGetParent;
property Layer : Byte read SinGetLayer;
property ContextMenu: PBaseContextMenu read SinGetContextMenu;
property Color : Word read SinGetColor;
protected
function GetProperties: PBaseProperty; virtual;
function GetName : String; virtual;
function GetRawName : String; virtual;
function GetContextMenu : PBaseContextMenu; virtual;
end;
implementation
uses
SUStealth;
{ PBaseObject }
function PBaseObject.Click: Boolean;
begin
Result := Valid;
if(Result)then Script.ClickOnObject(Serial);//Virtual
end;
constructor PBaseObject.Create(Aowner: Cardinal);
begin
m_Serial := Aowner;
Update;
end;
class function PBaseObject.CreateObject(AOwner: Cardinal): PBaseObject;
begin
Result := PBaseObject.CreateObject(AOwner);
end;
function PBaseObject.DoubleClick: Boolean;
begin
Result := Valid;
if(Result)then Script.UseObject(Serial);//Virtual
end;
function PBaseObject.GetContextMenu: PBaseContextMenu;
begin
Result := PBaseContextMenu.Create(Serial);
end;
function PBaseObject.GetName: String;
begin
Result := TUOObject.GetName(Serial);
end;
function PBaseObject.GetProperties: PBaseProperty;
begin
Result := PBaseProperty.CreateObject(Serial);
end;
function PBaseObject.GetRawName: String;
begin
Result := TUOObject.GetAltName(Serial);
end;
procedure PBaseObject.Ignore;
begin
Script.FindEngine.Ignore(Serial);
end;
procedure PBaseObject.RequestStats;
begin
TUOObject.RequestStats(Serial);
end;
function PBaseObject.SinGetAmount: Integer;
begin
Result := TUOObject.GetQuantity(Serial);
end;
function PBaseObject.SinGetColor: Word;
begin
Result := TUOObject.GetColor(Serial);
end;
function PBaseObject.SinGetContextMenu: PBaseContextMenu;
begin
Result := GetContextMenu;
end;
function PBaseObject.SinGetDirection: Byte;
begin
Result := TUOObject.GetDirection(Serial);
end;
function PBaseObject.SinGetDistance: Integer;
begin
Result := TUOObject.GetDistance(Serial);
end;
function PBaseObject.SinGetExistence: Boolean;
begin
Result := TUOObject.IsObjectExists(Serial);
end;
function PBaseObject.SinGetLayer: Byte;
begin
Result := TUOObject.GetLayer(Serial);
end;
function PBaseObject.SinGetMovable: Boolean;
begin
Result := TUOObject.IsMovable(Serial);
end;
function PBaseObject.SinGetName: String;
begin
Result := GetName;
end;
function PBaseObject.SinGetObjectType: Word;
begin
Result := TUOObject.GetType(Serial);
end;
function PBaseObject.SinGetParent: PBaseObject;
begin
Result := PBaseObject.CreateObject(TUOObject.GetParent(Serial));
end;
function PBaseObject.SinGetPrice: Integer;
begin
Result := TUOObject.GetPrice(Serial);
end;
function PBaseObject.SinGetRawName: String;
begin
Result := GetRawName;
end;
function PBaseObject.SinGetToolTip: String;
begin
Result := TUOObject.GetTooltip(Serial);
end;
function PBaseObject.SinGetX: Integer;
begin
Result := TUOObject.GetX(Serial);
end;
function PBaseObject.SinGetY: Integer;
begin
Result := TUOObject.GetY(Serial);
end;
function PBaseObject.SinGetZ: ShortInt;
begin
Result := TUOObject.GetZ(Serial);
end;
procedure PBaseObject.Unignore;
begin
Script.FindEngine.IgnoreRemove(Serial);
end;
procedure PBaseObject.Update;
begin
m_Properties := GetProperties;
m_ContextMenu := GetContextMenu;
end;
end.