grendel-1.0.0a7/backup/
grendel-1.0.0a7/bin/
grendel-1.0.0a7/boards/
grendel-1.0.0a7/clans/
grendel-1.0.0a7/documentation/todo/
grendel-1.0.0a7/help/
grendel-1.0.0a7/logs/
grendel-1.0.0a7/players/
grendel-1.0.0a7/progs/
grendel-1.0.0a7/races/
grendel-1.0.0a7/src/contrib/
grendel-1.0.0a7/src/modules/speller/
grendel-1.0.0a7/src/modules/status/
grendel-1.0.0a7/src/tests/
grendel-1.0.0a7/src/tests/dunit/
program convertxml;
{$APPTYPE CONSOLE}

uses
	Windows,
	ActiveX,
	xmldoc,
	xmldom,
	xmlintf,
  SysUtils,
  TypInfo,
  skills,
  console,
  dtypes,
  fsys,
  race,
  area;

var
  are : GArea;
  room : GRoom;
  Count, Loop: Integer;
  List: PPropList;
  prop : PPropInfo;
  iterator : GIterator;
  
  doc : TXMLDocument;
  child1, child2, node : IXMLNode;

begin
	CoInitialize(nil);
	
	try
		doc := TXMLDocument.Create(nil);
		doc.DOMVendor := DOMVendors[0];
		doc.Active := true;
		doc.Options := [doNodeAutoIndent];
		
		doc.Encoding := 'iso-8859-1';
		doc.Version := '1.0';
		doc.NSPrefixBase := 'grendel';
		
		node := doc.AddChild('area');

		initRaces();
		initSkills();
		initAreas();
		initConsole();

		loadRaces();

		are := GArea.Create();

		are.load('roads.area');

		Count := GetPropList(TypeInfo(GArea), tkAny, nil);
		GetMem(List, Count * SizeOf(PPropInfo));
		GetPropList(TypeInfo(GArea), tkAny, List);

		for Loop := 0 to Pred(Count) do
			begin
			prop := List^[Loop];

			child1 := node.addChild(prop^.Name);

		 	case (prop.PropType^.Kind) of
				tkInteger: child1.Text := IntToStr(GetOrdProp(are, prop));
				tkFloat: child1.Text := FloatToStr(GetFloatProp(are, prop));
				tkLString: child1.Text := GetStrProp(are, prop);
				tkChar: child1.Text := char(GetOrdProp(are, prop));
			end;
			end;

		FreeMem(List, Count * SizeOf(PPropInfo));

		Count := GetPropList(TypeInfo(GRoom), tkAny, nil);
		GetMem(List, Count * SizeOf(PPropInfo));
		GetPropList(TypeInfo(GRoom), tkAny, List);

		iterator := room_list.iterator();

		while (iterator.hasNext()) do
			begin
			room := GRoom(iterator.next());

			child1 := node.addChild('room');

			for Loop := 0 to Pred(Count) do
				begin
				prop := List^[Loop];

				child2 := child1.addChild(prop^.Name);

				case (prop.PropType^.Kind) of
					tkInteger: child2.Text := IntToStr(GetOrdProp(are, prop));
					tkFloat: child2.Text := FloatToStr(GetFloatProp(are, prop));
					tkLString: child2.Text := GetStrProp(are, prop);
					tkChar: child2.Text := char(GetOrdProp(are, prop));
				end;
				end;
			end;

		FreeMem(List, Count * SizeOf(PPropInfo));

		doc.SaveToFile('test.xml');

	finally
		CoUninitialize();
	end;
	
end.