- Timestamp:
- Sep 26, 2014, 9:01:50 PM (10 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Languages/xtactics.cs.po
r61 r64 476 476 msgstr "Potřebujete alespoň dva hráče" 477 477 478 #: ugame.snewgamefile 479 msgid "New game.xtg" 480 msgstr "" 481 478 482 #: ugame.sunfinishedbattle 479 483 msgid "Unfinished battle" 480 484 msgstr "Neukončená bitva" 485 486 #: ugame.swrongfileformat 487 msgid "Wrong file format" 488 msgstr "" 489 -
trunk/Languages/xtactics.po
r61 r64 464 464 msgstr "" 465 465 466 #: ugame.snewgamefile 467 msgid "New game.xtg" 468 msgstr "" 469 466 470 #: ugame.sunfinishedbattle 467 471 msgid "Unfinished battle" 468 472 msgstr "" 469 473 474 #: ugame.swrongfileformat 475 msgid "Wrong file format" 476 msgstr "" 477 -
trunk/Packages/Common/UXMLUtils.pas
r43 r64 7 7 uses 8 8 {$IFDEF WINDOWS}Windows,{$ENDIF} 9 Classes, SysUtils, DateUtils ;9 Classes, SysUtils, DateUtils, XMLRead, XMLWrite, DOM; 10 10 11 11 function XMLTimeToDateTime(XMLDateTime: string): TDateTime; 12 12 function DateTimeToXMLTime(Value: TDateTime; ApplyLocalBias: Boolean = True): WideString; 13 procedure WriteInteger(Node: TDOMNode; Name: string; Value: Integer); 14 procedure WriteBoolean(Node: TDOMNode; Name: string; Value: Boolean); 15 procedure WriteString(Node: TDOMNode; Name: string; Value: string); 16 function ReadInteger(Node: TDOMNode; Name: string; DefaultValue: Integer): Integer; 17 function ReadBoolean(Node: TDOMNode; Name: string; DefaultValue: Boolean): Boolean; 18 function ReadString(Node: TDOMNode; Name: string; DefaultValue: string): string; 13 19 14 20 … … 123 129 end; 124 130 131 procedure WriteInteger(Node: TDOMNode; Name: string; Value: Integer); 132 var 133 NewNode: TDOMNode; 134 begin 135 NewNode := Node.OwnerDocument.CreateElement(Name); 136 NewNode.TextContent := IntToStr(Value); 137 Node.AppendChild(NewNode); 138 end; 139 140 procedure WriteBoolean(Node: TDOMNode; Name: string; Value: Boolean); 141 var 142 NewNode: TDOMNode; 143 begin 144 NewNode := Node.OwnerDocument.CreateElement(Name); 145 NewNode.TextContent := BoolToStr(Value); 146 Node.AppendChild(NewNode); 147 end; 148 149 procedure WriteString(Node: TDOMNode; Name: string; Value: string); 150 var 151 NewNode: TDOMNode; 152 begin 153 NewNode := Node.OwnerDocument.CreateElement(Name); 154 NewNode.TextContent := Value; 155 Node.AppendChild(NewNode); 156 end; 157 158 function ReadInteger(Node: TDOMNode; Name: string; DefaultValue: Integer): Integer; 159 var 160 NewNode: TDOMNode; 161 begin 162 Result := DefaultValue; 163 NewNode := Node.FindNode(Name); 164 if Assigned(NewNode) then 165 Result := StrToInt(NewNode.TextContent); 166 end; 167 168 function ReadBoolean(Node: TDOMNode; Name: string; DefaultValue: Boolean): Boolean; 169 var 170 NewNode: TDOMNode; 171 begin 172 Result := DefaultValue; 173 NewNode := Node.FindNode(Name); 174 if Assigned(NewNode) then 175 Result := StrToBool(NewNode.TextContent); 176 end; 177 178 function ReadString(Node: TDOMNode; Name: string; DefaultValue: string): string; 179 var 180 NewNode: TDOMNode; 181 begin 182 Result := DefaultValue; 183 NewNode := Node.FindNode(Name); 184 if Assigned(NewNode) then 185 Result := NewNode.TextContent; 186 end; 187 125 188 end. 126 189 -
trunk/UCore.lfm
r62 r64 55 55 object AGameSave: TAction 56 56 Caption = 'Save' 57 ImageIndex = 11 57 58 OnExecute = AGameSaveExecute 58 59 ShortCut = 16467 … … 60 61 object AGameLoad: TAction 61 62 Caption = 'Load' 63 ImageIndex = 10 62 64 OnExecute = AGameLoadExecute 63 65 ShortCut = 16463 … … 65 67 object AAbout: TAction 66 68 Caption = 'About' 69 ImageIndex = 2 67 70 OnExecute = AAboutExecute 68 71 end … … 72 75 top = 224 73 76 Bitmap = { 74 4C690 A00000010000000100000000000000000000000E3AA4BD6E5B35EFFE3B177 4C690C00000010000000100000000000000000000000E3AA4BD6E5B35EFFE3B1 75 78 61F2DEA85AF3D9A156F3D49B50F3CF904AF3CA8C47F3C58743F3C0813CF3BF80 76 79 38F8A75E20FB00000000000000000000000000000000E6AF53E7F6D084FFF8D8 … … 392 395 88FF327FBBFF3791D5FF215286FF000000000000000000000000000000000000 393 396 0000000000000000000000000000000000000000000000000000000000000000 394 0000215286FF235A90FF00000000 397 0000215286FF235A90FF00000000000000000000000000000000000000000000 398 0000000000000000000000000000000000000000000000000000000000000000 399 0000000000000000000000000000000000000000000000000000000000000000 400 000000000000000000000000000000000000000000FF000000FF000000FF0000 401 0000000000000000000000000000000000000000000000000000000000000000 402 0000000000000000000000000000000000FF0000000000000000000000000000 403 00FF00000000000000FF00000000000000000000000000000000000000000000 404 0000000000000000000000000000000000000000000000000000000000000000 405 0000000000FF000000FF0000000000000000000000FF000000FF000000FF0000 406 0000000000000000000000000000000000000000000000000000000000000000 407 00FF000000FF000000FF00000000000000FF00FFFFFFFFFFFFFF00FFFFFF0000 408 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000000000 409 0000000000000000000000000000000000FFFFFFFFFF00FFFFFFFFFFFFFF00FF 410 FFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF000000FF000000000000 411 0000000000000000000000000000000000FF00FFFFFFFFFFFFFF00FFFFFFFFFF 412 FFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFF000000FF000000000000 413 0000000000000000000000000000000000FFFFFFFFFF00FFFFFFFFFFFFFF00FF 414 FFFF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 415 00FF000000FF000000FF000000FF000000FF00FFFFFFFFFFFFFF00FFFFFF0000 416 00FF008484FF008484FF008484FF008484FF008484FF008484FF008484FF0084 417 84FF008484FF000000FF00000000000000FFFFFFFFFF00FFFFFF000000FF0084 418 84FF008484FF008484FF008484FF008484FF008484FF008484FF008484FF0084 419 84FF000000FF0000000000000000000000FF00FFFFFF000000FF008484FF0084 420 84FF008484FF008484FF008484FF008484FF008484FF008484FF008484FF0000 421 00FF000000000000000000000000000000FF000000FF008484FF008484FF0084 422 84FF008484FF008484FF008484FF008484FF008484FF008484FF000000FF0000 423 0000000000000000000000000000000000FF000000FF000000FF000000FF0000 424 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000000000 425 0000000000000000000000000000000000000000000000000000000000000000 426 0000000000000000000000000000000000000000000000000000000000000000 427 0000000000000000000000000000000000000000000000000000000000000000 428 0000000000000000000000000000000000000000000000000000000000000000 429 0000000000000000000000000000000000000000000000000000000000000000 430 0000000000000000000000000000000000000000000000000000000000000000 431 000000000000000000000000000000000000000000FF000000FF000000FF0000 432 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 433 00FF000000FF000000FF0000000000000000000000FF008484FF000000FFFFFF 434 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 435 00FFFFFFFFFF000000FF0000000000000000000000FF008484FF000000FFFFFF 436 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 437 00FF000000FF000000FF0000000000000000000000FF008484FF000000FFFFFF 438 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 439 00FF008484FF000000FF0000000000000000000000FF008484FF000000FFFFFF 440 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 441 00FF008484FF000000FF0000000000000000000000FF008484FF000000FFFFFF 442 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 443 00FF008484FF000000FF0000000000000000000000FF008484FF000000FFFFFF 444 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 445 00FF008484FF000000FF0000000000000000000000FF008484FF008484FF0000 446 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0084 447 84FF008484FF000000FF0000000000000000000000FF008484FF008484FF0084 448 84FF008484FF008484FF008484FF008484FF008484FF008484FF008484FF0084 449 84FF008484FF000000FF0000000000000000000000FF008484FF008484FF0000 450 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 451 00FF008484FF000000FF0000000000000000000000FF008484FF008484FF0000 452 00FF000000FF000000FF000000FF000000FF000000FFFFFFFFFFFFFFFFFF0000 453 00FF008484FF000000FF0000000000000000000000FF008484FF008484FF0000 454 00FF000000FF000000FF000000FF000000FF000000FFFFFFFFFFFFFFFFFF0000 455 00FF008484FF000000FF0000000000000000000000FF008484FF008484FF0000 456 00FF000000FF000000FF000000FF000000FF000000FFFFFFFFFFFFFFFFFF0000 457 00FF008484FF000000FF000000000000000000000000000000FF000000FF0000 458 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 459 00FF000000FF000000FF00000000000000000000000000000000000000000000 460 0000000000000000000000000000000000000000000000000000000000000000 461 0000000000000000000000000000 395 462 } 396 463 end … … 407 474 top = 152 408 475 Bitmap = { 409 4C690 A0000002000000020000000000000000000000000000000E2AA4B36E2A9476 4C690C0000002000000020000000000000000000000000000000E2AA4B36E2A9 410 477 4AA1E4AD50E0E4B059F5E4B25FFCE3B160F5E1AE5FF2DFAA5CF3DDA559F3DAA2 411 478 57F3D89F55F3D59C51F3D2984EF3CF924BF3CD8E49F3CA8C48F3C88A46F3C688 … … 1687 1754 0000000000000000000000000000000000000000000000000000000000000000 1688 1755 0000000000000000000000000000000000001F538740215286BF225489FF2358 1689 8EFF225A90BF235B8F4000000000 1756 8EFF225A90BF235B8F4000000000000000000000000000000000000000000000 1757 0000000000000000000000000000000000000000000000000000000000000000 1758 0000000000000000000000000000000000000000000000000000000000000000 1759 0000000000000000000000000000000000000000000000000000000000000000 1760 0000000000000000000000000000000000000000000000000000000000000000 1761 0000000000000000000000000000000000000000000000000000000000000000 1762 000000000000000000000000000000000000000000140000005E0000007A0000 1763 007A0000007A0000007A000000700000002A0000000000000000000000000000 1764 0000000000000000000000000000000000000000000000000000000000000000 1765 0000000000000000000000000000000000000000000000000000000000000000 1766 00000000000000000000000000000000000000000029000000C1000000FB0000 1767 00FB000000FB000000FB000000E6000000570000000000000000000000000000 1768 0000000000000000000000000000000000000000000000000000000000000000 1769 0000000000000000000000000000000000000000000000000000000000000000 1770 0000000000000000000000000015000000590000007400000088000000910000 1771 009100000091000000910000008E0000007A000000680000002B000000040000 1772 003F0000006C0000003400000000000000000000000000000000000000000000 1773 0000000000000000000000000000000000000000000000000000000000000000 1774 0000000000000000000000000030000000C6000000CE00000040000000090000 1775 000900000009000000090000001C000000A4000000E800000060000000090000 1776 008C000000F20000007600000000000000000000000000000000000000000000 1777 0000000000000000000000000000000000000000000000000000000000000000 1778 000000000000000000000000001F0000007E0000008200000024000000000000 1779 000000000000000000000000000D00000067000000990000007A000000690000 1780 00BC000000FB0000007A00000000000000000000000000000000000000000000 1781 0000000000000000000000000000000000000000000000000000000000000000 1782 00000000000000000000000000030000000C0000000D00000003000000000000 1783 00000000000000000000000000010000000A0000001C00000099000000F10000 1784 00F9000000FB0000007A00000000000000000000002A00000057000000580000 1785 005800000058000000580000003A000000070000000000000000000000000000 1786 0000000000000000000000000000000000000000000000000000000000000000 1787 00000000000000000000000000070000003A00000062000000BE000000FF0000 1788 00FF000000FB0000007A000000000000000000000070000000E6000000EA0000 1789 00EA000000EA000000EA00000099000000130000000000000000000000000000 1790 0000000000000000000000000000000000000000000000000000000000000000 1791 000000000000000000000000001300000099000000EB000000F7000000FF0000 1792 00FF000000FB0000007A000000000000004E003A3AA2004E4EFC224E4EFF4B4E 1793 4EFF304E4EFF054E4EFF004343C20010105D0000004E0000004E0000004E0000 1794 004E0000004E0000004E0000004E0000004E0000004E0000004E0000004E0000 1795 004E00000046000000180000000F00000075000000B1000000B1000000B10000 1796 00B1000000AE0000005500000000000000E4007373F100E0E0FF62E4E4FFDCE4 1797 E4FF8BE4E4FF0DE4E4FF009B9BF6001515E6000000E4000000E4000000E40000 1798 00E4000000E4000000E4000000E4000000E4000000E4000000E4000000E40000 1799 00E4000000CC0000004600000002000000120000001B0000001B0000001B0000 1800 001B0000001B0000000D00000000000000FF207A7AFF43FBFBFF78FFFFFFB6FF 1801 FFFF8CFFFFFF4BFFFFFF2DBEBEFF065353FF154444FF3D4444FF324444FF0944 1802 44FF104444FF394444FF374444FF0D4444FF0B4444FF344444FF3B3B3BFF1212 1803 12FF000000E40000004E00000000000000000000000000000000000000000000 1804 0000000000000000000000000000000000FF6A7A7AFFDAFBFBFF8DFFFFFF29FF 1805 FFFF6BFFFFFFD2FFFFFF91F3F3FF12E0E0FF44DDDDFFC6DDDDFFA2DDDDFF1DDD 1806 DDFF33DDDDFFB9DDDDFFB2DDDDFF2BDDDDFF24DDDDFFAADDDDFFC0C0C0FF3B3B 1807 3BFF000000E40000004E00000000000000000000000000000000000000000000 1808 0000000000000000000000000000000000FF5E7A7AFFC1FBFBFF88FFFFFF40FF 1809 FFFF70FFFFFFBBFFFFFF94FFFFFF46FFFFFF65FFFFFFB5FFFFFFA0FFFFFF4DFF 1810 FFFF5AFFFFFFAEFFFFFFAAFFFFFF55FFFFFF51FFFFFFA5FFFFFFAADDDDFF3444 1811 44FF000000E40000004E00000000000000000000000000000000000000000000 1812 0000000000000000000000000000000000FF147A7AFF29FBFBFF74FFFFFFCEFF 1813 FFFF92FFFFFF35FFFFFF66FFFFFFC6FFFFFFA1FFFFFF3DFFFFFF58FFFFFFBFFF 1814 FFFFAEFFFFFF46FFFFFF4CFFFFFFB3FFFFFFB9FFFFFF51FFFFFF24DDDDFF0B44 1815 44FF000000E40000004E00000000000000000000000000000000000000000000 1816 0000000000000000000000000000000000FF187A7AFF31FBFBFF76FFFFFFC8FF 1817 FFFF90FFFFFF3BFFFFFF68FFFFFFC0FFFFFF8EF0F0FF16D2D2FF37CDCDFFB2CD 1818 CDFF9ECDCDFF22CDCDFF28CDCDFFA5CDCDFFABCDCDFF2FCDCDFF00B2B2FF0037 1819 37FF000000E90000007100000032000000320000003200000032000000320000 1820 0032000000320000003200000032000000FF627A7AFFCAFBFBFF89FFFFFF37FF 1821 FFFF6FFFFFFFC4FFFFFF97FFFFFF3FFFFFFF23C0C0FF054848FF0D3232FF2B32 1822 32FF263232FF083232FF0A3232FF283232FF2A3232FF0C3232FF002B2BFF000D 1823 0DFF000000FA000000DC000000CD000000CD000000CD000000CD000000CD0000 1824 00CD000000CD000000CD000000CD000000FF667A7AFFD2FBFBFF8BFFFFFF31FF 1825 FFFF6DFFFFFFCAFFFFFF8BF1F1FF12D8D8FF009B9BFF002B2BFF001616FF0016 1826 16FF001616FF001616FF001616FF001616FF001616FF001616FF001616FF0016 1827 16FF001616FF001616FF001616FF001616FF001616FF001616FF001515FF0009 1828 09FF000000FE000000E9000000D5000000FF1C7A7AFF3AFBFBFF77FFFFFFBFFF 1829 FFFF8FFFFFFF44FFFFFF27BBBBFF054B4BFF004848FF006161FF006666FF0066 1830 66FF006666FF006666FF006666FF006666FF006666FF006666FF006666FF0066 1831 66FF006666FF006666FF006666FF006666FF006666FF006666FF006262FF002C 1832 2CFF000000FC000000980000003B000000FF107A7AFF21FBFBFF72FFFFFFD6FF 1833 FFFF87F2F2FF0DDFDFFF009898FF002222FF003535FF007878FF008484FF0084 1834 84FF008484FF008484FF008484FF008484FF008484FF008484FF008484FF0084 1835 84FF008484FF008484FF008484FF008484FF008383FF007979FF006F6FFE0035 1836 35EC000000DA0000006A00000000000000FF5A7A7AFFB8FBFBFF87FFFFFF49FF 1837 FFFF2AB6B6FF044F4FFF004E4EFF005F5FFF006C6CFF008080FF008484FF0084 1838 84FF008484FF008484FF008484FF008484FF008484FF008484FF008484FF0084 1839 84FF008484FF008484FF008484FF008484FF007E7EFF004949FF002323F8001A 1840 1A94000000430000002000000000000000FF6D7A7AFFE0FBFBFF82F3F3FF08E5 1841 E5FF009191FF001A1AFF003737FF007A7AFF008484FF008484FF008484FF0084 1842 84FF008484FF008484FF008484FF008484FF008484FF008484FF008484FF0084 1843 84FF008484FF008484FF008383FF007B7BFF007070FD003131EE000000DC0000 1844 0062000000000000000000000000000000FF257A7AFF4DFBFBFF2CB3B3FF0354 1845 54FF005353FF005C5CFF006A6AFF008181FF008484FF008484FF008484FF0084 1846 84FF008484FF008484FF008484FF008484FF008484FF008484FF008484FF0084 1847 84FF008484FF008484FF007C7CFF004848FF002727F5001B1B920000004B0000 1848 0022000000000000000000000000000000FF007070FF00E6E6FF008A8AFF0012 1849 12FF003A3AFF007D7DFF008484FF008484FF008484FF008484FF008484FF0084 1850 84FF008484FF008484FF008484FF008484FF008484FF008484FF008484FF0084 1851 84FF008383FF007C7CFF007070FD002C2CF1000000DC0000005B000000000000 1852 0000000000000000000000000000000000FF002A2AFF005757FF005757FF0057 1853 57FF006868FF008181FF008484FF008484FF008484FF008484FF008484FF0084 1854 84FF008484FF008484FF008484FF008484FF008484FF008484FF008484FF0084 1855 84FF007B7BFF004848FF002C2CF1001B1B910000005300000022000000000000 1856 0000000000000000000000000000000000FF000000FF000000FF003636FF0078 1857 78FF007C7CFF007C7CFF007C7CFF007C7CFF007C7CFF007C7CFF007C7CFF007C 1858 7CFF007C7CFF007C7CFF007C7CFF007C7CFF007C7CFF007C7CFF007C7CFF007C 1859 7CFF007070FD002727F5000000DC000000530000000000000000000000000000 1860 0000000000000000000000000000000000FF000000FF000000FF001616FF0032 1861 32FF003333FF003333FF003333FF003333FF003333FF003333FF003333FF0033 1862 33FF003333FF003333FF003333FF003333FF003333FF003333FF003333FF0033 1863 33FF003131EE001B1B920000005B000000220000000000000000000000000000 1864 0000000000000000000000000000000000F6000000F6000000F6000000F60000 1865 00F6000000F6000000F6000000F6000000F6000000F6000000F6000000F60000 1866 00F6000000F6000000F6000000F6000000F6000000F6000000F6000000F60000 1867 00F6000000DC0000004B00000000000000000000000000000000000000000000 1868 00000000000000000000000000000000006E0000006E0000006E0000006E0000 1869 006E0000006E0000006E0000006E0000006E0000006E0000006E0000006E0000 1870 006E0000006E0000006E0000006E0000006E0000006E0000006E0000006E0000 1871 006E000000620000002200000000000000000000000000000000000000000000 1872 0000000000000000000000000000000000000000000000000000000000000000 1873 0000000000000000000000000000000000000000000000000000000000000000 1874 0000000000000000000000000000000000000000000000000000000000000000 1875 0000000000000000000000000000000000000000000000000000000000000000 1876 0000000000000000000000000000000000000000000000000000000000000000 1877 0000000000000000000000000000000000000000000000000000000000000000 1878 0000000000000000000000000000000000000000000000000000000000000000 1879 0000000000000000000000000000000000000000000000000000000000000000 1880 0000000000000000000000000000000000000000000000000000000000000000 1881 0000000000000000000000000000000000000000000000000000000000000000 1882 0000000000000000000000000000000000000000000000000000000000000000 1883 0000000000000000000000000000000000000000000000000000000000000000 1884 0000000000000000000000000000000000000000000000000000000000000000 1885 0000000000000000000000000000000000000000000000000000000000000000 1886 0000000000000000000000000000000000000000000000000000000000000000 1887 0000000000000000000000000000000000000000000000000000000000000000 1888 0000000000000000000000000000000000000000003A000000780000007A0000 1889 007A0000007A0000007A0000007A0000007A0000007A0000007A0000007A0000 1890 007A0000007A0000007A0000007A0000007A0000007A0000007A0000007A0000 1891 007A0000007A0000007A0000007A0000007A0000007A0000007A0000007A0000 1892 007A000000780000003A000000000000000000000078000000F7000000FB0000 1893 00FB000000FB000000FB000000FB000000FB000000FB000000FB000000FB0000 1894 00FB000000FB000000FB000000FB000000FB000000FB000000FB000000FB0000 1895 00FB000000FB000000FB000000FB000000FB000000FB000000FB000000FB0000 1896 00FB000000F70000007800000000000000000000007A000000FB001818FF0037 1897 37FF002323FF000303FF262626FF656565FF6E6E6EFF6E6E6EFF6E6E6EFF6E6E 1898 6EFF6E6E6EFF6E6E6EFF6E6E6EFF6E6E6EFF6E6E6EFF6E6E6EFF6E6E6EFF6E6E 1899 6EFF6E6E6EFF6E6E6EFF656565FF262626FF060606FF434343FF6A6A6AFF2F2F 1900 2FFF000000FB0000007A00000000000000000000007A000000FB003737FF007B 1901 7BFF004E4EFF000707FF555555FFE2E2E2FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6 1902 F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6 1903 F6FFF6F6F6FFF6F6F6FFE2E2E2FF555555FF0E0E0EFF969696FFEDEDEDFF6A6A 1904 6AFF000000FB0000007A00000000000000000000007A000000FB003939FF007F 1905 7FFF005151FF000808FF585858FFEAEAEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 1906 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 1907 FFFFFFFFFFFFFFFFFFFFEAEAEAFF585858FF090909FF606060FF969696FF4343 1908 43FF000000FB0000007A00000000000000000000007A000000FB003939FF007F 1909 7FFF005151FF000808FF585858FFEAEAEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 1910 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 1911 FFFFFFFFFFFFFFFFFFFFEAEAEAFF585858FF010101FF090909FF0E0E0EFF0606 1912 06FF000000FB0000007A00000000000000000000007A000000FB003939FF007F 1913 7FFF005151FF000808FF585858FFEAEAEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 1914 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 1915 FFFFFFFFFFFFFFFFFFFFEAEAEAFF585858FF000303FF001C1CFF002C2CFF0014 1916 14FF000000FB0000007A00000000000000000000007A000000FB003939FF007F 1917 7FFF005151FF000808FF585858FFEAEAEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 1918 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 1919 FFFFFFFFFFFFFFFFFFFFEAEAEAFF585858FF000707FF004A4AFF007575FF0034 1920 34FF000000FB0000007A00000000000000000000007A000000FB003939FF007F 1921 7FFF005151FF000808FF585858FFEAEAEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 1922 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 1923 FFFFFFFFFFFFFFFFFFFFEAEAEAFF585858FF000808FF005151FF007F7FFF0039 1924 39FF000000FB0000007A00000000000000000000007A000000FB003939FF007F 1925 7FFF005151FF000808FF585858FFEAEAEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 1926 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 1927 FFFFFFFFFFFFFFFFFFFFEAEAEAFF585858FF000808FF005151FF007F7FFF0039 1928 39FF000000FB0000007A00000000000000000000007A000000FB003939FF007F 1929 7FFF005151FF000808FF585858FFEAEAEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 1930 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 1931 FFFFFFFFFFFFFFFFFFFFEAEAEAFF585858FF000808FF005151FF007F7FFF0039 1932 39FF000000FB0000007A00000000000000000000007A000000FB003939FF007F 1933 7FFF005151FF000808FF585858FFEAEAEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 1934 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 1935 FFFFFFFFFFFFFFFFFFFFEAEAEAFF585858FF000808FF005151FF007F7FFF0039 1936 39FF000000FB0000007A00000000000000000000007A000000FB003939FF007F 1937 7FFF005151FF000808FF585858FFEAEAEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 1938 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 1939 FFFFFFFFFFFFFFFFFFFFEAEAEAFF585858FF000808FF005151FF007F7FFF0039 1940 39FF000000FB0000007A00000000000000000000007A000000FB003939FF007F 1941 7FFF005151FF000808FF585858FFEAEAEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 1942 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 1943 FFFFFFFFFFFFFFFFFFFFEAEAEAFF585858FF000808FF005151FF007F7FFF0039 1944 39FF000000FB0000007A00000000000000000000007A000000FB003939FF007F 1945 7FFF005B5BFF002020FF475858FFBCBEBEFFCDCDCDFFCDCDCDFFCDCDCDFFCDCD 1946 CDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFCDCD 1947 CDFFCDCDCDFFCDCDCDFFBCBEBEFF475858FF002020FF005B5BFF007F7FFF0039 1948 39FF000000FB0000007A00000000000000000000007A000000FB003939FF007F 1949 7FFF007A7AFF006C6CFF115757FF2E3737FF323232FF323232FF323232FF3232 1950 32FF323232FF323232FF323232FF323232FF323232FF323232FF323232FF3232 1951 32FF323232FF323232FF2E3737FF115757FF006C6CFF007A7AFF007F7FFF0039 1952 39FF000000FB0000007A00000000000000000000007A000000FB003939FF007F 1953 7FFF008484FF008484FF005E5EFF001F1FFF001616FF001616FF001616FF0016 1954 16FF001616FF001616FF001616FF001616FF001616FF001616FF001616FF0016 1955 16FF001616FF001616FF001F1FFF005E5EFF008484FF008484FF007F7FFF0039 1956 39FF000000FB0000007A00000000000000000000007A000000FB003939FF007F 1957 7FFF008484FF008484FF007A7AFF006868FF006666FF006666FF006666FF0066 1958 66FF006666FF006666FF006666FF006666FF006666FF006666FF006666FF0066 1959 66FF006666FF006666FF006868FF007A7AFF008484FF008484FF007F7FFF0039 1960 39FF000000FB0000007A00000000000000000000007A000000FB003939FF007F 1961 7FFF008484FF008484FF007E7EFF007474FF007272FF007272FF007272FF0072 1962 72FF007272FF007272FF007272FF007272FF007272FF007272FF007272FF0072 1963 72FF007272FF007272FF007272FF007272FF007474FF007D7DFF007F7FFF0039 1964 39FF000000FB0000007A00000000000000000000007A000000FB003939FF007F 1965 7FFF008484FF008484FF006262FF002B2BFF002323FF002323FF002323FF0023 1966 23FF002323FF002323FF002323FF002323FF002323FF002323FF002323FF0023 1967 23FF002323FF002323FF002323FF002323FF002929FF005E5EFF007F7FFF0039 1968 39FF000000FB0000007A00000000000000000000007A000000FB003939FF007F 1969 7FFF008484FF008484FF005757FF000B0BFF000000FF000000FF000000FF0000 1970 00FF000000FF000000FF000000FF000000FF000000FF000000FF040404FF1414 1971 14FF1B1B1BFF1B1B1BFF191919FF090909FF000808FF005151FF007F7FFF0039 1972 39FF000000FB0000007A00000000000000000000007A000000FB003939FF007F 1973 7FFF008484FF008484FF005757FF000B0BFF000000FF000000FF000000FF0000 1974 00FF000000FF000000FF000000FF000000FF000000FF000000FF181818FF8282 1975 82FFB1B1B1FFB1B1B1FFA2A2A2FF3D3D3DFF000808FF005151FF007F7FFF0039 1976 39FF000000FB0000007A00000000000000000000007A000000FB003939FF007F 1977 7FFF008484FF008484FF005757FF000B0BFF000000FF000000FF000000FF0000 1978 00FF000000FF000000FF000000FF000000FF000000FF000000FF222222FFBBBB 1979 BBFFFFFFFFFFFFFFFFFFEAEAEAFF585858FF000808FF005151FF007F7FFF0039 1980 39FF000000FB0000007A00000000000000000000007A000000FB003939FF007F 1981 7FFF008484FF008484FF005757FF000B0BFF000000FF000000FF000000FF0000 1982 00FF000000FF000000FF000000FF000000FF000000FF000000FF222222FFBBBB 1983 BBFFFFFFFFFFFFFFFFFFEAEAEAFF585858FF000808FF005151FF007F7FFF0039 1984 39FF000000FB0000007A00000000000000000000007A000000FB003939FF007F 1985 7FFF008484FF008484FF005757FF000B0BFF000000FF000000FF000000FF0000 1986 00FF000000FF000000FF000000FF000000FF000000FF000000FF222222FFBBBB 1987 BBFFFFFFFFFFFFFFFFFFEAEAEAFF585858FF000808FF005151FF007F7FFF0039 1988 39FF000000FB0000007A00000000000000000000007A000000FB003939FF007F 1989 7FFF008484FF008484FF005757FF000B0BFF000000FF000000FF000000FF0000 1990 00FF000000FF000000FF000000FF000000FF000000FF000000FF222222FFBBBB 1991 BBFFFFFFFFFFFFFFFFFFEAEAEAFF585858FF000808FF005151FF007F7FFF0039 1992 39FF000000FB0000007A000000000000000000000076000000F2003838FA007B 1993 7BFF007F7FFF007F7FFF005454FF000A0AFF000000FF000000FF000000FF0000 1994 00FF000000FF000000FF000000FF000000FF000000FF000000FF212121FFB4B4 1995 B4FFF6F6F6FFF6F6F6FFE2E2E2FF555555FF000707FF004E4EFF007B7BFF0037 1996 37FF000000FB0000007A0000000000000000000000340000006C002424AC0038 1997 38FA003939FF003939FF002525FF000505FF000000FF000000FF000000FF0000 1998 00FF000000FF000000FF000000FF000000FF000000FF000000FF0F0F0FFF5151 1999 51FF6E6E6EFF6E6E6EFF656565FF262626FF000303FF002323FF003737FF0018 2000 18FF000000FB0000007A000000000000000000000000000000000000006C0000 2001 00F2000000FB000000FB000000FB000000FB000000FB000000FB000000FB0000 2002 00FB000000FB000000FB000000FB000000FB000000FB000000FB000000FB0000 2003 00FB000000FB000000FB000000FB000000FB000000FB000000FB000000FB0000 2004 00FB000000F70000007800000000000000000000000000000000000000340000 2005 00760000007A0000007A0000007A0000007A0000007A0000007A0000007A0000 2006 007A0000007A0000007A0000007A0000007A0000007A0000007A0000007A0000 2007 007A0000007A0000007A0000007A0000007A0000007A0000007A0000007A0000 2008 007A000000780000003A00000000000000000000000000000000000000000000 2009 0000000000000000000000000000000000000000000000000000000000000000 2010 0000000000000000000000000000000000000000000000000000000000000000 2011 0000000000000000000000000000000000000000000000000000000000000000 2012 0000000000000000000000000000 1690 2013 } 1691 2014 end -
trunk/UCore.pas
r63 r64 149 149 procedure TCore.AGameLoadExecute(Sender: TObject); 150 150 begin 151 OpenDialog1.FileName := LastMapFileName; 151 if Game.FileName = '' then 152 OpenDialog1.FileName := LastMapFileName 153 else OpenDialog1.FileName := Game.FileName; 152 154 if OpenDialog1.Execute then begin 153 Game. Map.LoadFromFile(OpenDialog1.FileName);155 Game.LoadFromFile(OpenDialog1.FileName); 154 156 LastMapFileName := OpenDialog1.FileName; 155 157 FormMain.Redraw; … … 180 182 procedure TCore.AGameSaveExecute(Sender: TObject); 181 183 begin 182 SaveDialog1.FileName := ExtractFileDir(LastMapFileName); 184 if Game.FileName = '' then 185 SaveDialog1.FileName := ExtractFileDir(LastMapFileName) 186 else SaveDialog1.FileName := Game.FileName; 183 187 if SaveDialog1.Execute then begin 184 Game. Map.SaveToFile(SaveDialog1.FileName);188 Game.SaveToFile(SaveDialog1.FileName); 185 189 LastMapFileName := SaveDialog1.FileName; 186 190 end; -
trunk/UGame.pas
r62 r64 7 7 uses 8 8 Classes, SysUtils, ExtCtrls, Graphics, Contnrs, XMLConf, XMLRead, XMLWrite, 9 DOM, Math ;9 DOM, Math, FileUtil, UXMLUtils; 10 10 11 11 const … … 23 23 TPlayer = class; 24 24 TView = class; 25 TUnitMoves = class; 25 26 26 27 TFloatPoint = record … … 39 40 procedure SetPower(AValue: Integer); 40 41 public 42 Id: Integer; 41 43 PosPx: TPoint; 42 44 Polygon: TPointArray; 43 45 Terrain: TTerrainType; 44 46 Player: TPlayer; 45 MovesFrom: T ObjectList; // TList<TMove>46 MovesTo: T ObjectList; // TList<TMove>47 MovesFrom: TUnitMoves; 48 MovesTo: TUnitMoves; 47 49 Neighbors: TObjectList; // TList<TCell> 48 50 procedure Assign(Source: TCell); … … 106 108 procedure LoadFromFile(FileName: string); virtual; 107 109 procedure SaveToFile(FileName: string); virtual; 110 procedure LoadFromNode(Node: TDOMNode); 111 procedure SaveToNode(Node: TDOMNode); 108 112 function PosToCell(Pos: TPoint; View: TView): TCell; virtual; 109 113 function CellToPos(Cell: TCell): TPoint; virtual; … … 173 177 procedure SetGame(AValue: TGame); 174 178 public 179 Id: Integer; 175 180 Name: string; 176 181 Color: TColor; … … 181 186 TotalCities: Integer; 182 187 StartUnits: Integer; 188 procedure LoadFromNode(Node: TDOMNode); 189 procedure SaveToNode(Node: TDOMNode); 183 190 procedure ComputerTurn; 184 191 procedure Paint(PaintBox: TPaintBox); … … 191 198 TPlayerArray = array of TPlayer; 192 199 200 { TPlayers } 201 193 202 TPlayers = class(TObjectList) 194 203 procedure LoadFromNode(Node: TDOMNode); 204 procedure SaveToNode(Node: TDOMNode); 195 205 end; 196 206 … … 207 217 CountOnce: Integer; 208 218 CountRepeat: Integer; 219 procedure LoadFromNode(Node: TDOMNode); 220 procedure SaveToNode(Node: TDOMNode); 209 221 constructor Create; 210 222 destructor Destroy; override; 211 223 property CellFrom: TCell read FCellFrom write SetCellFrom; 212 224 property CellTo: TCell read FCellTo write SetCellTo; 225 end; 226 227 { TUnitMoves } 228 229 TUnitMoves = class(TObjectList) 230 procedure LoadFromNode(Node: TDOMNode); 231 procedure SaveToNode(Node: TDOMNode); 213 232 end; 214 233 … … 248 267 CityPercentage: Integer; 249 268 CurrentPlayer: TPlayer; 250 Moves: T ObjectList; // TList<TUnitMove>269 Moves: TUnitMoves; 251 270 TurnCounter: Integer; 252 271 WinObjective: TWinObjective; … … 254 273 StayAliveForDefinedTurns: Integer; 255 274 MaxNeutralUnits: Integer; 275 FileName: string; 256 276 function AttackProbability(AttackCount, DefendCount, Depth: Integer): Double; 257 277 procedure SaveConfig(Config: TXmlConfig; Path: string); 258 278 procedure LoadConfig(Config: TXmlConfig; Path: string); 279 procedure LoadFromFile(FileName: string); 280 procedure SaveToFile(FileName: string); 259 281 procedure ComputePlayerStats; 260 282 function GetAlivePlayers: TPlayerArray; … … 292 314 SComputer = 'Computer'; 293 315 SCannotSetPlayerStartCells = 'Cannot choose start cell for player'; 316 SWrongFileFormat = 'Wrong file format'; 294 317 SUnfinishedBattle = 'Unfinished battle'; 318 SNewGameFile = 'New game.xtg'; 295 319 296 320 procedure InitStrings; … … 354 378 if Y < Result.Top then 355 379 Result.Top := Y; 380 end; 381 end; 382 383 { TPlayers } 384 385 procedure TPlayers.LoadFromNode(Node: TDOMNode); 386 begin 387 388 end; 389 390 procedure TPlayers.SaveToNode(Node: TDOMNode); 391 var 392 I: Integer; 393 NewNode: TDOMNode; 394 begin 395 for I := 0 to Count - 1 do begin; 396 NewNode := Node.OwnerDocument.CreateElement('Player'); 397 Node.AppendChild(NewNode); 398 TPlayer(Items[I]).SaveToNode(NewNode); 399 end; 400 end; 401 402 { TUnitMoves } 403 404 procedure TUnitMoves.LoadFromNode(Node: TDOMNode); 405 begin 406 407 end; 408 409 procedure TUnitMoves.SaveToNode(Node: TDOMNode); 410 var 411 I: Integer; 412 NewNode: TDOMNode; 413 begin 414 for I := 0 to Count - 1 do begin; 415 NewNode := Node.OwnerDocument.CreateElement('UnitMove'); 416 Node.AppendChild(NewNode); 417 TUnitMove(Items[I]).SaveToNode(NewNode); 356 418 end; 357 419 end; … … 595 657 end; 596 658 659 procedure TMap.LoadFromNode(Node: TDOMNode); 660 begin 661 DefaultCellSize.X := ReadInteger(Node, 'DefaultCellSizeX', 1); 662 DefaultCellSize.Y := ReadInteger(Node, 'DefaultCellSizeY', 1); 663 MaxPower := ReadInteger(Node, 'MaxPower', 99); 664 end; 665 666 procedure TMap.SaveToNode(Node: TDOMNode); 667 var 668 NewNode: TDOMNode; 669 NewNode2: TDOMNode; 670 I: Integer; 671 begin 672 WriteInteger(Node, 'DefaultCellSizeX', DefaultCellSize.X); 673 WriteInteger(Node, 'DefaultCellSizeY', DefaultCellSize.Y); 674 WriteInteger(Node, 'MaxPower', MaxPower); 675 NewNode := Node.OwnerDocument.CreateElement('Cells'); 676 Node.AppendChild(NewNode); 677 for I := 0 to Cells.Count - 1 do 678 with TCell(Cells[I]) do begin 679 NewNode2 := Node.OwnerDocument.CreateElement('Cell'); 680 NewNode.AppendChild(NewNode2); 681 WriteInteger(NewNode2, 'Id', I); 682 WriteInteger(NewNode2, 'Power', Power); 683 WriteInteger(NewNode2, 'Terrain', Integer(Terrain)); 684 WriteInteger(NewNode2, 'PosX', PosPx.X); 685 WriteInteger(NewNode2, 'PosY', PosPx.Y); 686 end; 687 end; 688 597 689 function TMap.PosToCell(Pos: TPoint; View: TView): TCell; 598 690 var … … 792 884 end; 793 885 886 procedure TUnitMove.LoadFromNode(Node: TDOMNode); 887 begin 888 CountOnce := ReadInteger(Node, 'CountOnce', 0); 889 CountRepeat := ReadInteger(Node, 'CountRepeat', 0); 890 //CellFrom := ReadInteger(Node, 'CellFrom', 0); 891 //CellTo := ReadInteger(Node, 'CellTo', 0); 892 end; 893 894 procedure TUnitMove.SaveToNode(Node: TDOMNode); 895 begin 896 WriteInteger(Node, 'CountOnce', CountOnce); 897 WriteInteger(Node, 'CountRepeat', CountRepeat); 898 WriteInteger(Node, 'CellFrom', CellFrom.Id); 899 WriteInteger(Node, 'CellTo', CellTo.Id); 900 end; 901 794 902 constructor TUnitMove.Create; 795 903 begin … … 917 1025 Neighbors := TObjectList.Create; 918 1026 Neighbors.OwnsObjects := False; 919 MovesFrom := T ObjectList.Create;1027 MovesFrom := TUnitMoves.Create; 920 1028 MovesFrom.OwnsObjects := False; 921 MovesTo := T ObjectList.Create;1029 MovesTo := TUnitMoves.Create; 922 1030 MovesTo.OwnsObjects := False; 923 1031 end; … … 977 1085 FGame := AValue; 978 1086 View.Game := Game; 1087 end; 1088 1089 procedure TPlayer.LoadFromNode(Node: TDOMNode); 1090 begin 1091 Id := ReadInteger(Node, 'Id', 0); 1092 Name := ReadString(Node, 'Name', ''); 1093 Color := ReadInteger(Node, 'Color', clSilver); 1094 Mode := TPlayerMode(ReadInteger(Node, 'Mode', Integer(pmHuman))); 1095 end; 1096 1097 procedure TPlayer.SaveToNode(Node: TDOMNode); 1098 begin 1099 WriteInteger(Node, 'Id', Id); 1100 WriteString(Node, 'Name', Name); 1101 WriteInteger(Node, 'Color', Color); 1102 WriteInteger(Node, 'Mode', Integer(Mode)); 979 1103 end; 980 1104 … … 1349 1473 begin 1350 1474 I := 0; 1351 while (I < Moves.Count) and ((TUnitMove(Moves[I]).CellTo <> Move.CellFrom) and1475 while (I < Moves.Count) and ((TUnitMove(Moves[I]).CellTo <> Move.CellFrom) or 1352 1476 (TUnitMove(Moves[I]).CellFrom <> Move.CellTo)) do Inc(I); 1353 1477 if I < Moves.Count then CounterMove := TUnitMove(Moves[I]) … … 1390 1514 GrowCells := TGrowCells(GetValue(Path + '/GrowCells', Integer(gcPlayerAll))); 1391 1515 WinObjective := TWinObjective(GetValue(Path + '/WinObjective', Integer(woDefeatAllOponents))); 1516 end; 1517 end; 1518 1519 procedure TGame.LoadFromFile(FileName: string); 1520 var 1521 NewNode: TDOMNode; 1522 Value: Integer; 1523 Doc: TXMLDocument; 1524 Dump: TStringList; 1525 RootNode: TDOMNode; 1526 begin 1527 Self.FileName := FileName; 1528 ReadXMLFile(Doc, UTF8Decode(FileName)); 1529 with Doc do try 1530 if Doc.DocumentElement.NodeName <> 'XtacticsGame' then 1531 raise Exception.Create(SWrongFileFormat); 1532 RootNode := Doc.DocumentElement; 1533 with RootNode do begin 1534 VoidEnabled := ReadBoolean(RootNode, 'VoidEnabled', False); 1535 VoidPercentage := ReadInteger(RootNode, 'VoidPercentage', 0); 1536 MaxNeutralUnits := ReadInteger(RootNode, 'MaxNeutralUnits', 3); 1537 GrowCells := TGrowCells(ReadInteger(RootNode, 'GrowCells', Integer(gcNone))); 1538 GrowAmount := TGrowAmount(ReadInteger(RootNode, 'GrowAmount', Integer(gaByOne))); 1539 CityEnabled := ReadBoolean(RootNode, 'CityEnabled', False); 1540 CityPercentage := ReadInteger(RootNode, 'CityPercentage', 0); 1541 TurnCounter := ReadInteger(RootNode, 'TurnCounter', 0); 1542 WinObjective := TWinObjective(ReadInteger(RootNode, 'WinObjective', Integer(woDefeatAllOponents))); 1543 ReadInteger(RootNode, 'StayAliveForDefinedTurns', StayAliveForDefinedTurns); 1544 1545 NewNode := FindNode('Map'); 1546 if Assigned(NewNode) then 1547 Map.LoadFromNode(NewNode); 1548 1549 NewNode := FindNode('Players'); 1550 if Assigned(NewNode) then 1551 Players.LoadFromNode(NewNode); 1552 1553 NewNode := FindNode('UnitMoves'); 1554 if Assigned(NewNode) then 1555 Moves.LoadFromNode(NewNode); 1556 end; 1557 finally 1558 Doc.Free; 1559 end; 1560 end; 1561 1562 procedure TGame.SaveToFile(FileName: string); 1563 var 1564 NewNode: TDOMNode; 1565 NewNode2: TDOMNode; 1566 Doc: TXMLDocument; 1567 RootNode: TDOMNode; 1568 I: Integer; 1569 begin 1570 Self.FileName := FileName; 1571 Doc := TXMLDocument.Create; 1572 with Doc do try 1573 RootNode := CreateElement('XtacticsGame'); 1574 AppendChild(RootNode); 1575 with RootNode do begin 1576 WriteBoolean(RootNode, 'VoidEnabled', VoidEnabled); 1577 WriteInteger(RootNode, 'VoidPercentage', VoidPercentage); 1578 WriteInteger(RootNode, 'MaxNeutralUnits', MaxNeutralUnits); 1579 WriteInteger(RootNode, 'GrowCells', Integer(GrowCells)); 1580 WriteInteger(RootNode, 'GrowAmount', Integer(GrowAmount)); 1581 WriteBoolean(RootNode, 'CityEnabled', CityEnabled); 1582 WriteInteger(RootNode, 'CityPercentage', CityPercentage); 1583 WriteInteger(RootNode, 'TurnCounter', TurnCounter); 1584 WriteInteger(RootNode, 'WinObjective', Integer(WinObjective)); 1585 WriteInteger(RootNode, 'StayAliveForDefinedTurns', StayAliveForDefinedTurns); 1586 1587 NewNode := OwnerDocument.CreateElement('Map'); 1588 AppendChild(NewNode); 1589 Map.SaveToNode(NewNode); 1590 1591 NewNode := OwnerDocument.CreateElement('Players'); 1592 AppendChild(NewNode); 1593 for I := 0 to Players.Count - 1 do begin; 1594 NewNode2 := OwnerDocument.CreateElement('Player'); 1595 NewNode.AppendChild(NewNode2); 1596 TPlayer(Players[I]).SaveToNode(NewNode2); 1597 end; 1598 1599 NewNode := OwnerDocument.CreateElement('UnitMoves'); 1600 AppendChild(NewNode); 1601 Moves.SaveToNode(NewNode); 1602 end; 1603 ForceDirectoriesUTF8(ExtractFileDir(FileName)); 1604 WriteXMLFile(Doc, UTF8Decode(FileName)); 1605 finally 1606 Doc.Free; 1392 1607 end; 1393 1608 end; … … 1484 1699 Player: TPlayer; 1485 1700 begin 1486 Moves := T ObjectList.Create;1701 Moves := TUnitMoves.Create; 1487 1702 Map := TMap.Create; 1488 1703 Players := TPlayers.Create; … … 1528 1743 C: Integer; 1529 1744 begin 1745 FileName := SNewGameFile; 1530 1746 TurnCounter := 1; 1531 1747 Moves.Clear;
Note:
See TracChangeset
for help on using the changeset viewer.