diff --git a/android/Images/TileSets/FantasyHex/Tiles/City-Ancient era.png b/android/Images/TileSets/FantasyHex/Tiles/City-Ancient era.png new file mode 100644 index 00000000..76920b65 Binary files /dev/null and b/android/Images/TileSets/FantasyHex/Tiles/City-Ancient era.png differ diff --git a/android/Images/TileSets/FantasyHex/Tiles/City-Classical era.png b/android/Images/TileSets/FantasyHex/Tiles/City-Classical era.png new file mode 100644 index 00000000..cf6eb865 Binary files /dev/null and b/android/Images/TileSets/FantasyHex/Tiles/City-Classical era.png differ diff --git a/android/Images/TileSets/FantasyHex/Tiles/City-Medieval era.png b/android/Images/TileSets/FantasyHex/Tiles/City-Medieval era.png new file mode 100644 index 00000000..7a7f6c42 Binary files /dev/null and b/android/Images/TileSets/FantasyHex/Tiles/City-Medieval era.png differ diff --git a/android/assets/game.atlas b/android/assets/game.atlas index a9a59f94..1170e446 100644 --- a/android/assets/game.atlas +++ b/android/assets/game.atlas @@ -3120,42 +3120,42 @@ TechIcons/Writing index: -1 TileSets/Default/Tiles/River-Bottom rotate: false - xy: 718, 46 + xy: 1024, 230 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/River-Bottom rotate: false - xy: 718, 46 + xy: 1024, 230 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/Default/Tiles/River-BottomLeft rotate: false - xy: 752, 48 + xy: 1058, 260 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/River-BottomLeft rotate: false - xy: 752, 48 + xy: 1058, 260 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/Default/Tiles/River-BottomRight rotate: false - xy: 786, 70 + xy: 1058, 230 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/River-BottomRight rotate: false - xy: 786, 70 + xy: 1058, 230 size: 32, 28 orig: 32, 28 offset: 0, 0 @@ -3300,870 +3300,891 @@ TileSets/FantasyHex/Tiles/City ruins orig: 32, 28 offset: 0, 0 index: -1 +TileSets/FantasyHex/Tiles/City-Ancient era + rotate: false + xy: 1778, 746 + size: 32, 40 + orig: 32, 40 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/City-Classical era + rotate: false + xy: 1812, 744 + size: 32, 40 + orig: 32, 40 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/City-Medieval era + rotate: false + xy: 1846, 744 + size: 32, 40 + orig: 32, 40 + offset: 0, 0 + index: -1 TileSets/FantasyHex/Tiles/Coal - rotate: false - xy: 1812, 756 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Coast - rotate: false - xy: 1846, 756 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Coast+Atoll - rotate: false - xy: 1880, 756 - size: 32, 28 - orig: 32, 28 - offset: 0, 0 - index: -1 -TileSets/FantasyHex/Tiles/Coast+Ice rotate: false xy: 1914, 756 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 -TileSets/FantasyHex/Tiles/Coast+Oil well +TileSets/FantasyHex/Tiles/Coast rotate: false xy: 1948, 756 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 +TileSets/FantasyHex/Tiles/Coast+Atoll + rotate: false + xy: 1744, 728 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Coast+Ice + rotate: false + xy: 1982, 786 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 +TileSets/FantasyHex/Tiles/Coast+Oil well + rotate: false + xy: 1982, 756 + size: 32, 28 + orig: 32, 28 + offset: 0, 0 + index: -1 TileSets/FantasyHex/Tiles/Cotton rotate: false - xy: 616, 58 + xy: 1880, 726 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Customs house rotate: false - xy: 650, 61 + xy: 1982, 719 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Deer rotate: false - xy: 650, 31 + xy: 616, 88 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Desert rotate: false - xy: 684, 96 + xy: 616, 58 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Desert+City rotate: false - xy: 684, 61 + xy: 616, 23 size: 32, 33 orig: 32, 33 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Desert+Fallout rotate: false - xy: 684, 31 + xy: 650, 96 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Desert+Farm rotate: false - xy: 1187, 790 + xy: 650, 66 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Desert+Flood plains rotate: false - xy: 1176, 760 + xy: 650, 36 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Desert+Flood plains+Farm rotate: false - xy: 1176, 730 + xy: 684, 96 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Desert+Oasis rotate: false - xy: 1176, 700 + xy: 684, 66 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Dyes rotate: false - xy: 1124, 517 + xy: 1187, 790 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/El Dorado rotate: false - xy: 1158, 516 + xy: 1176, 759 size: 32, 29 orig: 32, 29 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Fish rotate: false - xy: 2006, 906 + xy: 1176, 729 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Fishing Boats rotate: false - xy: 2006, 876 + xy: 1176, 699 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Fishing Boats+Whales rotate: false - xy: 2006, 846 + xy: 1176, 669 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Fort rotate: false - xy: 1024, 498 + xy: 684, 3 size: 32, 33 orig: 32, 33 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Fountain of Youth rotate: false - xy: 1058, 499 + xy: 2006, 902 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Furs rotate: false - xy: 1058, 469 + xy: 2006, 844 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Gems rotate: false - xy: 1210, 747 + xy: 1880, 696 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Gold rotate: false - xy: 1210, 717 + xy: 1914, 696 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grand Mesa rotate: false - xy: 1244, 743 + xy: 1948, 694 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland rotate: false - xy: 1210, 687 + xy: 1982, 689 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Fallout rotate: false - xy: 1244, 713 + xy: 1024, 503 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Farm rotate: false - xy: 1244, 683 + xy: 1058, 503 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest rotate: false - xy: 1278, 742 + xy: 1024, 470 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest+Aluminum rotate: false - xy: 1278, 709 + xy: 1058, 470 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest+Camp rotate: false - xy: 1278, 676 + xy: 718, 195 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest+Camp+Deer rotate: false - xy: 1210, 654 + xy: 718, 162 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest+Camp+Furs rotate: false - xy: 1244, 650 + xy: 752, 195 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest+Coal rotate: false - xy: 1278, 643 + xy: 752, 162 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest+Gold rotate: false - xy: 1312, 731 + xy: 786, 195 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest+Iron rotate: false - xy: 1346, 731 + xy: 786, 162 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest+Lumber mill rotate: false - xy: 1312, 698 + xy: 820, 297 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Forest+Silver rotate: false - xy: 1380, 731 + xy: 820, 264 size: 32, 31 orig: 32, 31 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Jungle rotate: false - xy: 1312, 664 + xy: 854, 296 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Jungle+Trading post rotate: false - xy: 1346, 697 + xy: 854, 262 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Grassland+Marsh rotate: false - xy: 1414, 733 + xy: 888, 299 size: 32, 29 orig: 32, 29 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Great Barrier Reef rotate: false - xy: 1380, 701 + xy: 922, 402 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill rotate: false - xy: 1414, 673 + xy: 922, 342 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Fallout rotate: false - xy: 1448, 670 + xy: 956, 338 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Forest rotate: false - xy: 1516, 734 + xy: 990, 342 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Forest+Camp rotate: false - xy: 1482, 704 + xy: 922, 312 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Forest+Lumber mill rotate: false - xy: 1550, 734 + xy: 922, 282 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Forest+Trading post rotate: false - xy: 1482, 674 + xy: 956, 308 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Marble+Quarry rotate: false - xy: 1516, 704 + xy: 990, 312 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Mine rotate: false - xy: 1584, 734 + xy: 956, 278 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Stone+Quarry rotate: false - xy: 1516, 674 + xy: 990, 282 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Hill+Terrace farm rotate: false - xy: 1550, 704 + xy: 922, 252 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Horses rotate: false - xy: 1584, 674 + xy: 888, 239 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Incense rotate: false - xy: 1346, 637 + xy: 956, 218 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Iron rotate: false - xy: 1380, 641 + xy: 990, 222 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Ivory rotate: false - xy: 1448, 640 + xy: 1255, 775 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Krakatoa rotate: false - xy: 718, 166 + xy: 1244, 743 size: 32, 30 orig: 32, 30 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Lakes rotate: false - xy: 752, 198 + xy: 1244, 713 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Landmark rotate: false - xy: 786, 160 + xy: 1278, 707 size: 32, 36 orig: 32, 36 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Manufactory rotate: false - xy: 922, 391 + xy: 1312, 665 size: 32, 39 orig: 32, 39 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Marble rotate: false - xy: 956, 402 + xy: 1346, 704 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Mine rotate: false - xy: 990, 374 + xy: 1380, 704 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Moai rotate: false - xy: 854, 239 + xy: 1414, 703 size: 32, 29 orig: 32, 29 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Mount Fuji rotate: false - xy: 820, 208 + xy: 1448, 702 size: 32, 30 orig: 32, 30 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Mountain rotate: false - xy: 820, 170 + xy: 1482, 696 size: 32, 36 orig: 32, 36 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Ocean rotate: false - xy: 956, 342 + xy: 1584, 734 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Ocean+Atoll rotate: false - xy: 990, 344 + xy: 1550, 704 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Ocean+Ice rotate: false - xy: 922, 331 + xy: 1584, 704 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Oil rotate: false - xy: 922, 301 + xy: 1414, 673 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Oil well rotate: false - xy: 956, 312 + xy: 1448, 672 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Old Faithful rotate: false - xy: 922, 267 + xy: 1482, 662 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Pasture rotate: false - xy: 922, 237 + xy: 1584, 674 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Pasture+Cattle rotate: false - xy: 956, 248 + xy: 1346, 642 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Pasture+Horses rotate: false - xy: 922, 203 + xy: 1380, 642 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Pasture+Sheep rotate: false - xy: 990, 252 + xy: 1414, 639 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Pasture2 rotate: false - xy: 990, 286 + xy: 1312, 635 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Pearls rotate: false - xy: 956, 218 + xy: 1448, 642 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains rotate: false - xy: 956, 188 + xy: 1550, 644 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+City rotate: false - xy: 990, 185 + xy: 1584, 637 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Fallout rotate: false - xy: 956, 158 + xy: 1516, 616 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Farm rotate: false - xy: 990, 155 + xy: 1550, 614 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Forest rotate: false - xy: 1618, 721 + xy: 1584, 602 size: 32, 33 orig: 32, 33 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Forest+Camp rotate: false - xy: 1618, 686 + xy: 1448, 607 size: 32, 33 orig: 32, 33 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Forest+Camp+Deer rotate: false - xy: 1618, 651 + xy: 1482, 597 size: 32, 33 orig: 32, 33 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Forest+Camp+Furs rotate: false - xy: 854, 146 + xy: 1516, 581 size: 32, 33 orig: 32, 33 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Forest+Lumber mill rotate: false - xy: 888, 147 + xy: 1550, 579 size: 32, 33 orig: 32, 33 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Jungle rotate: false - xy: 922, 139 + xy: 1584, 568 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plains+Jungle+Trading post rotate: false - xy: 820, 136 + xy: 1178, 547 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation rotate: false - xy: 956, 128 + xy: 1192, 517 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Bananas rotate: false - xy: 990, 125 + xy: 1024, 440 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Cotton rotate: false - xy: 718, 136 + xy: 1058, 440 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Dyes rotate: false - xy: 752, 138 + xy: 1024, 410 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Incense rotate: false - xy: 786, 130 + xy: 1024, 380 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Silk rotate: false - xy: 718, 106 + xy: 1058, 410 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Spices rotate: false - xy: 752, 108 + xy: 1024, 350 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Sugar rotate: false - xy: 718, 76 + xy: 1058, 380 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Plantation+Wine rotate: false - xy: 752, 78 + xy: 1024, 320 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Polder rotate: false - xy: 786, 100 + xy: 1058, 350 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Quarry rotate: false - xy: 820, 106 + xy: 1024, 290 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Quarry+Marble rotate: false - xy: 854, 116 + xy: 1058, 320 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Quarry+Stone rotate: false - xy: 888, 117 + xy: 1024, 260 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Rock of Gibraltar rotate: false - xy: 820, 72 + xy: 1212, 547 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Sheep rotate: false - xy: 956, 98 + xy: 854, 232 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Silk rotate: false - xy: 990, 95 + xy: 820, 176 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Silver rotate: false - xy: 786, 40 + xy: 854, 202 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Snow rotate: false - xy: 888, 57 + xy: 888, 181 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Spices rotate: false - xy: 956, 68 + xy: 956, 188 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Stone rotate: false - xy: 990, 65 + xy: 990, 192 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Sugar rotate: false - xy: 990, 35 + xy: 1058, 200 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Trading post rotate: false - xy: 854, 26 + xy: 956, 158 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra rotate: false - xy: 956, 10 + xy: 1058, 170 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+City rotate: false - xy: 1652, 712 + xy: 1024, 137 size: 32, 35 orig: 32, 35 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+Fallout rotate: false - xy: 1652, 682 + xy: 1058, 140 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+Forest rotate: false - xy: 1686, 715 + xy: 990, 128 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+Forest+Camp rotate: false - xy: 1686, 681 + xy: 922, 128 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+Forest+Camp+Deer rotate: false - xy: 1652, 648 + xy: 956, 124 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+Forest+Camp+Furs rotate: false - xy: 1686, 647 + xy: 888, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Tundra+Forest+Lumber mill rotate: false - xy: 1720, 715 + xy: 922, 94 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Uranium rotate: false - xy: 1720, 657 + xy: 990, 98 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Whales rotate: false - xy: 1754, 672 + xy: 1058, 82 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Wheat rotate: false - xy: 1754, 642 + xy: 990, 68 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Tiles/Wine rotate: false - xy: 1720, 627 + xy: 956, 66 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/TopBorder rotate: false - xy: 820, 14 + xy: 922, 162 size: 32, 28 orig: 32, 28 offset: 0, 0 @@ -4289,497 +4310,497 @@ TileSets/FantasyHex/Units/Chu-Ko-Nu index: -1 TileSets/FantasyHex/Units/CivilianLandUnit rotate: false - xy: 1778, 758 + xy: 1880, 756 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Companion Cavalry rotate: false - xy: 1982, 788 + xy: 1778, 718 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Conquistador rotate: false - xy: 1982, 760 + xy: 1812, 716 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Cossack rotate: false - xy: 616, 88 + xy: 1846, 714 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Crossbowman rotate: false - xy: 616, 28 + xy: 1914, 726 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Cruiser rotate: false - xy: 650, 98 + xy: 1948, 728 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Destroyer rotate: false - xy: 1176, 672 + xy: 684, 38 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Foreign Legion rotate: false - xy: 2006, 816 + xy: 650, 6 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Frigate rotate: false - xy: 1024, 470 + xy: 2006, 874 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Galleass rotate: false - xy: 1221, 777 + xy: 2006, 816 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Galley rotate: false - xy: 1255, 777 + xy: 1124, 519 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Gatling Gun rotate: false - xy: 1289, 775 + xy: 1158, 517 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Machine Gun rotate: false - xy: 1289, 775 + xy: 1158, 517 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Great Artist rotate: false - xy: 1346, 667 + xy: 888, 269 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Great Engineer rotate: false - xy: 1448, 734 + xy: 922, 372 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Worker rotate: false - xy: 1448, 734 + xy: 922, 372 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Great General rotate: false - xy: 1414, 703 + xy: 956, 402 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Great Merchant rotate: false - xy: 1380, 671 + xy: 956, 372 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Settler rotate: false - xy: 1380, 671 + xy: 956, 372 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Great Scientist rotate: false - xy: 1482, 734 + xy: 990, 402 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Great War Infantry rotate: false - xy: 1448, 704 + xy: 990, 372 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Infantry rotate: false - xy: 1448, 704 + xy: 990, 372 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Hoplite rotate: false - xy: 1550, 674 + xy: 956, 248 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Horseman rotate: false - xy: 1584, 704 + xy: 990, 252 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Hwach'a rotate: false - xy: 1312, 634 + xy: 922, 222 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Ironclad rotate: false - xy: 1414, 645 + xy: 1221, 777 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Jaguar rotate: false - xy: 1482, 644 + xy: 1289, 775 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Janissary rotate: false - xy: 1516, 644 + xy: 1210, 747 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Keshik rotate: false - xy: 1550, 646 + xy: 1210, 719 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Khan rotate: false - xy: 1584, 646 + xy: 1210, 691 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Knight rotate: false - xy: 718, 198 + xy: 1210, 661 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Lancer rotate: false - xy: 752, 168 + xy: 1278, 745 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/LandUnit rotate: false - xy: 786, 198 + xy: 1244, 683 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Warrior rotate: false - xy: 786, 198 + xy: 1244, 683 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Landship rotate: false - xy: 820, 300 + xy: 1278, 677 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Landsknecht rotate: false - xy: 820, 270 + xy: 1244, 653 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Legion rotate: false - xy: 854, 300 + xy: 1278, 647 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Longbowman rotate: false - xy: 854, 270 + xy: 1312, 734 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Longswordsman rotate: false - xy: 888, 300 + xy: 1346, 734 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Mandekalu Cavalry rotate: false - xy: 888, 272 + xy: 1312, 706 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Maori Warrior rotate: false - xy: 922, 361 + xy: 1380, 734 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Marine rotate: false - xy: 956, 372 + xy: 1414, 734 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Mechanized Infantry rotate: false - xy: 990, 404 + xy: 1346, 676 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Minuteman rotate: false - xy: 820, 240 + xy: 1448, 734 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Mohawk Warrior rotate: false - xy: 888, 242 + xy: 1482, 734 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Musketeer rotate: false - xy: 854, 209 + xy: 1516, 734 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Musketman rotate: false - xy: 888, 212 + xy: 1550, 734 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Naresuan's Elephant rotate: false - xy: 854, 181 + xy: 1380, 676 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Norwegian Ski Infantry rotate: false - xy: 888, 182 + xy: 1516, 704 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Panzer rotate: false - xy: 990, 316 + xy: 1516, 676 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Paratrooper rotate: false - xy: 956, 282 + xy: 1550, 674 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Persian Immortal rotate: false - xy: 990, 222 + xy: 1482, 632 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Pikeman rotate: false - xy: 922, 173 + xy: 1516, 646 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Rifleman rotate: false - xy: 922, 109 + xy: 1058, 290 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Rocket Artillery rotate: false - xy: 854, 86 + xy: 1226, 517 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Scout rotate: false - xy: 888, 87 + xy: 820, 234 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Ship of the Line rotate: false - xy: 922, 81 + xy: 820, 206 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Sipahi rotate: false - xy: 820, 44 + xy: 888, 211 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Slinger rotate: false - xy: 854, 56 + xy: 854, 172 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Spearman rotate: false - xy: 922, 51 + xy: 922, 192 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Submarine rotate: false - xy: 956, 40 + xy: 1024, 202 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Swordsman rotate: false - xy: 718, 16 + xy: 820, 146 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Tank rotate: false - xy: 752, 18 + xy: 854, 142 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Tercio rotate: false - xy: 786, 10 + xy: 888, 151 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Trebuchet rotate: false - xy: 888, 27 + xy: 990, 162 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Trireme rotate: false - xy: 922, 23 + xy: 1024, 174 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Turtle Ship rotate: false - xy: 1720, 687 + xy: 956, 96 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/War Chariot rotate: false - xy: 990, 5 + xy: 1024, 107 size: 32, 28 orig: 32, 28 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/War Elephant rotate: false - xy: 1754, 730 + xy: 1058, 112 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/WaterUnit rotate: false - xy: 1754, 702 + xy: 1024, 79 size: 32, 26 orig: 32, 26 offset: 0, 0 index: -1 TileSets/FantasyHex/Units/Work Boats rotate: false - xy: 1754, 614 + xy: 1024, 51 size: 32, 26 orig: 32, 26 offset: 0, 0 diff --git a/android/assets/game2.png b/android/assets/game2.png index 5150d850..5f45a861 100644 Binary files a/android/assets/game2.png and b/android/assets/game2.png differ diff --git a/core/src/com/unciv/ui/tilegroups/TileGroup.kt b/core/src/com/unciv/ui/tilegroups/TileGroup.kt index 39b59f0c..ee660682 100644 --- a/core/src/com/unciv/ui/tilegroups/TileGroup.kt +++ b/core/src/com/unciv/ui/tilegroups/TileGroup.kt @@ -139,9 +139,21 @@ open class TileGroup(var tileInfo: TileInfo, var tileSetStrings:TileSetStrings) if (viewingCiv==null && !showEntireMap) return listOf(tileSetStrings.hexagon) if (tileInfo.isCityCenter()) { - val terrainAndCity = tileSetStrings.getCityTile(tileInfo.baseTerrain) + // Temporarily disabled until we can see the rivers behind the era cities =) +// val era = tileInfo.getOwner()!!.getEra() +// val terrainAndCityWithEra = tileSetStrings.getCityTile(tileInfo.baseTerrain, era) +// if (ImageGetter.imageExists(terrainAndCityWithEra)) +// return listOf(terrainAndCityWithEra) +// +// val cityWithEra = tileSetStrings.getCityTile(null, era) +// if (ImageGetter.imageExists(cityWithEra)) +// return listOf(cityWithEra) + + val terrainAndCity = tileSetStrings.getCityTile(tileInfo.baseTerrain, null) if (ImageGetter.imageExists(terrainAndCity)) return listOf(terrainAndCity) + +// val cityWithEra = tileSetStrings.getCityTile() if (ImageGetter.imageExists(tileSetStrings.cityTile)) return listOf(tileSetStrings.cityTile) } diff --git a/core/src/com/unciv/ui/tilegroups/TileSetStrings.kt b/core/src/com/unciv/ui/tilegroups/TileSetStrings.kt index 947b954a..4739ab45 100644 --- a/core/src/com/unciv/ui/tilegroups/TileSetStrings.kt +++ b/core/src/com/unciv/ui/tilegroups/TileSetStrings.kt @@ -5,53 +5,58 @@ import com.unciv.UncivGame class TileSetStrings { // this is so that when we have 100s of TileGroups, they won't all individually come up with all these strings themselves, // it gets pretty memory-intensive (10s of MBs which is a lot for lower-end phones) - val tileSetLocation = "TileSets/"+ UncivGame.Current.settings.tileSet +"/" + val tileSetLocation = "TileSets/" + UncivGame.Current.settings.tileSet + "/" - val hexagon = tileSetLocation+"Hexagon" - val crosshatchHexagon = tileSetLocation+"CrosshatchHexagon" - val cityOverlay = tileSetLocation+"CityOverlay" - val railroad = tileSetLocation+"Railroad" - val naturalWonderOverlay = tileSetLocation+"NaturalWonderOverlay" + val hexagon = tileSetLocation + "Hexagon" + val crosshatchHexagon = tileSetLocation + "CrosshatchHexagon" + val cityOverlay = tileSetLocation + "CityOverlay" + val railroad = tileSetLocation + "Railroad" + val naturalWonderOverlay = tileSetLocation + "NaturalWonderOverlay" - val tilesLocation = tileSetLocation+"Tiles/" - val cityTile = tilesLocation+"City" - val bottomRightRiver = tilesLocation+"River-BottomRight" - val bottomRiver = tilesLocation+"River-Bottom" - val bottomLeftRiver = tilesLocation+"River-BottomLeft" + val tilesLocation = tileSetLocation + "Tiles/" + val cityTile = tilesLocation + "City" + val bottomRightRiver = tilesLocation + "River-BottomRight" + val bottomRiver = tilesLocation + "River-Bottom" + val bottomLeftRiver = tilesLocation + "River-BottomLeft" - val unitsLocation = tileSetLocation+"Units/" - val landUnit = unitsLocation+"LandUnit" - val waterUnit = unitsLocation+"WaterUnit" + val unitsLocation = tileSetLocation + "Units/" + val landUnit = unitsLocation + "LandUnit" + val waterUnit = unitsLocation + "WaterUnit" - private val baseTerrainToTile = HashMap() - - fun getTile(baseTerrain:String): String { - if(!baseTerrainToTile.containsKey(baseTerrain)) - baseTerrainToTile[baseTerrain] = "$tilesLocation$baseTerrain" - return baseTerrainToTile[baseTerrain]!! + // There aren't that many tile combinations, and so we end up joining the same strings over and over again. + // On large maps, this can end up as quite a lot of space, some tens of MB! + // In order to save on space, we have this function that gets several strings and returns their concat, + // but is able to retrieve the existing concat if it exists, letting us essentially save each string exactly once. + private val hashmap = HashMap, String>() + fun getString(vararg strings: String): String { + var currentString = "" + for (str in strings) { + if (currentString == "") { + currentString = str + continue + } + val pair = Pair(currentString, str) + if (hashmap.containsKey(pair)) currentString = hashmap[pair]!! + else { + val newString = currentString + str + hashmap[pair] = newString + currentString = newString + } + } + return currentString } + val overlay = "Overlay" + val city = "City" + val tag = "-" + fun getTile(baseTerrain: String) = getString(tilesLocation, baseTerrain) + fun getBaseTerrainOverlay(baseTerrain: String) = getString(tileSetLocation, baseTerrain, overlay) + fun getTerrainFeatureOverlay(terrainFeature: String) = getString(tilesLocation, terrainFeature, overlay) - private val baseTerrainToOverlay = HashMap() - fun getBaseTerrainOverlay(baseTerrain:String): String { - if(!baseTerrainToOverlay.containsKey(baseTerrain)) - baseTerrainToOverlay[baseTerrain] = "$tileSetLocation$baseTerrain"+"Overlay" - return baseTerrainToOverlay[baseTerrain]!! + fun getCityTile(baseTerrain: String?, era: String?): String { + if (baseTerrain != null && era != null) getString(tilesLocation, baseTerrain, city, tag, era) + if (era != null) return getString(tilesLocation, city, tag, era) + if (baseTerrain != null) return getString(tilesLocation, baseTerrain, "+", city) + else return cityTile } - - private val baseTerrainToCityTile = HashMap() - fun getCityTile(baseTerrain:String): String { - if(!baseTerrainToCityTile.containsKey(baseTerrain)) - baseTerrainToCityTile[baseTerrain] = "$tilesLocation$baseTerrain+City" - return baseTerrainToCityTile[baseTerrain]!! - } - - private val terrainFeatureToOverlay = HashMap() - fun getTerrainFeatureOverlay(terrainFeature:String): String { - if(!terrainFeatureToOverlay.containsKey(terrainFeature)) - terrainFeatureToOverlay[terrainFeature] = tileSetLocation + terrainFeature +"Overlay" - return terrainFeatureToOverlay[terrainFeature]!! - } - - }