diff --git a/android/Images/OtherIcons/Mods.png b/android/Images/OtherIcons/Mods.png new file mode 100644 index 00000000..9eaa7e1d Binary files /dev/null and b/android/Images/OtherIcons/Mods.png differ diff --git a/android/assets/game.atlas b/android/assets/game.atlas index 7296ec0c..41f8f7c5 100644 --- a/android/assets/game.atlas +++ b/android/assets/game.atlas @@ -356,119 +356,119 @@ BuildingIcons/Mint index: -1 BuildingIcons/Monastery rotate: false - xy: 1022, 288 + xy: 1124, 288 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Monument rotate: false - xy: 1226, 288 + xy: 1328, 288 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Mud Pyramid Mosque rotate: false - xy: 1430, 288 + xy: 716, 274 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Mughal Fort rotate: false - xy: 716, 274 + xy: 818, 274 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Museum rotate: false - xy: 614, 224 + xy: 1532, 208 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/National College rotate: false - xy: 1940, 208 + xy: 2, 206 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Neuschwanstein rotate: false - xy: 206, 190 + xy: 308, 190 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Notre Dame rotate: false - xy: 512, 190 + xy: 920, 186 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Nuclear Plant rotate: false - xy: 1124, 186 + xy: 1226, 186 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Observatory rotate: false - xy: 1328, 186 + xy: 1430, 186 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Opera House rotate: false - xy: 818, 172 + xy: 614, 122 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Oxford University rotate: false - xy: 1532, 106 + xy: 1634, 106 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Palace rotate: false - xy: 1736, 106 + xy: 1838, 106 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Paper Maker rotate: false - xy: 1940, 106 + xy: 2, 104 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Pentagon rotate: false - xy: 308, 88 + xy: 410, 88 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Porcelain Tower rotate: false - xy: 1634, 5 + xy: 1532, 4 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Public School rotate: false - xy: 1838, 4 + xy: 1940, 4 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -762,28 +762,21 @@ ImprovementIcons/Moai index: -1 ImprovementIcons/Oil well rotate: false - xy: 716, 172 + xy: 818, 172 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Pasture rotate: false - xy: 104, 88 + xy: 206, 88 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ImprovementIcons/Plantation rotate: false - xy: 716, 70 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ImprovementIcons/Quarry - rotate: false - xy: 2, 2 + xy: 818, 70 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -902,21 +895,21 @@ NationIcons/Korea index: -1 NationIcons/Mongolia rotate: false - xy: 1124, 288 + xy: 1226, 288 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Persia rotate: false - xy: 512, 88 + xy: 920, 84 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 NationIcons/Polynesia rotate: false - xy: 614, 20 + xy: 1736, 5 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -998,44 +991,51 @@ OtherIcons/MenuIcon orig: 100, 100 offset: 0, 0 index: -1 +OtherIcons/Mods + rotate: false + xy: 920, 288 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 OtherIcons/Multiplayer rotate: false - xy: 818, 274 + xy: 614, 224 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/New rotate: false - xy: 308, 190 + xy: 410, 190 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Options rotate: false - xy: 1634, 107 + xy: 1532, 106 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Pentagon rotate: false - xy: 410, 88 + xy: 512, 88 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Pillage rotate: false - xy: 1430, 84 + xy: 716, 70 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 OtherIcons/Puppet rotate: false - xy: 1940, 4 + xy: 2, 2 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -1168,14 +1168,14 @@ ResourceIcons/Marble index: -1 ResourceIcons/Oil rotate: false - xy: 1430, 186 + xy: 716, 172 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Pearls rotate: false - xy: 206, 88 + xy: 308, 88 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -1581,77 +1581,77 @@ TechIcons/Mobile Tactics index: -1 TechIcons/Nanotechnology rotate: false - xy: 1736, 208 + xy: 1838, 208 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Navigation rotate: false - xy: 104, 190 + xy: 206, 190 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Nuclear Fission rotate: false - xy: 920, 186 + xy: 1022, 186 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Optics rotate: false - xy: 614, 122 + xy: 1736, 107 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Particle Physics rotate: false - xy: 2, 104 + xy: 104, 88 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Pharmaceuticals rotate: false - xy: 1022, 84 + xy: 1124, 84 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Philosophy rotate: false - xy: 1124, 84 + xy: 1226, 84 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Physics rotate: false - xy: 1226, 84 + xy: 1328, 84 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Plastics rotate: false - xy: 818, 70 + xy: 614, 20 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Pottery rotate: false - xy: 1532, 4 + xy: 1634, 4 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Printing Press rotate: false - xy: 1736, 4 + xy: 1838, 4 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -1756,21 +1756,21 @@ TileSets/Default/MarshOverlay index: -1 TileSets/Default/MountainOverlay rotate: false - xy: 1328, 288 + xy: 1430, 288 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/NaturalWonderOverlay rotate: false - xy: 2, 206 + xy: 104, 190 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/OasisOverlay rotate: false - xy: 1226, 186 + xy: 1328, 186 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -2197,63 +2197,63 @@ UnitIcons/Modern Armor index: -1 UnitIcons/Mohawk Warrior rotate: false - xy: 920, 288 + xy: 1022, 288 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Musketeer rotate: false - xy: 1532, 208 + xy: 1634, 208 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Musketman rotate: false - xy: 1634, 209 + xy: 1736, 209 size: 100, 99 orig: 100, 99 offset: 0, 0 index: -1 UnitIcons/Naresuan's Elephant rotate: false - xy: 1838, 208 + xy: 1940, 208 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Norwegian Ski Infantry rotate: false - xy: 410, 190 + xy: 512, 190 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Nuclear Missile rotate: false - xy: 1022, 186 + xy: 1124, 186 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Panzer rotate: false - xy: 1838, 106 + xy: 1940, 106 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Persian Immortal rotate: false - xy: 920, 84 + xy: 1022, 84 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Pikeman rotate: false - xy: 1328, 84 + xy: 1430, 84 size: 100, 100 orig: 100, 100 offset: 0, 0 @@ -2266,490 +2266,497 @@ filter: MipMapLinearLinear,MipMapLinearLinear repeat: none BuildingIcons/Research Lab rotate: false - xy: 104, 718 + xy: 206, 820 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/SS Booster rotate: false - xy: 308, 718 + xy: 410, 820 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/SS Cockpit rotate: false - xy: 410, 820 + xy: 512, 922 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/SS Engine rotate: false - xy: 512, 922 + xy: 2, 310 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/SS Stasis Chamber rotate: false - xy: 2, 310 + xy: 104, 412 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Satrap's Court rotate: false - xy: 410, 718 + xy: 512, 820 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Seaport rotate: false - xy: 104, 310 + xy: 206, 412 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Sistine Chapel rotate: false - xy: 206, 310 + xy: 308, 412 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Solar Plant rotate: false - xy: 512, 616 + xy: 614, 718 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Spaceship Factory rotate: false - xy: 716, 820 + xy: 818, 922 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Stable rotate: false - xy: 308, 310 + xy: 410, 412 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Stadium rotate: false - xy: 410, 412 + xy: 512, 514 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Statue of Liberty rotate: false - xy: 512, 514 + xy: 614, 616 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Statue of Zeus rotate: false - xy: 614, 616 + xy: 716, 718 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Stock Exchange rotate: false - xy: 104, 4 + xy: 206, 106 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Stone Works rotate: false - xy: 308, 208 + xy: 410, 310 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Stonehenge rotate: false - xy: 410, 310 + xy: 512, 412 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Sydney Opera House rotate: false - xy: 920, 820 + xy: 1022, 922 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Taj Mahal rotate: false - xy: 1022, 922 + xy: 206, 4 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Temple rotate: false - xy: 308, 106 + xy: 410, 208 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Terracotta Army rotate: false - xy: 614, 412 + xy: 716, 514 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/The Great Library rotate: false - xy: 716, 514 + xy: 818, 616 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/The Great Lighthouse rotate: false - xy: 818, 616 + xy: 920, 718 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/The Louvre rotate: false - xy: 920, 718 + xy: 1022, 820 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/The Oracle rotate: false - xy: 1022, 820 + xy: 1124, 922 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/The Pyramids rotate: false - xy: 308, 4 + xy: 410, 106 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Theatre rotate: false - xy: 512, 208 + xy: 614, 310 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/University rotate: false - xy: 410, 4 + xy: 512, 106 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Walls rotate: false - xy: 614, 208 + xy: 716, 310 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Walls of Babylon rotate: false - xy: 716, 310 + xy: 818, 412 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Wat rotate: false - xy: 1124, 717 + xy: 1226, 819 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Water Mill rotate: false - xy: 1226, 820 + xy: 1328, 922 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Windmill rotate: false - xy: 614, 106 + xy: 716, 208 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 BuildingIcons/Workshop rotate: false - xy: 1022, 514 + xy: 1124, 616 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 EmojiIcons/Turn rotate: false - xy: 1848, 816 + xy: 1848, 764 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -ImprovementIcons/Railroad - rotate: false - xy: 2, 718 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -TileSets/Default/Railroad - rotate: false - xy: 2, 718 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ImprovementIcons/Road - rotate: false - xy: 206, 718 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ImprovementIcons/Terrace farm - rotate: false - xy: 512, 310 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -ImprovementIcons/Trading post - rotate: false - xy: 716, 412 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -NationIcons/Rome - rotate: false - xy: 104, 514 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -NationIcons/Russia - rotate: false - xy: 206, 616 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -NationIcons/Siam - rotate: false - xy: 614, 820 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -NationIcons/Songhai - rotate: false - xy: 614, 718 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -NationIcons/Spain - rotate: false - xy: 818, 922 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -NationIcons/The Ottomans - rotate: false - xy: 1124, 922 - size: 100, 100 - orig: 100, 100 - offset: 0, 0 - index: -1 -OtherIcons/Aircraft - rotate: false - xy: 716, 156 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -OtherIcons/BackArrow - rotate: false - xy: 1124, 563 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -OtherIcons/Down - rotate: false - xy: 1278, 666 - size: 50, 50 - orig: 50, 50 - offset: 0, 0 - index: -1 -OtherIcons/Quickstart +ImprovementIcons/Quarry rotate: false xy: 2, 922 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -OtherIcons/Resume +ImprovementIcons/Railroad rotate: false - xy: 308, 922 + xy: 104, 820 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -OtherIcons/Scenario +TileSets/Default/Railroad rotate: false - xy: 512, 820 + xy: 104, 820 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -OtherIcons/Shield +ImprovementIcons/Road rotate: false - xy: 410, 616 + xy: 308, 820 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -OtherIcons/Sleep +ImprovementIcons/Terrace farm rotate: false - xy: 308, 412 + xy: 614, 412 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -OtherIcons/Stop +ImprovementIcons/Trading post rotate: false - xy: 512, 412 + xy: 818, 514 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -OtherIcons/TableBackground +NationIcons/Rome rotate: false - xy: 1588, 816 - size: 50, 50 - orig: 50, 50 + xy: 206, 616 + size: 100, 100 + orig: 100, 100 offset: 0, 0 index: -1 -OtherIcons/Up +NationIcons/Russia rotate: false - xy: 1952, 816 - size: 50, 50 - orig: 50, 50 + xy: 308, 718 + size: 100, 100 + orig: 100, 100 offset: 0, 0 index: -1 -OtherIcons/whiteDot +NationIcons/Siam rotate: false - xy: 1482, 1008 - size: 1, 1 - orig: 1, 1 + xy: 716, 922 + size: 100, 100 + orig: 100, 100 offset: 0, 0 index: -1 -PolicyIcons/Aristocracy +NationIcons/Songhai + rotate: false + xy: 716, 820 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +NationIcons/Spain + rotate: false + xy: 2, 4 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +NationIcons/The Ottomans + rotate: false + xy: 308, 4 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Aircraft rotate: false xy: 920, 360 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 +OtherIcons/BackArrow + rotate: false + xy: 1328, 768 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +OtherIcons/Down + rotate: false + xy: 1380, 768 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +OtherIcons/Quickstart + rotate: false + xy: 2, 820 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Resume + rotate: false + xy: 2, 514 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Scenario + rotate: false + xy: 614, 922 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Shield + rotate: false + xy: 512, 718 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Sleep + rotate: false + xy: 410, 514 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/Stop + rotate: false + xy: 614, 514 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +OtherIcons/TableBackground + rotate: false + xy: 1796, 816 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +OtherIcons/Up + rotate: false + xy: 1848, 712 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +OtherIcons/whiteDot + rotate: false + xy: 700, 41 + size: 1, 1 + orig: 1, 1 + offset: 0, 0 + index: -1 +PolicyIcons/Aristocracy + rotate: false + xy: 1124, 564 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 PolicyIcons/Citizenship rotate: false - xy: 1226, 614 + xy: 716, 104 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Civil Society rotate: false - xy: 666, 54 + xy: 768, 156 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Collective Rule rotate: false - xy: 768, 156 + xy: 870, 258 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Constitution rotate: false - xy: 870, 258 + xy: 972, 360 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Democracy rotate: false - xy: 1074, 462 + xy: 1176, 564 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Entrepreneurship rotate: false - xy: 1430, 907 + xy: 1432, 803 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Fascism rotate: false - xy: 1330, 597 + xy: 1493, 972 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Free Religion rotate: false - xy: 1597, 972 + xy: 1649, 972 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Free Speech rotate: false - xy: 1649, 972 + xy: 1701, 972 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Free Thought rotate: false - xy: 1701, 972 + xy: 1753, 972 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Humanism rotate: false - xy: 1857, 972 + xy: 1909, 972 size: 50, 50 orig: 50, 50 offset: 0, 0 @@ -2763,168 +2770,168 @@ PolicyIcons/Landed Elite index: -1 PolicyIcons/Legalism rotate: false - xy: 1586, 920 + xy: 1534, 868 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Mandate Of Heaven rotate: false - xy: 1690, 920 + xy: 1586, 868 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Mercantilism rotate: false - xy: 1846, 920 + xy: 1690, 920 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Meritocracy rotate: false - xy: 1898, 920 + xy: 1690, 868 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Militarism rotate: false - xy: 1950, 920 + xy: 1742, 920 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Military Caste rotate: false - xy: 1482, 868 + xy: 1742, 868 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Military Tradition rotate: false - xy: 1534, 868 + xy: 1794, 920 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Monarchy rotate: false - xy: 1638, 868 + xy: 1846, 920 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Oligarchy rotate: false - xy: 1742, 868 + xy: 1898, 920 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Organized Religion rotate: false - xy: 1794, 868 + xy: 1898, 868 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Patronage rotate: false - xy: 1846, 868 + xy: 1950, 920 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Police State rotate: false - xy: 1898, 868 + xy: 1950, 868 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Populism rotate: false - xy: 1950, 868 + xy: 1484, 816 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Professional Army rotate: false - xy: 718, 104 + xy: 1484, 764 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Protectionism rotate: false - xy: 718, 52 + xy: 1536, 816 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Reformation rotate: false - xy: 922, 308 + xy: 1588, 816 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Representation rotate: false - xy: 974, 308 + xy: 1588, 764 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Republic rotate: false - xy: 974, 256 + xy: 1640, 816 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Scientific Revolution rotate: false - xy: 1380, 855 + xy: 1588, 712 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Secularism rotate: false - xy: 820, 206 + xy: 1692, 816 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Sovereignty rotate: false - xy: 1484, 816 + xy: 1692, 712 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Theocracy rotate: false - xy: 1692, 816 + xy: 1796, 764 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Total War rotate: false - xy: 1744, 816 + xy: 1848, 816 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Trade Unions rotate: false - xy: 1796, 816 + xy: 1796, 712 size: 50, 50 orig: 50, 50 offset: 0, 0 @@ -2938,2359 +2945,2359 @@ PolicyIcons/Universal Suffrage index: -1 PolicyIcons/Warrior Code rotate: false - xy: 1484, 764 + xy: 1900, 712 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 ResourceIcons/Sheep rotate: false - xy: 308, 514 + xy: 410, 616 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Silk rotate: false - xy: 716, 922 + xy: 2, 106 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Silver rotate: false - xy: 2, 106 + xy: 104, 208 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Spices rotate: false - xy: 206, 208 + xy: 308, 310 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Stone rotate: false - xy: 206, 106 + xy: 308, 208 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Sugar rotate: false - xy: 716, 616 + xy: 818, 718 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Uranium rotate: false - xy: 512, 106 + xy: 614, 208 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Whales rotate: false - xy: 1328, 922 + xy: 512, 4 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Wheat rotate: false - xy: 512, 4 + xy: 614, 106 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 ResourceIcons/Wine rotate: false - xy: 716, 208 + xy: 818, 310 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 StatIcons/InterceptRange rotate: false - xy: 1961, 972 + xy: 1482, 920 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 StatIcons/Movement rotate: false - xy: 1690, 868 + xy: 1846, 868 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 StatIcons/Range rotate: false - xy: 770, 104 + xy: 1484, 712 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 StatIcons/RangedStrength rotate: false - xy: 770, 52 + xy: 1536, 764 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 StatIcons/Resistance rotate: false - xy: 206, 820 + xy: 308, 922 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 StatIcons/Specialist rotate: false - xy: 104, 106 + xy: 206, 208 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 StatIcons/Strength rotate: false - xy: 1536, 816 + xy: 1744, 764 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 TechIcons/Radar rotate: false - xy: 2, 820 + xy: 104, 922 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Radio rotate: false - xy: 104, 922 + xy: 2, 718 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Railroad rotate: false - xy: 104, 820 + xy: 206, 922 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Refrigeration rotate: false - xy: 206, 922 + xy: 2, 616 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Replaceable Parts rotate: false - xy: 2, 616 + xy: 104, 718 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Rifling rotate: false - xy: 104, 616 + xy: 206, 718 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Robotics rotate: false - xy: 308, 820 + xy: 410, 922 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Rocketry rotate: false - xy: 2, 412 + xy: 104, 514 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Sailing rotate: false - xy: 104, 412 + xy: 206, 514 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Satellites rotate: false - xy: 308, 616 + xy: 410, 718 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Scientific Theory rotate: false - xy: 614, 922 + xy: 2, 208 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Steam Power rotate: false - xy: 818, 820 + xy: 920, 922 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Steel rotate: false - xy: 920, 922 + xy: 104, 4 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/The Wheel rotate: false - xy: 410, 106 + xy: 512, 208 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Theology rotate: false - xy: 614, 310 + xy: 716, 412 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Trapping rotate: false - xy: 818, 514 + xy: 920, 616 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TechIcons/Writing rotate: false - xy: 1124, 615 + xy: 1226, 717 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 TileSets/Default/Tiles/River-Bottom rotate: false - xy: 1722, 666 + xy: 1756, 654 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/River-Bottom rotate: false - xy: 1722, 666 + xy: 1756, 654 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/Default/Tiles/River-BottomLeft rotate: false - xy: 1688, 606 + xy: 1790, 652 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/River-BottomLeft rotate: false - xy: 1688, 606 + xy: 1790, 652 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/Default/Tiles/River-BottomRight rotate: false - xy: 1722, 636 + xy: 1824, 651 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/River-BottomRight rotate: false - xy: 1722, 636 + xy: 1824, 651 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/Default/road rotate: false - xy: 1430, 1011 + xy: 614, 93 size: 61, 11 orig: 61, 11 offset: 0, 0 index: -1 TileSets/FantasyHex/road rotate: false - xy: 1430, 1011 + xy: 614, 93 size: 61, 11 orig: 61, 11 offset: 0, 0 index: -1 TileSets/FantasyHex/Railroad rotate: false - xy: 1328, 909 + xy: 1430, 1011 size: 61, 11 orig: 61, 11 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Academy rotate: false - xy: 1176, 577 + xy: 1278, 679 size: 32, 36 orig: 32, 36 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Aluminum rotate: false - xy: 1124, 533 + xy: 614, 11 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Ancient ruins rotate: false - xy: 2013, 994 + xy: 818, 228 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Atoll rotate: false - xy: 1432, 877 + xy: 2013, 994 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Bananas rotate: false - xy: 1640, 786 + xy: 852, 228 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Barbarian encampment rotate: false - xy: 752, 22 + xy: 954, 330 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Barringer Crater rotate: false - xy: 1058, 380 + xy: 1056, 432 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Camp+Deer rotate: false - xy: 1776, 786 + xy: 2013, 964 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Camp+Furs rotate: false - xy: 1810, 786 + xy: 1952, 704 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Camp+Ivory rotate: false - xy: 1844, 786 + xy: 2002, 934 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Cattle rotate: false - xy: 872, 198 + xy: 2004, 788 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Cerro de Potosi rotate: false - xy: 1674, 758 + xy: 1278, 649 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Citadel rotate: false - xy: 1776, 749 + xy: 1346, 679 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/City rotate: false - xy: 1810, 749 + xy: 1380, 679 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+City rotate: false - xy: 1810, 749 + xy: 1380, 679 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+City rotate: false - xy: 1810, 749 + xy: 1380, 679 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/City ruins rotate: false - xy: 1844, 756 + xy: 1346, 649 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/City-Ancient era rotate: false - xy: 2002, 922 + xy: 1380, 637 size: 32, 40 orig: 32, 40 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/City-Classical era rotate: false - xy: 2002, 880 + xy: 1986, 716 size: 32, 40 orig: 32, 40 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/City-Medieval era rotate: false - xy: 1878, 744 + xy: 1414, 657 size: 32, 40 orig: 32, 40 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Coal rotate: false - xy: 1946, 758 + xy: 1414, 627 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Coast rotate: false - xy: 1980, 786 + xy: 1448, 639 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Coast+Atoll rotate: false - xy: 1980, 756 + xy: 648, 11 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Coast+Ice rotate: false - xy: 1844, 726 + xy: 1312, 626 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Coast+Oil well rotate: false - xy: 2014, 850 + xy: 1346, 619 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Cotton rotate: false - xy: 2014, 734 + xy: 1484, 682 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Customs house rotate: false - xy: 1946, 721 + xy: 1482, 645 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Deer rotate: false - xy: 1980, 726 + xy: 1482, 615 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Desert rotate: false - xy: 2014, 704 + xy: 1516, 652 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Desert+City rotate: false - xy: 1980, 691 + xy: 1516, 617 size: 32, 33 orig: 32, 33 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Desert+Fallout rotate: false - xy: 2014, 674 + xy: 1586, 682 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Desert+Farm rotate: false - xy: 1912, 700 + xy: 1620, 682 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Desert+Flood plains rotate: false - xy: 1946, 691 + xy: 1654, 682 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Desert+Flood plains+Farm rotate: false - xy: 1176, 547 + xy: 1688, 682 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Desert+Oasis rotate: false - xy: 1210, 584 + xy: 1722, 682 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Dyes rotate: false - xy: 1244, 584 + xy: 1790, 682 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/El Dorado rotate: false - xy: 1278, 583 + xy: 1824, 681 size: 32, 29 orig: 32, 29 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Fish rotate: false - xy: 1244, 554 + xy: 1858, 682 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Fishing Boats rotate: false - xy: 1278, 553 + xy: 1892, 682 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Fishing Boats+Whales rotate: false - xy: 906, 226 + xy: 677, 76 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Fort rotate: false - xy: 974, 221 + xy: 666, 41 size: 32, 33 orig: 32, 33 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Fountain of Youth rotate: false - xy: 906, 192 + xy: 745, 70 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Furs rotate: false - xy: 974, 191 + xy: 700, 44 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Gems rotate: false - xy: 1008, 196 + xy: 716, 12 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Gold rotate: false - xy: 1008, 166 + xy: 750, 12 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grand Mesa rotate: false - xy: 1312, 563 + xy: 820, 194 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland rotate: false - xy: 1346, 567 + xy: 820, 164 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Fallout rotate: false - xy: 1210, 526 + xy: 854, 198 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Farm rotate: false - xy: 1244, 524 + xy: 820, 134 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest rotate: false - xy: 1278, 520 + xy: 854, 165 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest+Aluminum rotate: false - xy: 1312, 530 + xy: 888, 195 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest+Camp rotate: false - xy: 1346, 534 + xy: 854, 132 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest+Camp+Deer rotate: false - xy: 1026, 347 + xy: 888, 162 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest+Camp+Furs rotate: false - xy: 1026, 314 + xy: 820, 101 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest+Coal rotate: false - xy: 1060, 347 + xy: 854, 99 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest+Gold rotate: false - xy: 1026, 281 + xy: 888, 129 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest+Iron rotate: false - xy: 1060, 314 + xy: 888, 96 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest+Lumber mill rotate: false - xy: 1060, 281 + xy: 813, 68 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest+Silver rotate: false - xy: 1094, 347 + xy: 847, 66 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Jungle rotate: false - xy: 1094, 313 + xy: 881, 62 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Jungle+Trading post rotate: false - xy: 1094, 279 + xy: 779, 42 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Marsh rotate: false - xy: 1126, 502 + xy: 813, 37 size: 32, 29 orig: 32, 29 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Great Barrier Reef rotate: false - xy: 1128, 442 + xy: 881, 32 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill rotate: false - xy: 1382, 683 + xy: 922, 270 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Fallout rotate: false - xy: 1382, 649 + xy: 956, 296 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Forest rotate: false - xy: 1382, 619 + xy: 990, 300 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Forest+Camp rotate: false - xy: 1382, 589 + xy: 956, 266 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Forest+Lumber mill rotate: false - xy: 1380, 559 + xy: 990, 270 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Forest+Trading post rotate: false - xy: 1380, 529 + xy: 922, 240 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Marble+Quarry rotate: false - xy: 1380, 499 + xy: 956, 236 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Mine rotate: false - xy: 1416, 734 + xy: 990, 240 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Stone+Quarry rotate: false - xy: 1450, 734 + xy: 922, 210 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Terrace farm rotate: false - xy: 1416, 704 + xy: 922, 180 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Horses rotate: false - xy: 1416, 644 + xy: 922, 150 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Incense rotate: false - xy: 1518, 734 + xy: 990, 180 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Iron rotate: false - xy: 1416, 614 + xy: 922, 120 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Ivory rotate: false - xy: 1484, 704 + xy: 990, 150 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Krakatoa rotate: false - xy: 1450, 614 + xy: 915, 60 size: 32, 30 orig: 32, 30 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Lakes rotate: false - xy: 1484, 646 + xy: 949, 60 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Landmark rotate: false - xy: 1484, 608 + xy: 1024, 364 size: 32, 36 orig: 32, 36 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Manufactory rotate: false - xy: 1586, 635 + xy: 1482, 574 size: 32, 39 orig: 32, 39 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Marble rotate: false - xy: 1416, 584 + xy: 1516, 587 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Mine rotate: false - xy: 1414, 526 + xy: 954, 2 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Moai rotate: false - xy: 1448, 523 + xy: 1228, 574 size: 32, 29 orig: 32, 29 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Mount Fuji rotate: false - xy: 1448, 491 + xy: 1126, 502 size: 32, 30 orig: 32, 30 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Mountain rotate: false - xy: 1484, 570 + xy: 1126, 464 size: 32, 36 orig: 32, 36 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Ocean rotate: false - xy: 1482, 510 + xy: 1024, 334 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Ocean+Atoll rotate: false - xy: 1586, 575 + xy: 1024, 304 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Ocean+Ice rotate: false - xy: 1482, 480 + xy: 1058, 312 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Oil rotate: false - xy: 1518, 556 + xy: 1024, 274 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Oil well rotate: false - xy: 1552, 556 + xy: 1058, 282 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Old Faithful rotate: false - xy: 1516, 522 + xy: 1092, 308 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Pasture rotate: false - xy: 1550, 496 + xy: 1092, 278 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Pasture+Cattle rotate: false - xy: 1584, 511 + xy: 1058, 218 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Pasture+Horses rotate: false - xy: 1584, 477 + xy: 1092, 244 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Pasture+Sheep rotate: false - xy: 1550, 462 + xy: 1024, 182 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Pasture2 rotate: false - xy: 1586, 545 + xy: 1024, 216 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Pearls rotate: false - xy: 1516, 464 + xy: 1058, 188 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains rotate: false - xy: 1620, 696 + xy: 1058, 158 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+City rotate: false - xy: 1620, 659 + xy: 1092, 177 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Fallout rotate: false - xy: 1620, 629 + xy: 1024, 122 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Farm rotate: false - xy: 1620, 599 + xy: 1058, 128 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Forest rotate: false - xy: 1620, 564 + xy: 1092, 142 size: 32, 33 orig: 32, 33 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Forest+Camp rotate: false - xy: 1654, 721 + xy: 1024, 87 size: 32, 33 orig: 32, 33 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Forest+Camp+Deer rotate: false - xy: 1654, 686 + xy: 1058, 93 size: 32, 33 orig: 32, 33 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Forest+Camp+Furs rotate: false - xy: 1654, 651 + xy: 1092, 107 size: 32, 33 orig: 32, 33 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Forest+Lumber mill rotate: false - xy: 1654, 616 + xy: 1017, 52 size: 32, 33 orig: 32, 33 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Jungle rotate: false - xy: 1654, 582 + xy: 1092, 73 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Jungle+Trading post rotate: false - xy: 1620, 530 + xy: 1058, 59 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation rotate: false - xy: 1654, 552 + xy: 1092, 43 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Bananas rotate: false - xy: 1618, 500 + xy: 1226, 514 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Cotton rotate: false - xy: 1618, 470 + xy: 1022, 22 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Dyes rotate: false - xy: 1618, 440 + xy: 1056, 29 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Incense rotate: false - xy: 1654, 522 + xy: 1090, 13 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Silk rotate: false - xy: 1652, 492 + xy: 1552, 654 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Spices rotate: false - xy: 1652, 462 + xy: 1550, 624 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Sugar rotate: false - xy: 1652, 432 + xy: 1550, 594 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Wine rotate: false - xy: 1688, 726 + xy: 1550, 564 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Polder rotate: false - xy: 1688, 696 + xy: 1586, 652 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Quarry rotate: false - xy: 1722, 726 + xy: 1620, 652 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Quarry+Marble rotate: false - xy: 1722, 696 + xy: 1654, 652 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Quarry+Stone rotate: false - xy: 1688, 666 + xy: 1688, 652 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Rock of Gibraltar rotate: false - xy: 1688, 572 + xy: 1584, 618 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Sheep rotate: false - xy: 1722, 576 + xy: 1618, 622 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Silk rotate: false - xy: 1688, 512 + xy: 1618, 592 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Silver rotate: false - xy: 1722, 518 + xy: 1652, 622 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Snow rotate: false - xy: 1686, 424 + xy: 1720, 622 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Spices rotate: false - xy: 1790, 719 + xy: 1720, 592 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Stone rotate: false - xy: 1756, 689 + xy: 1584, 558 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Sugar rotate: false - xy: 1790, 689 + xy: 1652, 564 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Trading post rotate: false - xy: 1756, 571 + xy: 1618, 534 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra rotate: false - xy: 1790, 569 + xy: 1720, 532 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+City rotate: false - xy: 1790, 532 + xy: 1926, 667 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+Fallout rotate: false - xy: 1756, 513 + xy: 1926, 637 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+Forest rotate: false - xy: 1790, 498 + xy: 1892, 620 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+Forest+Camp rotate: false - xy: 1824, 692 + xy: 1858, 618 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+Forest+Camp+Deer rotate: false - xy: 1824, 658 + xy: 1926, 603 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+Forest+Camp+Furs rotate: false - xy: 1824, 624 + xy: 1892, 586 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+Forest+Lumber mill rotate: false - xy: 1824, 590 + xy: 1926, 569 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Uranium rotate: false - xy: 1824, 532 + xy: 1652, 504 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Whales rotate: false - xy: 1720, 460 + xy: 1754, 596 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Wheat rotate: false - xy: 1720, 430 + xy: 1754, 566 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Wine rotate: false - xy: 1754, 455 + xy: 1754, 536 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/TopBorder rotate: false - xy: 1790, 629 + xy: 1584, 528 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Anti-Aircraft Gun rotate: false - xy: 718, 22 + xy: 920, 330 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Anti-Tank Gun rotate: false - xy: 820, 176 + xy: 1022, 432 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Archer rotate: false - xy: 872, 228 + xy: 1124, 534 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Artillery rotate: false - xy: 1024, 380 + xy: 1226, 635 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Ballista rotate: false - xy: 1380, 773 + xy: 1952, 734 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Battleship rotate: false - xy: 1674, 788 + xy: 1158, 536 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Berserker rotate: false - xy: 786, 22 + xy: 886, 228 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Bowman rotate: false - xy: 1092, 380 + xy: 988, 330 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Brute rotate: false - xy: 1708, 786 + xy: 1090, 432 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Camel Archer rotate: false - xy: 1742, 786 + xy: 1192, 534 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Cannon rotate: false - xy: 1878, 786 + xy: 2002, 904 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Caravel rotate: false - xy: 1912, 788 + xy: 2002, 876 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Carrier rotate: false - xy: 1946, 788 + xy: 2004, 848 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Catapult rotate: false - xy: 2013, 964 + xy: 2004, 818 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Cavalry rotate: false - xy: 1640, 756 + xy: 2004, 758 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Chariot Archer rotate: false - xy: 1708, 756 + xy: 1312, 686 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Chu-Ko-Nu rotate: false - xy: 1742, 756 + xy: 1312, 656 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/CivilianLandUnit rotate: false - xy: 1912, 758 + xy: 1448, 669 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Companion Cavalry rotate: false - xy: 2014, 822 + xy: 1380, 609 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Conquistador rotate: false - xy: 2014, 794 + xy: 1414, 599 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Cossack rotate: false - xy: 2014, 764 + xy: 1448, 609 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Crossbowman rotate: false - xy: 1878, 714 + xy: 1518, 682 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Cruiser rotate: false - xy: 1912, 730 + xy: 1552, 684 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Destroyer rotate: false - xy: 1210, 556 + xy: 1756, 684 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Foreign Legion rotate: false - xy: 940, 226 + xy: 711, 74 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Frigate rotate: false - xy: 940, 198 + xy: 779, 76 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Galleass rotate: false - xy: 940, 170 + xy: 734, 42 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Galley rotate: false - xy: 974, 163 + xy: 1986, 688 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Gatling Gun rotate: false - xy: 1008, 226 + xy: 682, 11 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Machine Gun rotate: false - xy: 1008, 226 + xy: 682, 11 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Great Artist rotate: false - xy: 1126, 472 + xy: 847, 36 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Great Engineer rotate: false - xy: 1128, 412 + xy: 784, 2 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Worker rotate: false - xy: 1128, 412 + xy: 784, 2 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Great General rotate: false - xy: 1312, 500 + xy: 818, 2 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Great Merchant rotate: false - xy: 1346, 504 + xy: 852, 2 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Settler rotate: false - xy: 1346, 504 + xy: 852, 2 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Great Scientist rotate: false - xy: 1382, 743 + xy: 886, 2 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Great War Infantry rotate: false - xy: 1382, 713 + xy: 922, 300 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Infantry rotate: false - xy: 1382, 713 + xy: 922, 300 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Hoplite rotate: false - xy: 1484, 734 + xy: 956, 206 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Horseman rotate: false - xy: 1416, 674 + xy: 990, 210 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Hwach'a rotate: false - xy: 1450, 704 + xy: 956, 176 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Ironclad rotate: false - xy: 1450, 676 + xy: 956, 148 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Jaguar rotate: false - xy: 1552, 734 + xy: 956, 118 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Janissary rotate: false - xy: 1450, 646 + xy: 990, 120 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Keshik rotate: false - xy: 1484, 676 + xy: 922, 92 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Khan rotate: false - xy: 1518, 706 + xy: 956, 90 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Knight rotate: false - xy: 1586, 734 + xy: 990, 90 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Lancer rotate: false - xy: 1518, 676 + xy: 983, 60 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/LandUnit rotate: false - xy: 1552, 704 + xy: 1024, 402 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Warrior rotate: false - xy: 1552, 704 + xy: 1024, 402 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Landship rotate: false - xy: 1518, 646 + xy: 1058, 402 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Landsknecht rotate: false - xy: 1552, 674 + xy: 1058, 372 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Legion rotate: false - xy: 1586, 704 + xy: 1092, 402 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Longbowman rotate: false - xy: 1518, 616 + xy: 1092, 372 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Longswordsman rotate: false - xy: 1552, 644 + xy: 1448, 579 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Mandekalu Cavalry rotate: false - xy: 1586, 676 + xy: 915, 32 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Maori Warrior rotate: false - xy: 1552, 614 + xy: 920, 2 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Marine rotate: false - xy: 1450, 584 + xy: 1516, 557 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Mechanized Infantry rotate: false - xy: 1414, 556 + xy: 949, 32 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Minuteman rotate: false - xy: 1448, 554 + xy: 1228, 605 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Mohawk Warrior rotate: false - xy: 1414, 496 + xy: 1228, 544 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Musketeer rotate: false - xy: 1518, 586 + xy: 1058, 342 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Musketman rotate: false - xy: 1482, 540 + xy: 1092, 342 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Naresuan's Elephant rotate: false - xy: 1552, 586 + xy: 983, 32 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Norwegian Ski Infantry rotate: false - xy: 1586, 605 + xy: 988, 2 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Panzer rotate: false - xy: 1516, 494 + xy: 1024, 246 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Paratrooper rotate: false - xy: 1550, 526 + xy: 1058, 252 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Persian Immortal rotate: false - xy: 1584, 447 + xy: 1092, 214 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Pikeman rotate: false - xy: 1620, 726 + xy: 1024, 152 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Rifleman rotate: false - xy: 1688, 636 + xy: 1722, 652 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Rocket Artillery rotate: false - xy: 1722, 606 + xy: 1858, 652 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Scout rotate: false - xy: 1688, 542 + xy: 1584, 588 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Ship of the Line rotate: false - xy: 1722, 548 + xy: 1892, 654 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Sipahi rotate: false - xy: 1686, 484 + xy: 1652, 594 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Slinger rotate: false - xy: 1686, 454 + xy: 1686, 622 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Spearman rotate: false - xy: 1756, 719 + xy: 1686, 592 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Submarine rotate: false - xy: 1756, 661 + xy: 1618, 564 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Swordsman rotate: false - xy: 1756, 631 + xy: 1686, 562 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Tank rotate: false - xy: 1790, 659 + xy: 1720, 562 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Tercio rotate: false - xy: 1756, 601 + xy: 1550, 534 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Trebuchet rotate: false - xy: 1790, 599 + xy: 1652, 534 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Trireme rotate: false - xy: 1756, 543 + xy: 1686, 534 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Turtle Ship rotate: false - xy: 1824, 562 + xy: 1618, 506 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/War Chariot rotate: false - xy: 1824, 502 + xy: 1686, 504 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/War Elephant rotate: false - xy: 1722, 490 + xy: 1720, 504 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/WaterUnit rotate: false - xy: 1756, 485 + xy: 1756, 626 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Work Boats rotate: false - xy: 1754, 427 + xy: 1754, 508 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 UnitIcons/Rifleman rotate: false - xy: 2, 514 + xy: 104, 616 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Rocket Artillery rotate: false - xy: 410, 922 + xy: 2, 412 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Samurai rotate: false - xy: 206, 514 + xy: 308, 616 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Scout rotate: false - xy: 2, 208 + xy: 104, 310 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Settler rotate: false - xy: 206, 412 + xy: 308, 514 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Ship of the Line rotate: false - xy: 512, 718 + xy: 614, 820 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Sipahi rotate: false - xy: 104, 208 + xy: 206, 310 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Slinger rotate: false - xy: 410, 514 + xy: 512, 616 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Spearman rotate: false - xy: 2, 4 + xy: 104, 106 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Stealth Bomber rotate: false - xy: 716, 718 + xy: 818, 820 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Submarine rotate: false - xy: 614, 514 + xy: 716, 616 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Swordsman rotate: false - xy: 818, 718 + xy: 920, 820 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Tank rotate: false - xy: 206, 4 + xy: 308, 106 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Tercio rotate: false - xy: 410, 208 + xy: 512, 310 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Trebuchet rotate: false - xy: 920, 616 + xy: 1022, 718 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Triplane rotate: false - xy: 1022, 718 + xy: 1124, 820 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Trireme rotate: false - xy: 1124, 819 + xy: 1226, 921 size: 100, 101 orig: 100, 101 offset: 0, 0 index: -1 UnitIcons/Turtle Ship rotate: false - xy: 1226, 922 + xy: 410, 4 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/War Chariot rotate: false - xy: 818, 412 + xy: 920, 514 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/War Elephant rotate: false - xy: 920, 514 + xy: 1022, 616 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Warrior rotate: false - xy: 1022, 616 + xy: 1124, 718 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Work Boats rotate: false - xy: 818, 310 + xy: 920, 412 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Worker rotate: false - xy: 920, 412 + xy: 1022, 514 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitIcons/Zero rotate: false - xy: 1226, 718 + xy: 1328, 820 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 UnitPromotionIcons/Accuracy rotate: false - xy: 614, 54 + xy: 716, 156 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Air Repair rotate: false - xy: 614, 2 + xy: 818, 258 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Ambush rotate: false - xy: 818, 258 + xy: 1022, 462 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Armor Plating rotate: false - xy: 1022, 462 + xy: 1226, 665 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Barrage rotate: false - xy: 1226, 666 + xy: 1430, 959 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Blitz rotate: false - xy: 1328, 857 + xy: 614, 41 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Boarding Party rotate: false - xy: 1430, 959 + xy: 1430, 907 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Bombardment rotate: false - xy: 1328, 805 + xy: 1430, 855 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Charge rotate: false - xy: 1328, 753 + xy: 1328, 716 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Coastal Raider rotate: false - xy: 666, 2 + xy: 768, 104 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Cover rotate: false - xy: 972, 360 + xy: 1074, 462 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 PolicyIcons/Discipline rotate: false - xy: 972, 360 + xy: 1074, 462 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Drill rotate: false - xy: 1278, 614 + xy: 1380, 716 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Evasion rotate: false - xy: 1330, 701 + xy: 1432, 751 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Extended Range rotate: false - xy: 1330, 649 + xy: 1432, 699 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Operational Range rotate: false - xy: 1330, 649 + xy: 1432, 699 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Flight Deck rotate: false - xy: 1493, 972 + xy: 1545, 972 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Formation rotate: false - xy: 1545, 972 + xy: 1597, 972 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Haka War Dance rotate: false - xy: 1753, 972 + xy: 1805, 972 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Heal Instantly rotate: false - xy: 1805, 972 + xy: 1857, 972 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Indirect Fire rotate: false - xy: 1909, 972 + xy: 1961, 972 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Interception rotate: false - xy: 1482, 920 + xy: 1482, 868 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Logistics rotate: false - xy: 1638, 920 + xy: 1586, 920 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/March rotate: false - xy: 1742, 920 + xy: 1638, 920 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Medic rotate: false - xy: 1794, 920 + xy: 1638, 868 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Mobility rotate: false - xy: 1586, 868 + xy: 1794, 868 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Rejuvenation rotate: false - xy: 922, 256 + xy: 1536, 712 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Scouting rotate: false - xy: 1380, 803 + xy: 1640, 764 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Sentry rotate: false - xy: 1380, 803 + xy: 1640, 764 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Shock rotate: false - xy: 1024, 410 + xy: 1640, 712 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Siege rotate: false - xy: 1076, 410 + xy: 1692, 764 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Sortie rotate: false - xy: 1432, 816 + xy: 1744, 816 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Targeting rotate: false - xy: 1640, 816 + xy: 1744, 712 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Targeting I (air) rotate: false - xy: 1640, 816 + xy: 1744, 712 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Volley rotate: false - xy: 1432, 764 + xy: 1900, 764 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Wolfpack rotate: false - xy: 1536, 764 + xy: 1952, 816 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 UnitPromotionIcons/Woodsman rotate: false - xy: 1588, 764 + xy: 1952, 764 size: 50, 50 orig: 50, 50 offset: 0, 0 diff --git a/android/assets/game.png b/android/assets/game.png index 0201c71c..bb89ee1a 100644 Binary files a/android/assets/game.png and b/android/assets/game.png differ diff --git a/android/assets/game2.png b/android/assets/game2.png index c4b6f412..397dff0c 100644 Binary files a/android/assets/game2.png and b/android/assets/game2.png differ diff --git a/core/src/com/unciv/MainMenuScreen.kt b/core/src/com/unciv/MainMenuScreen.kt index 16a661f9..7629cb8f 100644 --- a/core/src/com/unciv/MainMenuScreen.kt +++ b/core/src/com/unciv/MainMenuScreen.kt @@ -70,46 +70,47 @@ class MainMenuScreen: CameraStageBaseScreen() { } } - val table = Table().apply { defaults().pad(10f) } + val column1 = Table().apply { defaults().pad(10f) } + val column2 = Table().apply { defaults().pad(10f) } val autosaveGame = GameSaver.getSave(autosave, false) if (autosaveGame.exists()) { val resumeTable = getTableBlock("Resume","OtherIcons/Resume") { autoLoadGame() } - table.add(resumeTable).row() + column1.add(resumeTable).row() } val quickstartTable = getTableBlock("Quickstart", "OtherIcons/Quickstart") { quickstartNewGame() } - table.add(quickstartTable).row() + column1.add(quickstartTable).row() val newGameButton = getTableBlock("Start new game", "OtherIcons/New") { game.setScreen(NewGameScreen(this)) dispose() } - table.add(newGameButton).row() + column1.add(newGameButton).row() if (GameSaver.getSaves(false).any()) { val loadGameTable = getTableBlock("Load game", "OtherIcons/Load") { game.setScreen(LoadGameScreen(this)) } - table.add(loadGameTable).row() + column1.add(loadGameTable).row() } val multiplayerTable = getTableBlock("Multiplayer", "OtherIcons/Multiplayer") { game.setScreen(MultiplayerScreen(this)) } - table.add(multiplayerTable).row() + column2.add(multiplayerTable).row() val mapEditorScreenTable = getTableBlock("Map editor", "OtherIcons/MapEditor") - { if(stage.actors.none { it is MapEditorMainScreenPopup }) MapEditorMainScreenPopup(this) } - table.add(mapEditorScreenTable).padBottom(0f) + { if(stage.actors.none { it is MapEditorMainScreenPopup }) MapEditorMainScreenPopup(this) } + column2.add(mapEditorScreenTable).row() - // set the same width for all buttons - table.cells.first().padTop(0f) - table.pack() - table.children.filterIsInstance().forEach { - it.align(Align.left) - it.moveBy((it.width - table.width) / 2, 0f) - it.width = table.width - } +// val modsTable = getTableBlock("Mods", "OtherIcons/Mods") +// { if(stage.actors.none { it is MapEditorMainScreenPopup }) MapEditorMainScreenPopup(this) } +// column2.add(modEditorTable).row() + + val table=Table().apply { defaults().pad(10f) } + table.add(column1) + table.add(column2) table.pack() + val scroll = ScrollPane(table) scroll.setSize(table.width, stage.height * 0.98f) scroll.center(stage) diff --git a/core/src/com/unciv/ui/worldscreen/mainmenu/DropBox.kt b/core/src/com/unciv/ui/worldscreen/mainmenu/DropBox.kt index 632c3230..750ed69d 100644 --- a/core/src/com/unciv/ui/worldscreen/mainmenu/DropBox.kt +++ b/core/src/com/unciv/ui/worldscreen/mainmenu/DropBox.kt @@ -1,20 +1,22 @@ package com.unciv.ui.worldscreen.mainmenu +import com.badlogic.gdx.Gdx +import com.badlogic.gdx.files.FileHandle import com.unciv.logic.GameInfo import com.unciv.logic.GameSaver import com.unciv.logic.civilization.CivilizationInfo import com.unciv.ui.saves.Gzip -import java.io.BufferedReader -import java.io.DataOutputStream -import java.io.InputStream -import java.io.InputStreamReader +import java.io.* import java.net.HttpURLConnection import java.net.URL import java.nio.charset.Charset +import java.util.zip.ZipEntry +import java.util.zip.ZipFile + object DropBox { - fun dropboxApi(url:String, data:String="",contentType:String="",dropboxApiArg:String=""): InputStream? { + fun dropboxApi(url: String, data: String = "", contentType: String = "", dropboxApiArg: String = ""): InputStream? { with(URL(url).openConnection() as HttpURLConnection) { requestMethod = "POST" // default is GET @@ -45,45 +47,45 @@ object DropBox { } } - fun getFolderList(folder:String): ArrayList { + fun getFolderList(folder: String): ArrayList { val folderList = ArrayList() // The DropBox API returns only partial file listings from one request. list_folder and // list_folder/continue return similar responses, but list_folder/continue requires a cursor // instead of the path. val response = dropboxApi("https://api.dropboxapi.com/2/files/list_folder", - "{\"path\":\"$folder\"}","application/json") + "{\"path\":\"$folder\"}", "application/json") var currentFolderListChunk = GameSaver.json().fromJson(FolderList::class.java, response) folderList.addAll(currentFolderListChunk.entries) while (currentFolderListChunk.has_more) { val continuationResponse = dropboxApi("https://api.dropboxapi.com/2/files/list_folder/continue", - "{\"cursor\":\"${currentFolderListChunk.cursor}\"}","application/json") + "{\"cursor\":\"${currentFolderListChunk.cursor}\"}", "application/json") currentFolderListChunk = GameSaver.json().fromJson(FolderList::class.java, continuationResponse) folderList.addAll(currentFolderListChunk.entries) } return folderList } - fun downloadFile(fileName:String): InputStream { + fun downloadFile(fileName: String): InputStream { val response = dropboxApi("https://content.dropboxapi.com/2/files/download", - contentType = "text/plain",dropboxApiArg = "{\"path\":\"$fileName\"}") + contentType = "text/plain", dropboxApiArg = "{\"path\":\"$fileName\"}") return response!! } - fun downloadFileAsString(fileName:String): String { + fun downloadFileAsString(fileName: String): String { val inputStream = downloadFile(fileName) val text = BufferedReader(InputStreamReader(inputStream)).readText() return text } - fun uploadFile(fileName: String, data: String, overwrite:Boolean=false){ + fun uploadFile(fileName: String, data: String, overwrite: Boolean = false){ val overwriteModeString = if(!overwrite) "" else ""","mode":{".tag":"overwrite"}""" dropboxApi("https://content.dropboxapi.com/2/files/upload", - data,"application/octet-stream", """{"path":"$fileName"$overwriteModeString}""") + data, "application/octet-stream", """{"path":"$fileName"$overwriteModeString}""") } - fun deleteFile(fileName:String){ + fun deleteFile(fileName: String){ dropboxApi("https://api.dropboxapi.com/2/files/delete_v2", - "{\"path\":\"$fileName\"}","application/json") + "{\"path\":\"$fileName\"}", "application/json") } // // fun createTemplate(): String { @@ -108,11 +110,11 @@ object DropBox { } class OnlineMultiplayer { - fun getGameLocation(gameId:String) = "/MultiplayerGames/$gameId" + fun getGameLocation(gameId: String) = "/MultiplayerGames/$gameId" fun tryUploadGame(gameInfo: GameInfo){ val zippedGameInfo = Gzip.zip(GameSaver.json().toJson(gameInfo)) - DropBox.uploadFile(getGameLocation(gameInfo.gameId),zippedGameInfo,true) + DropBox.uploadFile(getGameLocation(gameInfo.gameId), zippedGameInfo, true) } fun tryDownloadGame(gameId: String): GameInfo { @@ -130,3 +132,62 @@ class OnlineMultiplayer { return GameSaver.currentTurnCivFromString(Gzip.unzip(zippedGameInfo)) } } + + +object Zip { + fun downloadAndExtract(dropboxFileLocation:String, folderFileHandle:FileHandle){ + val fileFromDropbox = DropBox.downloadFile(dropboxFileLocation) + val tempZipFileHandle = folderFileHandle.child("tempZip.zip") + tempZipFileHandle.write(fileFromDropbox, false) + extractFolder(tempZipFileHandle.path()) + } + + // I went through a lot of similar answers that didn't work until I got to this gem by NeilMonday + // https://stackoverflow.com/questions/981578/how-to-unzip-files-recursively-in-java + fun extractFolder(zipFile: String) { + println(zipFile) + val BUFFER = 2048 + val file = File(zipFile) + val zip = ZipFile(file) + val newPath = zipFile.substring(0, zipFile.length - 4) + File(newPath).mkdir() + val zipFileEntries = zip.entries() + + // Process each entry + while (zipFileEntries.hasMoreElements()) { + // grab a zip file entry + val entry = zipFileEntries.nextElement() as ZipEntry + val currentEntry = entry.name + val destFile = File(newPath, currentEntry) + //destFile = new File(newPath, destFile.getName()); + val destinationParent = destFile.parentFile + + // create the parent directory structure if needed + destinationParent.mkdirs() + if (!entry.isDirectory) { + val inputStream = BufferedInputStream(zip + .getInputStream(entry)) + var currentByte: Int + // establish buffer for writing file + val data = ByteArray(BUFFER) + + // write the current file to disk + val fos = FileOutputStream(destFile) + val dest = BufferedOutputStream(fos, + BUFFER) + + // read and write until last byte is encountered + while (inputStream.read(data, 0, BUFFER).also { currentByte = it } != -1) { + dest.write(data, 0, currentByte) + } + dest.flush() + dest.close() + inputStream.close() + } + if (currentEntry.endsWith(".zip")) { + // found a zip file, try to open + extractFolder(destFile.absolutePath) + } + } + } +} \ No newline at end of file diff --git a/docs/Credits.md b/docs/Credits.md index 0a99b611..5f2563ea 100644 --- a/docs/Credits.md +++ b/docs/Credits.md @@ -528,6 +528,7 @@ Unless otherwise specified, all the following are from [the Noun Project](https: * [Go back](https://thenounproject.com/search/?q=go%20back&i=1901947) by Salvia Santos for Resume * [Multiplayer](https://thenounproject.com/search/?q=multiplayer&i=1215652) by Roy Charles * [Options](https://thenounproject.com/search/?q=options&i=866090) By Thengakola +* [Package](https://thenounproject.com/search/?q=package&i=1886048) by shashank singh # Sound credits diff --git a/tests/src/com/unciv/testing/BasicTests.kt b/tests/src/com/unciv/testing/BasicTests.kt index 15b85c1d..dbe48882 100644 --- a/tests/src/com/unciv/testing/BasicTests.kt +++ b/tests/src/com/unciv/testing/BasicTests.kt @@ -2,6 +2,7 @@ package com.unciv.testing import com.badlogic.gdx.Gdx +import com.badlogic.gdx.files.FileHandle import com.unciv.UncivGame import com.unciv.UncivGameParameters import com.unciv.models.metadata.GameSettings @@ -11,10 +12,12 @@ import com.unciv.models.ruleset.unit.BaseUnit import com.unciv.models.stats.Stat import com.unciv.models.stats.Stats import com.unciv.models.translations.tr +import com.unciv.ui.worldscreen.mainmenu.Zip import org.junit.Assert import org.junit.Before import org.junit.Test import org.junit.runner.RunWith +import java.io.File @RunWith(GdxTestRunner::class) class BasicTests { @@ -79,4 +82,10 @@ class BasicTests { val x = "+1 Gold, +2 Production".tr() print(x) } + + @Test + fun tryUnzip(){ +// Zip.extractFolder("""C:\Users\LENOVO\Downloads\Rebuild.rar""") + Zip.downloadAndExtract("/Mods/Reasoures.zip", FileHandle("""C:\Users\LENOVO\Downloads""")) + } } \ No newline at end of file