//****************************************************************************** // 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.