Changeset 7 for trunk/UBlockMap.pas


Ignore:
Timestamp:
Mar 30, 2016, 11:32:54 PM (8 years ago)
Author:
chronos
Message:
  • Added: Main menu with available actions.
  • Added: Basic functionality to save project to file and open project from file.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/UBlockMap.pas

    r6 r7  
    66
    77uses
    8   Classes, SysUtils, Graphics, Math, Contnrs, Dialogs;
     8  Classes, SysUtils, Graphics, Math, Contnrs, Dialogs, DOM, XMLRead, XMLWrite,
     9  UXMLUtils;
    910
    1011type
     
    4344    constructor Create;
    4445    destructor Destroy; override;
     46    procedure SaveToNode(Node: TDOMNode);
     47    procedure LoadFromNode(Node: TDOMNode);
    4548    property BlockSize: TPoint read FBlockSize write SetBlockSize;
    4649    property DrawSize: TPoint read FDrawSize write SetDrawSize;
     
    321324end;
    322325
     326procedure TBlockMap.SaveToNode(Node: TDOMNode);
     327var
     328  NewNode: TDOMNode;
     329  NewNode2: TDOMNode;
     330  I: Integer;
     331begin
     332  WriteInteger(Node, 'SectorCount', SectorCount);
     333
     334  NewNode := Node.OwnerDocument.CreateElement('Changes');
     335  Node.AppendChild(NewNode);
     336  for I := 0 to FChanges.Count - 1 do begin
     337    NewNode2 := NewNode.OwnerDocument.CreateElement('Change');
     338    NewNode.AppendChild(NewNode2);
     339    WriteInteger(NewNode2, 'Index', TChange(FChanges[I]).Index);
     340    WriteInteger(NewNode2, 'Value', Integer(TChange(FChanges[I]).Value));
     341  end;
     342end;
     343
     344procedure TBlockMap.LoadFromNode(Node: TDOMNode);
     345var
     346  NewNode: TDOMNode;
     347  NewNode2: TDOMNode;
     348  NewChange: TChange;
     349begin
     350  SectorCount := ReadInteger(Node, 'SectorCount', 0);
     351
     352  NewNode := Node.FindNode('Changes');
     353  if Assigned(NewNode) then begin
     354    FChanges.Count := 0;
     355    NewNode2 := NewNode.FirstChild;
     356    while Assigned(NewNode2) and (NewNode2.NodeName = 'Change') do begin
     357      NewChange := TChange.Create;
     358      NewChange.Index := ReadInteger(NewNode2, 'Index', 0);
     359      NewChange.Value := TSectorState(ReadInteger(NewNode2, 'Value', 0));
     360      FChanges.Add(NewChange);
     361      NewNode2 := NewNode2.NextSibling;
     362    end;
     363  end;
     364end;
    323365
    324366end.
Note: See TracChangeset for help on using the changeset viewer.