Changeset 122 for trunk/UTrack.pas


Ignore:
Timestamp:
Oct 26, 2022, 5:25:25 PM (19 months ago)
Author:
chronos
Message:
  • Modified: Partial implementation for load/save of current game.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/UTrack.pas

    r107 r122  
    44
    55uses
    6   Classes, SysUtils, Math, Generics.Collections, UGeometric;
     6  Classes, SysUtils, Math, Generics.Collections, UGeometric, DOM, XMLRead,
     7  XMLWrite, UXMLUtils;
    78
    89type
     
    4849    // Move to TTrackLink later
    4950    function GetDistance: Integer;
     51
     52    procedure LoadFromXmlNode(Node: TDOMNode);
     53    procedure SaveToXmlNode(Node: TDOMNode);
    5054    constructor Create;
    5155    destructor Destroy; override;
     
    5761    Track: TTrack;
    5862    function AddNew: TTrackPoint;
     63    procedure LoadFromXmlNode(Node: TDOMNode);
     64    procedure SaveToXmlNode(Node: TDOMNode);
    5965  end;
    6066
     
    6470    Points: TTrackPoints;
    6571    Shift: TPoint;
     72    procedure LoadFromXmlNode(Node: TDOMNode);
     73    procedure SaveToXmlNode(Node: TDOMNode);
    6674    constructor Create;
    6775    destructor Destroy; override;
     
    7381    function SearchPoints(Point1, Point2: TTrackPoint): TTrackLink;
    7482    function AddNew: TTrackLink;
     83    procedure LoadFromXmlNode(Node: TDOMNode);
     84    procedure SaveToXmlNode(Node: TDOMNode);
    7585  end;
    7686
     
    8696    constructor Create;
    8797    destructor Destroy; override;
     98    procedure LoadFromXmlNode(Node: TDOMNode);
     99    procedure SaveToXmlNode(Node: TDOMNode);
    88100  end;
    89101
     
    200212end;
    201213
     214procedure TTrackLinks.LoadFromXmlNode(Node: TDOMNode);
     215var
     216  Node2: TDOMNode;
     217  NewItem: TTrackLink;
     218begin
     219  Node2 := Node.FirstChild;
     220  while Assigned(Node2) and (Node2.NodeName = 'Link') do begin
     221    NewItem := TTrackLink.Create;
     222    NewItem.LoadFromXmlNode(Node2);
     223    Add(NewItem);
     224    Node2 := Node2.NextSibling;
     225  end;
     226end;
     227
     228procedure TTrackLinks.SaveToXmlNode(Node: TDOMNode);
     229var
     230  I: Integer;
     231  Node2: TDOMNode;
     232begin
     233  for I := 0 to Count - 1 do begin;
     234    Node2 := Node.OwnerDocument.CreateElement('Link');
     235    Node.AppendChild(Node2);
     236    Items[I].SaveToXmlNode(Node2);
     237  end;
     238end;
     239
    202240{ TTrackPoints }
    203241
     
    206244  Result := TTrackPoint.Create;
    207245  Result.Track := Track;
     246end;
     247
     248procedure TTrackPoints.LoadFromXmlNode(Node: TDOMNode);
     249var
     250  Node2: TDOMNode;
     251  NewItem: TTrackPoint;
     252begin
     253  Node2 := Node.FirstChild;
     254  while Assigned(Node2) and (Node2.NodeName = 'Point') do begin
     255    NewItem := TTrackPoint.Create;
     256    NewItem.LoadFromXmlNode(Node2);
     257    Add(NewItem);
     258    Node2 := Node2.NextSibling;
     259  end;
     260end;
     261
     262procedure TTrackPoints.SaveToXmlNode(Node: TDOMNode);
     263var
     264  I: Integer;
     265  Node2: TDOMNode;
     266begin
     267  for I := 0 to Count - 1 do begin;
     268    Node2 := Node.OwnerDocument.CreateElement('Point');
     269    Node.AppendChild(Node2);
     270    Items[I].SaveToXmlNode(Node2);
     271  end;
    208272end;
    209273
     
    222286  FreeAndNil(Links);
    223287  inherited;
     288end;
     289
     290procedure TTrack.LoadFromXmlNode(Node: TDOMNode);
     291begin
     292  Points.LoadFromXmlNode(Node);
     293  Links.LoadFromXmlNode(Node);
     294end;
     295
     296procedure TTrack.SaveToXmlNode(Node: TDOMNode);
     297begin
     298  Points.SaveToXmlNode(Node);
     299  Links.SaveToXmlNode(Node);
    224300end;
    225301
     
    281357{ TTrackLink }
    282358
     359procedure TTrackLink.LoadFromXmlNode(Node: TDOMNode);
     360begin
     361
     362end;
     363
     364procedure TTrackLink.SaveToXmlNode(Node: TDOMNode);
     365begin
     366
     367end;
     368
    283369constructor TTrackLink.Create;
    284370begin
     
    444530end;
    445531
     532procedure TTrackPoint.LoadFromXmlNode(Node: TDOMNode);
     533begin
     534  Position.X := ReadInteger(Node, 'PositionX', Position.X);
     535  Position.Y := ReadInteger(Node, 'PositionY', Position.Y);
     536end;
     537
     538procedure TTrackPoint.SaveToXmlNode(Node: TDOMNode);
     539begin
     540  WriteInteger(Node, 'PositionX', Position.X);
     541  WriteInteger(Node, 'PositionY', Position.Y);
     542end;
     543
    446544constructor TTrackPoint.Create;
    447545begin
Note: See TracChangeset for help on using the changeset viewer.