Changeset 128 for trunk/UView.pas


Ignore:
Timestamp:
May 1, 2023, 11:21:30 AM (13 months ago)
Author:
chronos
Message:
  • Added: Ability to save and load a game.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/UView.pas

    r103 r128  
    44
    55uses
    6   Classes, SysUtils;
     6  Classes, SysUtils, UItems, DOM;
    77
    88type
    99  { TView }
    1010
    11   TView = class
     11  TView = class(TItem)
    1212  private
    1313    FDestRect: TRect;
     
    1818    procedure SetZoom(AValue: Double);
    1919  public
    20     procedure Assign(Source: TView);
     20    procedure Assign(Source: TItem); override;
    2121    function PointDestToSrc(Pos: TPoint): TPoint;
    2222    function PointSrcToDest(Pos: TPoint): TPoint;
    2323    constructor Create;
     24    procedure LoadFromXmlNode(Node: TDOMNode); override;
     25    procedure SaveToXmlNode(Node: TDOMNode); override;
    2426    property SourceRect: TRect read FSourceRect write SetSourceRect;
    2527    property DestRect: TRect read FDestRect write SetDestRect;
     
    3133
    3234uses
    33   UGeometric;
     35  UGeometric, UXMLUtils;
    3436
    3537resourcestring
     
    8082end;
    8183
    82 procedure TView.Assign(Source: TView);
     84procedure TView.Assign(Source: TItem);
    8385begin
    84   FDestRect := Source.FDestRect;
    85   FSourceRect := Source.FSourceRect;
    86   FZoom := Source.FZoom;
     86  if Source is TView then begin
     87    FDestRect := TView(Source).FDestRect;
     88    FSourceRect := TView(Source).FSourceRect;
     89    FZoom := TView(Source).FZoom;
     90  end;
    8791end;
    8892
     
    104108end;
    105109
     110procedure TView.LoadFromXmlNode(Node: TDOMNode);
     111begin
     112  inherited;
     113  FZoom := ReadDouble(Node, 'Zoom', 0);
     114  FSourceRect.Left := ReadInteger(Node, 'SourceRectLeft', 0);
     115  FSourceRect.Top := ReadInteger(Node, 'SourceRectTop', 0);
     116  FSourceRect.Right := ReadInteger(Node, 'SourceRectRight', 0);
     117  FSourceRect.Bottom := ReadInteger(Node, 'SourceRectBottom', 0);
     118  FDestRect.Left := ReadInteger(Node, 'DestRectLeft', 0);
     119  FDestRect.Top := ReadInteger(Node, 'DestRectTop', 0);
     120  FDestRect.Right := ReadInteger(Node, 'DestRectRight', 0);
     121  FDestRect.Bottom := ReadInteger(Node, 'DestRectBottom', 0);
     122end;
     123
     124procedure TView.SaveToXmlNode(Node: TDOMNode);
     125begin
     126  inherited;
     127  WriteDouble(Node, 'Zoom', FZoom);
     128  WriteInteger(Node, 'SourceRectLeft', FSourceRect.Left);
     129  WriteInteger(Node, 'SourceRectTop', FSourceRect.Top);
     130  WriteInteger(Node, 'SourceRectRight', FSourceRect.Right);
     131  WriteInteger(Node, 'SourceRectBottom', FSourceRect.Bottom);
     132  WriteInteger(Node, 'DestRectLeft', FDestRect.Left);
     133  WriteInteger(Node, 'DestRectTop', FDestRect.Top);
     134  WriteInteger(Node, 'DestRectRight', FDestRect.Right);
     135  WriteInteger(Node, 'DestRectBottom', FDestRect.Bottom);
     136end;
     137
    106138end.
    107139
Note: See TracChangeset for help on using the changeset viewer.