From d53aa3d5af6950d0ac4bfbcb5ab214a083c28e3a Mon Sep 17 00:00:00 2001 From: iainp5 <iain.pearce.ip@gmail.com> Date: Fri, 11 Oct 2024 08:32:59 +0100 Subject: Added die images --- images/die_black_pips.svg | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 images/die_black_pips.svg (limited to 'images') diff --git a/images/die_black_pips.svg b/images/die_black_pips.svg new file mode 100644 index 0000000..d641f28 --- /dev/null +++ b/images/die_black_pips.svg @@ -0,0 +1,37 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="336" height="56"> +<g fill="black"> +<g transform="translate(0 0)"> +<circle r="6" cx="28" cy="28"/> +</g> +<g transform="translate(56 0)"> +<circle r="6" cx="12" cy="12"/> +<circle r="6" cx="44" cy="44"/> +</g> +<g transform="translate(112 0)"> +<circle r="6" cx="12" cy="44"/> +<circle r="6" cx="44" cy="12"/> +<circle r="6" cx="28" cy="28"/> +</g> +<g transform="translate(168 0)"> +<circle r="6" cx="12" cy="12"/> +<circle r="6" cx="12" cy="44"/> +<circle r="6" cx="44" cy="12"/> +<circle r="6" cx="44" cy="44"/> +</g> +<g transform="translate(224 0)"> +<circle r="6" cx="12" cy="12"/> +<circle r="6" cx="12" cy="44"/> +<circle r="6" cx="44" cy="12"/> +<circle r="6" cx="44" cy="44"/> +<circle r="6" cx="28" cy="28"/> +</g> +<g transform="translate(280 0)"> +<circle r="6" cx="12" cy="12"/> +<circle r="6" cx="12" cy="28"/> +<circle r="6" cx="12" cy="44"/> +<circle r="6" cx="44" cy="12"/> +<circle r="6" cx="44" cy="28"/> +<circle r="6" cx="44" cy="44"/> +</g> +</g> +</svg> -- cgit v1.2.3 From 476012cf32f886491e983ae4a24ec077b1430b78 Mon Sep 17 00:00:00 2001 From: Tor Andersson <tor@ccxvii.net> Date: Fri, 25 Oct 2024 23:46:52 +0200 Subject: REMOVE VASSAL IMAGES --- 1989_map.jpg | Bin 1532763 -> 0 bytes cards/e1.gif | Bin 41173 -> 0 bytes cards/e10.gif | Bin 45725 -> 0 bytes cards/e100.gif | Bin 47033 -> 0 bytes cards/e101.gif | Bin 35715 -> 0 bytes cards/e102.gif | Bin 52121 -> 0 bytes cards/e103.gif | Bin 41393 -> 0 bytes cards/e104.gif | Bin 50934 -> 0 bytes cards/e105.gif | Bin 32868 -> 0 bytes cards/e106.gif | Bin 55236 -> 0 bytes cards/e107.gif | Bin 53985 -> 0 bytes cards/e108.gif | Bin 39396 -> 0 bytes cards/e109.gif | Bin 52280 -> 0 bytes cards/e11.gif | Bin 35357 -> 0 bytes cards/e110.gif | Bin 52196 -> 0 bytes cards/e12.gif | Bin 36855 -> 0 bytes cards/e13.gif | Bin 29026 -> 0 bytes cards/e14.gif | Bin 47291 -> 0 bytes cards/e15.gif | Bin 44485 -> 0 bytes cards/e16.gif | Bin 47827 -> 0 bytes cards/e17.gif | Bin 55283 -> 0 bytes cards/e18.gif | Bin 48673 -> 0 bytes cards/e19.gif | Bin 51580 -> 0 bytes cards/e2.gif | Bin 47713 -> 0 bytes cards/e20.gif | Bin 48684 -> 0 bytes cards/e21.gif | Bin 43661 -> 0 bytes cards/e22.gif | Bin 55339 -> 0 bytes cards/e23.gif | Bin 45012 -> 0 bytes cards/e24.gif | Bin 46517 -> 0 bytes cards/e25.gif | Bin 36750 -> 0 bytes cards/e26.gif | Bin 48924 -> 0 bytes cards/e27.gif | Bin 37383 -> 0 bytes cards/e28.gif | Bin 40841 -> 0 bytes cards/e29.gif | Bin 50513 -> 0 bytes cards/e3.gif | Bin 45791 -> 0 bytes cards/e30.gif | Bin 48397 -> 0 bytes cards/e31.gif | Bin 48803 -> 0 bytes cards/e32.gif | Bin 41812 -> 0 bytes cards/e33.gif | Bin 37416 -> 0 bytes cards/e34.gif | Bin 30253 -> 0 bytes cards/e35.gif | Bin 43812 -> 0 bytes cards/e36.gif | Bin 48081 -> 0 bytes cards/e37.gif | Bin 48246 -> 0 bytes cards/e38.gif | Bin 42546 -> 0 bytes cards/e39.gif | Bin 20887 -> 0 bytes cards/e4.gif | Bin 49249 -> 0 bytes cards/e40.gif | Bin 32686 -> 0 bytes cards/e41.gif | Bin 47201 -> 0 bytes cards/e42.gif | Bin 51711 -> 0 bytes cards/e43.gif | Bin 48165 -> 0 bytes cards/e44.gif | Bin 47662 -> 0 bytes cards/e45.gif | Bin 48593 -> 0 bytes cards/e46.gif | Bin 52918 -> 0 bytes cards/e47.gif | Bin 46167 -> 0 bytes cards/e48.gif | Bin 46050 -> 0 bytes cards/e49.gif | Bin 30897 -> 0 bytes cards/e5.gif | Bin 55871 -> 0 bytes cards/e50.gif | Bin 37886 -> 0 bytes cards/e51.gif | Bin 42136 -> 0 bytes cards/e52.gif | Bin 35487 -> 0 bytes cards/e53.gif | Bin 41152 -> 0 bytes cards/e54.gif | Bin 51568 -> 0 bytes cards/e55.gif | Bin 53379 -> 0 bytes cards/e56.gif | Bin 47264 -> 0 bytes cards/e57.gif | Bin 41053 -> 0 bytes cards/e58.gif | Bin 49002 -> 0 bytes cards/e59.gif | Bin 48521 -> 0 bytes cards/e6.gif | Bin 53364 -> 0 bytes cards/e60.gif | Bin 38365 -> 0 bytes cards/e61.gif | Bin 59278 -> 0 bytes cards/e62.gif | Bin 47030 -> 0 bytes cards/e63.gif | Bin 37173 -> 0 bytes cards/e64.gif | Bin 55336 -> 0 bytes cards/e65.gif | Bin 45256 -> 0 bytes cards/e66.gif | Bin 45276 -> 0 bytes cards/e67.gif | Bin 46779 -> 0 bytes cards/e68.gif | Bin 47975 -> 0 bytes cards/e69.gif | Bin 55250 -> 0 bytes cards/e7.gif | Bin 38561 -> 0 bytes cards/e70.gif | Bin 51398 -> 0 bytes cards/e71.gif | Bin 41245 -> 0 bytes cards/e72.gif | Bin 57623 -> 0 bytes cards/e73.gif | Bin 45497 -> 0 bytes cards/e74.gif | Bin 47107 -> 0 bytes cards/e75.gif | Bin 43205 -> 0 bytes cards/e76.gif | Bin 59066 -> 0 bytes cards/e77.gif | Bin 55423 -> 0 bytes cards/e78.gif | Bin 48166 -> 0 bytes cards/e79.gif | Bin 49578 -> 0 bytes cards/e8.gif | Bin 38108 -> 0 bytes cards/e80.gif | Bin 42881 -> 0 bytes cards/e81.gif | Bin 46392 -> 0 bytes cards/e82.gif | Bin 33240 -> 0 bytes cards/e83.gif | Bin 41811 -> 0 bytes cards/e84.gif | Bin 55422 -> 0 bytes cards/e85.gif | Bin 44517 -> 0 bytes cards/e86.gif | Bin 55559 -> 0 bytes cards/e87.gif | Bin 43060 -> 0 bytes cards/e88.gif | Bin 59184 -> 0 bytes cards/e89.gif | Bin 49189 -> 0 bytes cards/e9.gif | Bin 49698 -> 0 bytes cards/e90.gif | Bin 52416 -> 0 bytes cards/e91.gif | Bin 37102 -> 0 bytes cards/e92.gif | Bin 40982 -> 0 bytes cards/e93.gif | Bin 53105 -> 0 bytes cards/e94.gif | Bin 54882 -> 0 bytes cards/e95.gif | Bin 41576 -> 0 bytes cards/e96.gif | Bin 53108 -> 0 bytes cards/e97.gif | Bin 55092 -> 0 bytes cards/e98.gif | Bin 49232 -> 0 bytes cards/e99.gif | Bin 42212 -> 0 bytes cards_2/ps1.gif | Bin 12989 -> 0 bytes cards_2/ps10.gif | Bin 11046 -> 0 bytes cards_2/ps11.gif | Bin 11029 -> 0 bytes cards_2/ps12.gif | Bin 12107 -> 0 bytes cards_2/ps13.gif | Bin 10798 -> 0 bytes cards_2/ps14.gif | Bin 11340 -> 0 bytes cards_2/ps15.gif | Bin 9963 -> 0 bytes cards_2/ps16.gif | Bin 9427 -> 0 bytes cards_2/ps17.gif | Bin 10657 -> 0 bytes cards_2/ps18.gif | Bin 9394 -> 0 bytes cards_2/ps19.gif | Bin 9370 -> 0 bytes cards_2/ps2.gif | Bin 12816 -> 0 bytes cards_2/ps20.gif | Bin 9022 -> 0 bytes cards_2/ps21.gif | Bin 11928 -> 0 bytes cards_2/ps22.gif | Bin 11208 -> 0 bytes cards_2/ps23.gif | Bin 15085 -> 0 bytes cards_2/ps24.gif | Bin 8340 -> 0 bytes cards_2/ps25.gif | Bin 10627 -> 0 bytes cards_2/ps26.gif | Bin 9910 -> 0 bytes cards_2/ps27.gif | Bin 11695 -> 0 bytes cards_2/ps3.gif | Bin 12752 -> 0 bytes cards_2/ps4.gif | Bin 12713 -> 0 bytes cards_2/ps5.gif | Bin 12776 -> 0 bytes cards_2/ps6.gif | Bin 15057 -> 0 bytes cards_2/ps7.gif | Bin 15033 -> 0 bytes cards_2/ps8.gif | Bin 14977 -> 0 bytes cards_2/ps9.gif | Bin 15088 -> 0 bytes images/Event_Marker_Austria_Hungar.gif | Bin 5229 -> 0 bytes images/Event_Marker_Eco_Glasnost.gif | Bin 3849 -> 0 bytes images/Event_Marker_Elena.gif | Bin 5472 -> 0 bytes images/Event_Marker_Foreign_Curren.gif | Bin 5612 -> 0 bytes images/Event_Marker_Grenz_Truppen.gif | Bin 6114 -> 0 bytes images/Event_Marker_Helsinki.gif | Bin 4732 -> 0 bytes images/Event_Marker_Honecker.gif | Bin 5660 -> 0 bytes images/Event_Marker_Laszlo.gif | Bin 4389 -> 0 bytes images/Event_Marker_Li_Peng_.gif | Bin 4496 -> 0 bytes images/Event_Marker_NYE_Party.gif | Bin 5383 -> 0 bytes images/Event_Marker_Pres_Visit.gif | Bin 6248 -> 0 bytes images/Event_Marker_Securitate.gif | Bin 5847 -> 0 bytes images/Event_Marker_Solidarity_Leg.gif | Bin 4948 -> 0 bytes images/Event_Marker_St_Nicholas.gif | Bin 4302 -> 0 bytes images/Event_Marker_Stand_Fast.gif | Bin 6199 -> 0 bytes images/Event_Marker_Systematizatio.gif | Bin 4470 -> 0 bytes images/Event_Marker_The_Tyrant_Is_.gif | Bin 6164 -> 0 bytes images/Event_Marker_The_Wall.gif | Bin 5801 -> 0 bytes images/Event_Marker_USSR_Stability.gif | Bin 1666 -> 0 bytes images/Event_Marker_We_are_the_Peo.gif | Bin 5427 -> 0 bytes images/SV_2.gif | Bin 2014 -> 0 bytes images/SV_3.gif | Bin 2011 -> 0 bytes images/SV_4.gif | Bin 1959 -> 0 bytes images/SV_5.gif | Bin 1976 -> 0 bytes images/SV_6.gif | Bin 2003 -> 0 bytes images/SV_7.gif | Bin 1976 -> 0 bytes images/SV_8.gif | Bin 1986 -> 0 bytes images/SV_Action_Round.gif | Bin 2007 -> 0 bytes images/SV_Stability.gif | Bin 2556 -> 0 bytes images/SV_Tiananmen_Square.gif | Bin 2288 -> 0 bytes images/SV_blank.gif | Bin 1168 -> 0 bytes images/SVd_blank.gif | Bin 1814 -> 0 bytes images/Turn.gif | Bin 1391 -> 0 bytes images/US_1.gif | Bin 1933 -> 0 bytes images/US_2.gif | Bin 1961 -> 0 bytes images/US_3.gif | Bin 1982 -> 0 bytes images/US_4.gif | Bin 1953 -> 0 bytes images/US_5.gif | Bin 1971 -> 0 bytes images/US_6.gif | Bin 1992 -> 0 bytes images/US_7.gif | Bin 2005 -> 0 bytes images/US_8.gif | Bin 1951 -> 0 bytes images/US_Action_Round.gif | Bin 2667 -> 0 bytes images/US_Tiananmen_Square.gif | Bin 2241 -> 0 bytes images/US_blank.gif | Bin 1542 -> 0 bytes images/USd_blank.gif | Bin 1810 -> 0 bytes images/VP.gif | Bin 1293 -> 0 bytes images/bin.png | Bin 25047 -> 0 bytes images/cog.svg | 1 - images/earth-africa-europe.svg | 1 - images/remove.png | Bin 4887 -> 0 bytes 188 files changed, 2 deletions(-) delete mode 100644 1989_map.jpg delete mode 100644 cards/e1.gif delete mode 100644 cards/e10.gif delete mode 100644 cards/e100.gif delete mode 100644 cards/e101.gif delete mode 100644 cards/e102.gif delete mode 100644 cards/e103.gif delete mode 100644 cards/e104.gif delete mode 100644 cards/e105.gif delete mode 100644 cards/e106.gif delete mode 100644 cards/e107.gif delete mode 100644 cards/e108.gif delete mode 100644 cards/e109.gif delete mode 100644 cards/e11.gif delete mode 100644 cards/e110.gif delete mode 100644 cards/e12.gif delete mode 100644 cards/e13.gif delete mode 100644 cards/e14.gif delete mode 100644 cards/e15.gif delete mode 100644 cards/e16.gif delete mode 100644 cards/e17.gif delete mode 100644 cards/e18.gif delete mode 100644 cards/e19.gif delete mode 100644 cards/e2.gif delete mode 100644 cards/e20.gif delete mode 100644 cards/e21.gif delete mode 100644 cards/e22.gif delete mode 100644 cards/e23.gif delete mode 100644 cards/e24.gif delete mode 100644 cards/e25.gif delete mode 100644 cards/e26.gif delete mode 100644 cards/e27.gif delete mode 100644 cards/e28.gif delete mode 100644 cards/e29.gif delete mode 100644 cards/e3.gif delete mode 100644 cards/e30.gif delete mode 100644 cards/e31.gif delete mode 100644 cards/e32.gif delete mode 100644 cards/e33.gif delete mode 100644 cards/e34.gif delete mode 100644 cards/e35.gif delete mode 100644 cards/e36.gif delete mode 100644 cards/e37.gif delete mode 100644 cards/e38.gif delete mode 100644 cards/e39.gif delete mode 100644 cards/e4.gif delete mode 100644 cards/e40.gif delete mode 100644 cards/e41.gif delete mode 100644 cards/e42.gif delete mode 100644 cards/e43.gif delete mode 100644 cards/e44.gif delete mode 100644 cards/e45.gif delete mode 100644 cards/e46.gif delete mode 100644 cards/e47.gif delete mode 100644 cards/e48.gif delete mode 100644 cards/e49.gif delete mode 100644 cards/e5.gif delete mode 100644 cards/e50.gif delete mode 100644 cards/e51.gif delete mode 100644 cards/e52.gif delete mode 100644 cards/e53.gif delete mode 100644 cards/e54.gif delete mode 100644 cards/e55.gif delete mode 100644 cards/e56.gif delete mode 100644 cards/e57.gif delete mode 100644 cards/e58.gif delete mode 100644 cards/e59.gif delete mode 100644 cards/e6.gif delete mode 100644 cards/e60.gif delete mode 100644 cards/e61.gif delete mode 100644 cards/e62.gif delete mode 100644 cards/e63.gif delete mode 100644 cards/e64.gif delete mode 100644 cards/e65.gif delete mode 100644 cards/e66.gif delete mode 100644 cards/e67.gif delete mode 100644 cards/e68.gif delete mode 100644 cards/e69.gif delete mode 100644 cards/e7.gif delete mode 100644 cards/e70.gif delete mode 100644 cards/e71.gif delete mode 100644 cards/e72.gif delete mode 100644 cards/e73.gif delete mode 100644 cards/e74.gif delete mode 100644 cards/e75.gif delete mode 100644 cards/e76.gif delete mode 100644 cards/e77.gif delete mode 100644 cards/e78.gif delete mode 100644 cards/e79.gif delete mode 100644 cards/e8.gif delete mode 100644 cards/e80.gif delete mode 100644 cards/e81.gif delete mode 100644 cards/e82.gif delete mode 100644 cards/e83.gif delete mode 100644 cards/e84.gif delete mode 100644 cards/e85.gif delete mode 100644 cards/e86.gif delete mode 100644 cards/e87.gif delete mode 100644 cards/e88.gif delete mode 100644 cards/e89.gif delete mode 100644 cards/e9.gif delete mode 100644 cards/e90.gif delete mode 100644 cards/e91.gif delete mode 100644 cards/e92.gif delete mode 100644 cards/e93.gif delete mode 100644 cards/e94.gif delete mode 100644 cards/e95.gif delete mode 100644 cards/e96.gif delete mode 100644 cards/e97.gif delete mode 100644 cards/e98.gif delete mode 100644 cards/e99.gif delete mode 100644 cards_2/ps1.gif delete mode 100644 cards_2/ps10.gif delete mode 100644 cards_2/ps11.gif delete mode 100644 cards_2/ps12.gif delete mode 100644 cards_2/ps13.gif delete mode 100644 cards_2/ps14.gif delete mode 100644 cards_2/ps15.gif delete mode 100644 cards_2/ps16.gif delete mode 100644 cards_2/ps17.gif delete mode 100644 cards_2/ps18.gif delete mode 100644 cards_2/ps19.gif delete mode 100644 cards_2/ps2.gif delete mode 100644 cards_2/ps20.gif delete mode 100644 cards_2/ps21.gif delete mode 100644 cards_2/ps22.gif delete mode 100644 cards_2/ps23.gif delete mode 100644 cards_2/ps24.gif delete mode 100644 cards_2/ps25.gif delete mode 100644 cards_2/ps26.gif delete mode 100644 cards_2/ps27.gif delete mode 100644 cards_2/ps3.gif delete mode 100644 cards_2/ps4.gif delete mode 100644 cards_2/ps5.gif delete mode 100644 cards_2/ps6.gif delete mode 100644 cards_2/ps7.gif delete mode 100644 cards_2/ps8.gif delete mode 100644 cards_2/ps9.gif delete mode 100644 images/Event_Marker_Austria_Hungar.gif delete mode 100644 images/Event_Marker_Eco_Glasnost.gif delete mode 100644 images/Event_Marker_Elena.gif delete mode 100644 images/Event_Marker_Foreign_Curren.gif delete mode 100644 images/Event_Marker_Grenz_Truppen.gif delete mode 100644 images/Event_Marker_Helsinki.gif delete mode 100644 images/Event_Marker_Honecker.gif delete mode 100644 images/Event_Marker_Laszlo.gif delete mode 100644 images/Event_Marker_Li_Peng_.gif delete mode 100644 images/Event_Marker_NYE_Party.gif delete mode 100644 images/Event_Marker_Pres_Visit.gif delete mode 100644 images/Event_Marker_Securitate.gif delete mode 100644 images/Event_Marker_Solidarity_Leg.gif delete mode 100644 images/Event_Marker_St_Nicholas.gif delete mode 100644 images/Event_Marker_Stand_Fast.gif delete mode 100644 images/Event_Marker_Systematizatio.gif delete mode 100644 images/Event_Marker_The_Tyrant_Is_.gif delete mode 100644 images/Event_Marker_The_Wall.gif delete mode 100644 images/Event_Marker_USSR_Stability.gif delete mode 100644 images/Event_Marker_We_are_the_Peo.gif delete mode 100644 images/SV_2.gif delete mode 100644 images/SV_3.gif delete mode 100644 images/SV_4.gif delete mode 100644 images/SV_5.gif delete mode 100644 images/SV_6.gif delete mode 100644 images/SV_7.gif delete mode 100644 images/SV_8.gif delete mode 100644 images/SV_Action_Round.gif delete mode 100644 images/SV_Stability.gif delete mode 100644 images/SV_Tiananmen_Square.gif delete mode 100644 images/SV_blank.gif delete mode 100644 images/SVd_blank.gif delete mode 100644 images/Turn.gif delete mode 100644 images/US_1.gif delete mode 100644 images/US_2.gif delete mode 100644 images/US_3.gif delete mode 100644 images/US_4.gif delete mode 100644 images/US_5.gif delete mode 100644 images/US_6.gif delete mode 100644 images/US_7.gif delete mode 100644 images/US_8.gif delete mode 100644 images/US_Action_Round.gif delete mode 100644 images/US_Tiananmen_Square.gif delete mode 100644 images/US_blank.gif delete mode 100644 images/USd_blank.gif delete mode 100644 images/VP.gif delete mode 100644 images/bin.png delete mode 100644 images/cog.svg delete mode 100644 images/earth-africa-europe.svg delete mode 100644 images/remove.png (limited to 'images') diff --git a/1989_map.jpg b/1989_map.jpg deleted file mode 100644 index b0d38b9..0000000 Binary files a/1989_map.jpg and /dev/null differ diff --git a/cards/e1.gif b/cards/e1.gif deleted file mode 100644 index 6e876fe..0000000 Binary files a/cards/e1.gif and /dev/null differ diff --git a/cards/e10.gif b/cards/e10.gif deleted file mode 100644 index c73aef7..0000000 Binary files a/cards/e10.gif and /dev/null differ diff --git a/cards/e100.gif b/cards/e100.gif deleted file mode 100644 index c4ee1e0..0000000 Binary files a/cards/e100.gif and /dev/null differ diff --git a/cards/e101.gif b/cards/e101.gif deleted file mode 100644 index 7e233cd..0000000 Binary files a/cards/e101.gif and /dev/null differ diff --git a/cards/e102.gif b/cards/e102.gif deleted file mode 100644 index e9e8c83..0000000 Binary files a/cards/e102.gif and /dev/null differ diff --git a/cards/e103.gif b/cards/e103.gif deleted file mode 100644 index 9596e34..0000000 Binary files a/cards/e103.gif and /dev/null differ diff --git a/cards/e104.gif b/cards/e104.gif deleted file mode 100644 index d7350fd..0000000 Binary files a/cards/e104.gif and /dev/null differ diff --git a/cards/e105.gif b/cards/e105.gif deleted file mode 100644 index c2bbf39..0000000 Binary files a/cards/e105.gif and /dev/null differ diff --git a/cards/e106.gif b/cards/e106.gif deleted file mode 100644 index 8d628b7..0000000 Binary files a/cards/e106.gif and /dev/null differ diff --git a/cards/e107.gif b/cards/e107.gif deleted file mode 100644 index 45215ec..0000000 Binary files a/cards/e107.gif and /dev/null differ diff --git a/cards/e108.gif b/cards/e108.gif deleted file mode 100644 index c7b39d6..0000000 Binary files a/cards/e108.gif and /dev/null differ diff --git a/cards/e109.gif b/cards/e109.gif deleted file mode 100644 index 63524d7..0000000 Binary files a/cards/e109.gif and /dev/null differ diff --git a/cards/e11.gif b/cards/e11.gif deleted file mode 100644 index 7f1e3d1..0000000 Binary files a/cards/e11.gif and /dev/null differ diff --git a/cards/e110.gif b/cards/e110.gif deleted file mode 100644 index 49ed8a7..0000000 Binary files a/cards/e110.gif and /dev/null differ diff --git a/cards/e12.gif b/cards/e12.gif deleted file mode 100644 index 6edee5b..0000000 Binary files a/cards/e12.gif and /dev/null differ diff --git a/cards/e13.gif b/cards/e13.gif deleted file mode 100644 index 7c2687f..0000000 Binary files a/cards/e13.gif and /dev/null differ diff --git a/cards/e14.gif b/cards/e14.gif deleted file mode 100644 index 182f153..0000000 Binary files a/cards/e14.gif and /dev/null differ diff --git a/cards/e15.gif b/cards/e15.gif deleted file mode 100644 index 1223dcd..0000000 Binary files a/cards/e15.gif and /dev/null differ diff --git a/cards/e16.gif b/cards/e16.gif deleted file mode 100644 index 7cb40a2..0000000 Binary files a/cards/e16.gif and /dev/null differ diff --git a/cards/e17.gif b/cards/e17.gif deleted file mode 100644 index 231fe92..0000000 Binary files a/cards/e17.gif and /dev/null differ diff --git a/cards/e18.gif b/cards/e18.gif deleted file mode 100644 index 7738d85..0000000 Binary files a/cards/e18.gif and /dev/null differ diff --git a/cards/e19.gif b/cards/e19.gif deleted file mode 100644 index 2e59b3f..0000000 Binary files a/cards/e19.gif and /dev/null differ diff --git a/cards/e2.gif b/cards/e2.gif deleted file mode 100644 index b6f3f2e..0000000 Binary files a/cards/e2.gif and /dev/null differ diff --git a/cards/e20.gif b/cards/e20.gif deleted file mode 100644 index c21ee70..0000000 Binary files a/cards/e20.gif and /dev/null differ diff --git a/cards/e21.gif b/cards/e21.gif deleted file mode 100644 index c1cdeb7..0000000 Binary files a/cards/e21.gif and /dev/null differ diff --git a/cards/e22.gif b/cards/e22.gif deleted file mode 100644 index e70575b..0000000 Binary files a/cards/e22.gif and /dev/null differ diff --git a/cards/e23.gif b/cards/e23.gif deleted file mode 100644 index c3f8974..0000000 Binary files a/cards/e23.gif and /dev/null differ diff --git a/cards/e24.gif b/cards/e24.gif deleted file mode 100644 index 66f2dbb..0000000 Binary files a/cards/e24.gif and /dev/null differ diff --git a/cards/e25.gif b/cards/e25.gif deleted file mode 100644 index 838fbdd..0000000 Binary files a/cards/e25.gif and /dev/null differ diff --git a/cards/e26.gif b/cards/e26.gif deleted file mode 100644 index c7573f4..0000000 Binary files a/cards/e26.gif and /dev/null differ diff --git a/cards/e27.gif b/cards/e27.gif deleted file mode 100644 index 850da0b..0000000 Binary files a/cards/e27.gif and /dev/null differ diff --git a/cards/e28.gif b/cards/e28.gif deleted file mode 100644 index 6149bab..0000000 Binary files a/cards/e28.gif and /dev/null differ diff --git a/cards/e29.gif b/cards/e29.gif deleted file mode 100644 index d34cdee..0000000 Binary files a/cards/e29.gif and /dev/null differ diff --git a/cards/e3.gif b/cards/e3.gif deleted file mode 100644 index a0f690c..0000000 Binary files a/cards/e3.gif and /dev/null differ diff --git a/cards/e30.gif b/cards/e30.gif deleted file mode 100644 index 8f9d92f..0000000 Binary files a/cards/e30.gif and /dev/null differ diff --git a/cards/e31.gif b/cards/e31.gif deleted file mode 100644 index fe6ff2b..0000000 Binary files a/cards/e31.gif and /dev/null differ diff --git a/cards/e32.gif b/cards/e32.gif deleted file mode 100644 index a0f4e23..0000000 Binary files a/cards/e32.gif and /dev/null differ diff --git a/cards/e33.gif b/cards/e33.gif deleted file mode 100644 index abaa4f2..0000000 Binary files a/cards/e33.gif and /dev/null differ diff --git a/cards/e34.gif b/cards/e34.gif deleted file mode 100644 index ec33286..0000000 Binary files a/cards/e34.gif and /dev/null differ diff --git a/cards/e35.gif b/cards/e35.gif deleted file mode 100644 index 6e5755d..0000000 Binary files a/cards/e35.gif and /dev/null differ diff --git a/cards/e36.gif b/cards/e36.gif deleted file mode 100644 index 7d05d4e..0000000 Binary files a/cards/e36.gif and /dev/null differ diff --git a/cards/e37.gif b/cards/e37.gif deleted file mode 100644 index e84bd17..0000000 Binary files a/cards/e37.gif and /dev/null differ diff --git a/cards/e38.gif b/cards/e38.gif deleted file mode 100644 index 4cb8e4a..0000000 Binary files a/cards/e38.gif and /dev/null differ diff --git a/cards/e39.gif b/cards/e39.gif deleted file mode 100644 index 621ea21..0000000 Binary files a/cards/e39.gif and /dev/null differ diff --git a/cards/e4.gif b/cards/e4.gif deleted file mode 100644 index b225bc1..0000000 Binary files a/cards/e4.gif and /dev/null differ diff --git a/cards/e40.gif b/cards/e40.gif deleted file mode 100644 index d0f7470..0000000 Binary files a/cards/e40.gif and /dev/null differ diff --git a/cards/e41.gif b/cards/e41.gif deleted file mode 100644 index 824fc1f..0000000 Binary files a/cards/e41.gif and /dev/null differ diff --git a/cards/e42.gif b/cards/e42.gif deleted file mode 100644 index 23069f5..0000000 Binary files a/cards/e42.gif and /dev/null differ diff --git a/cards/e43.gif b/cards/e43.gif deleted file mode 100644 index e883ef7..0000000 Binary files a/cards/e43.gif and /dev/null differ diff --git a/cards/e44.gif b/cards/e44.gif deleted file mode 100644 index 15bdf38..0000000 Binary files a/cards/e44.gif and /dev/null differ diff --git a/cards/e45.gif b/cards/e45.gif deleted file mode 100644 index fa6c0ca..0000000 Binary files a/cards/e45.gif and /dev/null differ diff --git a/cards/e46.gif b/cards/e46.gif deleted file mode 100644 index ec7310c..0000000 Binary files a/cards/e46.gif and /dev/null differ diff --git a/cards/e47.gif b/cards/e47.gif deleted file mode 100644 index fcbd622..0000000 Binary files a/cards/e47.gif and /dev/null differ diff --git a/cards/e48.gif b/cards/e48.gif deleted file mode 100644 index b40d716..0000000 Binary files a/cards/e48.gif and /dev/null differ diff --git a/cards/e49.gif b/cards/e49.gif deleted file mode 100644 index ac3c7b2..0000000 Binary files a/cards/e49.gif and /dev/null differ diff --git a/cards/e5.gif b/cards/e5.gif deleted file mode 100644 index bb75531..0000000 Binary files a/cards/e5.gif and /dev/null differ diff --git a/cards/e50.gif b/cards/e50.gif deleted file mode 100644 index a91cdb5..0000000 Binary files a/cards/e50.gif and /dev/null differ diff --git a/cards/e51.gif b/cards/e51.gif deleted file mode 100644 index 55b1bbd..0000000 Binary files a/cards/e51.gif and /dev/null differ diff --git a/cards/e52.gif b/cards/e52.gif deleted file mode 100644 index cc6241a..0000000 Binary files a/cards/e52.gif and /dev/null differ diff --git a/cards/e53.gif b/cards/e53.gif deleted file mode 100644 index 0e7638b..0000000 Binary files a/cards/e53.gif and /dev/null differ diff --git a/cards/e54.gif b/cards/e54.gif deleted file mode 100644 index 734ae1c..0000000 Binary files a/cards/e54.gif and /dev/null differ diff --git a/cards/e55.gif b/cards/e55.gif deleted file mode 100644 index e202be6..0000000 Binary files a/cards/e55.gif and /dev/null differ diff --git a/cards/e56.gif b/cards/e56.gif deleted file mode 100644 index 994c526..0000000 Binary files a/cards/e56.gif and /dev/null differ diff --git a/cards/e57.gif b/cards/e57.gif deleted file mode 100644 index 1202089..0000000 Binary files a/cards/e57.gif and /dev/null differ diff --git a/cards/e58.gif b/cards/e58.gif deleted file mode 100644 index b4cb03c..0000000 Binary files a/cards/e58.gif and /dev/null differ diff --git a/cards/e59.gif b/cards/e59.gif deleted file mode 100644 index eb5075d..0000000 Binary files a/cards/e59.gif and /dev/null differ diff --git a/cards/e6.gif b/cards/e6.gif deleted file mode 100644 index 56293e7..0000000 Binary files a/cards/e6.gif and /dev/null differ diff --git a/cards/e60.gif b/cards/e60.gif deleted file mode 100644 index 42904d1..0000000 Binary files a/cards/e60.gif and /dev/null differ diff --git a/cards/e61.gif b/cards/e61.gif deleted file mode 100644 index 9a04b79..0000000 Binary files a/cards/e61.gif and /dev/null differ diff --git a/cards/e62.gif b/cards/e62.gif deleted file mode 100644 index 14e4bac..0000000 Binary files a/cards/e62.gif and /dev/null differ diff --git a/cards/e63.gif b/cards/e63.gif deleted file mode 100644 index 91cb22f..0000000 Binary files a/cards/e63.gif and /dev/null differ diff --git a/cards/e64.gif b/cards/e64.gif deleted file mode 100644 index 1863085..0000000 Binary files a/cards/e64.gif and /dev/null differ diff --git a/cards/e65.gif b/cards/e65.gif deleted file mode 100644 index 7d317c2..0000000 Binary files a/cards/e65.gif and /dev/null differ diff --git a/cards/e66.gif b/cards/e66.gif deleted file mode 100644 index e709983..0000000 Binary files a/cards/e66.gif and /dev/null differ diff --git a/cards/e67.gif b/cards/e67.gif deleted file mode 100644 index 7d4b2de..0000000 Binary files a/cards/e67.gif and /dev/null differ diff --git a/cards/e68.gif b/cards/e68.gif deleted file mode 100644 index 500ac35..0000000 Binary files a/cards/e68.gif and /dev/null differ diff --git a/cards/e69.gif b/cards/e69.gif deleted file mode 100644 index 1247611..0000000 Binary files a/cards/e69.gif and /dev/null differ diff --git a/cards/e7.gif b/cards/e7.gif deleted file mode 100644 index f4022fd..0000000 Binary files a/cards/e7.gif and /dev/null differ diff --git a/cards/e70.gif b/cards/e70.gif deleted file mode 100644 index f7769d4..0000000 Binary files a/cards/e70.gif and /dev/null differ diff --git a/cards/e71.gif b/cards/e71.gif deleted file mode 100644 index d5ea620..0000000 Binary files a/cards/e71.gif and /dev/null differ diff --git a/cards/e72.gif b/cards/e72.gif deleted file mode 100644 index 9ca0a98..0000000 Binary files a/cards/e72.gif and /dev/null differ diff --git a/cards/e73.gif b/cards/e73.gif deleted file mode 100644 index aaff909..0000000 Binary files a/cards/e73.gif and /dev/null differ diff --git a/cards/e74.gif b/cards/e74.gif deleted file mode 100644 index 608dfec..0000000 Binary files a/cards/e74.gif and /dev/null differ diff --git a/cards/e75.gif b/cards/e75.gif deleted file mode 100644 index d644c5d..0000000 Binary files a/cards/e75.gif and /dev/null differ diff --git a/cards/e76.gif b/cards/e76.gif deleted file mode 100644 index e679a0a..0000000 Binary files a/cards/e76.gif and /dev/null differ diff --git a/cards/e77.gif b/cards/e77.gif deleted file mode 100644 index 4845969..0000000 Binary files a/cards/e77.gif and /dev/null differ diff --git a/cards/e78.gif b/cards/e78.gif deleted file mode 100644 index b435bd5..0000000 Binary files a/cards/e78.gif and /dev/null differ diff --git a/cards/e79.gif b/cards/e79.gif deleted file mode 100644 index 3821d00..0000000 Binary files a/cards/e79.gif and /dev/null differ diff --git a/cards/e8.gif b/cards/e8.gif deleted file mode 100644 index 3a36343..0000000 Binary files a/cards/e8.gif and /dev/null differ diff --git a/cards/e80.gif b/cards/e80.gif deleted file mode 100644 index 19885ac..0000000 Binary files a/cards/e80.gif and /dev/null differ diff --git a/cards/e81.gif b/cards/e81.gif deleted file mode 100644 index 636e13a..0000000 Binary files a/cards/e81.gif and /dev/null differ diff --git a/cards/e82.gif b/cards/e82.gif deleted file mode 100644 index 7dc2ed4..0000000 Binary files a/cards/e82.gif and /dev/null differ diff --git a/cards/e83.gif b/cards/e83.gif deleted file mode 100644 index 27e718d..0000000 Binary files a/cards/e83.gif and /dev/null differ diff --git a/cards/e84.gif b/cards/e84.gif deleted file mode 100644 index 7847ecf..0000000 Binary files a/cards/e84.gif and /dev/null differ diff --git a/cards/e85.gif b/cards/e85.gif deleted file mode 100644 index f6b656e..0000000 Binary files a/cards/e85.gif and /dev/null differ diff --git a/cards/e86.gif b/cards/e86.gif deleted file mode 100644 index 46af753..0000000 Binary files a/cards/e86.gif and /dev/null differ diff --git a/cards/e87.gif b/cards/e87.gif deleted file mode 100644 index 63bbd5e..0000000 Binary files a/cards/e87.gif and /dev/null differ diff --git a/cards/e88.gif b/cards/e88.gif deleted file mode 100644 index f1eedf3..0000000 Binary files a/cards/e88.gif and /dev/null differ diff --git a/cards/e89.gif b/cards/e89.gif deleted file mode 100644 index edd968a..0000000 Binary files a/cards/e89.gif and /dev/null differ diff --git a/cards/e9.gif b/cards/e9.gif deleted file mode 100644 index 1e094fb..0000000 Binary files a/cards/e9.gif and /dev/null differ diff --git a/cards/e90.gif b/cards/e90.gif deleted file mode 100644 index 954e485..0000000 Binary files a/cards/e90.gif and /dev/null differ diff --git a/cards/e91.gif b/cards/e91.gif deleted file mode 100644 index baf649a..0000000 Binary files a/cards/e91.gif and /dev/null differ diff --git a/cards/e92.gif b/cards/e92.gif deleted file mode 100644 index 15e4d1b..0000000 Binary files a/cards/e92.gif and /dev/null differ diff --git a/cards/e93.gif b/cards/e93.gif deleted file mode 100644 index bdcdf5f..0000000 Binary files a/cards/e93.gif and /dev/null differ diff --git a/cards/e94.gif b/cards/e94.gif deleted file mode 100644 index 797ff40..0000000 Binary files a/cards/e94.gif and /dev/null differ diff --git a/cards/e95.gif b/cards/e95.gif deleted file mode 100644 index 3455ade..0000000 Binary files a/cards/e95.gif and /dev/null differ diff --git a/cards/e96.gif b/cards/e96.gif deleted file mode 100644 index 2326e6d..0000000 Binary files a/cards/e96.gif and /dev/null differ diff --git a/cards/e97.gif b/cards/e97.gif deleted file mode 100644 index 7a2753c..0000000 Binary files a/cards/e97.gif and /dev/null differ diff --git a/cards/e98.gif b/cards/e98.gif deleted file mode 100644 index 2cc5f89..0000000 Binary files a/cards/e98.gif and /dev/null differ diff --git a/cards/e99.gif b/cards/e99.gif deleted file mode 100644 index c2def43..0000000 Binary files a/cards/e99.gif and /dev/null differ diff --git a/cards_2/ps1.gif b/cards_2/ps1.gif deleted file mode 100644 index 93bdf19..0000000 Binary files a/cards_2/ps1.gif and /dev/null differ diff --git a/cards_2/ps10.gif b/cards_2/ps10.gif deleted file mode 100644 index b78ec1f..0000000 Binary files a/cards_2/ps10.gif and /dev/null differ diff --git a/cards_2/ps11.gif b/cards_2/ps11.gif deleted file mode 100644 index 298c9e6..0000000 Binary files a/cards_2/ps11.gif and /dev/null differ diff --git a/cards_2/ps12.gif b/cards_2/ps12.gif deleted file mode 100644 index ebc293c..0000000 Binary files a/cards_2/ps12.gif and /dev/null differ diff --git a/cards_2/ps13.gif b/cards_2/ps13.gif deleted file mode 100644 index 5df58c4..0000000 Binary files a/cards_2/ps13.gif and /dev/null differ diff --git a/cards_2/ps14.gif b/cards_2/ps14.gif deleted file mode 100644 index 1ab602b..0000000 Binary files a/cards_2/ps14.gif and /dev/null differ diff --git a/cards_2/ps15.gif b/cards_2/ps15.gif deleted file mode 100644 index 77d01eb..0000000 Binary files a/cards_2/ps15.gif and /dev/null differ diff --git a/cards_2/ps16.gif b/cards_2/ps16.gif deleted file mode 100644 index 3821417..0000000 Binary files a/cards_2/ps16.gif and /dev/null differ diff --git a/cards_2/ps17.gif b/cards_2/ps17.gif deleted file mode 100644 index caaa761..0000000 Binary files a/cards_2/ps17.gif and /dev/null differ diff --git a/cards_2/ps18.gif b/cards_2/ps18.gif deleted file mode 100644 index 04c1cd5..0000000 Binary files a/cards_2/ps18.gif and /dev/null differ diff --git a/cards_2/ps19.gif b/cards_2/ps19.gif deleted file mode 100644 index f88c379..0000000 Binary files a/cards_2/ps19.gif and /dev/null differ diff --git a/cards_2/ps2.gif b/cards_2/ps2.gif deleted file mode 100644 index a900be2..0000000 Binary files a/cards_2/ps2.gif and /dev/null differ diff --git a/cards_2/ps20.gif b/cards_2/ps20.gif deleted file mode 100644 index 1387a8d..0000000 Binary files a/cards_2/ps20.gif and /dev/null differ diff --git a/cards_2/ps21.gif b/cards_2/ps21.gif deleted file mode 100644 index 31cd0b2..0000000 Binary files a/cards_2/ps21.gif and /dev/null differ diff --git a/cards_2/ps22.gif b/cards_2/ps22.gif deleted file mode 100644 index 42a7cec..0000000 Binary files a/cards_2/ps22.gif and /dev/null differ diff --git a/cards_2/ps23.gif b/cards_2/ps23.gif deleted file mode 100644 index 50ee901..0000000 Binary files a/cards_2/ps23.gif and /dev/null differ diff --git a/cards_2/ps24.gif b/cards_2/ps24.gif deleted file mode 100644 index 3107cc1..0000000 Binary files a/cards_2/ps24.gif and /dev/null differ diff --git a/cards_2/ps25.gif b/cards_2/ps25.gif deleted file mode 100644 index ba321f4..0000000 Binary files a/cards_2/ps25.gif and /dev/null differ diff --git a/cards_2/ps26.gif b/cards_2/ps26.gif deleted file mode 100644 index c6befdf..0000000 Binary files a/cards_2/ps26.gif and /dev/null differ diff --git a/cards_2/ps27.gif b/cards_2/ps27.gif deleted file mode 100644 index 34a4cea..0000000 Binary files a/cards_2/ps27.gif and /dev/null differ diff --git a/cards_2/ps3.gif b/cards_2/ps3.gif deleted file mode 100644 index 0f546d2..0000000 Binary files a/cards_2/ps3.gif and /dev/null differ diff --git a/cards_2/ps4.gif b/cards_2/ps4.gif deleted file mode 100644 index eebdb7f..0000000 Binary files a/cards_2/ps4.gif and /dev/null differ diff --git a/cards_2/ps5.gif b/cards_2/ps5.gif deleted file mode 100644 index b2da6bd..0000000 Binary files a/cards_2/ps5.gif and /dev/null differ diff --git a/cards_2/ps6.gif b/cards_2/ps6.gif deleted file mode 100644 index cd2b261..0000000 Binary files a/cards_2/ps6.gif and /dev/null differ diff --git a/cards_2/ps7.gif b/cards_2/ps7.gif deleted file mode 100644 index 5516bb3..0000000 Binary files a/cards_2/ps7.gif and /dev/null differ diff --git a/cards_2/ps8.gif b/cards_2/ps8.gif deleted file mode 100644 index 136e81a..0000000 Binary files a/cards_2/ps8.gif and /dev/null differ diff --git a/cards_2/ps9.gif b/cards_2/ps9.gif deleted file mode 100644 index df79c56..0000000 Binary files a/cards_2/ps9.gif and /dev/null differ diff --git a/images/Event_Marker_Austria_Hungar.gif b/images/Event_Marker_Austria_Hungar.gif deleted file mode 100644 index 5e2053f..0000000 Binary files a/images/Event_Marker_Austria_Hungar.gif and /dev/null differ diff --git a/images/Event_Marker_Eco_Glasnost.gif b/images/Event_Marker_Eco_Glasnost.gif deleted file mode 100644 index c50ac5b..0000000 Binary files a/images/Event_Marker_Eco_Glasnost.gif and /dev/null differ diff --git a/images/Event_Marker_Elena.gif b/images/Event_Marker_Elena.gif deleted file mode 100644 index 9e5ff46..0000000 Binary files a/images/Event_Marker_Elena.gif and /dev/null differ diff --git a/images/Event_Marker_Foreign_Curren.gif b/images/Event_Marker_Foreign_Curren.gif deleted file mode 100644 index 822b098..0000000 Binary files a/images/Event_Marker_Foreign_Curren.gif and /dev/null differ diff --git a/images/Event_Marker_Grenz_Truppen.gif b/images/Event_Marker_Grenz_Truppen.gif deleted file mode 100644 index 1e2832f..0000000 Binary files a/images/Event_Marker_Grenz_Truppen.gif and /dev/null differ diff --git a/images/Event_Marker_Helsinki.gif b/images/Event_Marker_Helsinki.gif deleted file mode 100644 index 7567dc7..0000000 Binary files a/images/Event_Marker_Helsinki.gif and /dev/null differ diff --git a/images/Event_Marker_Honecker.gif b/images/Event_Marker_Honecker.gif deleted file mode 100644 index 52a6ad1..0000000 Binary files a/images/Event_Marker_Honecker.gif and /dev/null differ diff --git a/images/Event_Marker_Laszlo.gif b/images/Event_Marker_Laszlo.gif deleted file mode 100644 index ba09ff2..0000000 Binary files a/images/Event_Marker_Laszlo.gif and /dev/null differ diff --git a/images/Event_Marker_Li_Peng_.gif b/images/Event_Marker_Li_Peng_.gif deleted file mode 100644 index 9477bac..0000000 Binary files a/images/Event_Marker_Li_Peng_.gif and /dev/null differ diff --git a/images/Event_Marker_NYE_Party.gif b/images/Event_Marker_NYE_Party.gif deleted file mode 100644 index b2a91d2..0000000 Binary files a/images/Event_Marker_NYE_Party.gif and /dev/null differ diff --git a/images/Event_Marker_Pres_Visit.gif b/images/Event_Marker_Pres_Visit.gif deleted file mode 100644 index 006e93d..0000000 Binary files a/images/Event_Marker_Pres_Visit.gif and /dev/null differ diff --git a/images/Event_Marker_Securitate.gif b/images/Event_Marker_Securitate.gif deleted file mode 100644 index 9289a99..0000000 Binary files a/images/Event_Marker_Securitate.gif and /dev/null differ diff --git a/images/Event_Marker_Solidarity_Leg.gif b/images/Event_Marker_Solidarity_Leg.gif deleted file mode 100644 index 044f4db..0000000 Binary files a/images/Event_Marker_Solidarity_Leg.gif and /dev/null differ diff --git a/images/Event_Marker_St_Nicholas.gif b/images/Event_Marker_St_Nicholas.gif deleted file mode 100644 index cb09917..0000000 Binary files a/images/Event_Marker_St_Nicholas.gif and /dev/null differ diff --git a/images/Event_Marker_Stand_Fast.gif b/images/Event_Marker_Stand_Fast.gif deleted file mode 100644 index 2d12898..0000000 Binary files a/images/Event_Marker_Stand_Fast.gif and /dev/null differ diff --git a/images/Event_Marker_Systematizatio.gif b/images/Event_Marker_Systematizatio.gif deleted file mode 100644 index 9f53576..0000000 Binary files a/images/Event_Marker_Systematizatio.gif and /dev/null differ diff --git a/images/Event_Marker_The_Tyrant_Is_.gif b/images/Event_Marker_The_Tyrant_Is_.gif deleted file mode 100644 index 05aca22..0000000 Binary files a/images/Event_Marker_The_Tyrant_Is_.gif and /dev/null differ diff --git a/images/Event_Marker_The_Wall.gif b/images/Event_Marker_The_Wall.gif deleted file mode 100644 index a929132..0000000 Binary files a/images/Event_Marker_The_Wall.gif and /dev/null differ diff --git a/images/Event_Marker_USSR_Stability.gif b/images/Event_Marker_USSR_Stability.gif deleted file mode 100644 index daacbbb..0000000 Binary files a/images/Event_Marker_USSR_Stability.gif and /dev/null differ diff --git a/images/Event_Marker_We_are_the_Peo.gif b/images/Event_Marker_We_are_the_Peo.gif deleted file mode 100644 index e10d8e6..0000000 Binary files a/images/Event_Marker_We_are_the_Peo.gif and /dev/null differ diff --git a/images/SV_2.gif b/images/SV_2.gif deleted file mode 100644 index 76f1f46..0000000 Binary files a/images/SV_2.gif and /dev/null differ diff --git a/images/SV_3.gif b/images/SV_3.gif deleted file mode 100644 index 75404f0..0000000 Binary files a/images/SV_3.gif and /dev/null differ diff --git a/images/SV_4.gif b/images/SV_4.gif deleted file mode 100644 index 29158b4..0000000 Binary files a/images/SV_4.gif and /dev/null differ diff --git a/images/SV_5.gif b/images/SV_5.gif deleted file mode 100644 index 2fdea81..0000000 Binary files a/images/SV_5.gif and /dev/null differ diff --git a/images/SV_6.gif b/images/SV_6.gif deleted file mode 100644 index 9f614e7..0000000 Binary files a/images/SV_6.gif and /dev/null differ diff --git a/images/SV_7.gif b/images/SV_7.gif deleted file mode 100644 index 43c6a14..0000000 Binary files a/images/SV_7.gif and /dev/null differ diff --git a/images/SV_8.gif b/images/SV_8.gif deleted file mode 100644 index a2e7dad..0000000 Binary files a/images/SV_8.gif and /dev/null differ diff --git a/images/SV_Action_Round.gif b/images/SV_Action_Round.gif deleted file mode 100644 index 7d2c9ef..0000000 Binary files a/images/SV_Action_Round.gif and /dev/null differ diff --git a/images/SV_Stability.gif b/images/SV_Stability.gif deleted file mode 100644 index dbc33aa..0000000 Binary files a/images/SV_Stability.gif and /dev/null differ diff --git a/images/SV_Tiananmen_Square.gif b/images/SV_Tiananmen_Square.gif deleted file mode 100644 index 41740bc..0000000 Binary files a/images/SV_Tiananmen_Square.gif and /dev/null differ diff --git a/images/SV_blank.gif b/images/SV_blank.gif deleted file mode 100644 index 5b9190b..0000000 Binary files a/images/SV_blank.gif and /dev/null differ diff --git a/images/SVd_blank.gif b/images/SVd_blank.gif deleted file mode 100644 index e202de3..0000000 Binary files a/images/SVd_blank.gif and /dev/null differ diff --git a/images/Turn.gif b/images/Turn.gif deleted file mode 100644 index 94dba0b..0000000 Binary files a/images/Turn.gif and /dev/null differ diff --git a/images/US_1.gif b/images/US_1.gif deleted file mode 100644 index 0f4d999..0000000 Binary files a/images/US_1.gif and /dev/null differ diff --git a/images/US_2.gif b/images/US_2.gif deleted file mode 100644 index e30ce29..0000000 Binary files a/images/US_2.gif and /dev/null differ diff --git a/images/US_3.gif b/images/US_3.gif deleted file mode 100644 index 3f6596d..0000000 Binary files a/images/US_3.gif and /dev/null differ diff --git a/images/US_4.gif b/images/US_4.gif deleted file mode 100644 index 4e1d1b1..0000000 Binary files a/images/US_4.gif and /dev/null differ diff --git a/images/US_5.gif b/images/US_5.gif deleted file mode 100644 index 4b32ff1..0000000 Binary files a/images/US_5.gif and /dev/null differ diff --git a/images/US_6.gif b/images/US_6.gif deleted file mode 100644 index da52ac1..0000000 Binary files a/images/US_6.gif and /dev/null differ diff --git a/images/US_7.gif b/images/US_7.gif deleted file mode 100644 index bbf8135..0000000 Binary files a/images/US_7.gif and /dev/null differ diff --git a/images/US_8.gif b/images/US_8.gif deleted file mode 100644 index 18b5f4d..0000000 Binary files a/images/US_8.gif and /dev/null differ diff --git a/images/US_Action_Round.gif b/images/US_Action_Round.gif deleted file mode 100644 index 00e4916..0000000 Binary files a/images/US_Action_Round.gif and /dev/null differ diff --git a/images/US_Tiananmen_Square.gif b/images/US_Tiananmen_Square.gif deleted file mode 100644 index 0fadb29..0000000 Binary files a/images/US_Tiananmen_Square.gif and /dev/null differ diff --git a/images/US_blank.gif b/images/US_blank.gif deleted file mode 100644 index 1f2f331..0000000 Binary files a/images/US_blank.gif and /dev/null differ diff --git a/images/USd_blank.gif b/images/USd_blank.gif deleted file mode 100644 index b999b18..0000000 Binary files a/images/USd_blank.gif and /dev/null differ diff --git a/images/VP.gif b/images/VP.gif deleted file mode 100644 index bd69b44..0000000 Binary files a/images/VP.gif and /dev/null differ diff --git a/images/bin.png b/images/bin.png deleted file mode 100644 index 37ea1a7..0000000 Binary files a/images/bin.png and /dev/null differ diff --git a/images/cog.svg b/images/cog.svg deleted file mode 100644 index 6e44bd2..0000000 --- a/images/cog.svg +++ /dev/null @@ -1 +0,0 @@ -<svg style="height: 512px; width: 512px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><g class="" style="" transform="translate(0,0)"><path d="M234.875 18.78c-26.087 2.367-51.557 8.56-74.875 18.782 15.37 32.763 14.222 66.706-6.72 82.407-20.835 15.617-54.055 7.965-81.124-15.69-16.246 19.452-29.336 41.36-38.875 65.626 33.83 12.333 56.635 37.665 52.94 63.5-3.698 25.835-32.697 43.74-68.626 46.094 2.338 25.796 8.91 50.778 18.937 73.875 17.81-8.182 35.793-11.09 51.095-8.938 13.032 1.87 23.927 7.015 31.156 16.657 15.817 21.097 7.603 54.713-16.78 81.97 19.516 16.35 42.216 29.444 66.594 39.03 12.33-33.828 37.655-56.634 63.5-52.938 25.844 3.697 43.74 32.696 46.094 68.625 26.087-2.365 51.557-8.555 74.875-18.78-15.766-32.997-14.26-67.588 6.843-83.406 9.64-7.23 22.568-9.022 35.594-7.125 15.112 2.16 31.19 10.25 45.563 22.78 16.088-19.345 29.4-41.51 38.875-65.594-33.83-12.332-56.635-37.653-52.938-63.5 3.697-25.846 32.665-43.772 68.594-46.125-2.36-25.944-8.774-50.663-18.906-73.874-32.612 15.117-66.66 13.145-82.282-7.687-15.696-20.944-7.252-53.86 16.688-81-19.52-16.352-42.248-29.447-66.625-39.032-12.332 33.828-37.657 56.66-63.5 52.968-25.846-3.693-43.744-32.696-46.095-68.625zm21.656 95.126c79.626 0 144.376 64.752 144.376 144.375 0 79.626-64.75 144.376-144.375 144.376-79.624 0-144.374-64.75-144.374-144.375 0-79.624 64.75-144.374 144.375-144.374zm0 18.688c-69.524 0-125.686 56.162-125.686 125.687 0 69.526 56.162 125.69 125.687 125.69 69.526 0 125.69-56.164 125.69-125.69 0-69.522-56.164-125.686-125.69-125.686zm.033 15.125c61.094 0 110.625 49.53 110.625 110.624 0 61.095-49.53 110.625-110.625 110.625s-110.625-49.53-110.625-110.626c0-61.095 49.53-110.625 110.625-110.625z" fill="#000" fill-opacity="1"></path></g></svg> \ No newline at end of file diff --git a/images/earth-africa-europe.svg b/images/earth-africa-europe.svg deleted file mode 100644 index 39a4868..0000000 --- a/images/earth-africa-europe.svg +++ /dev/null @@ -1 +0,0 @@ -<svg style="height: 512px; width: 512px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><g class="" style="" transform="translate(0,0)"><path d="M256 32A224 224 0 0 0 32 256a224 224 0 0 0 224 224 224 224 0 0 0 223.672-217.45c-15.468 4.148-.306.22-16.467 4.51-9.1-2.965-28.42 10.264-29.197 10.264-1.756 0-14.65-49.66-14.65-49.66L381.08 208H368l-1.316 6.32 30.2 28.444-47.76 20.718-35.466-49.162-5.24 2.328 11.21 36.3 42.84 23.177-42.84 50.568 1.403 35.82-31.276 67.182-52.168-6.716-16-88.843-3.094-33.43-71.517-3.838-9.258-60.77 32.314-35.827 54.782-6.32 40.034 21.772 36.93-9.72c-1.112-18.374.05-12.54-1.112-18.374l-19.666-.7-1.053-10.184-5.97-2.107-2.81 12.64-9.48-.526-11.94-26.514-8.43 2.81 10.185 22.475-9.13 3.16-13.694-20.718-8.428-1.406-21.773 2.81-18.26 23.177-18.613 1.406-1.405-34.064 24.23-1.757 2.108-10.184-5.795-5.618-.174-3.69 16.182-7.94 11.56-2.944 19.665-6.848 6.32-7.375 3.512 7.375 22.474 2.81 8.78-9.13 5.97-24.582-6.673-2.81-11.238 16.857-8.43-9.834-11.586 14.75-14.4 2.458-.7-10.184 11.236-23.88 31.606-13.694 43.894-3.16 3.864 13.344s-4.916 13.344-5.97 13.695c-.138.045.428 1.754 1.464 4.565h31.195l14.047-11.59 29.484-9.138A224 224 0 0 0 256 32zM145.098 69.465l6.144 1.053s1.756 8.076.352 10.007c-1.405 1.932-10.885 7.903-10.885 7.903l-6.148-12.115 10.536-6.848zm41.086 11.588l8.252 19.49 3.337 16.68s-11.588 5.793-12.466 6.496c-.878.7-6.147-8.077-6.147-8.077l-1.93-17.91 2.81-15.1 6.144-1.58zm-12.116 22.474v16.155l-10.007 3.86-2.107-7.724 12.115-12.29zm189.104 238.618l-7.365 61.798-16.164 3.166s4.868-50.492 7.326-53.3l16.202-11.665z" fill="#000" fill-opacity="1"></path></g></svg> \ No newline at end of file diff --git a/images/remove.png b/images/remove.png deleted file mode 100644 index 1c5b028..0000000 Binary files a/images/remove.png and /dev/null differ -- cgit v1.2.3 From 5d81b4294bd8f9b20ac8a396a185f6cf9550c00f Mon Sep 17 00:00:00 2001 From: Tor Andersson <tor@ccxvii.net> Date: Fri, 25 Oct 2024 11:58:58 +0200 Subject: Update client. Fixed some spelling errors in space data table. Create tools directory and add Makefile. Add layout.svg with boxes drawn on top of locations. Add genlayout.js to create list of box locations. Add gencolors.js to create beveled marker border colors. Major rewrite of play.js and play.css with official assets. --- Makefile | 9 + data.js | 1355 +++++++++++++++++++++++++++++++++++++++++++++++--- gencode.js | 107 ---- images/trash-can.svg | 1 + info/cards.html | 193 +++++++ play.css | 1010 +++++++++++++------------------------ play.html | 236 ++++----- play.js | 1080 +++++++++++++++++----------------------- rules.js | 71 ++- tools/colors.js | 110 ++++ tools/gencode.js | 106 ++++ tools/gencolors.js | 78 +++ tools/genlayout.js | 37 ++ tools/layout.svg | 920 ++++++++++++++++++++++++++++++++++ 14 files changed, 3651 insertions(+), 1662 deletions(-) create mode 100644 Makefile delete mode 100644 gencode.js create mode 100644 images/trash-can.svg create mode 100644 info/cards.html create mode 100644 tools/colors.js create mode 100644 tools/gencode.js create mode 100644 tools/gencolors.js create mode 100644 tools/genlayout.js create mode 100644 tools/layout.svg (limited to 'images') diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..daa5c21 --- /dev/null +++ b/Makefile @@ -0,0 +1,9 @@ +default: rules.js play.js +rules.js: events.txt + sed '/const CODE /,$$d' < rules.js > /tmp/rules.js + node tools/gencode.js >> /tmp/rules.js + cp /tmp/rules.js rules.js +play.js: tools/layout.svg + sed '/var LAYOUT /,$$d' < play.js > /tmp/play.js + node tools/genlayout.js >> /tmp/play.js + cp /tmp/play.js play.js diff --git a/data.js b/data.js index 17e7530..6c37c50 100644 --- a/data.js +++ b/data.js @@ -1,80 +1,1280 @@ -const spaces = [ - null, - {name_unique: 'Schwerin', space_id: 1, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 111, y: 61}, adjacent: [2, 3, , , ]}, - {name_unique: 'Rostock', space_id: 2, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 228, y: 41}, adjacent: [1, 3, , , ]}, - {name_unique: 'Berlin', space_id: 3, socio: 2, stability: 3, battleground: 1, demInfl: 0, comInfl: 2, country: 'East_Germany', region: 'Eastern Europe', box: {x: 251, y: 113}, adjacent: [1, 2, 5, 9, ]}, - {name_unique: 'German Writers', space_id: 4, socio: 5, stability: 2, battleground: 0, demInfl: 0, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 58, y: 185}, adjacent: [5, , , , ]}, - {name_unique: 'Walter Ulbricht Academy', space_id: 5, socio: 6, stability: 1, battleground: 0, demInfl: 0, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 175, y: 187}, adjacent: [3, 4, , , ]}, - {name_unique: 'Lutherian Church', space_id: 6, socio: 7, stability: 5, battleground: 1, demInfl: 1, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 300, y: 212}, adjacent: [9, , , , ]}, - {name_unique: 'Magdeburg', space_id: 7, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 58, y: 275}, adjacent: [8, 10, 11, , ]}, - {name_unique: 'Halle', space_id: 8, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 175, y: 278}, adjacent: [7, 9, 11, , ]}, - {name_unique: 'Leipzig', space_id: 9, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 297, y: 297}, adjacent: [3, 6, 8, 11, 12]}, - {name_unique: 'Erfurt', space_id: 10, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 23, y: 356}, adjacent: [7, , , , ]}, - {name_unique: 'Karl-Marx-Stadt', space_id: 11, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 138, y: 385}, adjacent: [7, 8, 9, 12, ]}, - {name_unique: 'Dresden', space_id: 12, socio: 1, stability: 4, battleground: 1, demInfl: 0, comInfl: 2, country: 'East_Germany', region: 'Eastern Europe', box: {x: 262, y: 375}, adjacent: [9, 11, 19, 27, ]}, - {name_unique: 'Szczecin', space_id: 13, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 434, y: 204}, adjacent: [14, 16, , , ]}, - {name_unique: 'Gdańsk', space_id: 14, socio: 4, stability: 3, battleground: 1, demInfl: 1, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 699, y: 215}, adjacent: [13, 15, 16, 17, 18]}, - {name_unique: 'Bydgoszcz', space_id: 15, socio: 1, stability: 4, battleground: 0, demInfl: 0, comInfl: 1, country: 'Poland', region: 'Eastern Europe', box: {x: 679, y: 304}, adjacent: [14, 17, , , ]}, - {name_unique: 'Poznań', space_id: 16, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 521, y: 355}, adjacent: [13, 14, 19, 20, ]}, - {name_unique: 'Warszawa', space_id: 17, socio: 2, stability: 3, battleground: 1, demInfl: 0, comInfl: 1, country: 'Poland', region: 'Eastern Europe', box: {x: 806, y: 383}, adjacent: [14, 15, 18, 21, 24]}, - {name_unique: 'Białystok', space_id: 18, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 940, y: 342}, adjacent: [14, 17, 24, , ]}, - {name_unique: 'Wrocław', space_id: 19, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 462, y: 443}, adjacent: [12, 16, 20, 22, ]}, - {name_unique: 'Catholic Church, Poland', space_id: 20, socio: 7, stability: 5, battleground: 0, demInfl: 5, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 625, y: 437}, adjacent: [16, 19, 21, 22, 23]}, - {name_unique: 'Łódź', space_id: 21, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 749, y: 486}, adjacent: [17, 20, 23, 24, ]}, - {name_unique: 'Katowice', space_id: 22, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 570, y: 569}, adjacent: [19, 20, 23, 33, ]}, - {name_unique: 'Kraków', space_id: 23, socio: 4, stability: 3, battleground: 1, demInfl: 1, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 711, y: 598}, adjacent: [20, 21, 22, 25, ]}, - {name_unique: 'Lublin', space_id: 24, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 1, country: 'Poland', region: 'Eastern Europe', box: {x: 879, y: 603}, adjacent: [17, 18, 21, , ]}, - {name_unique: 'Jagiellian University', space_id: 25, socio: 6, stability: 1, battleground: 0, demInfl: 0, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 679, y: 681}, adjacent: [23, 26, , , ]}, - {name_unique: 'Polish Writers', space_id: 26, socio: 5, stability: 2, battleground: 0, demInfl: 0, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 832, y: 694}, adjacent: [25, , , , ]}, - {name_unique: 'Plzeň', space_id: 27, socio: 1, stability: 4, battleground: 0, demInfl: 0, comInfl: 2, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 159, y: 483}, adjacent: [12, 28, 29, , ]}, - {name_unique: 'České Budĕjovice', space_id: 28, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 196, y: 601}, adjacent: [27, 29, , , ]}, - {name_unique: 'Praha', space_id: 29, socio: 2, stability: 3, battleground: 1, demInfl: 0, comInfl: 2, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 317, y: 614}, adjacent: [27, 28, 30, 32, ]}, - {name_unique: 'Charles University', space_id: 30, socio: 6, stability: 1, battleground: 1, demInfl: 0, comInfl: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 380, y: 532}, adjacent: [29, 31, , , ]}, - {name_unique: 'Czech Writers', space_id: 31, socio: 5, stability: 2, battleground: 1, demInfl: 2, comInfl: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 444, y: 607}, adjacent: [30, , , , ]}, - {name_unique: 'Brno', space_id: 32, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 1, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 403, y: 711}, adjacent: [29, 33, 34, , ]}, - {name_unique: 'Ostrava', space_id: 33, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 523, y: 681}, adjacent: [22, 32, 34, 35, ]}, - {name_unique: 'Bratislava', space_id: 34, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 417, y: 797}, adjacent: [32, 33, 35, , ]}, - {name_unique: 'Catholic Church, Czechoslovakia', space_id: 35, socio: 7, stability: 5, battleground: 0, demInfl: 1, comInfl: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 538, y: 794}, adjacent: [33, 34, 36, , ]}, - {name_unique: 'Prešov', space_id: 36, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 658, y: 794}, adjacent: [35, 37, , , ]}, - {name_unique: 'Košice', space_id: 37, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 777, y: 815}, adjacent: [36, 42, , , ]}, - {name_unique: 'Catholic Church, Hungary', space_id: 38, socio: 7, stability: 5, battleground: 0, demInfl: 1, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 314, y: 886}, adjacent: [39, 43, , , ]}, - {name_unique: 'Győr', space_id: 39, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 434, y: 887}, adjacent: [38, 40, 43, 44, ]}, - {name_unique: 'Tatabánya', space_id: 40, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 549, y: 886}, adjacent: [39, 41, 45, , ]}, - {name_unique: 'Miskolc', space_id: 41, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 664, y: 901}, adjacent: [40, 42, 45, , ]}, - {name_unique: 'Debrecen', space_id: 42, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 781, y: 938}, adjacent: [37, 41, , , ]}, - {name_unique: 'Szombathely', space_id: 43, socio: 1, stability: 4, battleground: 0, demInfl: 0, comInfl: 1, country: 'Hungary', region: 'Eastern Europe', box: {x: 316, y: 963}, adjacent: [38, 39, 44, , ]}, - {name_unique: 'Székesfehérvár', space_id: 44, socio: 4, stability: 3, battleground: 0, demInfl: 1, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 442, y: 962}, adjacent: [39, 43, 45, , ]}, - {name_unique: 'Budapest', space_id: 45, socio: 2, stability: 3, battleground: 1, demInfl: 1, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 630, y: 983}, adjacent: [40, 41, 44, 47, 48]}, - {name_unique: 'Hungarian Writers', space_id: 46, socio: 5, stability: 2, battleground: 0, demInfl: 0, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 348, y: 1040}, adjacent: [47, , , , ]}, - {name_unique: 'Eötvös Loránd University', space_id: 47, socio: 6, stability: 1, battleground: 0, demInfl: 0, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 512, y: 1034}, adjacent: [46, 45, , , ]}, - {name_unique: 'Szeged', space_id: 48, socio: 3, stability: 4, battleground: 1, demInfl: 1, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 632, y: 1073}, adjacent: [45, 49, 50, , ]}, - {name_unique: 'Pécs', space_id: 49, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 486, y: 1105}, adjacent: [48, , , , ]}, - {name_unique: 'Timişoara', space_id: 50, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 597, y: 1204}, adjacent: [48, 51, 60, , ]}, - {name_unique: 'Cluj-Napoca', space_id: 51, socio: 1, stability: 4, battleground: 1, demInfl: 0, comInfl: 2, country: 'Romania', region: 'Balkans', box: {x: 756, y: 1125}, adjacent: [50, 54, 58, 61, ]}, - {name_unique: 'Târgu Mureş', space_id: 52, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 915, y: 1136}, adjacent: [53, 56, , , ]}, - {name_unique: 'Iaşi', space_id: 53, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 1072, y: 1097}, adjacent: [52, 57, 62, , ]}, - {name_unique: 'Babeş-Bolyai University', space_id: 54, socio: 6, stability: 1, battleground: 0, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 746, y: 1203}, adjacent: [51, 55, , , ]}, - {name_unique: 'Romanian Writers', space_id: 55, socio: 5, stability: 2, battleground: 0, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 739, y: 1278}, adjacent: [54, , , , ]}, - {name_unique: 'Hargita/Covasna', space_id: 56, socio: 8, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 928, y: 1227}, adjacent: [52, , , , ]}, - {name_unique: 'Braşov', space_id: 57, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 1049, y: 1225}, adjacent: [53, 59, 61, , ]}, - {name_unique: 'Orthodox Church Romania', space_id: 58, socio: 7, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 855, y: 1338}, adjacent: [51, 60, , , ]}, - {name_unique: 'Ploieşti', space_id: 59, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 1061, y: 1316}, adjacent: [57, 61, 62, , ]}, - {name_unique: 'Craiova', space_id: 60, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 763, y: 1411}, adjacent: [50, 58, 61, , ]}, - {name_unique: 'Bucureşti', space_id: 61, socio: 2, stability: 3, battleground: 1, demInfl: 0, comInfl: 2, country: 'Romania', region: 'Balkans', box: {x: 929, y: 1445}, adjacent: [51, 57, 59, 60, 63]}, - {name_unique: 'Galaţi', space_id: 62, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 1104, y: 1399}, adjacent: [53, 59, 63, , ]}, - {name_unique: 'Constanţa', space_id: 63, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 1130, y: 1517}, adjacent: [61, 62, 72, , ]}, - {name_unique: 'Pleven', space_id: 64, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 764, y: 1534}, adjacent: [68, , , , ]}, - {name_unique: 'Orthodox Church Bulgaria', space_id: 65, socio: 7, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 882, y: 1540}, adjacent: [66, 68, , , ]}, - {name_unique: 'Ruse', space_id: 66, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 998, y: 1540}, adjacent: [65, 69, 70, 71, 72]}, - {name_unique: 'Sofia University', space_id: 67, socio: 6, stability: 1, battleground: 0, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 645, y: 1650}, adjacent: [68, 73, , , ]}, - {name_unique: 'Sofia', space_id: 68, socio: 2, stability: 3, battleground: 1, demInfl: 0, comInfl: 2, country: 'Bulgaria', region: 'Balkans', box: {x: 768, y: 1653}, adjacent: [64, 65, 67, 69, 74]}, - {name_unique: 'Stara Zagora', space_id: 69, socio: 1, stability: 4, battleground: 0, demInfl: 0, comInfl: 1, country: 'Bulgaria', region: 'Balkans', box: {x: 886, y: 1694}, adjacent: [66, 68, 71, , ]}, - {name_unique: 'Razgrad', space_id: 70, socio: 8, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 954, y: 1620}, adjacent: [66, , , , ]}, - {name_unique: 'Burgas', space_id: 71, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 1004, y: 1695}, adjacent: [66, 69, 72, , ]}, - {name_unique: 'Varna', space_id: 72, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 1086, y: 1613}, adjacent: [63, 66, 71, , ]}, - {name_unique: 'Bulgarian Writers', space_id: 73, socio: 5, stability: 2, battleground: 0, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 652, y: 1726}, adjacent: [67, , , , ]}, - {name_unique: 'Plovdiv', space_id: 74, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 771, y: 1739}, adjacent: [68, 75, , , ]}, - {name_unique: 'Sliven', space_id: 75, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 894, y: 1768}, adjacent: [74, , , , ]} +const spaces = [ + null, + { + name_unique: "Schwerin", + space_id: 1, + socio: 4, + stability: 3, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "East_Germany", + region: "Eastern Europe", + box: { + x: 111, + y: 61, + }, + adjacent: [ 2, 3 ], + ascii_name: "Schwerin", + }, + { + name_unique: "Rostock", + space_id: 2, + socio: 4, + stability: 3, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "East_Germany", + region: "Eastern Europe", + box: { + x: 228, + y: 41, + }, + adjacent: [ 1, 3 ], + ascii_name: "Rostock", + }, + { + name_unique: "Berlin", + space_id: 3, + socio: 2, + stability: 3, + battleground: 1, + demInfl: 0, + comInfl: 2, + country: "East_Germany", + region: "Eastern Europe", + box: { + x: 251, + y: 113, + }, + adjacent: [ 1, 2, 5, 9 ], + ascii_name: "Berlin", + }, + { + name_unique: "German Writers", + space_id: 4, + socio: 5, + stability: 2, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "East_Germany", + region: "Eastern Europe", + box: { + x: 58, + y: 185, + }, + adjacent: [ 5 ], + ascii_name: "German Writers", + }, + { + name_unique: "Walter Ulbricht Academy", + space_id: 5, + socio: 6, + stability: 1, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "East_Germany", + region: "Eastern Europe", + box: { + x: 175, + y: 187, + }, + adjacent: [ 3, 4 ], + ascii_name: "Walter Ulbricht Academy", + }, + { + name_unique: "Lutheran Church", + space_id: 6, + socio: 7, + stability: 5, + battleground: 1, + demInfl: 1, + comInfl: 0, + country: "East_Germany", + region: "Eastern Europe", + box: { + x: 300, + y: 212, + }, + adjacent: [ 9 ], + ascii_name: "Lutheran Church", + }, + { + name_unique: "Magdeburg", + space_id: 7, + socio: 4, + stability: 3, + battleground: 1, + demInfl: 0, + comInfl: 0, + country: "East_Germany", + region: "Eastern Europe", + box: { + x: 58, + y: 275, + }, + adjacent: [ 8, 10, 11 ], + ascii_name: "Magdeburg", + }, + { + name_unique: "Halle", + space_id: 8, + socio: 4, + stability: 3, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "East_Germany", + region: "Eastern Europe", + box: { + x: 175, + y: 278, + }, + adjacent: [ 7, 9, 11 ], + ascii_name: "Halle", + }, + { + name_unique: "Leipzig", + space_id: 9, + socio: 4, + stability: 3, + battleground: 1, + demInfl: 0, + comInfl: 0, + country: "East_Germany", + region: "Eastern Europe", + box: { + x: 297, + y: 297, + }, + adjacent: [ 3, 6, 8, 11, 12 ], + ascii_name: "Leipzig", + }, + { + name_unique: "Erfurt", + space_id: 10, + socio: 3, + stability: 4, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "East_Germany", + region: "Eastern Europe", + box: { + x: 23, + y: 356, + }, + adjacent: [ 7 ], + ascii_name: "Erfurt", + }, + { + name_unique: "Karl-Marx-Stadt", + space_id: 11, + socio: 4, + stability: 3, + battleground: 1, + demInfl: 0, + comInfl: 0, + country: "East_Germany", + region: "Eastern Europe", + box: { + x: 138, + y: 385, + }, + adjacent: [ 7, 8, 9, 12 ], + ascii_name: "Karl-Marx-Stadt", + }, + { + name_unique: "Dresden", + space_id: 12, + socio: 1, + stability: 4, + battleground: 1, + demInfl: 0, + comInfl: 2, + country: "East_Germany", + region: "Eastern Europe", + box: { + x: 262, + y: 375, + }, + adjacent: [ 9, 11, 19, 27 ], + ascii_name: "Dresden", + }, + { + name_unique: "Szczecin", + space_id: 13, + socio: 4, + stability: 3, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "Poland", + region: "Eastern Europe", + box: { + x: 434, + y: 204, + }, + adjacent: [ 14, 16 ], + ascii_name: "Szczecin", + }, + { + name_unique: "Gdańsk", + space_id: 14, + socio: 4, + stability: 3, + battleground: 1, + demInfl: 1, + comInfl: 0, + country: "Poland", + region: "Eastern Europe", + box: { + x: 699, + y: 215, + }, + adjacent: [ 13, 15, 16, 17, 18 ], + ascii_name: "Gdansk", + }, + { + name_unique: "Bydgoszcz", + space_id: 15, + socio: 1, + stability: 4, + battleground: 0, + demInfl: 0, + comInfl: 1, + country: "Poland", + region: "Eastern Europe", + box: { + x: 679, + y: 304, + }, + adjacent: [ 14, 17 ], + ascii_name: "Bydgoszcz", + }, + { + name_unique: "Poznań", + space_id: 16, + socio: 4, + stability: 3, + battleground: 1, + demInfl: 0, + comInfl: 0, + country: "Poland", + region: "Eastern Europe", + box: { + x: 521, + y: 355, + }, + adjacent: [ 13, 14, 19, 20 ], + ascii_name: "Poznan", + }, + { + name_unique: "Warszawa", + space_id: 17, + socio: 2, + stability: 3, + battleground: 1, + demInfl: 0, + comInfl: 1, + country: "Poland", + region: "Eastern Europe", + box: { + x: 806, + y: 383, + }, + adjacent: [ 14, 15, 18, 21, 24 ], + ascii_name: "Warszawa", + }, + { + name_unique: "Białystok", + space_id: 18, + socio: 3, + stability: 4, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "Poland", + region: "Eastern Europe", + box: { + x: 940, + y: 342, + }, + adjacent: [ 14, 17, 24 ], + ascii_name: "Bialystok", + }, + { + name_unique: "Wrocław", + space_id: 19, + socio: 4, + stability: 3, + battleground: 1, + demInfl: 0, + comInfl: 0, + country: "Poland", + region: "Eastern Europe", + box: { + x: 462, + y: 443, + }, + adjacent: [ 12, 16, 20, 22 ], + ascii_name: "Wroclaw", + }, + { + name_unique: "Catholic Church, Poland", + space_id: 20, + socio: 7, + stability: 5, + battleground: 0, + demInfl: 5, + comInfl: 0, + country: "Poland", + region: "Eastern Europe", + box: { + x: 625, + y: 437, + }, + adjacent: [ 16, 19, 21, 22, 23 ], + ascii_name: "Catholic Church, Poland", + }, + { + name_unique: "Łódź", + space_id: 21, + socio: 4, + stability: 3, + battleground: 1, + demInfl: 0, + comInfl: 0, + country: "Poland", + region: "Eastern Europe", + box: { + x: 749, + y: 486, + }, + adjacent: [ 17, 20, 23, 24 ], + ascii_name: "Lodz", + }, + { + name_unique: "Katowice", + space_id: 22, + socio: 4, + stability: 3, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "Poland", + region: "Eastern Europe", + box: { + x: 570, + y: 569, + }, + adjacent: [ 19, 20, 23, 33 ], + ascii_name: "Katowice", + }, + { + name_unique: "Kraków", + space_id: 23, + socio: 4, + stability: 3, + battleground: 1, + demInfl: 1, + comInfl: 0, + country: "Poland", + region: "Eastern Europe", + box: { + x: 711, + y: 598, + }, + adjacent: [ 20, 21, 22, 25 ], + ascii_name: "Krakow", + }, + { + name_unique: "Lublin", + space_id: 24, + socio: 3, + stability: 4, + battleground: 0, + demInfl: 0, + comInfl: 1, + country: "Poland", + region: "Eastern Europe", + box: { + x: 879, + y: 603, + }, + adjacent: [ 17, 18, 21 ], + ascii_name: "Lublin", + }, + { + name_unique: "Jagiellonian University", + space_id: 25, + socio: 6, + stability: 1, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "Poland", + region: "Eastern Europe", + box: { + x: 679, + y: 681, + }, + adjacent: [ 23, 26 ], + ascii_name: "Jagiellonian University", + }, + { + name_unique: "Polish Writers", + space_id: 26, + socio: 5, + stability: 2, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "Poland", + region: "Eastern Europe", + box: { + x: 832, + y: 694, + }, + adjacent: [ 25 ], + ascii_name: "Polish Writers", + }, + { + name_unique: "Plzeň", + space_id: 27, + socio: 1, + stability: 4, + battleground: 0, + demInfl: 0, + comInfl: 2, + country: "Czechoslovakia", + region: "Eastern Europe", + box: { + x: 159, + y: 483, + }, + adjacent: [ 12, 28, 29 ], + ascii_name: "Plzen", + }, + { + name_unique: "České Budĕjovice", + space_id: 28, + socio: 4, + stability: 3, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "Czechoslovakia", + region: "Eastern Europe", + box: { + x: 196, + y: 601, + }, + adjacent: [ 27, 29 ], + ascii_name: "Ceske Budejovice", + }, + { + name_unique: "Praha", + space_id: 29, + socio: 2, + stability: 3, + battleground: 1, + demInfl: 0, + comInfl: 2, + country: "Czechoslovakia", + region: "Eastern Europe", + box: { + x: 317, + y: 614, + }, + adjacent: [ 27, 28, 30, 32 ], + ascii_name: "Praha", + }, + { + name_unique: "Charles University", + space_id: 30, + socio: 6, + stability: 1, + battleground: 1, + demInfl: 0, + comInfl: 0, + country: "Czechoslovakia", + region: "Eastern Europe", + box: { + x: 380, + y: 532, + }, + adjacent: [ 29, 31 ], + ascii_name: "Charles University", + }, + { + name_unique: "Czech Writers", + space_id: 31, + socio: 5, + stability: 2, + battleground: 1, + demInfl: 2, + comInfl: 0, + country: "Czechoslovakia", + region: "Eastern Europe", + box: { + x: 444, + y: 607, + }, + adjacent: [ 30 ], + ascii_name: "Czech Writers", + }, + { + name_unique: "Brno", + space_id: 32, + socio: 4, + stability: 3, + battleground: 1, + demInfl: 0, + comInfl: 1, + country: "Czechoslovakia", + region: "Eastern Europe", + box: { + x: 403, + y: 711, + }, + adjacent: [ 29, 33, 34 ], + ascii_name: "Brno", + }, + { + name_unique: "Ostrava", + space_id: 33, + socio: 4, + stability: 3, + battleground: 1, + demInfl: 0, + comInfl: 0, + country: "Czechoslovakia", + region: "Eastern Europe", + box: { + x: 523, + y: 681, + }, + adjacent: [ 22, 32, 34, 35 ], + ascii_name: "Ostrava", + }, + { + name_unique: "Bratislava", + space_id: 34, + socio: 4, + stability: 3, + battleground: 1, + demInfl: 0, + comInfl: 0, + country: "Czechoslovakia", + region: "Eastern Europe", + box: { + x: 417, + y: 797, + }, + adjacent: [ 32, 33, 35 ], + ascii_name: "Bratislava", + }, + { + name_unique: "Catholic Church, Czechoslovakia", + space_id: 35, + socio: 7, + stability: 5, + battleground: 0, + demInfl: 1, + comInfl: 0, + country: "Czechoslovakia", + region: "Eastern Europe", + box: { + x: 538, + y: 794, + }, + adjacent: [ 33, 34, 36 ], + ascii_name: "Catholic Church, Czechoslovakia", + }, + { + name_unique: "Prešov", + space_id: 36, + socio: 3, + stability: 4, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "Czechoslovakia", + region: "Eastern Europe", + box: { + x: 658, + y: 794, + }, + adjacent: [ 35, 37 ], + ascii_name: "Presov", + }, + { + name_unique: "Košice", + space_id: 37, + socio: 3, + stability: 4, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "Czechoslovakia", + region: "Eastern Europe", + box: { + x: 777, + y: 815, + }, + adjacent: [ 36, 42 ], + ascii_name: "Kosice", + }, + { + name_unique: "Catholic Church, Hungary", + space_id: 38, + socio: 7, + stability: 5, + battleground: 0, + demInfl: 1, + comInfl: 0, + country: "Hungary", + region: "Eastern Europe", + box: { + x: 314, + y: 886, + }, + adjacent: [ 39, 43 ], + ascii_name: "Catholic Church, Hungary", + }, + { + name_unique: "Győr", + space_id: 39, + socio: 4, + stability: 3, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "Hungary", + region: "Eastern Europe", + box: { + x: 434, + y: 887, + }, + adjacent: [ 38, 40, 43, 44 ], + ascii_name: "Gyor", + }, + { + name_unique: "Tatabánya", + space_id: 40, + socio: 4, + stability: 3, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "Hungary", + region: "Eastern Europe", + box: { + x: 549, + y: 886, + }, + adjacent: [ 39, 41, 45 ], + ascii_name: "Tatabanya", + }, + { + name_unique: "Miskolc", + space_id: 41, + socio: 4, + stability: 3, + battleground: 1, + demInfl: 0, + comInfl: 0, + country: "Hungary", + region: "Eastern Europe", + box: { + x: 664, + y: 901, + }, + adjacent: [ 40, 42, 45 ], + ascii_name: "Miskolc", + }, + { + name_unique: "Debrecen", + space_id: 42, + socio: 4, + stability: 3, + battleground: 1, + demInfl: 0, + comInfl: 0, + country: "Hungary", + region: "Eastern Europe", + box: { + x: 781, + y: 938, + }, + adjacent: [ 37, 41 ], + ascii_name: "Debrecen", + }, + { + name_unique: "Szombathely", + space_id: 43, + socio: 1, + stability: 4, + battleground: 0, + demInfl: 0, + comInfl: 1, + country: "Hungary", + region: "Eastern Europe", + box: { + x: 316, + y: 963, + }, + adjacent: [ 38, 39, 44 ], + ascii_name: "Szombathely", + }, + { + name_unique: "Székesfehérvár", + space_id: 44, + socio: 4, + stability: 3, + battleground: 0, + demInfl: 1, + comInfl: 0, + country: "Hungary", + region: "Eastern Europe", + box: { + x: 442, + y: 962, + }, + adjacent: [ 39, 43, 45 ], + ascii_name: "Szekesfehervar", + }, + { + name_unique: "Budapest", + space_id: 45, + socio: 2, + stability: 3, + battleground: 1, + demInfl: 1, + comInfl: 0, + country: "Hungary", + region: "Eastern Europe", + box: { + x: 630, + y: 983, + }, + adjacent: [ 40, 41, 44, 47, 48 ], + ascii_name: "Budapest", + }, + { + name_unique: "Hungarian Writers", + space_id: 46, + socio: 5, + stability: 2, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "Hungary", + region: "Eastern Europe", + box: { + x: 348, + y: 1040, + }, + adjacent: [ 47 ], + ascii_name: "Hungarian Writers", + }, + { + name_unique: "Eötvös Loránd University", + space_id: 47, + socio: 6, + stability: 1, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "Hungary", + region: "Eastern Europe", + box: { + x: 512, + y: 1034, + }, + adjacent: [ 46, 45 ], + ascii_name: "Eotvos Lorand University", + }, + { + name_unique: "Szeged", + space_id: 48, + socio: 3, + stability: 4, + battleground: 1, + demInfl: 1, + comInfl: 0, + country: "Hungary", + region: "Eastern Europe", + box: { + x: 632, + y: 1073, + }, + adjacent: [ 45, 49, 50 ], + ascii_name: "Szeged", + }, + { + name_unique: "Pécs", + space_id: 49, + socio: 3, + stability: 4, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "Hungary", + region: "Eastern Europe", + box: { + x: 486, + y: 1105, + }, + adjacent: [ 48 ], + ascii_name: "Pecs", + }, + { + name_unique: "Timişoara", + space_id: 50, + socio: 4, + stability: 3, + battleground: 1, + demInfl: 0, + comInfl: 0, + country: "Romania", + region: "Balkans", + box: { + x: 597, + y: 1204, + }, + adjacent: [ 48, 51, 60 ], + ascii_name: "Timisoara", + }, + { + name_unique: "Cluj-Napoca", + space_id: 51, + socio: 1, + stability: 4, + battleground: 1, + demInfl: 0, + comInfl: 2, + country: "Romania", + region: "Balkans", + box: { + x: 756, + y: 1125, + }, + adjacent: [ 50, 54, 58, 61 ], + ascii_name: "Cluj-Napoca", + }, + { + name_unique: "Târgu Mureş", + space_id: 52, + socio: 3, + stability: 4, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "Romania", + region: "Balkans", + box: { + x: 915, + y: 1136, + }, + adjacent: [ 53, 56 ], + ascii_name: "Targu Mures", + }, + { + name_unique: "Iaşi", + space_id: 53, + socio: 4, + stability: 3, + battleground: 1, + demInfl: 0, + comInfl: 0, + country: "Romania", + region: "Balkans", + box: { + x: 1072, + y: 1097, + }, + adjacent: [ 52, 57, 62 ], + ascii_name: "Iasi", + }, + { + name_unique: "Babeş-Bolyai University", + space_id: 54, + socio: 6, + stability: 1, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "Romania", + region: "Balkans", + box: { + x: 746, + y: 1203, + }, + adjacent: [ 51, 55 ], + ascii_name: "Babes-Bolyai University", + }, + { + name_unique: "Romanian Writers", + space_id: 55, + socio: 5, + stability: 2, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "Romania", + region: "Balkans", + box: { + x: 739, + y: 1278, + }, + adjacent: [ 54 ], + ascii_name: "Romanian Writers", + }, + { + name_unique: "Harghita/Covasna", + space_id: 56, + socio: 8, + stability: 4, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "Romania", + region: "Balkans", + box: { + x: 928, + y: 1227, + }, + adjacent: [ 52 ], + ascii_name: "Harghita/Covasna", + }, + { + name_unique: "Braşov", + space_id: 57, + socio: 4, + stability: 3, + battleground: 1, + demInfl: 0, + comInfl: 0, + country: "Romania", + region: "Balkans", + box: { + x: 1049, + y: 1225, + }, + adjacent: [ 53, 59, 61 ], + ascii_name: "Brasov", + }, + { + name_unique: "Orthodox Church, Romania", + space_id: 58, + socio: 7, + stability: 3, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "Romania", + region: "Balkans", + box: { + x: 855, + y: 1338, + }, + adjacent: [ 51, 60 ], + ascii_name: "Orthodox Church, Romania", + }, + { + name_unique: "Ploieşti", + space_id: 59, + socio: 4, + stability: 3, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "Romania", + region: "Balkans", + box: { + x: 1061, + y: 1316, + }, + adjacent: [ 57, 61, 62 ], + ascii_name: "Ploiesti", + }, + { + name_unique: "Craiova", + space_id: 60, + socio: 3, + stability: 4, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "Romania", + region: "Balkans", + box: { + x: 763, + y: 1411, + }, + adjacent: [ 50, 58, 61 ], + ascii_name: "Craiova", + }, + { + name_unique: "Bucureşti", + space_id: 61, + socio: 2, + stability: 3, + battleground: 1, + demInfl: 0, + comInfl: 2, + country: "Romania", + region: "Balkans", + box: { + x: 929, + y: 1445, + }, + adjacent: [ 51, 57, 59, 60, 63 ], + ascii_name: "Bucuresti", + }, + { + name_unique: "Galaţi", + space_id: 62, + socio: 4, + stability: 3, + battleground: 1, + demInfl: 0, + comInfl: 0, + country: "Romania", + region: "Balkans", + box: { + x: 1104, + y: 1399, + }, + adjacent: [ 53, 59, 63 ], + ascii_name: "Galati", + }, + { + name_unique: "Constanţa", + space_id: 63, + socio: 4, + stability: 3, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "Romania", + region: "Balkans", + box: { + x: 1130, + y: 1517, + }, + adjacent: [ 61, 62, 72 ], + ascii_name: "Constanta", + }, + { + name_unique: "Pleven", + space_id: 64, + socio: 3, + stability: 4, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "Bulgaria", + region: "Balkans", + box: { + x: 764, + y: 1534, + }, + adjacent: [ 68 ], + ascii_name: "Pleven", + }, + { + name_unique: "Orthodox Church, Bulgaria", + space_id: 65, + socio: 7, + stability: 3, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "Bulgaria", + region: "Balkans", + box: { + x: 882, + y: 1540, + }, + adjacent: [ 66, 68 ], + ascii_name: "Orthodox Church, Bulgaria", + }, + { + name_unique: "Ruse", + space_id: 66, + socio: 4, + stability: 3, + battleground: 1, + demInfl: 0, + comInfl: 0, + country: "Bulgaria", + region: "Balkans", + box: { + x: 998, + y: 1540, + }, + adjacent: [ 65, 69, 70, 71, 72 ], + ascii_name: "Ruse", + }, + { + name_unique: "Sofia University", + space_id: 67, + socio: 6, + stability: 1, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "Bulgaria", + region: "Balkans", + box: { + x: 645, + y: 1650, + }, + adjacent: [ 68, 73 ], + ascii_name: "Sofia University", + }, + { + name_unique: "Sofia", + space_id: 68, + socio: 2, + stability: 3, + battleground: 1, + demInfl: 0, + comInfl: 2, + country: "Bulgaria", + region: "Balkans", + box: { + x: 768, + y: 1653, + }, + adjacent: [ 64, 65, 67, 69, 74 ], + ascii_name: "Sofia", + }, + { + name_unique: "Stara Zagora", + space_id: 69, + socio: 1, + stability: 4, + battleground: 0, + demInfl: 0, + comInfl: 1, + country: "Bulgaria", + region: "Balkans", + box: { + x: 886, + y: 1694, + }, + adjacent: [ 66, 68, 71 ], + ascii_name: "Stara Zagora", + }, + { + name_unique: "Razgrad", + space_id: 70, + socio: 8, + stability: 4, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "Bulgaria", + region: "Balkans", + box: { + x: 954, + y: 1620, + }, + adjacent: [ 66 ], + ascii_name: "Razgrad", + }, + { + name_unique: "Burgas", + space_id: 71, + socio: 4, + stability: 3, + battleground: 1, + demInfl: 0, + comInfl: 0, + country: "Bulgaria", + region: "Balkans", + box: { + x: 1004, + y: 1695, + }, + adjacent: [ 66, 69, 72 ], + ascii_name: "Burgas", + }, + { + name_unique: "Varna", + space_id: 72, + socio: 4, + stability: 3, + battleground: 1, + demInfl: 0, + comInfl: 0, + country: "Bulgaria", + region: "Balkans", + box: { + x: 1086, + y: 1613, + }, + adjacent: [ 63, 66, 71 ], + ascii_name: "Varna", + }, + { + name_unique: "Bulgarian Writers", + space_id: 73, + socio: 5, + stability: 2, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "Bulgaria", + region: "Balkans", + box: { + x: 652, + y: 1726, + }, + adjacent: [ 67 ], + ascii_name: "Bulgarian Writers", + }, + { + name_unique: "Plovdiv", + space_id: 74, + socio: 4, + stability: 3, + battleground: 1, + demInfl: 0, + comInfl: 0, + country: "Bulgaria", + region: "Balkans", + box: { + x: 771, + y: 1739, + }, + adjacent: [ 68, 75 ], + ascii_name: "Plovdiv", + }, + { + name_unique: "Sliven", + space_id: 75, + socio: 3, + stability: 4, + battleground: 0, + demInfl: 0, + comInfl: 0, + country: "Bulgaria", + region: "Balkans", + box: { + x: 894, + y: 1768, + }, + adjacent: [ 74 ], + ascii_name: "Sliven", + }, ] const cards = [ @@ -249,5 +1449,4 @@ null, {number: 54, name: 'Petition', value: 3, socio: 0, url: 'ps10'}, ] - if (typeof module !== 'undefined') module.exports = { spaces, cards, power_cards } diff --git a/gencode.js b/gencode.js deleted file mode 100644 index 6e66a02..0000000 --- a/gencode.js +++ /dev/null @@ -1,107 +0,0 @@ -"use strict" - -let fs = require("fs") - -let pc = 0 - -function tokenize(s) { - let list = [] - let p = 0, - n = s.length - while (p < n) { - while (p < n && s[p] === " ") - ++p - if (p < n) { - let m = p - while (p < n && s[p] !== " ") { - let q = s[p++] - switch (q) { - case "(": - case "[": - case "{": - for (let x = 1; p < n && x > 0; ++p) { - switch (s[p]) { - case "(": - case "[": - case "{": - ++x - break - case ")": - case "]": - case "}": - --x - break - } - } - break - case '"': - case "'": - case "`": - while (p < n && s[p] !== q) - ++p - break - } - } - list.push(s.substring(m, p)) - } - } - return list -} - -function emit(line) { - ++pc - line[0] = "vm_" + line[0] - for (let i = 1; i < line.length; ++i) { - if (typeof line[i] === "string") { - if (line[i] === "all") - line[i] = 999 - if (line[i][0] === "(" && !line[i].match(/\)=>/)) - line[i] = "()=>" + line[i] - if (line[i][0] === "`") - line[i] = "()=>" + line[i] - } - } - console.log("\t[ " + line.join(", ") + " ],") -} - -console.log("// #region GENERATED EVENT CODE") -console.log("const CODE = []") -let first = false - -for (let line of fs.readFileSync("events.txt", "utf-8").split("\n")) { - line = line.trim() - if (line.length === 0 || line[0] === "#") - continue - if (line === "EOF") - break - line = tokenize(line) - switch (line[0]) { - case "CARD": - if (first++) { - emit(["return"]) - console.log("]") - } - console.log("") - console.log("CODE[" + line[1] + "] = [ // " + line.slice(3).join(" ")) - break - - case "log": - case "prompt": - emit([ line[0], line.slice(1).join(" ") ]) - break - - case "asm": - case "if": - case "while": - emit([ line[0], "()=>" + line.slice(1).join(" ") ]) - break - - default: - emit(line) - break - } -} - -emit(["return"]) -console.log("]") -console.log("// #endregion") \ No newline at end of file diff --git a/images/trash-can.svg b/images/trash-can.svg new file mode 100644 index 0000000..7b8da5a --- /dev/null +++ b/images/trash-can.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 512 512"><path stroke-width="1.18459" d="M188.479 28.56v59.229H96.08v35.537h319.838V87.79h-92.398v-59.23ZM209.8 49.881H302.2v37.907H209.8zm-93.585 94.767L151.88 483.44h208.243l35.66-338.792zm73.845 15.85.758 10.637 18.954 265.348.761 10.632-21.27 1.52-.758-10.637-18.954-265.348-.761-10.633zm131.878 0 21.27 1.52-.763 10.635L323.493 438l-.758 10.638-21.27-1.521.761-10.634 18.954-265.348.758-10.637zm-76.6.734h21.322v286.67H245.34z"/></svg> diff --git a/info/cards.html b/info/cards.html new file mode 100644 index 0000000..479867d --- /dev/null +++ b/info/cards.html @@ -0,0 +1,193 @@ +<!DOCTYPE html> +<html> +<meta name="viewport" content="width=600"> +<title>1989 - Cards</title> +<style> +body { + background-color: slategray; +} +.list { + margin: 20px; + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 20px; +} +img { + border-radius: 16px; + box-shadow: 0 0 0 1px #444, 1px 2px 4px #0004; +} +</style> +<body> + +<div class="list"> +<img src="../cards100/event_back.webp"> +<img src="../cards100/event_1.webp"> +<img src="../cards100/event_2.webp"> +<img src="../cards100/event_3.webp"> +<img src="../cards100/event_4.webp"> +<img src="../cards100/event_5.webp"> +<img src="../cards100/event_6.webp"> +<img src="../cards100/event_7.webp"> +<img src="../cards100/event_8.webp"> +<img src="../cards100/event_9.webp"> +<img src="../cards100/event_10.webp"> +<img src="../cards100/event_11.webp"> +<img src="../cards100/event_12.webp"> +<img src="../cards100/event_13.webp"> +<img src="../cards100/event_14.webp"> +<img src="../cards100/event_15.webp"> +<img src="../cards100/event_16.webp"> +<img src="../cards100/event_17.webp"> +<img src="../cards100/event_18.webp"> +<img src="../cards100/event_19.webp"> +<img src="../cards100/event_20.webp"> +<img src="../cards100/event_21.webp"> +<img src="../cards100/event_22.webp"> +<img src="../cards100/event_23.webp"> +<img src="../cards100/event_24.webp"> +<img src="../cards100/event_25.webp"> +<img src="../cards100/event_26.webp"> +<img src="../cards100/event_27.webp"> +<img src="../cards100/event_28.webp"> +<img src="../cards100/event_29.webp"> +<img src="../cards100/event_30.webp"> +<img src="../cards100/event_31.webp"> +<img src="../cards100/event_32.webp"> +<img src="../cards100/event_33.webp"> +<img src="../cards100/event_34.webp"> +<img src="../cards100/event_35.webp"> +<img src="../cards100/event_36.webp"> +<img src="../cards100/event_37.webp"> +<img src="../cards100/event_38.webp"> +<img src="../cards100/event_39.webp"> +<img src="../cards100/event_40.webp"> +<img src="../cards100/event_41.webp"> +<img src="../cards100/event_42.webp"> +<img src="../cards100/event_43.webp"> +<img src="../cards100/event_44.webp"> +<img src="../cards100/event_45.webp"> +<img src="../cards100/event_46.webp"> +<img src="../cards100/event_47.webp"> +<img src="../cards100/event_48.webp"> +<img src="../cards100/event_49.webp"> +<img src="../cards100/event_50.webp"> +<img src="../cards100/event_51.webp"> +<img src="../cards100/event_52.webp"> +<img src="../cards100/event_53.webp"> +<img src="../cards100/event_54.webp"> +<img src="../cards100/event_55.webp"> +<img src="../cards100/event_56.webp"> +<img src="../cards100/event_57.webp"> +<img src="../cards100/event_58.webp"> +<img src="../cards100/event_59.webp"> +<img src="../cards100/event_60.webp"> +<img src="../cards100/event_61.webp"> +<img src="../cards100/event_62.webp"> +<img src="../cards100/event_63.webp"> +<img src="../cards100/event_64.webp"> +<img src="../cards100/event_65.webp"> +<img src="../cards100/event_66.webp"> +<img src="../cards100/event_67.webp"> +<img src="../cards100/event_68.webp"> +<img src="../cards100/event_69.webp"> +<img src="../cards100/event_70.webp"> +<img src="../cards100/event_71.webp"> +<img src="../cards100/event_72.webp"> +<img src="../cards100/event_73.webp"> +<img src="../cards100/event_74.webp"> +<img src="../cards100/event_75.webp"> +<img src="../cards100/event_76.webp"> +<img src="../cards100/event_77.webp"> +<img src="../cards100/event_78.webp"> +<img src="../cards100/event_79.webp"> +<img src="../cards100/event_80.webp"> +<img src="../cards100/event_81.webp"> +<img src="../cards100/event_82.webp"> +<img src="../cards100/event_83.webp"> +<img src="../cards100/event_84.webp"> +<img src="../cards100/event_85.webp"> +<img src="../cards100/event_86.webp"> +<img src="../cards100/event_87.webp"> +<img src="../cards100/event_88.webp"> +<img src="../cards100/event_89.webp"> +<img src="../cards100/event_90.webp"> +<img src="../cards100/event_91.webp"> +<img src="../cards100/event_92.webp"> +<img src="../cards100/event_93.webp"> +<img src="../cards100/event_94.webp"> +<img src="../cards100/event_95.webp"> +<img src="../cards100/event_96.webp"> +<img src="../cards100/event_97.webp"> +<img src="../cards100/event_98.webp"> +<img src="../cards100/event_99.webp"> +<img src="../cards100/event_100.webp"> +<img src="../cards100/event_101.webp"> +<img src="../cards100/event_102.webp"> +<img src="../cards100/event_103.webp"> +<img src="../cards100/event_104.webp"> +<img src="../cards100/event_105.webp"> +<img src="../cards100/event_106.webp"> +<img src="../cards100/event_107.webp"> +<img src="../cards100/event_108.webp"> +<img src="../cards100/event_109.webp"> +<img src="../cards100/event_110.webp"> +</div> + +<div class="list"> +<img src="../cards100/power_back.webp"> +<img src="../cards100/power_1.webp"> +<img src="../cards100/power_2.webp"> +<img src="../cards100/power_3.webp"> +<img src="../cards100/power_4.webp"> +<img src="../cards100/power_5.webp"> +<img src="../cards100/power_6.webp"> +<img src="../cards100/power_7.webp"> +<img src="../cards100/power_8.webp"> +<img src="../cards100/power_9.webp"> +<img src="../cards100/power_10.webp"> +<img src="../cards100/power_11.webp"> +<img src="../cards100/power_12.webp"> +<img src="../cards100/power_13.webp"> +<img src="../cards100/power_14.webp"> +<img src="../cards100/power_15.webp"> +<img src="../cards100/power_16.webp"> +<img src="../cards100/power_17.webp"> +<img src="../cards100/power_18.webp"> +<img src="../cards100/power_19.webp"> +<img src="../cards100/power_20.webp"> +<img src="../cards100/power_21.webp"> +<img src="../cards100/power_22.webp"> +<img src="../cards100/power_23.webp"> +<img src="../cards100/power_24.webp"> +<img src="../cards100/power_25.webp"> +<img src="../cards100/power_26.webp"> +<img src="../cards100/power_27.webp"> +<img src="../cards100/power_28.webp"> +<img src="../cards100/power_29.webp"> +<img src="../cards100/power_30.webp"> +<img src="../cards100/power_31.webp"> +<img src="../cards100/power_32.webp"> +<img src="../cards100/power_33.webp"> +<img src="../cards100/power_34.webp"> +<img src="../cards100/power_35.webp"> +<img src="../cards100/power_36.webp"> +<img src="../cards100/power_37.webp"> +<img src="../cards100/power_38.webp"> +<img src="../cards100/power_39.webp"> +<img src="../cards100/power_40.webp"> +<img src="../cards100/power_41.webp"> +<img src="../cards100/power_42.webp"> +<img src="../cards100/power_43.webp"> +<img src="../cards100/power_44.webp"> +<img src="../cards100/power_45.webp"> +<img src="../cards100/power_46.webp"> +<img src="../cards100/power_47.webp"> +<img src="../cards100/power_48.webp"> +<img src="../cards100/power_49.webp"> +<img src="../cards100/power_50.webp"> +<img src="../cards100/power_51.webp"> +<img src="../cards100/power_52.webp"> +</div> + +</body> diff --git a/play.css b/play.css index 2a65885..3b49c7b 100644 --- a/play.css +++ b/play.css @@ -1,46 +1,14 @@ -main { background-color: dimgray; } -header { background-color: silver; } -header.your_turn { background-color: orange; } -#role_Democrat { background-color: hsl(200, 80%, 80%); } -#role_Communist { background-color: hsl(0, 80%, 80%); } -#turn_info { background-color: white; } -/*.aside_events { - font-family: "Source Sans"; - font-style: normal; - font-size: 16px; - line-height: 1.5; -}*/ -#deck_data { - font-family: "Source Sans"; - font-style: normal; - font-size: 16px; - line-height: 1.5; -} -#deck_stat {padding-left: 5px; padding-bottom: 5px;} - +main { background-color: slategray; } -#log { background-color: whitesmoke; } -#log .h1 { font-weight: bold; padding-top:2px; padding-bottom:2px; text-align: center; } -#log .h2 { padding-top:2px; padding-bottom:2px; text-align: center; } -#log .h3 { text-align: center; } -#log .h4 { text-decoration: underline; } -#log .h5 { text-decoration: underline; } +body.Democrat header.your_turn { background-color: hsl(206, 85%, 75%); } +body.Communist header.your_turn { background-color: hsl(355, 70%, 75%); } -#log .h2 { background-color: hsl(0,0%,80%);} -#log .h1 { background-color: hsl(0,0%,80%); } -#log .h2.dem { background-color: hsl(200, 80%, 80%); } -#log .h2.com { background-color: hsl(0, 80%, 80%); } -#log .h3.democrat { background-color: hsl(210,30%,90%); } -#log .h3.h2.communist { background-color: hsl(35,40%,90%); } +#role_Democrat { background-color: hsl(206, 80%, 80%); } +#role_Communist { background-color: hsl(355, 70%, 80%); } -#log div { padding-left: 20px; text-indent: -12px; } -#log div.i { padding-left: 32px; text-indent: -12px; } -#log div.ii { padding-left: 44px; text-indent: -12px; } +/* LOG */ - -#log .card_name { font-style: italic; } -#log .card_name:hover { text-decoration: underline; } -#log .space_tip:hover { cursor: pointer; text-decoration: underline; } +#log { font-variant-numeric: tabular-nums; } #log .die { display: inline-block; @@ -62,555 +30,212 @@ header.your_turn { background-color: orange; } #log .d5 { background-position: 80% 0; } #log .d6 { background-position: 100% 0; } -.selected { - cursor: pointer; -} +#log .h1 { font-weight: bold; padding-top:2px; padding-bottom:2px; text-align: center; } +#log .h2 { padding-top:2px; padding-bottom:2px; text-align: center; } +#log .h3 { text-align: center; } +#log .h4 { text-decoration: underline; } +#log .h5 { text-decoration: underline; } -#log { - font-variant-numeric: tabular-nums; -} +#log { background-color: floralwhite } +#log .h1 { background-color: tan } +#log .h2 { background-color: wheat } +#log .h2.dem { background-color: hsl(206, 85%, 80%); } +#log .h2.com { background-color: hsl(355, 70%, 80%); } -/* TOOLBAR */ +#log div { padding-left: 20px; text-indent: -12px; } +#log div.i { padding-left: 32px; text-indent: -12px; } +#log div.ii { padding-left: 44px; text-indent: -12px; } -#toolbar { - justify-content: space-evenly; -} +#log .card_name { font-style: italic; } +#log .card_name:hover { text-decoration: underline; } +#log .space_tip:hover { cursor: pointer; text-decoration: underline; } -#prompt { - display: flex; - margin-left: auto; -} +/* MAP */ -#button { - display: flex; - margin-left: auto; +#mapwrap { + width: 1650px; + height: 2550px; } -/* MAP */ #map { - margin: 0 auto ; - position: relative; - background-repeat: no-repeat; - background-size: cover; - width: 1275px; /* was 1275*/ - height: 2000px; - /*border: solid black;*/ - overflow: clip; + width: 1650px; + height: 2550px; + background-size: 1650px 2550px; box-shadow: 0px 1px 10px #0008; - /*z-index: 3;*/ -} - -#map { background-image: url(1989_map.jpg) } - -/* Containers to appear on hover*/ - #overlay { - position: relative; - top: 0; - left: 0; - width: 100%; - height: 100%; - /* background-color: rgba(255, 255, 255, 0.8); /* Semi-transparent overlay */ - /* display: none;*/ - justify-content: center; - align-items: center; - text-align: left; - } - -/* SPACES */ - -.space-area { - position: absolute; - box-sizing: border-box; - border: transparent red 2px; -} - -/* PANELS AND HANDS */ - -.panel { - background-color: #555; - display: inline-block; -} - -.panel_header { - background-color: #444; - color: hsl(40, 60%, 90%); - font-weight: bold; - text-align: center; - padding: 3px 1em; -} - -.hide { - display: none; -} - -#hand_panel, #events_panel, #played_card_panel, #table_panel, #samizdat_panel, #opp_hand_panel, #power_panel, #ceausescu_panel { - min-width: 200px; - width: auto; - /*display: inline-block;*/ - margin: 10px; - border-radius: 5px; -} - -#events { - display: flex; -} - -#discard_panel, #removed_panel { - min-width: 200px; - width: auto; - display: inline-block; - margin: 10px; - border-radius: 5px; -} - -#discard_panel.hide, #removed_panel.hide { - display: none; -} - -#hand_panel { - margin: 10px; - border-radius: 5px; -} - -/* INFLUENCE MARKERS */ - -.demInfl { - position: absolute; - box-sizing: border-box; - bottom: 1px; - left: 6px; - height: 35px; - width: 35px; - border-radius: 5px; -} - -.demInfl.controlled { - background-image: url(images/US_blank.gif); - background-size: contain; -} - - -.demInfl.uncontrolled { - background-image: url(images/USd_blank.gif); - background-size: contain; -} -/* -.demInfl:hover { - cursor: pointer; -}*/ - -.comInfl { - position: absolute; - box-sizing: border-box; - bottom: 1px; - right: 6px; - height: 35px; - width: 35px; -} -/* -.comInfl:hover { - cursor: pointer; -}*/ - -.comInfl.controlled { - background-image: url(images/SV_blank.gif); - background-size: contain; -} - - -.comInfl.uncontrolled { - background-image: url(images/SVd_blank.gif); - background-size: contain; -} - -.demInflValue { - position: absolute; - box-sizing: border-box; - font-family: 'Open Sans'; - font-size: 20px; - font-weight: bold; - top: 10px; - left: 16px; } -.demInflValue_10 { - position: absolute; - box-sizing: border-box; - font-family: 'Open Sans'; - font-size: 20px; - font-weight: bold; - top: 10px; - left: 10px; +#map { background-image: url("map75.jpg") } +@media (min-resolution: 97dpi) { + #map { background-image: url("map150.jpg") } } -.comInflValue { - position: absolute; - box-sizing: border-box; - font-family: 'Open Sans'; - font-size: 20px; - font-weight: bold; - top: 12px; - left: 74px; -} +/* SPACES */ -.comInflValue_10 { +.space { position: absolute; box-sizing: border-box; - font-family: 'Open Sans'; - font-size: 20px; - font-weight: bold; - top: 12px; - left: 68px; + border: 4px solid transparent; } -.comInflValue.controlled, .held { - color: whitesmoke; - text-shadow: - 1px 1px 0 #c2272d, /* Right bottom */ - -1px 1px 0 #c2272d, /* Left bottom */ - 1px -1px 0 #c2272d, /* Right top */ - -1px -1px 0 #c2272d; /* Left top */ +.space.action { + border-color: white; + box-shadow: 0 0 0 1px black, inset 0 0 0 1px black; } -.comInflValue.uncontrolled { - color: #c2272d; - text-shadow: - 1px 1px 0 #ffffff, /* Right bottom */ - -1px 1px 0 #ffffff, /* Left bottom */ - 1px -1px 0 #ffffff, /* Right top */ - -1px -1px 0 #ffffff; /* Left top */ -} +.space.East_Germany.action { border-color: white; } +.space.Poland.action { border-color: yellow; } +.space.Czechoslovakia.action { border-color: lightgreen; } +.space.Hungary.action { border-color: gold; } +.space.Romania.action { border-color: peachpuff; } +.space.Bulgaria.action { border-color: palegreen; } -.comInflValue_10.controlled, .held { - color: whitesmoke; - text-shadow: - 1px 1px 0 #c2272d, /* Right bottom */ - -1px 1px 0 #c2272d, /* Left bottom */ - 1px -1px 0 #c2272d, /* Right top */ - -1px -1px 0 #c2272d; /* Left top */ +.space.tip { + border-color: lime; + box-shadow: 0 0 0 1px black, inset 0 0 0 1px black; } -.comInflValue_10.uncontrolled { - color: #c2272d; - text-shadow: - 1px 1px 0 #ffffff, /* Right bottom */ - -1px 1px 0 #ffffff, /* Left bottom */ - 1px -1px 0 #ffffff, /* Right top */ - -1px -1px 0 #ffffff; /* Left top */ -} - - -/* GAME MARKERS */ - -.t0 {left: 511px} -.t1 {left: 511px} -.t2 {left: 553px} -.t3 {left: 595px} -.t4 {left: 637px} -.t5 {left: 679px} -.t6 {left: 721px} -.t7 {left: 763px} -.t8 {left: 805px} -.t9 {left: 847px} -.t10 {left: 889px} - -#turn-tracker { - position:absolute; - top: 65px; - height: 35px; - width: 36px; - /*display: block;*/ -} - -.r0 {left: 554px} -.r1 {left: 554px} -.r2 {left: 596px} -.r3 {left: 638px} -.r4 {left: 680px} -.r5 {left: 722px} -.r6 {left: 764px} -.r7 {left: 806px} -.r8 {left: 848px} +/* MARKERS */ -.dem-action-round-tracker { background-image: url(images/US_Action_Round.gif);} -.com-action-round-tracker { background-image: url(images/SV_Action_Round.gif);} +/* node tools/gencolors.js */ +.marker { background-color: #ffffff; border-color: #eeeeee #8a8a8a #8a8a8a #eeeeee; box-shadow: 0 0 0 1px #323232, 1px 2px 4px #0008; } +.demInfl.ctl { background-color: #c4e2f6; border-color: #e6ffff #8ca8bb #8ca8bb #e6ffff; box-shadow: 0 0 0 1px #274050, 1px 2px 4px #0008; } +.comInfl.ctl { background-color: #c1272d; border-color: #e74e4c #9c0009 #9c0009 #e74e4c; box-shadow: 0 0 0 1px #520000, 1px 2px 4px #0008; } +#marker_action_round.com { background-color: #147fc0; border-color: #44a3e6 #005c9b #005c9b #44a3e6; box-shadow: 0 0 0 1px #001a54, 1px 2px 4px #0008; } +#marker_action_round.dem { background-color: #c1272d; border-color: #e74e4c #9c0009 #9c0009 #e74e4c; box-shadow: 0 0 0 1px #520000, 1px 2px 4px #0008; } +#marker_vp, #marker_turn { background-color: #fadb04; border-color: #ffff51 #c0a100 #c0a100 #ffff51; box-shadow: 0 0 0 1px #563600, 1px 2px 4px #0008; } +#marker_com_tst { background-color: #f26649; border-color: #ff9273 #c2391c #c2391c #ff9273; box-shadow: 0 0 0 1px #640000, 1px 2px 4px #0008; } +#marker_dem_tst { background-color: #c4e2f4; border-color: #e6ffff #8ca8ba #8ca8ba #e6ffff; box-shadow: 0 0 0 1px #27404f, 1px 2px 4px #0008; } -#action-round-tracker { +#event_reminder_list { position: absolute; - top: 114px; - height: 30px; - width: 35px; - background-size: cover; -} - - - -#stability-track { - position:absolute; - left: 1085px; - height: 35px; - width: 35px; -} - -.s0 {top: 853px} -.s1 {top: 896px} -.s2 {top: 939px} -.s3 {top: 982px} -.s4 {top: 1025px} - - -.tst0 {left: 0} -.tst1 {left: 38px} -.tst2 {left: 93px} -.tst3 {left: 148px} -.tst4 {left: 203px} -.tst5 {left: 258px} -.tst6 {left: 313px} -.tst7 {left: 368px} -.tst8 {left: 436px} - -#dem-TST { - position: absolute; - top: 1680px; - height: 35px; - width: 35px; -} - -#com-TST { - position: absolute; - top: 1782px; - height: 35px; - width: 35px; -} - -.vp0 {top: 1913px; -left: 660px} - -.vp-20, .vp-18, .vp-16, .vp-14, .vp-12, .vp-10, .vp-8, .vp-6, .vp-4, .vp-2, .vp1, .vp3, .vp5, .vp7, .vp9, .vp11, .vp13, .vp15, .vp17, .vp19 {top: 1889px} -.vp-19, .vp-17, .vp-15, .vp-13, .vp-11, .vp-9, .vp-7, .vp-5, .vp-3, .vp-1, .vp2, .vp4, .vp6, .vp8, .vp10, .vp12, .vp14, .vp16, .vp18, .vp20 {top: 1938px} - -.vp-21 {top: 1912px; left: 117px} -.vp21 {top: 1912px; left: 1182px} - -.vp-20 {left: 165px} -.vp-19 {left: 189px} -.vp-18 {left: 214px} -.vp-17 {left: 238px} -.vp-16 {left: 263px} -.vp-15 {left: 287px} -.vp-14 {left: 312px} -.vp-13 {left: 336px} -.vp-12 {left: 361px} -.vp-11 {left: 385px} -.vp-10 {left: 410px} -.vp-9 {left: 434px} -.vp-8 {left: 459px} -.vp-7 {left: 483px} -.vp-6 {left: 508px} -.vp-5 {left: 532px} -.vp-4 {left: 557px} -.vp-3 {left: 581px} -.vp-2 {left: 606px} -.vp-1 {left: 630px} -.vp1 {left: 692px} -.vp2 {left: 717px} -.vp3 {left: 741px} -.vp4 {left: 766px} -.vp5 {left: 790px} -.vp6 {left: 815px} -.vp7 {left: 839px} -.vp8 {left: 864px} -.vp9 {left: 888px} -.vp10 {left: 913px} -.vp11 {left: 937px} -.vp12 {left: 962px} -.vp13 {left: 986px} -.vp14 {left: 1011px} -.vp15 {left: 1035px} -.vp16 {left: 1060px} -.vp17 {left: 1084px} -.vp18 {left: 1109px} -.vp19 {left: 1133px} -.vp20 {left: 1158px} - -#vp { - position: absolute; - height: 40px; - width: 40px; + display: flex; + flex-rap: wrap; + gap: 5px; + bottom: 165px; + right: 195px; } .marker { position: absolute; - height: 30px; - width: 30px; -} - -.revolution {background-image: url(images/US_blank.gif); background-size: contain} -.held {background-image: url(images/SV_blank.gif); background-size: contain} - -.germany {top: 127px; left: 439px} -.poland { top: 232px; left: 934px} -.czech {top: 494px; left: 362px} -.hungary {top: 1041px; left: 813px} -.romania {top: 1063px; left: 1012px} -.bulgaria {top: 1578px; left: 720px} - -.times_held { - position: absolute; - font-family: 'Open Sans'; - font-size: 20px; - font-weight: bold; - top: -18px; - left: 8px -} - -.outlined_text { - text-shadow: - 1px 1px 0 #ffffff, /* Right bottom */ - -1px 1px 0 #ffffff, /* Left bottom */ - 1px -1px 0 #ffffff, /* Right top */ - -1px -1px 0 #ffffff; /* Left top */ -} - -/* ============= EVENT MARKERS ========== */ - -.event-marker { - display: none; - position: absolute; - height: 30px; - width: 30px; - transition: transform 0.3s ease; -} - -.event-marker:hover { - cursor: pointer; - transform: scale(2); - z-index: 1; -} - -.event-marker.aside { - border: solid black 1.5px; - margin: 3px; - position: relative; -} - -#turn_info { - display: flex; - flex-direction: column; - align-items: flex-start; -} - -#turn_info > div { - display: flex; - margin-bottom: 8px; - gap: 4px; -} - -#turn_info > img { - display: block; - -} - -/*Solidarity legalised*/ -#event_2 { - top: 216px; - left: 612px; -} - -/*Systematisation*/ -#event_69 { - height: 65px; - width: 65px; -} + pointer-events: none; + width: 45px; + height: 45px; + border: 2px solid; + border-color: #eee #bbb #bbb #eee; + /* TODO: per marker border color */ + box-shadow: 0 0 0 1px #444; + //border-radius: 8px; +} + +.demInfl { background-color: #fff; } +.comInfl { background-color: #fff; } +.demInfl.ctl { background-color: #147fc0; } +.comInfl.ctl { background-color: #c1272d; } + +.demInfl.v1 { background-image: url(markers75/di1.png) } +.demInfl.v2 { background-image: url(markers75/di2.png) } +.demInfl.v3 { background-image: url(markers75/di3.png) } +.demInfl.v4 { background-image: url(markers75/di4.png) } +.demInfl.v5 { background-image: url(markers75/di5.png) } +.demInfl.v6 { background-image: url(markers75/di6.png) } +.demInfl.v7 { background-image: url(markers75/di7.png) } +.demInfl.v8 { background-image: url(markers75/di8.png) } +.demInfl.ctl.v1 { background-image: url(markers75/dc1.png) } +.demInfl.ctl.v2 { background-image: url(markers75/dc2.png) } +.demInfl.ctl.v3 { background-image: url(markers75/dc3.png) } +.demInfl.ctl.v4 { background-image: url(markers75/dc4.png) } +.demInfl.ctl.v5 { background-image: url(markers75/dc5.png) } +.demInfl.ctl.v6 { background-image: url(markers75/dc6.png) } +.demInfl.ctl.v7 { background-image: url(markers75/dc7.png) } +.demInfl.ctl.v8 { background-image: url(markers75/dc8.png) } + +.comInfl.v1 { background-image: url(markers75/ci1.png) } +.comInfl.v2 { background-image: url(markers75/ci2.png) } +.comInfl.v3 { background-image: url(markers75/ci3.png) } +.comInfl.v4 { background-image: url(markers75/ci4.png) } +.comInfl.v5 { background-image: url(markers75/ci5.png) } +.comInfl.v6 { background-image: url(markers75/ci6.png) } +.comInfl.v7 { background-image: url(markers75/ci7.png) } +.comInfl.v8 { background-image: url(markers75/ci8.png) } +.comInfl.ctl.v1 { background-image: url(markers75/cc1.png) } +.comInfl.ctl.v2 { background-image: url(markers75/cc2.png) } +.comInfl.ctl.v3 { background-image: url(markers75/cc3.png) } +.comInfl.ctl.v4 { background-image: url(markers75/cc4.png) } +.comInfl.ctl.v5 { background-image: url(markers75/cc5.png) } +.comInfl.ctl.v6 { background-image: url(markers75/cc6.png) } +.comInfl.ctl.v7 { background-image: url(markers75/cc7.png) } +.comInfl.ctl.v8 { background-image: url(markers75/cc8.png) } + +#marker_turn { background-image: url(markers75/turn.png) } +#marker_action_round.dem { background-image: url(markers75/action_round_blue.png) } +#marker_action_round.com { background-image: url(markers75/action_round_blue.png) } +#marker_stability_track { background-image: url(markers75/ussr_stability_track.png) } +#marker_dem_tst { background-image: url(markers75/ts_blue.png) } +#marker_com_tst { background-image: url(markers75/ts_red.png) } +#marker_vp { background-image: url(markers75/vp.png) } + +/* EVENT MARKERS */ + +.marker.aside { + position: static; +} + +#event_2 { background-image: url(markers75/event_solidarity_legalized.png) } +#event_9 { background-image: url(markers75/event_the_wall.png) } +#event_15 { background-image: url(markers75/event_honecker.png) } +#event_24 { background-image: url(markers75/event_st_nicholas.png) } +#event_26 { background-image: url(markers75/event_helsinki.png) } +#event_39 { background-image: url(markers75/event_eco_glasnost.png) } +#event_48 { background-image: url(markers75/event_we_are_the_people.png) } +#event_49 { background-image: url(markers75/event_foreign_currency.png) } +#event_53 { background-image: url(markers75/event_li_peng.png) } +#event_58 { background-image: url(markers75/event_austria_hungary.png) } +#event_59 { background-image: url(markers75/event_grenz_truppen.png) } +#event_65 { background-image: url(markers75/event_pres_visit.png) } +#event_69 { background-image: url(markers75/event_systematization.png) } +#event_70 { background-image: url(markers75/event_securitate.png) } +#event_73 { background-image: url(markers75/event_laszlo_tokes.png) } +#event_97 { background-image: url(markers75/event_tyrant.png) } +#event_100 { background-image: url(markers75/event_stand_fast.png) } +#event_101 { background-image: url(markers75/event_elena.png) } +#event_104 { background-image: url(markers75/event_nye_party.png) } + +/* Solidarity legalized */ +#event_2 { top: 265px; left: 778px; } + +/* The Wall */ +#event_9 { top: 175px; left: 216px; } + +/* CARD PANELS */ -/*The Tyrant is Gone*/ -#event_97 { - height: 40px; - width: 40px; +.panel { + background-color: #607080; + max-width: 1650px; + margin: 24px auto; } -/*The Wall*/ -#event_9 { - top: 143px; - left: 170px; +.panel_header { + background-color: #506070; + color: white; + font-weight: bold; + padding: 3px; + text-align: center; } - -/* =========== CARDS ================= */ -/* -.playedCard { +.panel_body { + margin-top: 3px; display: flex; - margin: auto; - height: 300px; -}*/ - -.hand_card { - background-size: contain; - height: 250px; - margin: 10px; - border-radius: 5px; - transition: transform .3s ease 0.5s; -} -/* -.hand_card:hover { - cursor: pointer; -}*/ - -.zoom { - transform: scale(1.75) -} - -.power_card { - background-size: contain; - height: 250px; - margin: 10px; - border-radius: 5px; -} - -.discard_card, .event_card { - background-size: contain; - height: 150px; - margin: 5px; - border-radius: 5px; - transition: transform .3s ease; -} - -.discard_card:hover, .event_card:hover { - /*cursor: pointer;*/ - transform: scale(2); + flex-wrap: wrap; + padding: 16px; + gap: 16px; + min-height: 350px; } -.selected.space-area { - background-color: #0002; - outline: solid white 2px; - /*box-shadow: 0 0 4px white; */ - border-radius: 10px 10px 0 0; -} - -.space-area.tip { - background-color: #ff08; - outline: solid white 2px; - box-shadow: 0 0 8px #ff08; - border-radius: 10px 10px 0 0; -} - -.selected.hand_card { - outline: solid silver 3px; - /*box-shadow: 0 0 4px white; */ - border-radius: 18px; -} - - -.selected.power_card { - outline: solid silver 3px; - /*box-shadow: 0 0 4px white; */ - border-radius: 18px; +.panel:has(.panel_body:empty) { + display: none; } -/* =============== OTHER ===============*/ -#space-characteristics {display: none} - -/* =============== CARD IMAGES =========*/ +/* CARD IMAGES */ #tooltip { position: fixed; @@ -626,116 +251,179 @@ left: 660px} width: 250px; height: 350px; border-radius: 16px; - box-shadow: 1px 2px 4px #0004; -} - -.card_1 {background-image: url(cards/e1.gif)} -.card_2 {background-image: url(cards/e2.gif)} -.card_3 {background-image: url(cards/e3.gif)} -.card_4 {background-image: url(cards/e4.gif)} -.card_5 {background-image: url(cards/e5.gif)} -.card_6 {background-image: url(cards/e6.gif)} -.card_7 {background-image: url(cards/e7.gif)} -.card_8 {background-image: url(cards/e8.gif)} -.card_9 {background-image: url(cards/e9.gif)} -.card_10 {background-image: url(cards/e10.gif)} -.card_11 {background-image: url(cards/e11.gif)} -.card_12 {background-image: url(cards/e12.gif)} -.card_13 {background-image: url(cards/e13.gif)} -.card_14 {background-image: url(cards/e14.gif)} -.card_15 {background-image: url(cards/e15.gif)} -.card_16 {background-image: url(cards/e16.gif)} -.card_17 {background-image: url(cards/e17.gif)} -.card_18 {background-image: url(cards/e18.gif)} -.card_19 {background-image: url(cards/e19.gif)} -.card_20 {background-image: url(cards/e20.gif)} -.card_21 {background-image: url(cards/e21.gif)} -.card_22 {background-image: url(cards/e22.gif)} -.card_23 {background-image: url(cards/e23.gif)} -.card_24 {background-image: url(cards/e24.gif)} -.card_25 {background-image: url(cards/e25.gif)} -.card_26 {background-image: url(cards/e26.gif)} -.card_27 {background-image: url(cards/e27.gif)} -.card_28 {background-image: url(cards/e28.gif)} -.card_29 {background-image: url(cards/e29.gif)} -.card_30 {background-image: url(cards/e30.gif)} -.card_31 {background-image: url(cards/e31.gif)} -.card_32 {background-image: url(cards/e32.gif)} -.card_33 {background-image: url(cards/e33.gif)} -.card_34 {background-image: url(cards/e34.gif)} -.card_35 {background-image: url(cards/e35.gif)} -.card_36 {background-image: url(cards/e36.gif)} -.card_37 {background-image: url(cards/e37.gif)} -.card_38 {background-image: url(cards/e38.gif)} -.card_39 {background-image: url(cards/e39.gif)} -.card_40 {background-image: url(cards/e40.gif)} -.card_41 {background-image: url(cards/e41.gif)} -.card_42 {background-image: url(cards/e42.gif)} -.card_43 {background-image: url(cards/e43.gif)} -.card_44 {background-image: url(cards/e44.gif)} -.card_45 {background-image: url(cards/e45.gif)} -.card_46 {background-image: url(cards/e46.gif)} -.card_47 {background-image: url(cards/e47.gif)} -.card_48 {background-image: url(cards/e48.gif)} -.card_49 {background-image: url(cards/e49.gif)} -.card_50 {background-image: url(cards/e50.gif)} -.card_51 {background-image: url(cards/e51.gif)} -.card_52 {background-image: url(cards/e52.gif)} -.card_53 {background-image: url(cards/e53.gif)} -.card_54 {background-image: url(cards/e54.gif)} -.card_55 {background-image: url(cards/e55.gif)} -.card_56 {background-image: url(cards/e56.gif)} -.card_57 {background-image: url(cards/e57.gif)} -.card_58 {background-image: url(cards/e58.gif)} -.card_59 {background-image: url(cards/e59.gif)} -.card_60 {background-image: url(cards/e60.gif)} -.card_61 {background-image: url(cards/e61.gif)} -.card_62 {background-image: url(cards/e62.gif)} -.card_63 {background-image: url(cards/e63.gif)} -.card_64 {background-image: url(cards/e64.gif)} -.card_65 {background-image: url(cards/e65.gif)} -.card_66 {background-image: url(cards/e66.gif)} -.card_67 {background-image: url(cards/e67.gif)} -.card_68 {background-image: url(cards/e68.gif)} -.card_69 {background-image: url(cards/e69.gif)} -.card_70 {background-image: url(cards/e70.gif)} -.card_71 {background-image: url(cards/e71.gif)} -.card_72 {background-image: url(cards/e72.gif)} -.card_73 {background-image: url(cards/e73.gif)} -.card_74 {background-image: url(cards/e74.gif)} -.card_75 {background-image: url(cards/e75.gif)} -.card_76 {background-image: url(cards/e76.gif)} -.card_77 {background-image: url(cards/e77.gif)} -.card_78 {background-image: url(cards/e78.gif)} -.card_79 {background-image: url(cards/e79.gif)} -.card_80 {background-image: url(cards/e80.gif)} -.card_81 {background-image: url(cards/e81.gif)} -.card_82 {background-image: url(cards/e82.gif)} -.card_83 {background-image: url(cards/e83.gif)} -.card_84 {background-image: url(cards/e84.gif)} -.card_85 {background-image: url(cards/e85.gif)} -.card_86 {background-image: url(cards/e86.gif)} -.card_87 {background-image: url(cards/e87.gif)} -.card_88 {background-image: url(cards/e88.gif)} -.card_89 {background-image: url(cards/e89.gif)} -.card_90 {background-image: url(cards/e90.gif)} -.card_91 {background-image: url(cards/e91.gif)} -.card_92 {background-image: url(cards/e92.gif)} -.card_93 {background-image: url(cards/e93.gif)} -.card_94 {background-image: url(cards/e94.gif)} -.card_95 {background-image: url(cards/e95.gif)} -.card_96 {background-image: url(cards/e96.gif)} -.card_97 {background-image: url(cards/e97.gif)} -.card_98 {background-image: url(cards/e98.gif)} -.card_99 {background-image: url(cards/e99.gif)} -.card_100 {background-image: url(cards/e100.gif)} -.card_101 {background-image: url(cards/e101.gif)} -.card_102 {background-image: url(cards/e102.gif)} -.card_103 {background-image: url(cards/e103.gif)} -.card_104 {background-image: url(cards/e104.gif)} -.card_105 {background-image: url(cards/e105.gif)} -.card_106 {background-image: url(cards/e106.gif)} -.card_107 {background-image: url(cards/e107.gif)} -.card_108 {background-image: url(cards/e108.gif)} -.card_109 {background-image: url(cards/e109.gif)} -.card_110 {background-image: url(cards/e110.gif)} + box-shadow: 0 0 0 1px #444, 1px 2px 4px #0004; +} + +.card.action { + box-shadow: 0 0 0 1px #444, 0 0 0 4px white; +} + +.card.selected { + box-shadow: 0 0 0 1px #444, 0 0 0 4px yellow; +} + +.card.event_0 { background-image: url(cards100/event_back.webp) } +.card.event_1 { background-image: url(cards100/event_1.webp) } +.card.event_2 { background-image: url(cards100/event_2.webp) } +.card.event_3 { background-image: url(cards100/event_3.webp) } +.card.event_4 { background-image: url(cards100/event_4.webp) } +.card.event_5 { background-image: url(cards100/event_5.webp) } +.card.event_6 { background-image: url(cards100/event_6.webp) } +.card.event_7 { background-image: url(cards100/event_7.webp) } +.card.event_8 { background-image: url(cards100/event_8.webp) } +.card.event_9 { background-image: url(cards100/event_9.webp) } +.card.event_10 { background-image: url(cards100/event_10.webp) } +.card.event_11 { background-image: url(cards100/event_11.webp) } +.card.event_12 { background-image: url(cards100/event_12.webp) } +.card.event_13 { background-image: url(cards100/event_13.webp) } +.card.event_14 { background-image: url(cards100/event_14.webp) } +.card.event_15 { background-image: url(cards100/event_15.webp) } +.card.event_16 { background-image: url(cards100/event_16.webp) } +.card.event_17 { background-image: url(cards100/event_17.webp) } +.card.event_18 { background-image: url(cards100/event_18.webp) } +.card.event_19 { background-image: url(cards100/event_19.webp) } +.card.event_20 { background-image: url(cards100/event_20.webp) } +.card.event_21 { background-image: url(cards100/event_21.webp) } +.card.event_22 { background-image: url(cards100/event_22.webp) } +.card.event_23 { background-image: url(cards100/event_23.webp) } +.card.event_24 { background-image: url(cards100/event_24.webp) } +.card.event_25 { background-image: url(cards100/event_25.webp) } +.card.event_26 { background-image: url(cards100/event_26.webp) } +.card.event_27 { background-image: url(cards100/event_27.webp) } +.card.event_28 { background-image: url(cards100/event_28.webp) } +.card.event_29 { background-image: url(cards100/event_29.webp) } +.card.event_30 { background-image: url(cards100/event_30.webp) } +.card.event_31 { background-image: url(cards100/event_31.webp) } +.card.event_32 { background-image: url(cards100/event_32.webp) } +.card.event_33 { background-image: url(cards100/event_33.webp) } +.card.event_34 { background-image: url(cards100/event_34.webp) } +.card.event_35 { background-image: url(cards100/event_35.webp) } +.card.event_36 { background-image: url(cards100/event_36.webp) } +.card.event_37 { background-image: url(cards100/event_37.webp) } +.card.event_38 { background-image: url(cards100/event_38.webp) } +.card.event_39 { background-image: url(cards100/event_39.webp) } +.card.event_40 { background-image: url(cards100/event_40.webp) } +.card.event_41 { background-image: url(cards100/event_41.webp) } +.card.event_42 { background-image: url(cards100/event_42.webp) } +.card.event_43 { background-image: url(cards100/event_43.webp) } +.card.event_44 { background-image: url(cards100/event_44.webp) } +.card.event_45 { background-image: url(cards100/event_45.webp) } +.card.event_46 { background-image: url(cards100/event_46.webp) } +.card.event_47 { background-image: url(cards100/event_47.webp) } +.card.event_48 { background-image: url(cards100/event_48.webp) } +.card.event_49 { background-image: url(cards100/event_49.webp) } +.card.event_50 { background-image: url(cards100/event_50.webp) } +.card.event_51 { background-image: url(cards100/event_51.webp) } +.card.event_52 { background-image: url(cards100/event_52.webp) } +.card.event_53 { background-image: url(cards100/event_53.webp) } +.card.event_54 { background-image: url(cards100/event_54.webp) } +.card.event_55 { background-image: url(cards100/event_55.webp) } +.card.event_56 { background-image: url(cards100/event_56.webp) } +.card.event_57 { background-image: url(cards100/event_57.webp) } +.card.event_58 { background-image: url(cards100/event_58.webp) } +.card.event_59 { background-image: url(cards100/event_59.webp) } +.card.event_60 { background-image: url(cards100/event_60.webp) } +.card.event_61 { background-image: url(cards100/event_61.webp) } +.card.event_62 { background-image: url(cards100/event_62.webp) } +.card.event_63 { background-image: url(cards100/event_63.webp) } +.card.event_64 { background-image: url(cards100/event_64.webp) } +.card.event_65 { background-image: url(cards100/event_65.webp) } +.card.event_66 { background-image: url(cards100/event_66.webp) } +.card.event_67 { background-image: url(cards100/event_67.webp) } +.card.event_68 { background-image: url(cards100/event_68.webp) } +.card.event_69 { background-image: url(cards100/event_69.webp) } +.card.event_70 { background-image: url(cards100/event_70.webp) } +.card.event_71 { background-image: url(cards100/event_71.webp) } +.card.event_72 { background-image: url(cards100/event_72.webp) } +.card.event_73 { background-image: url(cards100/event_73.webp) } +.card.event_74 { background-image: url(cards100/event_74.webp) } +.card.event_75 { background-image: url(cards100/event_75.webp) } +.card.event_76 { background-image: url(cards100/event_76.webp) } +.card.event_77 { background-image: url(cards100/event_77.webp) } +.card.event_78 { background-image: url(cards100/event_78.webp) } +.card.event_79 { background-image: url(cards100/event_79.webp) } +.card.event_80 { background-image: url(cards100/event_80.webp) } +.card.event_81 { background-image: url(cards100/event_81.webp) } +.card.event_82 { background-image: url(cards100/event_82.webp) } +.card.event_83 { background-image: url(cards100/event_83.webp) } +.card.event_84 { background-image: url(cards100/event_84.webp) } +.card.event_85 { background-image: url(cards100/event_85.webp) } +.card.event_86 { background-image: url(cards100/event_86.webp) } +.card.event_87 { background-image: url(cards100/event_87.webp) } +.card.event_88 { background-image: url(cards100/event_88.webp) } +.card.event_89 { background-image: url(cards100/event_89.webp) } +.card.event_90 { background-image: url(cards100/event_90.webp) } +.card.event_91 { background-image: url(cards100/event_91.webp) } +.card.event_92 { background-image: url(cards100/event_92.webp) } +.card.event_93 { background-image: url(cards100/event_93.webp) } +.card.event_94 { background-image: url(cards100/event_94.webp) } +.card.event_95 { background-image: url(cards100/event_95.webp) } +.card.event_96 { background-image: url(cards100/event_96.webp) } +.card.event_97 { background-image: url(cards100/event_97.webp) } +.card.event_98 { background-image: url(cards100/event_98.webp) } +.card.event_99 { background-image: url(cards100/event_99.webp) } +.card.event_100 { background-image: url(cards100/event_100.webp) } +.card.event_101 { background-image: url(cards100/event_101.webp) } +.card.event_102 { background-image: url(cards100/event_102.webp) } +.card.event_103 { background-image: url(cards100/event_103.webp) } +.card.event_104 { background-image: url(cards100/event_104.webp) } +.card.event_105 { background-image: url(cards100/event_105.webp) } +.card.event_106 { background-image: url(cards100/event_106.webp) } +.card.event_107 { background-image: url(cards100/event_107.webp) } +.card.event_108 { background-image: url(cards100/event_108.webp) } +.card.event_109 { background-image: url(cards100/event_109.webp) } +.card.event_110 { background-image: url(cards100/event_110.webp) } + +.card.power_0 { background-image: url(cards100/power_back.webp) } +.card.power_1 { background-image: url(cards100/power_1.webp) } +.card.power_2 { background-image: url(cards100/power_2.webp) } +.card.power_3 { background-image: url(cards100/power_3.webp) } +.card.power_4 { background-image: url(cards100/power_4.webp) } +.card.power_5 { background-image: url(cards100/power_5.webp) } +.card.power_6 { background-image: url(cards100/power_6.webp) } +.card.power_7 { background-image: url(cards100/power_7.webp) } +.card.power_8 { background-image: url(cards100/power_8.webp) } +.card.power_9 { background-image: url(cards100/power_9.webp) } +.card.power_10 { background-image: url(cards100/power_10.webp) } +.card.power_11 { background-image: url(cards100/power_11.webp) } +.card.power_12 { background-image: url(cards100/power_12.webp) } +.card.power_13 { background-image: url(cards100/power_13.webp) } +.card.power_14 { background-image: url(cards100/power_14.webp) } +.card.power_15 { background-image: url(cards100/power_15.webp) } +.card.power_16 { background-image: url(cards100/power_16.webp) } +.card.power_17 { background-image: url(cards100/power_17.webp) } +.card.power_18 { background-image: url(cards100/power_18.webp) } +.card.power_19 { background-image: url(cards100/power_19.webp) } +.card.power_20 { background-image: url(cards100/power_20.webp) } +.card.power_21 { background-image: url(cards100/power_21.webp) } +.card.power_22 { background-image: url(cards100/power_22.webp) } +.card.power_23 { background-image: url(cards100/power_23.webp) } +.card.power_24 { background-image: url(cards100/power_24.webp) } +.card.power_25 { background-image: url(cards100/power_25.webp) } +.card.power_26 { background-image: url(cards100/power_26.webp) } +.card.power_27 { background-image: url(cards100/power_27.webp) } +.card.power_28 { background-image: url(cards100/power_28.webp) } +.card.power_29 { background-image: url(cards100/power_29.webp) } +.card.power_30 { background-image: url(cards100/power_30.webp) } +.card.power_31 { background-image: url(cards100/power_31.webp) } +.card.power_32 { background-image: url(cards100/power_32.webp) } +.card.power_33 { background-image: url(cards100/power_33.webp) } +.card.power_34 { background-image: url(cards100/power_34.webp) } +.card.power_35 { background-image: url(cards100/power_35.webp) } +.card.power_36 { background-image: url(cards100/power_36.webp) } +.card.power_37 { background-image: url(cards100/power_37.webp) } +.card.power_38 { background-image: url(cards100/power_38.webp) } +.card.power_39 { background-image: url(cards100/power_39.webp) } +.card.power_40 { background-image: url(cards100/power_40.webp) } +.card.power_41 { background-image: url(cards100/power_41.webp) } +.card.power_42 { background-image: url(cards100/power_42.webp) } +.card.power_43 { background-image: url(cards100/power_43.webp) } +.card.power_44 { background-image: url(cards100/power_44.webp) } +.card.power_45 { background-image: url(cards100/power_45.webp) } +.card.power_46 { background-image: url(cards100/power_46.webp) } +.card.power_47 { background-image: url(cards100/power_47.webp) } +.card.power_48 { background-image: url(cards100/power_48.webp) } +.card.power_49 { background-image: url(cards100/power_49.webp) } +.card.power_50 { background-image: url(cards100/power_50.webp) } +.card.power_51 { background-image: url(cards100/power_51.webp) } +.card.power_52 { background-image: url(cards100/power_52.webp) } diff --git a/play.html b/play.html index e09e214..eb2f495 100644 --- a/play.html +++ b/play.html @@ -7,204 +7,140 @@ <meta charset="utf-8"> <title>1989</title> <link rel="icon" href="favicon.png"> -<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;600;700&display=swap" rel="stylesheet"> <link rel="stylesheet" href="/fonts/fonts.css"> <link rel="stylesheet" href="/common/client.css"> <link rel="stylesheet" href="play.css"> <script defer src="/common/client.js"></script> <script defer src="data.js"></script> -<!-- <script defer src="rules.js"></script> --> <script defer src="play.js"></script> - </head> <body> + <div id="tooltip" class="card hide"></div> <header> <div id="toolbar"> <details> - <summary><img src="images/cog.svg" width="50" height="50"></summary> <!-- Not sure why this is so big! --> + <summary><img src="/images/cog.svg"></summary> + <menu> + <li><a target="_blank" href="/1989-dawn-of-freedom/info/rules.html">Rules of Play</a> + <li><a target="_blank" href="/1989-dawn-of-freedom/info/background.html">Background Book</a> + <li><a target="_blank" href="/1989-dawn-of-freedom/info/reference.html">Reference Sheets</a> + <li class="separator"> + <li><a target="_blank" href="/1989-dawn-of-freedom/info/cards.html">Card Gallery</a> + </menu> + </details> + <details> + <summary><img src="images/trash-can.svg"></summary> <menu> - <li>Rules of Play - <li>Background Book - <li>Reference Sheets - + <li id="show_removed_menu" onclick="toggle_removed()">Show removed events + <li id="show_discard_menu" onclick="toggle_discard()">Show discard </menu> </details> - <button onclick="toggle_pieces()"><img src="images/earth-africa-europe.svg"></button> - <button onclick="toggle_discard()"><img src="images/bin.png"></button> - <button onclick="toggle_removed()"><img src="images/remove.png"></button> </div> </header> <aside> - <div id="roles"> - <div class="role" id="role_Democrat"> - <div class="role_name">Democrat</div> - <div class="role_stat" id="role_stat_dem">0 cards in hand</div> - <div class="role_user">-</div> - </div> - <div class="role" id="role_Communist"> - <div class="role_name">Communist</div> - <div class="role_stat" id="role_stat_com">0 cards in hand</div> - <div class="role_user">-</div> - </div> - <div class="role" id="deck_data"> - <div class="deck_name" id="deck_stat">Strategy deck:</div> - <div class="role_stat" id="deck_length">0 cards</div> - </div> - </div> + <div id="roles"></div> + <div id="turn_info"></div> <div id="log"></div> </aside> -<main data-min-zoom="0.5" data-max-zoom = "2.0"> - -<!-- MAP, EVENTS --> -<section id="sec_map"> - -<div class="map" id="map"> - <div id="pieces"> - <div id="overlay"> - <h2 id="space-characteristics"></h2> - <img id="turn-tracker" class="hide" src="images/Turn.gif"> - <div class="us-action-round-tracker hide" id="action-round-tracker"></div> - <img id="stability-track" class="hide" src="images/SV_Stability.gif"> - <img id="dem-TST" class="hide" src="images/US_Tiananmen_Square.gif"> - <img id="com-TST" class="hide" src="images/SV_Tiananmen_Square.gif"> - <img id="vp" class="hide" src="images/VP.gif"> - <div class="germany marker" id="East_Germany"> - <p class="times_held hide" id="East_Germany_times_held">1</p></div> - <div class="poland marker" id="Poland"> - <p class="times_held hide" id="Poland_times_held">1</p></div> - <div class="czech marker" id="Czechoslovakia"> - <p class="times_held hide" id="Czechoslovakia_times_held">1</p></div> - <div class="hungary marker" id="Hungary"> - <p class="times_held hide" id="Hungary_times_held">1</p></div> - <div class="romania marker" id="Romania"> - <p class="times_held hide" id="Romania_times_held">1</p></div> - <div class="bulgaria marker" id="Bulgaria"> - <p class="times_held hide" id="Bulgaria_times_held">1</p></div> +<main> + +<div id="mapwrap"> +<div id="map"> + <div id="spaces"></div> + <div id="markers"> + <div id="marker_turn" class="marker"></div> + <div id="marker_action_round" class="marker"></div> + <div id="marker_stability_track" class="marker"></div> + <div id="marker_dem_tst" class="marker"></div> + <div id="marker_com_tst" class="marker"></div> + <div id="marker_vp" class="marker"></div> + + <!-- TODO + <div class="germany marker" id="East_Germany"> + <p class="times_held hide" id="East_Germany_times_held">1</p></div> + <div class="poland marker" id="Poland"> + <p class="times_held hide" id="Poland_times_held">1</p></div> + <div class="czech marker" id="Czechoslovakia"> + <p class="times_held hide" id="Czechoslovakia_times_held">1</p></div> + <div class="hungary marker" id="Hungary"> + <p class="times_held hide" id="Hungary_times_held">1</p></div> + <div class="romania marker" id="Romania"> + <p class="times_held hide" id="Romania_times_held">1</p></div> + <div class="bulgaria marker" id="Bulgaria"> + <p class="times_held hide" id="Bulgaria_times_held">1</p></div> + --> <!-- PERMANENT EVENT MARKERS ON THE BOARD --> - - - <img id="event_2" class="event-marker" src = "images/Event_Marker_Solidarity_Leg.gif"> - <img id="event_69" class="event-marker" src="images/Event_Marker_Systematizatio.gif"> - <img id="event_97" class="event-marker" src="images/Event_Marker_The_Tyrant_Is_.gif"> - <img id="event_9" class="event-marker" src="images/Event_Marker_The_Wall.gif"> - - </div> - <div id="counters"></div> + <div id="event_reminder_list"></div> </div> </div> -</section> - - -<!-- EVENTS IN PLAY --> -<section id = "sec_events"> - <div id="events_panel" class="panel hide"> - <div id="events_header" class="panel_header">Event Markers</div> - <div id="events" class="panel_body"> - <img id="event_15" class="event-marker aside" src="images/Event_Marker_Honecker.gif"> - <img id="event_24" class="event-marker aside" src="images/Event_Marker_St_Nicholas.gif"> - <img id="event_26" class="event-marker aside" src="images/Event_Marker_Helsinki.gif"> - <img id="event_39" class="event-marker aside" src = "images/Event_Marker_Eco_Glasnost.gif"> - <img id="event_48" class="event-marker aside" src="images/Event_Marker_We_are_the_Peo.gif"> - <img id="event_49" class="event-marker aside" src="images/Event_Marker_Foreign_Curren.gif"> - <img id="event_53" class="event-marker aside" src="images/Event_Marker_Li_Peng_.gif"> - <img id="event_58" class="event-marker aside" src="images/Event_Marker_Austria_Hungar.gif"> - <img id="event_59" class="event-marker aside" src="images/Event_Marker_Grenz_Truppen.gif"> - <img id="event_65" class="event-marker aside" src="images/Event_Marker_Pres_Visit.gif"> - <img id="event_70" class="event-marker aside" src="images/Event_Marker_Securitate.gif"> - <img id="event_73" class="event-marker aside" src="images/Event_Marker_Laszlo.gif"> - <img id="event_100" class="event-marker aside" src="images/Event_Marker_Stand_Fast.gif"> - <img id="event_101" class="event-marker aside" src="images/Event_Marker_Elena.gif"> - <img id="event_104" class="event-marker aside" src="images/Event_Marker_NYE_Party.gif"> - </div> - </div> -</section> +</div> <!-- EVENTS ON THE TABLE --> -<section id = "sec_table_cards"> - <div id="table_panel" class="panel hide"> - <div id="table_header" class="panel_header">Cards on the Table</div> - <div id="table_cards" class="panel_body"></div> - </div> -</section> +<div id="table_panel" class="panel"> + <div id="table_header" class="panel_header">Cards on the Table</div> + <div id="table_cards" class="panel_body"></div> +</div> <!-- PLAYED CARD --> -<section id="sec_played_card"> -<div id="played_card_panel" class="panel hide"> -<div id="played_card_header" class="panel_header">Played Card</div> -<div id="played_card" class="panel_body"></div> +<div id="played_card_panel" class="panel"> + <div id="played_card_header" class="panel_header">Played Card</div> + <div id="played_card" class="panel_body"></div> </div> -</section> - -<!-- DISCARD --> -<section id = "sec_discard"> - <div id="discard_panel" class="panel"> - <div id="discard_header" class="panel_header">Discard</div> - <div id="discard" class="panel_body"></div> - </div> -</section> - -<!-- PERMANENTLY REMOVED --> -<section id = "sec_removed"> - <div id="removed_panel" class="panel hide"> - <div id="removed_header" class="panel_header">Permanently Removed Events</div> - <div id="removed" class="panel_body"></div> - </div> -</section> +<!-- HAND --> +<div id="hand_panel" class="panel"> + <div id="hand_header" class="panel_header">Hand</div> + <div id="hand" class="panel_body"></div> +</div> <!-- POWERSTRUGGLE --> -<section id = "sec_power"> - <div id="ceausescu_panel" class="panel hide"> - <div id="ceausescu_header" class="panel_header">Ceausescu Cards</div> - <div id="ceausescu_hand" class="panel_body"></div> - </div> - <div id="power_panel" class="panel hide"> - <div id="power_header" class="panel_header">Power Struggle Hand</div> - <div id="power_hand" class="panel_body"></div> - </div> -</section> - - +<div id="ceausescu_panel" class="panel"> + <div id="ceausescu_header" class="panel_header">Ceausescu Cards</div> + <div id="ceausescu_hand" class="panel_body"></div> +</div> +<div id="power_panel" class="panel"> + <div id="power_header" class="panel_header">Power Struggle Hand</div> + <div id="power_hand" class="panel_body"></div> +</div> <!-- OPPONENT HAND --> -<section id="sec_opp_hand"> +<div id="opp_hand_panel" class="panel"> + <div id="opp_hand_header" class="panel_header">Opponent Hand</div> + <div id="opp_hand" class="panel_body"></div> +</div> - <div id="opp_hand_panel" class="panel hide"> - <div id="opp_hand_header" class="panel_header">Opponent Hand</div> - <div id="opp_hand" class="panel_body"></div> - </div> - -</section> +<div id="opp_power_hand_panel" class="panel"> + <div id="opp_power_hand_header" class="panel_header">Opponent Power Struggle Hand</div> + <div id="opp_power_hand" class="panel_body"></div> +</div> <!-- SAMIZDAT CARD --> -<section id = "sec_samizdat"> - <div id="samizdat_panel" class="panel"> - <div id="samizdat_header" class="panel_header">Set aside card</div> - <div id="samizdat_card" class="panel_body"></div> - </div> -</section> - +<div id="samizdat_panel" class="panel"> + <div id="samizdat_header" class="panel_header">Samizdat Card</div> + <div id="samizdat_card" class="panel_body"></div> +</div> -<!-- HAND --> -<section id="sec_hand"> +<!-- PERMANENTLY REMOVED --> +<div id="removed_panel" class="panel"> + <div id="removed_header" class="panel_header">Permanently Removed Events</div> + <div id="removed" class="panel_body"></div> +</div> -<div id="hand_panel" class="panel hide"> - <div id="hand_header" class="panel_header">Hand</div> - <div id="hand" class="panel_body"></div> +<!-- DISCARD --> +<div id="discard_panel" class="panel"> + <div id="discard_header" class="panel_header">Discard</div> + <div id="discard" class="panel_body"></div> </div> -</section> </main> <footer id="status"></footer> - - </html> diff --git a/play.js b/play.js index 5ccf136..9ac9e60 100644 --- a/play.js +++ b/play.js @@ -1,677 +1,417 @@ +"use strict" -const seed = 'none' -const scenario = 'standard' -const options = 'none' -//const rules = require("./rules") +let action_register = [] +function register_action(target, action, id) { + target.my_action = action + target.my_id = id + target.onmousedown = on_click_action + action_register.push(target) +} + +function is_action(action, arg) { + return !!(view.actions && view.actions[action] && view.actions[action].includes(arg)) +} + +function on_click_action(evt) { + if (evt.button === 0) + send_action(evt.target.my_action, evt.target.my_id) +} + +const last_space = 75 const last_card = 110 const last_power_card = 52 -let hover_timeout -const height = 65 -const width = 105 -const toolbar = document.getElementById('toolbar') -const vpMarker = document.getElementById('vp') -const counters = document.getElementById('counters') - -const countries= ['Poland', 'Hungary', 'East_Germany', 'Bulgaria', 'Czechoslovakia', 'Romania'] - -/*const aside_events = [ - "honecker", - "st_nicholas_church", - "helsinki_final_act", - "eco_glasnost", - "we_are_the_people", - "foreign_currency_debt_burden", - "li_peng", - "austria_hungary_border_reopened", - "grenztruppen", - "presidential_visit", - "securitate", - "laslzo_tokes", - "stand_fast", - "elena", - "new_years_eve_party" -]*/ -const board_events = [2, 9, 69, 97] + +const countries = [ "Poland", "Hungary", "East_Germany", "Bulgaria", "Czechoslovakia", "Romania" ] +const board_events = [ 2, 9, 69, 97 ] const box_events = [ 15, 24, 26, 39, 48, 49, 53, 58, 59, 65, 70, 73, 100, 101, 104 ] -let box_events_showing = false -let show_discard = false - -const overlay = document.getElementById('overlay'); -const spaceNameElement = document.getElementById('space-name'); -const spaceCharacteristicsElement = document.getElementById('space-characteristics'); - - -// Event listener to track mouse movement over the map - document.querySelector('.map').addEventListener('mousemove', function(event) { - const x = event.offsetX; // X-coordinate of mouse relative to container - const y = event.offsetY; // Y-coordinate of mouse relative to container - spaceCharacteristicsElement.innerText = `X: ${x}, Y: ${y}`; - }) - - - // Create map areas dynamically based on coordinates - - function create_ui() { - -// CREATE MAP - - spaces.forEach((space) => { - - - if (space && space.box) { - - //CREATE SPACES - const { x, y} = space.box; - const spaceArea = document.createElement('div'); - spaceArea.classList.add('space-area', space.country) - spaceArea.id=`space_${space.space_id}`; - spaceArea.style.left = x + 'px'; - spaceArea.style.top = y + 'px'; - spaceArea.style.width = width + 'px'; - spaceArea.style.height = height + 'px'; - spaceArea.style.zIndex = 2; - spaceArea.my_space = space.space_id; - spaceArea.addEventListener('mousedown', on_click_space); - - //CREATE DEMOCRATIC INFLUENCE MARKERS FOR EACH SPACE - const dem_img = document.createElement('div') - dem_img.classList.add('demInfl', space.country) - dem_img.style.display = 'none' - dem_img.id=`${space.name_unique}_demInfl` - dem_img.style.zIndex = 1 - dem_img.my_space = space.space_id; - dem_img.addEventListener('mousedown', on_click_space); - spaceArea.appendChild(dem_img) - - //CREATE DEMOCRATIC INFLUENCE VALUES - const demInflValue = document.createElement('p') - demInflValue.className='demInflValue' - demInflValue.style.display = 'none' - demInflValue.id=`${space.name_unique}_demInflValue` - demInflValue.innerText=space.demInfl - demInflValue.style.zIndex = 1 - demInflValue.my_space = space.space_id; - demInflValue.addEventListener('mousedown', on_click_space); - spaceArea.appendChild(demInflValue) - - //CREATE COMMUNIST INFLUENCE MARKERS FOR EACH SPACE - const com_img = document.createElement('div') - com_img.className='comInfl' - com_img.style.display='none' - com_img.id=`${space.name_unique}_comInfl` - com_img.style.zIndex = 1 - com_img.my_space = space.space_id; - com_img.addEventListener('mousedown', on_click_space); - spaceArea.appendChild(com_img) - - //CREATE COMMUNIST INFLUENCE VALUES - const comInflValue = document.createElement('p') - comInflValue.className='comInflValue' - comInflValue.style.display='none' - comInflValue.id=`${space.name_unique}_comInflValue` - comInflValue.innerText=space.comInfl - comInflValue.style.zIndex = 1 - comInflValue.my_space = space.space_id; - comInflValue.addEventListener('mousedown', on_click_space); - spaceArea.appendChild(comInflValue) - //} - - counters.appendChild(spaceArea); - } - }); -// CREATE CARDS +const ui = { + favicon: document.getElementById("favicon"), + turn_info: document.getElementById("turn_info"), + + turn: document.getElementById("marker_turn"), + round: document.getElementById("marker_action_round"), + stability: document.getElementById("marker_stability_track"), + dem_tst: document.getElementById("marker_dem_tst"), + com_tst: document.getElementById("marker_com_tst"), + vp: document.getElementById("marker_vp"), + + event_reminder_list: document.getElementById("event_reminder_list"), + + played_card: document.getElementById("played_card"), + hand: document.getElementById("hand"), + power_hand: document.getElementById("power_hand"), + opp_hand: document.getElementById("opp_hand"), + opp_power_hand: document.getElementById("opp_power_hand"), + discard: document.getElementById("discard"), + removed: document.getElementById("removed"), + table_cards: document.getElementById("table_cards"), + + ceausescu_hand: document.getElementById("ceausescu_hand"), + samizdat_card: document.getElementById("samizdat_card"), +} + +function create_country(id, name) { + let [ x, y, w, h ] = LAYOUT[name] + let xc = Math.round(x + w / 2) + let yc = Math.round(y + h / 2) + + let e = document.createElement("div") + e.className = "marker demInfl" + e.style.left = xc - 25 + "px" + e.style.top = yc - 25 + "px" + ui.countries[id] = e + document.getElementById("markers").appendChild(e) +} + +function create_ui() { + ui.layout_xy = [] + ui.spaces = [] + ui.dem_inf = [] + ui.com_inf = [] + + for (let s = 1; s <= last_space; ++s) { + let info = spaces[s] + let [ x, y, w, h ] = LAYOUT[info.ascii_name] + let xc = Math.round( x + w / 2 ) + let yc = Math.round( y + h / 2 ) + x -= 6 + y -= 6 + w += 12 + h += 12 + + ui.layout_xy[s] = [ xc, yc ] + + let space_e = document.createElement("div") + register_action(space_e, "space", s) + space_e.className = "space " + info.country + space_e.style.left = x + "px" + space_e.style.top = y + "px" + space_e.style.width = w + "px" + space_e.style.height = h + "px" + ui.spaces[s] = space_e + + let com_e = document.createElement("div") + com_e.className = "marker comInfl hide" + com_e.style.left = (xc + 32 - 25) + "px" + com_e.style.top = (yc + 12 - 25) + "px" + ui.com_inf[s] = com_e + + let dem_e = document.createElement("div") + dem_e.className = "marker demInfl hide" + dem_e.style.left = (xc - 32 - 25) + "px" + dem_e.style.top = (yc + 12 - 25) + "px" + ui.dem_inf[s] = dem_e + + document.getElementById("spaces").append(space_e) + document.getElementById("markers").appendChild(com_e) + document.getElementById("markers").appendChild(dem_e) + } - const is_mobile = window.matchMedia("(pointer: coarse)").matches + ui.cards = [] for (let c = 1; c <= last_card; ++c) { + const card_e = document.createElement("div") + register_action(card_e, "card", c) + card_e.className = "card event_" + c + ui.cards[c] = card_e + } - const hand_card = document.createElement('img'); - hand_card.classList.add('hand_card') - hand_card.id=`card_${c}`; - hand_card.src = `cards/e${c}.gif` - hand_card.my_card = c; - hand_card.addEventListener('click', on_click_card); - - if(!is_mobile) { - hand_card.addEventListener('mouseenter', () => { - hover_timeout = setTimeout(() => { - hand_card.classList.add('zoom'); - }, 500) }) - hand_card.addEventListener('mouseleave', () => { - clearTimeout(hover_timeout); - hand_card.classList.remove('zoom'); - }); - } + ui.power_cards = [] + for (let c = 1; c <= last_power_card; ++c) { + const power_card_e = document.createElement("div") + register_action(power_card_e, "power_card", c) + power_card_e.className = "card power_" + c + ui.power_cards[c] = power_card_e + } - ui.cards.push(hand_card); + ui.events = [] + for (let id of box_events) { + ui.events[id] = document.createElement("div") + ui.events[id].id = "event_" + id + ui.events[id].className = "marker event aside" } - - - - for (let card of power_cards) { - if (!card) continue; - const power_card = document.createElement('img'); - power_card.classList.add('power_card'); - power_card.id = `power_card_${card.number}`; - power_card.src = `cards_2/${card.url}.gif`; - power_card.my_card = card.number; - power_card.addEventListener('mousedown', on_click_card); - ui.power_cards.push(power_card); + for (let id of board_events) { + ui.events[id] = document.createElement("div") + ui.events[id].id = "event_" + id + ui.events[id].className = "marker event" + document.getElementById("markers").appendChild(ui.events[id]) } -} - - - -function is_card_enabled(card) { - if (view.actions) { - if (card_action_menu.some(a => view.actions[a] && view.actions[a].includes(card))) - return true - if (view.actions.card_select && view.actions.card_select.includes(card)) - return true - if (view.actions.card && view.actions.card.includes(card)) - return true - } - return false + ui.countries = [] + create_country(0, "country_poland") + create_country(1, "country_hungary") + create_country(2, "country_east_germany") + create_country(3, "country_bulgaria") + create_country(4, "country_czechoslovakia") + create_country(5, "country_romania") } // SUPPORTING FUNCTIONS function on_click_space(evt) { - if (evt.button === 0) { - const space = evt.target.my_space; - //console.log('on_click_space_called with space:', space); - if (send_action('infl', space)) { + if (evt.button === 0) { + const space = evt.target.my_space + //console.log('on_click_space_called with space:', space); + if (send_action("infl", space)) { //console.log('send_action with infl:', space); - evt.stopPropagation(); - } else if (send_action('sc', space)) { + evt.stopPropagation() + } else if (send_action("sc", space)) { //console.log('send_action with sc:', space); - evt.stopPropagation(); + evt.stopPropagation() } else { - // console.log('send_action failed for space:', space); - } - } - //hide_popup_menu(); -} - -function on_click_card(evt) { - if (evt.button === 0) { - const card = evt.target.my_card; - //console.log('on_click_card_called with card:', card); - if (is_action('card', card)) { - //console.log('in action card') - if (send_action('card', card)) { - evt.stopPropagation(); - } - } - if (is_action('power_card', card)) { - if (send_action('power_card', card)) { - evt.stopPropagation(); - } + // console.log('send_action failed for space:', space); } } + //hide_popup_menu(); } -function is_action(action) { - //console.log('is_action called with: ', action) - //console.log('view.actions', view.actions) - if (view.actions && view.actions[action]) - return true - return false -} - -function is_card_action(action, card) { - //console.log('is_card_action called with action', action, 'card', card) - //console.log('view.actions', view.actions, 'view.actions[action]', view.actions[action]) - if (view.actions && view.actions[action] && view.actions[action].includes(card)) - return true - return false -} - -function on_log(text) { // eslint-disable-line no-unused-vars +function on_log(text) { + // eslint-disable-line no-unused-vars let p = document.createElement("div") if (text.match(/^>/)) { text = text.substring(1) - p.className = 'i' + p.className = "i" } - text = text.replace(/_/g, ' ') + text = text.replace(/_/g, " ") text = text.replace(/C(\d+)/g, sub_card_name) text = text.replace(/P(\d+)/g, sub_power_card_name) text = text.replace(/V(\d+)/g, sub_power_card_value) text = text.replace(/%(\d+)/g, sub_space_name) text = text.replace(/D[1-6]/g, sub_die) - if (text.match(/^\.h1/)) { text = text.substring(4) - p.className = 'h1' - } - else if (text.match(/^\.h2d/)) { + p.className = "h1" + } else if (text.match(/^\.h2d/)) { text = text.substring(5) - p.className = 'h2 dem' - } - else if (text.match(/^\.h2c/)) { + p.className = "h2 dem" + } else if (text.match(/^\.h2c/)) { text = text.substring(5) - p.className = 'h2 com' - } - else if (text.match(/^\.h2/)) { + p.className = "h2 com" + } else if (text.match(/^\.h2/)) { text = text.substring(4) - p.className = 'h2' - } - else if (text.match(/^\.h3/)) { + p.className = "h2" + } else if (text.match(/^\.h3/)) { text = text.substring(4) - p.className = 'h3' + p.className = "h3" } p.innerHTML = text return p } -let ui = { - favicon: document.getElementById('favicon'), - player: [ - document.getElementById("role_Democrat"), - document.getElementById("role_Communist"), - ], - cards: [ null ], - power_cards: [null], - dem_hand_count: document.getElementById("role_stat_dem"), - com_hand_count: document.getElementById("role_stat_com"), - deck_length: document.getElementById("deck_length"), - played_card: 0, - table_panel: document.getElementById("table_panel"), - hand_panel: document.getElementById("hand_panel"), - turn: document.getElementById("turn-tracker"), - round: document.getElementById("action-round-tracker"), - stability: document.getElementById("stability-track"), - dem_TST: document.getElementById("dem-TST"), - com_TST: document.getElementById("com-TST"), - vp: document.getElementById("vp"), - spaces: document.getElementsByClassName("space-area") +function layout_turn_marker() { + let x = 654 + 24 + (view.turn - 1) * 53 + let y = 80 + 24 + ui.turn.style.left = (x - 25) + "px" + ui.turn.style.top = (y - 25) + "px" +} +function layout_round_marker() { + let x = 709 + 24 + (view.turn - 1) * 53 + let y = 142 + 24 + ui.round.style.left = (x - 25) + "px" + ui.round.style.top = (y - 25) + "px" + if (view.round_player === "Democrat") // TODO: bit flag? + ui.round.className = "marker dem" + else + ui.round.className = "marker com" } +function layout_stability_marker() { + let x = 24 + 1381 + let y = 24 + 1081 + view.stability * 54 + ui.stability.style.left = (x - 25) + "px" + ui.stability.style.top = (y - 25) + "px" +} -function on_update() { - //console.log('on_update called') - //console.log('view.valid_spaces: ', view.valid_spaces) - //console.log('view.actions: ', view.actions) - //console.log('view.power_cards:', view.power_cards) - document.querySelectorAll('[id^="space_"].selected').forEach(spaceElement => {spaceElement.classList.remove('selected');}); - document.getElementById("power_hand")?.querySelectorAll('.selected').forEach(cardElement => {cardElement.classList.remove('selected');}); - view.valid_spaces.forEach(space_id => { - const spaceElementId = `space_${space_id}`; - const spaceElement = document.getElementById(spaceElementId); - - if (spaceElement) { - spaceElement.classList.add('selected'); - } - }); - - //Check influence values - - for (let i = 1; i < spaces.length; i ++) { - - const space = spaces[i] - const demInfl = view.demInfl[i] - const comInfl = view.comInfl[i] - //console.log('piece', piece) - //console.log('space', space) - const dem_marker = document.getElementById(`${space.name_unique}_demInfl`); - const dem_number = document.getElementById(`${space.name_unique}_demInflValue`); - const com_marker = document.getElementById(`${space.name_unique}_comInfl`); - const com_number = document.getElementById(`${space.name_unique}_comInflValue`); - - dem_number.innerText=demInfl - if (demInfl > 0) { - dem_marker.style.display = 'block'; - dem_number.style.display = 'block'; - - if (demInfl > 9) { - dem_number.classList.remove('demInflValue') - dem_number.classList.add('demInflValue_10') - } else { - dem_number.classList.add('demInflValue') - dem_number.classList.remove('demInflValue_10') - } - - if(check_dem_control(demInfl, comInfl, space)){ - dem_marker.classList.add('controlled') - dem_number.classList.add('outlined_text') - dem_marker.classList.remove('uncontrolled') - } else { - dem_marker.classList.add('uncontrolled') - dem_marker.classList.remove('controlled') - dem_number.classList.remove('outlined_text') - } - } else { - dem_marker.style.display = 'none'; - dem_number.style.display = 'none'; - } - com_number.innerText=comInfl - if (comInfl > 0) { - com_marker.style.display = 'block'; - com_number.style.display = 'block'; - - if (comInfl > 9) { - com_number.classList.remove('comInflValue') - com_number.classList.add('comInflValue_10') - } else { - com_number.classList.add('comInflValue') - com_number.classList.remove('comInflValue_10') - } - - if(check_com_control(demInfl, comInfl, space)){ - com_marker.classList.add('controlled') - com_number.classList.add('controlled') - com_marker.classList.remove('uncontrolled') - com_number.classList.remove('uncontrolled') - } else { - com_marker.classList.add('uncontrolled') - com_number.classList.add('uncontrolled') - com_marker.classList.remove('controlled') - com_number.classList.remove('controlled') - } - } else { - com_marker.style.display = 'none'; - com_number.style.display = 'none'; - } - - } +let TST_X = [ 53, 53+69, 53+69*2, 53+69*3, 53+69*4, 53+69*5, 53+69*6, 556 ] +let TST_Y = [ 2128, 2257 ] -// UPDATE COUNTRY MARKERS - for (let i = 0; i < countries.length; i++) { - const country = countries[i]; - const marker = document.getElementById(country) - const times_held = document.getElementById(`${country}_times_held`) - - if (view.revolutions[find_country_index(country)]) { - marker.classList.add('revolution') - marker.classList.remove('held') - marker.style.display = 'block' - times_held.classList.add('outlined_text') - times_held.classList.remove('hide') - } else if (view.times_held[find_country_index(country)] > 0 ) { - //console.log('setting ', country) - marker.classList.add('held') - marker.style.display = 'block' - times_held.classList.remove('hide') - times_held.innerHTML = view.times_held[find_country_index(country)] - } - else {marker.style.display = 'none'} - } +function layout_tst_marker(e, v, top) { + let x = TST_X[v] + 24 + let y = TST_Y[top] + 24 + e.style.left = (x - 25) + "px" + e.style.top = (y - 25) + "px" +} -// UPDATE ASIDE - if (view.is_pwr_struggle) { - ui.dem_hand_count.innerText = `${view.democrat_power_hand} Power cards` - ui.com_hand_count.innerText = `${view.communist_power_hand} Power cards` - } else{ - ui.dem_hand_count.innerText = `${view.democrat_hand} cards` - ui.com_hand_count.innerText = `${view.communist_hand} cards` +function layout_vp_marker() { + let x, y + if (view.vp === 0) { + y = 2425 + 25 + x = 843 + 28 } - ui.deck_length.innerText = `${view.strategy_deck} cards` - -// UPDATE HAND - document.getElementById("hand").replaceChildren() - document.getElementById("played_card").replaceChildren() - - if (view.hand.length && view.is_pwr_struggle === false) { - document.getElementById("hand_panel").classList.remove("hide") - //console.log('view.actions.card', view.actions.card) - for (let c of view.hand) { - let card = ui.cards[c] - document.getElementById("hand").appendChild(card); - if (view.actions && view.actions.card && view.actions.card.includes(c)) { - card.classList.add('action') - } else { - card.classList.remove('action') - } - if (view.valid_cards.includes(c)) { - card.classList.add('selected') - } else { - card.classList.remove('selected') - } - card.classList.remove('discard_card') + else if (view.vp < 0) { + if (view.vp & 1) { + y = 2456 + 25 + x = 803 + 28 - (-view.vp - 1)/2 * 62 + } else { + y = 2395 + 25 + x = 772 + 28 - (-view.vp - 2)/2 * 62 } - } else { - document.getElementById("hand_panel").classList.add("hide") - } - -// UPDATE DISCARD -document.getElementById("discard").replaceChildren() -if (!view.is_pwr_struggle) { - for (let c of view.strategy_discard) { - let discard_card = ui.cards[c] - document.getElementById("discard").appendChild(discard_card) - discard_card.classList.add('discard_card') - discard_card.classList.remove('selected') - } -} else if (view.is_pwr_struggle) { - for (let c of view.strategy_discard) { - let discard_card = ui.power_cards[c] - document.getElementById("discard").appendChild(discard_card) - discard_card.classList.add('discard_card') - discard_card.classList.remove('selected') } -} - -// DISCARD FOR EVENTS -//console.log('view.discard',view.discard) -if(view.discard) { - //document.getElementById("discard").replaceChildren() - document.getElementById("discard_panel").classList.remove("hide") - for (let c of view.strategy_discard) { - let discard_card = ui.cards[c] - document.getElementById("discard").appendChild(discard_card) - discard_card.classList.add('discard_card') - if (view.valid_cards.includes(c)) { - discard_card.classList.add('selected') + else if (view.vp > 0) { + if (view.vp & 1) { + y = 2396 + 25 + x = 883 + 28 + (view.vp - 1)/2 * 62 } else { - discard_card.classList.remove('selected') + y = 2455 + 25 + x = 913 + 28 + (view.vp - 2)/2 * 62 } - } -} else { - if (!show_discard) { - document.getElementById("discard_panel").classList.add("hide") + } + ui.vp.style.left = (x - 25) + "px" + ui.vp.style.top = (y - 25) + "px" +} + +function layout_country(id) { + for (let i = 0; i < 6; i++) { + // TODO: what number to display? + if (view.revolutions[id]) + ui.countries[id].className = "marker comInfl ctl v" + view.times_held[id] + else if (view.times_held[id] > 0) + ui.countries[id].className = "marker demInfl ctl v" + view.times_held[id] + else + ui.countries[id].className = "marker hide" } } -// UPDATE PERMANENTLY REMOVED CARDS -document.getElementById("removed").replaceChildren() -for (let c of view.strategy_removed) { - let discard_card = ui.cards[c] - document.getElementById("removed").appendChild(discard_card) - discard_card.classList.add('discard_card') - discard_card.classList.remove('selected') -} - - -// PLAYED CARD PANEL -if (view.played_card > 0) { - document.getElementById("played_card_panel").classList.remove("hide") - document.getElementById("played_card").appendChild(ui.cards[view.played_card]); - document.getElementById("played_card").classList.remove("hand_card") -} else { - document.getElementById("played_card_panel").classList.add("hide") -} - -// TABLE CARDS PANEL -document.getElementById("table_cards").replaceChildren() -if (view.table_cards.length > 0) { - document.getElementById("table_panel").classList.remove("hide") - for (let c of view.table_cards) { - let card = ui.cards[c] - document.getElementById("table_cards").appendChild(card); - card.classList.remove("hand_card") - card.classList.add('event_card'); - } - } else { - document.getElementById("table_panel").classList.add("hide") -} +function on_update() { + if (!ui.spaces) + create_ui() -// OPPONENT HAND -document.getElementById("opp_hand").replaceChildren() -if (!view.is_pwr_struggle) { - if (view.show_opp_hand && view.opp_hand.length >0) { - document.getElementById("opp_hand_panel").classList.remove("hide") - for (let c of view.opp_hand) { - let card = ui.cards[c] - document.getElementById("opp_hand").appendChild(card); - card.classList.remove('discard_card') - if (!view.is_pwr_struggle) { - if (view.valid_cards.includes(c)) { - card.classList.add('selected') - } else { - card.classList.remove('selected') - } - } - } + // UPDATE ASIDE + if (view.is_pwr_struggle) { + roles.Democrat.stat.textContent = `${view.democrat_power_hand} Power cards` + roles.Communist.stat.textContent = `${view.communist_power_hand} Power cards` } else { - document.getElementById("opp_hand_panel").classList.add("hide") + roles.Democrat.stat.textContent = `${view.democrat_hand} cards` + roles.Communist.stat.innerText = `${view.communist_hand} cards` } -} else { - //console.log('power struggle, show opp hand', view.show_opp_hand, 'view opp hand', view.opp_hand ) - if (view.show_opp_hand && view.opp_hand && view.opp_hand.length > 0) { - document.getElementById("opp_hand_panel").classList.remove("hide") - for (let c of view.opp_hand) { - let card = ui.power_cards[c] - //console.log('power_card:', power_card) - document.getElementById("opp_hand").appendChild(card); - card.classList.remove('discard_card') - } + ui.turn_info.innerText = `Strategy deck: ${view.strategy_deck} cards` + + // UPDATE TRACK MARKERS + layout_turn_marker() + layout_round_marker() + layout_stability_marker() + layout_vp_marker() + layout_tst_marker(ui.dem_tst, view.dem_tst, 0) + layout_tst_marker(ui.com_tst, view.com_tst, 1) + + // UPDATE EVENT MARKERS ON THE BOARD + + if (view.persistent_events.includes(2)) + ui.events[2].style.display = "block" + else + ui.events[2].style.display = "none" + + if (view.persistent_events.includes(9)) + ui.events[9].style.display = "block" + else + ui.events[9].style.display = "none" + + if (view.persistent_events.includes(69)) { + ui.events[69].style.display = "block" + ui.events[69].style.left = ui.layout_xy[view.systematization][0] - 25 + "px" + ui.events[69].style.top = ui.layout_xy[view.systematization][1] - 25 + "px" } else { - document.getElementById("opp_hand_panel").classList.add("hide") + ui.events[69].style.display = "none" } -} -// POWER STRUGGLE HAND - document.getElementById("power_hand").replaceChildren() - - if (view.power_hand.length && view.is_pwr_struggle) { - document.getElementById("power_panel").classList.remove("hide") - for (let c of view.power_hand) { - let power_card = ui.power_cards[c] - document.getElementById("power_hand").appendChild(power_card); - power_card.classList.remove('discard_card') - if (view.valid_cards.includes(c)) { - power_card.classList.add('selected'); - } - } + if (view.persistent_events.includes(97)) { + ui.events[97].style.display = "block" + ui.events[97].style.left = ui.layout_xy[view.the_tyrant_is_gone][0] - 25 + "px" + ui.events[97].style.top = ui.layout_xy[view.the_tyrant_is_gone][1] - 25 + "px" } else { - document.getElementById("power_panel").classList.add("hide") + ui.events[97].style.display = "none" } -// CEAUSESCU + // EVENT REMINDER LIST + + ui.event_reminder_list.replaceChildren() + for (let id of box_events) + if (view.persistent_events.includes(id)) + ui.event_reminder_list.appendChild(ui.events[id]) + + // UPDATE INFLUENCE VALUES + for (let s = 1; s <= last_space; ++s) { + const demInfl = view.demInfl[s] + const comInfl = view.comInfl[s] + + if (demInfl - comInfl >= spaces[s].stability) + ui.dem_inf[s].className = "marker demInfl ctl v" + demInfl + else if (demInfl > 0) + ui.dem_inf[s].className = "marker demInfl v" + demInfl + else + ui.dem_inf[s].className = "marker demInfl hide" + + if (comInfl - demInfl >= spaces[s].stability) + ui.com_inf[s].className = "marker comInfl ctl v" + comInfl + else if (comInfl > 0) + ui.com_inf[s].className = "marker comInfl v" + comInfl + else + ui.com_inf[s].className = "marker comInfl hide" + } -if (view.ceausescu_cards && view.ceausescu_cards.length > 0 && view.is_pwr_struggle === true) { - document.getElementById("ceausescu_panel").classList.remove("hide") - for (let c of view.ceausescu_cards) { - let power_card = ui.power_cards[c] - document.getElementById("ceausescu_hand").appendChild(power_card); - power_card.classList.remove('discard_card') + // UPDATE COUNTRY MARKERS - } -} else { - document.getElementById("ceausescu_panel").classList.add("hide") -} + for (let i = 0; i < 6; ++i) + layout_country(i) -// SAMIZDAT CARD -if (view.samizdat > 0 ) { - let samizdat_card = ui.cards[view.samizdat] - document.getElementById("samizdat_panel").classList.remove("hide") - document.getElementById("samizdat_card").appendChild(samizdat_card) -} else { - document.getElementById("samizdat_panel").classList.add("hide") -} + // UPDATE CARD DISPLAYS -// UPDATE BOARD MARKERS - ui.turn.className = `t${view.turn}` - if (view.round_player === 'Democrat') { - ui.round.className = `dem-action-round-tracker r${view.round}` - } else { - ui.round.className = `com-action-round-tracker r${view.round}` - } - ui.stability.className = `s${view.stability}` - ui.dem_TST.className = `tst${view.dem_tst}` - ui.com_TST.className = `tst${view.com_tst}` - if (view.vp >= -20 && view.vp <= 20) { - ui.vp.className = `vp${view.vp}` - } else if (view.vp > 20) { - ui.vp.className = `vp21` - } else if (view.vp < -20) { - ui.vp.className = `vp-21` - } - -//console.log('strategy discard: ', view.strategy_discard) -//console.log('valid spaces: ', view.valid_spaces) - -//console.log('view.persistent_events', view.persistent_events) + ui.played_card.replaceChildren() + if (view.played_card > 0) + ui.played_card.appendChild(ui.cards[view.played_card]) -// UPDATE EVENT MARKERS ON THE BOARD + ui.samizdat_card.replaceChildren() + if (view.samizdat > 0) + ui.samizdat_card.appendChild(ui.cards[view.samizdat]) -for (let id of board_events) { - let marker = document.getElementById(`event_${id}`) - //console.log('event', id, marker) - if (view.persistent_events.includes(id)) { - marker.style.display = 'block' - } else { - marker.style.display = 'none' - } -} + ui.hand.replaceChildren() + for (let c of view.hand) + ui.hand.appendChild(ui.cards[c]) + ui.power_hand.replaceChildren() + if (view.power_hand) + for (let c of view.power_hand) + ui.hand.appendChild(ui.power_cards[c]) -// UPDATE EVENT MARKERS BELOW THE BOARD + ui.opp_hand.replaceChildren() + if (view.opp_hand) + for (let c of view.opp_hand) + ui.opp_hand.appendChild(ui.cards[c]) -for (let id of box_events) { - let marker = document.getElementById(`event_${id}`) - //console.log('event', id, marker) - if (view.persistent_events.includes(id)) { - marker.style.display = 'block' - } else { - marker.style.display = 'none' - } -} + // TODO: fix rules to set view.opp_power_hand + ui.opp_power_hand.replaceChildren() + if (view.opp_power_hand) + for (let c of view.opp_power_hand) + ui.opp_hand.appendChild(ui.power_cards[c]) + ui.ceausescu_hand.replaceChildren() + if (view.ceausescu_cards) + for (let c of view.ceausescu_cards) + ui.ceausescu_hand.appendChild(ui.power_cards[c]) -// CHECK WHETHER ANY EVENT MARKERS ARE SHOWING IN THE EVENTS BOX -box_events_showing = false -for (let id of box_events) { - if (view.persistent_events.includes(id)) { - box_events_showing = true; - } -/* - //Special check for events which are not true/false - if (view.persistent_events['foreign_currency_debt_burden'] !== '') { - aside_events_showing = true - } - if (view.persistent_events['stand_fast'] !== '') { - aside_events_showing = true - } - */ -} + ui.discard.replaceChildren() + for (let c of view.strategy_discard) + ui.discard.appendChild(ui.cards[c]) -if (box_events_showing) { - document.getElementById('events_panel').classList.remove("hide") -} else { - document.getElementById('events_panel').classList.add("hide") -} + ui.removed.replaceChildren() + for (let c of view.strategy_removed) + ui.discard.appendChild(ui.cards[c]) -let systematization = document.getElementById('event_69') -if (view.persistent_events.includes(69)) { - systematization.style.left = (spaces[view.systematization].box.x +20) + 'px'; - systematization.style.top = spaces[view.systematization].box.y + 'px'; -} + ui.table_cards.replaceChildren() + if (view.table_cards) + for (let c of view.table_cards) + ui.table_cards.appendChild(ui.cards[c]) -let tyrant = document.getElementById('event_97') -if (view.persistent_events.includes(97)) { - tyrant.style.left = (spaces[view.the_tyrant_is_gone].box.x - 41) + 'px'; - tyrant.style.top = (spaces[view.the_tyrant_is_gone].box.y + 23) + 'px'; -} else {tyrant.style.display = 'none'} + for (let e of action_register) + e.classList.toggle("action", is_action(e.my_action, e.my_id)) action_button("yes", "Yes") action_button("no", "No") @@ -696,7 +436,7 @@ if (view.persistent_events.includes(97)) { action_button("strike", "Strike") action_button("march", "March") action_button("rally", "Rally in the Square") - action_button("petition", "Petition") + action_button("petition", "Petition") action_button("bonus", "Calculate VP bonus") action_button("scoring", "Score country") action_button("retain", "Retain Power") @@ -704,9 +444,9 @@ if (view.persistent_events.includes(97)) { action_button("take", "Take Power") action_button("concede", "Concede") action_button("struggle", "Begin power struggle") - action_button("raise", "Raise the stakes") - action_button("draw", "Draw") - action_button("scoring", "Scoring") + action_button("raise", "Raise the stakes") + action_button("draw", "Draw") + action_button("scoring", "Scoring") action_button("event", "Event") action_button("opp_event", "Resolve opponent event") action_button("influence", "Place SPs") @@ -716,8 +456,6 @@ if (view.persistent_events.includes(97)) { action_button("done", "Done") action_button("end_round", "End Round") action_button("undo", "Undo") - -console.log('view.actions', view.actions) } // =========================== LOG FUNCTIONS ============================================== @@ -738,9 +476,8 @@ function sub_power_card_value(match, p1) { } function sub_space_name(match, p1) { - let x = p1 | 0 - let id = spaces[x].space_id - let name = spaces[x].name_unique + let id = p1 | 0 + let name = spaces[id].name_unique return `<span class="space_tip" onmouseenter="on_focus_space_tip(${id})" onmouseleave="on_blur_space_tip(${id})" onclick="on_click_space_tip(${id})">${name}</span>` } @@ -754,45 +491,32 @@ const die = { D3: '<span class="die white d3"></span>', D4: '<span class="die white d4"></span>', D5: '<span class="die white d5"></span>', - D6: '<span class="die white d6"></span>' + D6: '<span class="die white d6"></span>', } // =========================== VISUAL FUNCTIONS ==========================================# -function on_focus_card_tip(card_number) { - document.getElementById("tooltip").className = "card card_" + card_number +function on_focus_card_tip(card_number) { + document.getElementById("tooltip").className = "card event_" + card_number } -function on_blur_card_tip() { +function on_blur_card_tip() { document.getElementById("tooltip").classList = "card hide" } function on_focus_space_tip(id) { - space = document.getElementById(`space_${id}`) - space.classList.add("tip") -} - -function on_click_space_tip(id) { - space = document.getElementById(`space_${id}`) - scroll_into_view(space) + ui.spaces[id].classList.add("tip") } function on_blur_space_tip(id) { - space = document.getElementById(`space_${id}`) - space.classList.remove("tip") + ui.spaces[id].classList.remove("tip") } -function toggle_pieces() { - document.getElementById("pieces").classList.toggle("hide") +function on_click_space_tip(id) { + scroll_into_view(ui.spaces[id]) } - function toggle_discard() { - if (show_discard) { - show_discard = false - } else { - show_discard = true - } document.getElementById("discard_panel").classList.toggle("hide") } @@ -800,20 +524,118 @@ function toggle_removed() { document.getElementById("removed_panel").classList.toggle("hide") } -function check_dem_control(demInfl, comInfl, space) { - if ((demInfl - comInfl) >= space.stability) { - return true - } else{ false} -} - -function check_com_control(demInfl, comInfl, space) { - if ((comInfl - demInfl) >= space.stability) { - return true - } else{ false} -} - function find_country_index(country) { return countries.indexOf(country) } -create_ui() +// #region GENERATED LAYOUT DATA + +var LAYOUT = { + "Babes-Bolyai University": [958,1529,127,75], + "Berlin": [329,148,127,75], + "Bialystok": [1202,436,127,76], + "Brasov": [1339,1556,127,75], + "Bratislava": [539,1013,127,76], + "Brno": [521,904,127,76], + "Bucuresti": [1186,1837,127,76], + "Budapest": [809,1249,127,76], + "Bulgarian Writers": [838,2192,127,76], + "Burgas": [1289,2152,127,76], + "Bydgoszcz": [872,388,127,76], + "Catholic Church, Czechoslovakia": [692,1010,127,75], + "Catholic Church, Hungary": [409,1126,127,76], + "Catholic Church, Poland": [802,558,127,75], + "Ceske Budejovice": [260,765,127,77], + "Charles University": [491,677,128,76], + "Cluj-Napoca": [970,1429,127,76], + "Constanta": [1443,1925,127,76], + "Craiova": [977,1793,127,76], + "Czech Writers": [573,773,127,76], + "Debrecen": [1000,1192,127,76], + "Dresden": [343,479,127,76], + "Eotvos Lorand University": [658,1314,127,76], + "Erfurt": [38,455,127,76], + "Galati": [1409,1778,127,76], + "Gdansk": [896,277,127,76], + "German Writers": [81,239,127,76], + "Gyor": [560,1129,127,76], + "Halle": [231,357,127,75], + "Harghita/Covasna": [1186,1560,127,75], + "Hungarian Writers": [452,1322,127,76], + "Iasi": [1369,1395,127,76], + "Jagiellonian University": [870,867,127,76], + "Karl-Marx-Stadt": [184,492,127,75], + "Katowice": [733,723,127,76], + "Kosice": [995,1037,127,76], + "Krakow": [911,761,127,76], + "Leipzig": [387,379,127,76], + "Lodz": [959,620,127,76], + "Lublin": [1124,754,127,76], + "Lutheran Church": [391,271,127,76], + "Magdeburg": [79,352,127,75], + "Miskolc": [851,1146,127,76], + "Orthodox Church, Bulgaria": [1130,1956,127,76], + "Orthodox Church, Romania": [1094,1700,127,76], + "Ostrava": [673,868,127,75], + "Pecs": [626,1406,127,75], + "Pleven": [979,1948,127,76], + "Ploiesti": [1356,1671,127,76], + "Plovdiv": [987,2209,127,75], + "Plzen": [211,615,127,76], + "Polish Writers": [1051,883,127,75], + "Poznan": [671,452,127,76], + "Praha": [412,782,127,75], + "Presov": [844,1010,127,75], + "Razgrad": [1219,2057,127,76], + "Romanian Writers": [947,1625,127,75], + "Rostock": [299,53,127,76], + "Ruse": [1277,1956,127,76], + "Schwerin": [148,86,127,76], + "Sliven": [1144,2251,127,75], + "Sofia": [983,2098,127,76], + "Sofia University": [828,2095,127,76], + "Stara Zagora": [1133,2153,127,75], + "Szczecin": [574,263,127,75], + "Szeged": [812,1364,127,76], + "Szekesfehervar": [571,1223,127,75], + "Szombathely": [410,1224,127,76], + "Targu Mures": [1169,1443,127,76], + "Tatabanya": [706,1126,127,75], + "Timisoara": [767,1531,127,76], + "Varna": [1387,2051,127,76], + "Walter Ulbricht Academy": [234,240,127,76], + "Warszawa": [1032,490,127,75], + "Wroclaw": [595,565,127,75], + "action_1": [708,143,48,44], + "action_8": [1080,143,47,43], + "country_bulgaria": [915,1999,46,41], + "country_czechoslovakia": [463,624,44,39], + "country_east_germany": [560,160,43,37], + "country_hungary": [1034,1319,44,39], + "country_poland": [1188,292,44,39], + "country_romania": [1287,1349,44,39], + "event_solidarity_legalized": [779,270,44,43], + "event_the_wall": [222,179,40,41], + "tst_com_1": [53,2257,47,47], + "tst_com_7": [469,2257,47,47], + "tst_com_8": [556,2257,47,47], + "tst_dem_1": [53,2128,47,47], + "tst_dem_7": [469,2128,47,47], + "tst_dem_8": [556,2128,47,47], + "turn_1": [655,81,47,48], + "turn_10": [1133,80,48,48], + "ussr_1": [1381,1080,48,48], + "ussr_2": [1381,1134,48,48], + "ussr_3": [1381,1188,48,48], + "ussr_4": [1381,1243,48,48], + "ussr_5": [1381,1297,48,48], + "vp_0": [843,2425,55,51], + "vp_1": [883,2395,55,50], + "vp_19": [1440,2395,55,50], + "vp_2": [913,2455,56,51], + "vp_20": [1471,2455,55,51], + "vp_neg_1": [803,2455,56,51], + "vp_neg_19": [246,2456,55,50], + "vp_neg_2": [772,2395,56,51], + "vp_neg_20": [215,2395,55,51], +} diff --git a/rules.js b/rules.js index 877c4d8..6ce54dd 100644 --- a/rules.js +++ b/rules.js @@ -268,18 +268,13 @@ exports.view = function(state, player) { // === ACTIONS =========== function gen_action(action, argument) { -//console.log('gen_action called with ', action, ' and ', argument) if (argument === undefined) { - //console.log('argument undefined') view.actions[action] = 1 } else { - if (!(action in view.actions)) { - //console.log('push argument') + if (!(action in view.actions)) view.actions[action] = [] - } view.actions[action].push(argument) } - //console.log('view.actions: ', view.actions, 'view.actions[action]: ', view.actions[action]) } function gen_action_space(space){ @@ -9013,6 +9008,7 @@ states.vm_support_falters = { /* =================== EVENTS ================================ */ // #region GENERATED EVENT CODE + const CODE = [] CODE[1] = [ // Legacy of Martial Law* @@ -9875,43 +9871,44 @@ CODE[110] = [ // Malta Summit* [ vm_remove_opp_infl, 5 ], [ vm_return ], ] -// #endregion - -// ============= TIANANMEN SQUARE TRACK AWARDS ==================== -CODE[203] = [//Tiananmen Square space 3 award - [vm_tst_3], - [vm_return] -] -CODE[204] = [//Tiananmen Square space 4 award - [vm_valid_spaces_opponent], - [vm_tst_4], - [vm_return] +CODE[203] = [ // Tiananmen Square space 3 award + [ vm_tst_3 ], + [ vm_return ], ] -CODE[206] = [//Tiananmen Square space 6 - [vm_valid_spaces_sc], - [vm_tst_6], - [vm_return] + +CODE[204] = [ // Tiananmen Square space 4 award + [ vm_valid_spaces_opponent ], + [ vm_tst_4 ], + [ vm_return ], ] -CODE[208] = [//Tiananmen Square space 8 event - [vm_tst_8], - [vm_return] + +CODE[206] = [ // Tiananmen Square space 6 + [ vm_valid_spaces_sc ], + [ vm_tst_6 ], + [ vm_return ], ] -// ============= POWER STRUGGLE WILDCARDS ========================= +CODE[208] = [ // Tiananmen Square space 8 event + [ vm_tst_8 ], + [ vm_return ], +] -CODE[349] = [//Scare Tactics - [vm_scare_tactics], - [vm_valid_spaces_country_opp], - [vm_prompt, ()=>` from ${country_name(game.vm_active_country)}`], - [vm_remove_opp_infl, 1], - [vm_return] +CODE[349] = [ // Scare Tactics + [ vm_scare_tactics ], + [ vm_valid_spaces_country_opp ], + [ vm_prompt, ()=>` from ${country_name(game.vm_active_country)}` ], + [ vm_remove_opp_infl, 1 ], + [ vm_return ], ] -CODE[350] = [//Support Surges - [vm_support_surges], - [vm_return] + +CODE[350] = [ // Support Surges + [ vm_support_surges ], + [ vm_return ], ] -CODE[351] = [//Support Falters - [vm_support_falters], - [vm_return] + +CODE[351] = [ // Support Falters + [ vm_support_falters ], + [ vm_return ], ] +// #endregion diff --git a/tools/colors.js b/tools/colors.js new file mode 100644 index 0000000..f8f7ace --- /dev/null +++ b/tools/colors.js @@ -0,0 +1,110 @@ +"use strict" + +function rgb_from_any(color) { + switch (color.mode) { + case "rgb": return color + case "lrgb": return rgb_from_lrgb(color) + case "oklab": return rgb_from_oklab(color) + } +} + +function lrgb_from_any(color) { + switch (color.mode) { + case "rgb": return lrgb_from_rgb(color) + case "lrgb": return color + case "oklab": return lrgb_from_oklab(color) + } +} + +function oklab_from_any(color) { + switch (color.mode) { + case "rgb": return oklab_from_rgb(color) + case "lrgb": return oklab_from_lrgb(color) + case "oklab": return color + } +} + +function format_hex(color) { + let {r, g, b} = rgb_from_any(color) + let adj = 1 + r = Math.round(Math.max(0, Math.min(1, r)) * 255) + g = Math.round(Math.max(0, Math.min(1, g)) * 255) + b = Math.round(Math.max(0, Math.min(1, b)) * 255) + let x = (r << 16) | (g << 8) | b + return "#" + x.toString(16).padStart(6, "0") +} + +function parse_hex(str) { + let x = parseInt(str.substring(1), 16) + return { + mode: "rgb", + r: ((x >> 16) & 255) / 255.0, + g: ((x >> 8) & 255) / 255.0, + b: ((x) & 255) / 255.0 + } +} + +function lrgb_from_rgb({ r, g, b }) { + function to_linear(c) { + let ac = Math.abs(c) + if (ac < 0.04045) + return c / 12.92 + return (Math.sign(c) || 1) * Math.pow((ac + 0.055) / 1.055, 2.4) + } + return { + mode: "lrgb", + r: to_linear(r), + g: to_linear(g), + b: to_linear(b) + } +} + +function rgb_from_lrgb({ r, g, b }) { + function from_linear(c) { + let ac = Math.abs(c) + if (ac > 0.0031308) + return (Math.sign(c) || 1) * (1.055 * Math.pow(ac, 1 / 2.4) - 0.055) + return c * 12.92 + } + return { + mode: "rgb", + r: from_linear(r), + g: from_linear(g), + b: from_linear(b) + } +} + +function oklab_from_lrgb({ r, g, b }) { + let L = Math.cbrt(0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b) + let M = Math.cbrt(0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b) + let S = Math.cbrt(0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b) + return { + mode: "oklab", + l: 0.2104542553 * L + 0.793617785 * M - 0.0040720468 * S, + a: 1.9779984951 * L - 2.428592205 * M + 0.4505937099 * S, + b: 0.0259040371 * L + 0.7827717662 * M - 0.808675766 * S + } +} + +function lrgb_from_oklab({ l, a, b }) { + let L = Math.pow(l + 0.3963377774 * a + 0.2158037573 * b, 3) + let M = Math.pow(l - 0.1055613458 * a - 0.0638541728 * b, 3) + let S = Math.pow(l - 0.0894841775 * a - 1.291485548 * b, 3) + return { + mode: "lrgb", + r: +4.0767416621 * L - 3.3077115913 * M + 0.2309699292 * S, + g: -1.2684380046 * L + 2.6097574011 * M - 0.3413193965 * S, + b: -0.0041960863 * L - 0.7034186147 * M + 1.707614701 * S + } +} + +function oklab_from_rgb(rgb) { + return oklab_from_lrgb(lrgb_from_rgb(rgb)) +} + +function rgb_from_oklab(oklab) { + return rgb_from_lrgb(lrgb_from_oklab(oklab)) +} + +if (typeof module === "object") + module.exports = { format_hex, parse_hex, rgb_from_any, lrgb_from_any, oklab_from_any } diff --git a/tools/gencode.js b/tools/gencode.js new file mode 100644 index 0000000..f2e3a26 --- /dev/null +++ b/tools/gencode.js @@ -0,0 +1,106 @@ +"use strict" + +let fs = require("fs") + +let pc = 0 + +function tokenize(s) { + let list = [] + let p = 0, + n = s.length + while (p < n) { + while (p < n && s[p] === " ") + ++p + if (p < n) { + let m = p + while (p < n && s[p] !== " ") { + let q = s[p++] + switch (q) { + case "(": + case "[": + case "{": + for (let x = 1; p < n && x > 0; ++p) { + switch (s[p]) { + case "(": + case "[": + case "{": + ++x + break + case ")": + case "]": + case "}": + --x + break + } + } + break + case '"': + case "'": + case "`": + while (p < n && s[p] !== q) + ++p + break + } + } + list.push(s.substring(m, p)) + } + } + return list +} + +function emit(line) { + ++pc + line[0] = "vm_" + line[0] + for (let i = 1; i < line.length; ++i) { + if (typeof line[i] === "string") { + if (line[i] === "all") + line[i] = 999 + if (line[i][0] === "(" && !line[i].match(/\)=>/)) + line[i] = "()=>" + line[i] + if (line[i][0] === "`") + line[i] = "()=>" + line[i] + } + } + console.log("\t[ " + line.join(", ") + " ],") +} + +console.log("const CODE = []") +let first = false + +for (let line of fs.readFileSync("events.txt", "utf-8").split("\n")) { + line = line.trim() + if (line.length === 0 || line[0] === "#") + continue + if (line === "EOF") + break + line = tokenize(line) + switch (line[0]) { + case "CARD": + if (first++) { + emit(["return"]) + console.log("]") + } + console.log("") + console.log("CODE[" + line[1] + "] = [ // " + line.slice(3).join(" ")) + break + + case "log": + case "prompt": + emit([ line[0], line.slice(1).join(" ") ]) + break + + case "asm": + case "if": + case "while": + emit([ line[0], "()=>" + line.slice(1).join(" ") ]) + break + + default: + emit(line) + break + } +} + +emit(["return"]) +console.log("]") +console.log("// #endregion") diff --git a/tools/gencolors.js b/tools/gencolors.js new file mode 100644 index 0000000..5904741 --- /dev/null +++ b/tools/gencolors.js @@ -0,0 +1,78 @@ +const { parse_hex, format_hex, lrgb_from_any, rgb_from_any, oklab_from_any } = require("./colors.js") + +const white = "#ffffff" +const black = "#000000" + +function lerp(a, b, n) { + return a + (b - a) * n +} + +function blend(a, b, n) { + a = lrgb_from_any(parse_hex(a)) + b = lrgb_from_any(parse_hex(b)) + return format_hex({ + mode: "lrgb", + r: lerp(a.r, b.r, n), + g: lerp(a.g, b.g, n), + b: lerp(a.b, b.b, n) + }) +} + +function multiply_luminance(hex, m) { + let oklab = oklab_from_any(parse_hex(hex)) + oklab.l = Math.max(0, Math.min(1, oklab.l * m)) + return format_hex(oklab) +} + +function add_luminance(hex, m) { + let oklab = oklab_from_any(parse_hex(hex)) + oklab.l = Math.max(0, Math.min(1, oklab.l + m)) + return format_hex(oklab) +} + +function make_3d_colors(base) { + return [ + base, + multiply_luminance(base, 0.9), + multiply_luminance(base, 0.8), + multiply_luminance(base, 0.7), + multiply_luminance(base, 0.4) + ] +} + +function make_2d_colors(base) { + return [ + base, + multiply_luminance(base, 1.2), + multiply_luminance(base, 0.8), + multiply_luminance(base, 0.4) + ] +} + +function make_2d_colors_add(base) { + return [ + base, + add_luminance(base, 0.2), + add_luminance(base, -0.2), + add_luminance(base, -0.5), + ] +} + +function print(x) { + console.log(x) +} + +function gencss(color, sel) { + let [ bg, hi, lo, sh ] = make_2d_colors(color) + print(`${sel} { background-color: ${color}; border-color: ${hi} ${lo} ${lo} ${hi}; box-shadow: 0 0 0 1px ${sh}, 1px 2px 4px #0008; }`) +} + +gencss("#bbbbbb", ".marker") +gencss("#c4e2f6", ".demInfl.ctl") +gencss("#c1272d", ".comInfl.ctl") +gencss("#147fc0", "#marker_action_round.com") +gencss("#c1272d", "#marker_action_round.dem") +gencss("#fadb04", "#marker_vp, #marker_turn") +gencss("#f26649", "#marker_com_tst") +gencss("#c4e2f4", "#marker_dem_tst") + diff --git a/tools/genlayout.js b/tools/genlayout.js new file mode 100644 index 0000000..37f419d --- /dev/null +++ b/tools/genlayout.js @@ -0,0 +1,37 @@ +const fs = require("fs") + +let boxes = [] +let mode, name, x, y, w, h + +function flush() { + if (mode === 'rect') { + boxes[name] = [ x |0, y |0, w |0, h |0 ] + } + x = y = w = h = 0 + name = null +} + +for (let line of fs.readFileSync("tools/layout.svg", "utf-8").split("\n")) { + line = line.trim() + if (line.startsWith("<rect")) { + flush() + mode = "rect" + x = y = w = h = 0 + } else if (line.startsWith('x="')) + x = Math.round(Number(line.split('"')[1])) + else if (line.startsWith('y="')) + y = Math.round(Number(line.split('"')[1])) + else if (line.startsWith('width="')) + w = Math.round(Number(line.split('"')[1])) + else if (line.startsWith('height="')) + h = Math.round(Number(line.split('"')[1])) + else if (line.startsWith('inkscape:label="')) + name = line.split('"')[1] +} + +flush() + +console.log("var LAYOUT = {") +for (let key of Object.keys(boxes).sort()) + console.log("\t\"" + key + "\": " + JSON.stringify(boxes[key]) + ",") +console.log("}") diff --git a/tools/layout.svg b/tools/layout.svg new file mode 100644 index 0000000..36c6045 --- /dev/null +++ b/tools/layout.svg @@ -0,0 +1,920 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="1650" + height="2550" + version="1.1" + id="svg6" + sodipodi:docname="layout.svg" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <metadata + id="metadata12"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs10" /> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="640" + inkscape:window-height="480" + id="namedview8" + showgrid="false" + inkscape:zoom="1" + inkscape:cx="1183.328" + inkscape:cy="683.50131" + inkscape:current-layer="svg6" + inkscape:snap-grids="true" + inkscape:document-rotation="0"> + <inkscape:grid + type="xygrid" + id="grid14" /> + </sodipodi:namedview> + <image + sodipodi:absref="/home/tor/src/rally/public/1989-dawn-of-freedom/map75.png" + xlink:href="../map75.png" + style="display:inline;opacity:1" + id="image2" + sodipodi:insensitive="true" + image-rendering="pixelated" + height="2550" + width="1650" + y="0" + x="0" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect16" + width="127" + height="76" + x="148" + y="86" + inkscape:label="Schwerin" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect18" + width="127" + height="76" + x="299" + y="53" + inkscape:label="Rostock" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect22" + width="127" + height="75" + x="329" + y="148" + inkscape:label="Berlin" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect26" + width="127" + height="76" + x="81" + y="239" + inkscape:label="German Writers" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect28" + width="127" + height="76" + x="234" + y="240" + inkscape:label="Walter Ulbricht Academy" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect30" + width="127" + height="76" + x="391" + y="271" + inkscape:label="Lutheran Church" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect32" + width="127" + height="75" + x="574" + y="263" + inkscape:label="Szczecin" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect36" + width="127" + height="76" + x="896" + y="277" + inkscape:label="Gdansk" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect38" + width="127" + height="75" + x="79" + y="352" + inkscape:label="Magdeburg" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect40" + width="127" + height="75" + x="231" + y="357" + inkscape:label="Halle" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect42" + width="127" + height="76" + x="38" + y="455" + inkscape:label="Erfurt" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect44" + width="127" + height="75" + x="184" + y="492" + inkscape:label="Karl-Marx-Stadt" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect46" + width="127" + height="76" + x="343" + y="479" + inkscape:label="Dresden" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect48" + width="127" + height="76" + x="211" + y="615" + inkscape:label="Plzen" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect50" + width="128" + height="76" + x="491" + y="677" + inkscape:label="Charles University" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect54" + width="127" + height="75" + x="595" + y="565" + inkscape:label="Wroclaw" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect56" + width="127" + height="75" + x="802" + y="558" + inkscape:label="Catholic Church, Poland" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect58" + width="127" + height="76" + x="959" + y="620" + inkscape:label="Lodz" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect60" + width="127" + height="75" + x="1032" + y="490" + inkscape:label="Warszawa" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect62" + width="127" + height="76" + x="671" + y="452" + inkscape:label="Poznan" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect67" + width="127" + height="76" + x="872" + y="388" + inkscape:label="Bydgoszcz" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect71" + width="127" + height="76" + x="1202" + y="436" + inkscape:label="Bialystok" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect75" + width="127" + height="77" + x="260" + y="765" + inkscape:label="Ceske Budejovice" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect77" + width="127" + height="75" + x="412" + y="782" + inkscape:label="Praha" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect79" + width="127" + height="76" + x="573" + y="773" + inkscape:label="Czech Writers" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect81" + width="127" + height="76" + x="733" + y="723" + inkscape:label="Katowice" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect83" + width="127" + height="76" + x="911" + y="761" + inkscape:label="Krakow" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect85" + width="127" + height="76" + x="1124" + y="754" + inkscape:label="Lublin" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect87" + width="127" + height="76" + x="870" + y="867" + inkscape:label="Jagiellonian University" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect89" + width="127" + height="75" + x="1051" + y="883" + inkscape:label="Polish Writers" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect91" + width="127" + height="75" + x="673" + y="868" + inkscape:label="Ostrava" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect97" + width="127" + height="76" + x="521" + y="904" + inkscape:label="Brno" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect99" + width="127" + height="76" + x="539" + y="1013" + inkscape:label="Bratislava" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect101" + width="127" + height="75" + x="692" + y="1010" + inkscape:label="Catholic Church, Czechoslovakia" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect103" + width="127" + height="75" + x="844" + y="1010" + inkscape:label="Presov" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect105" + width="127" + height="76" + x="995" + y="1037" + inkscape:label="Kosice" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect109" + width="127" + height="76" + x="409" + y="1126" + inkscape:label="Catholic Church, Hungary" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect111" + width="127" + height="76" + x="560" + y="1129" + inkscape:label="Gyor" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect113" + width="127" + height="75" + x="706" + y="1126" + inkscape:label="Tatabanya" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect115" + width="127" + height="76" + x="851" + y="1146" + inkscape:label="Miskolc" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect117" + width="127" + height="76" + x="1000" + y="1192" + inkscape:label="Debrecen" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect119" + width="127" + height="76" + x="410" + y="1224" + inkscape:label="Szombathely" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect121" + width="127" + height="75" + x="571" + y="1223" + inkscape:label="Szekesfehervar" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect123" + width="127" + height="76" + x="809" + y="1249" + inkscape:label="Budapest" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect129" + width="127" + height="76" + x="812" + y="1364" + inkscape:label="Szeged" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect131" + width="127" + height="76" + x="658" + y="1314" + inkscape:label="Eotvos Lorand University" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect133" + width="127" + height="76" + x="452" + y="1322" + inkscape:label="Hungarian Writers" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect135" + width="127" + height="75" + x="626" + y="1406" + inkscape:label="Pecs" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect137" + width="127" + height="76" + x="1369" + y="1395" + inkscape:label="Iasi" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect139" + width="127" + height="76" + x="1169" + y="1443" + inkscape:label="Targu Mures" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect141" + width="127" + height="76" + x="970" + y="1429" + inkscape:label="Cluj-Napoca" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect143" + width="127" + height="76" + x="767" + y="1531" + inkscape:label="Timisoara" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect145" + width="127" + height="75" + x="947" + y="1625" + inkscape:label="Romanian Writers" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect147" + width="127" + height="75" + x="958" + y="1529" + inkscape:label="Babes-Bolyai University" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect149" + width="127" + height="75" + x="1186" + y="1560" + inkscape:label="Harghita/Covasna" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect151" + width="127" + height="75" + x="1339" + y="1556" + inkscape:label="Brasov" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect153" + width="127" + height="76" + x="1356" + y="1671" + inkscape:label="Ploiesti" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect155" + width="127" + height="76" + x="1409" + y="1778" + inkscape:label="Galati" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect157" + width="127" + height="76" + x="1186" + y="1837" + inkscape:label="Bucuresti" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect159" + width="127" + height="76" + x="977" + y="1793" + inkscape:label="Craiova" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect161" + width="127" + height="76" + x="1094" + y="1700" + inkscape:label="Orthodox Church, Romania" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect163" + width="127" + height="76" + x="387" + y="379" + inkscape:label="Leipzig" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect165" + width="127" + height="76" + x="979" + y="1948" + inkscape:label="Pleven" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect167" + width="127" + height="76" + x="1130" + y="1956" + inkscape:label="Orthodox Church, Bulgaria" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect169" + width="127" + height="76" + x="1277" + y="1956" + inkscape:label="Ruse" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect171" + width="127" + height="76" + x="1443" + y="1925" + inkscape:label="Constanta" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect175" + width="127" + height="76" + x="828" + y="2095" + inkscape:label="Sofia University" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect177" + width="127" + height="76" + x="983" + y="2098" + inkscape:label="Sofia" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect179" + width="127" + height="75" + x="1133" + y="2153" + inkscape:label="Stara Zagora" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect181" + width="127" + height="76" + x="1289" + y="2152" + inkscape:label="Burgas" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect183" + width="127" + height="76" + x="1219" + y="2057" + inkscape:label="Razgrad" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect185" + width="127" + height="76" + x="1387" + y="2051" + inkscape:label="Varna" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect187" + width="127" + height="75" + x="1144" + y="2251" + inkscape:label="Sliven" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect189" + width="127" + height="75" + x="987" + y="2209" + inkscape:label="Plovdiv" /> + <rect + style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect191" + width="127" + height="76" + x="838" + y="2192" + inkscape:label="Bulgarian Writers" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect207" + width="48" + height="48" + x="1381" + y="1080" + inkscape:label="ussr_1" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect209" + width="48" + height="48" + x="1381" + y="1134" + inkscape:label="ussr_2" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect211" + width="48" + height="48" + x="1381" + y="1188" + inkscape:label="ussr_3" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect213" + width="48" + height="48" + x="1381" + y="1243" + inkscape:label="ussr_4" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect215" + width="48" + height="48" + x="1381" + y="1297" + inkscape:label="ussr_5" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect217" + width="47" + height="47" + x="53" + y="2128" + inkscape:label="tst_dem_1" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect229" + width="47" + height="47" + x="469" + y="2128" + inkscape:label="tst_dem_7" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect231" + width="47" + height="47" + x="556" + y="2128" + inkscape:label="tst_dem_8" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect236" + width="47" + height="47" + x="53" + y="2257" + inkscape:label="tst_com_1" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect248" + width="47" + height="47" + x="469" + y="2257" + inkscape:label="tst_com_7" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect250" + width="47" + height="47" + x="556" + y="2257" + inkscape:label="tst_com_8" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect252" + width="55" + height="51" + x="215" + y="2395" + inkscape:label="vp_neg_20" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect254" + width="55" + height="50" + x="246" + y="2456" + inkscape:label="vp_neg_19" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect256" + width="55" + height="51" + x="843" + y="2425" + inkscape:label="vp_0" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect258" + width="55" + height="50" + x="883" + y="2395" + inkscape:label="vp_1" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect260" + width="55" + height="50" + x="1440" + y="2395" + inkscape:label="vp_19" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect262" + width="55" + height="51" + x="1471" + y="2455" + inkscape:label="vp_20" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect264" + width="56" + height="51" + x="913" + y="2455" + inkscape:label="vp_2" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect266" + width="56" + height="51" + x="803" + y="2455" + inkscape:label="vp_neg_1" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect268" + width="56" + height="51" + x="772" + y="2395" + inkscape:label="vp_neg_2" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect24" + width="40" + height="41" + x="222" + y="179" + inkscape:label="event_the_wall" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect34" + width="44" + height="43" + x="779" + y="270" + inkscape:label="event_solidarity_legalized" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect193" + width="47" + height="48" + x="655" + y="81" + inkscape:label="turn_1" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect195" + width="48" + height="44" + x="708" + y="143" + inkscape:label="action_1" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect203" + width="48" + height="48" + x="1133" + y="80" + inkscape:label="turn_10" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect205" + width="47" + height="43" + x="1080" + y="143" + inkscape:label="action_8" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect52" + width="44" + height="39" + x="463" + y="624" + inkscape:label="country_czechoslovakia" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect69" + width="44" + height="39" + x="1188" + y="292" + inkscape:label="country_poland" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect73" + width="43" + height="37" + x="560" + y="160" + inkscape:label="country_east_germany" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect125" + width="44" + height="39" + x="1034" + y="1319" + inkscape:label="country_hungary" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect127" + width="44" + height="39" + x="1287" + y="1349" + inkscape:label="country_romania" /> + <rect + style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276" + id="rect173" + width="46" + height="41" + x="915" + y="1999" + inkscape:label="country_bulgaria" /> +</svg> -- cgit v1.2.3 From af8119ac8f66aa81277c307ebc2e4be519219191 Mon Sep 17 00:00:00 2001 From: Tor Andersson <tor@ccxvii.net> Date: Sun, 27 Oct 2024 00:58:11 +0200 Subject: Update favicon. --- favicon.png | Bin 10723 -> 0 bytes images/Hammer_and_sickle.svg | 5 +++++ images/favicon_com.svg | 5 +++++ images/favicon_dem.svg | 39 +++++++++++++++++++++++++++++++++++++++ play.html | 2 +- 5 files changed, 50 insertions(+), 1 deletion(-) delete mode 100644 favicon.png create mode 100644 images/Hammer_and_sickle.svg create mode 100644 images/favicon_com.svg create mode 100644 images/favicon_dem.svg (limited to 'images') diff --git a/favicon.png b/favicon.png deleted file mode 100644 index 7431f53..0000000 Binary files a/favicon.png and /dev/null differ diff --git a/images/Hammer_and_sickle.svg b/images/Hammer_and_sickle.svg new file mode 100644 index 0000000..4aa6dd0 --- /dev/null +++ b/images/Hammer_and_sickle.svg @@ -0,0 +1,5 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="600" height="600"> +<path fill="#c00" d="M0 0h600v600H0z"/> +<path fill="gold" d="m157.543 922.363-16.971 16.971-45.256 45.254-56.571 56.57 62.227 62.225 56.571-56.568 299.828 299.812a32 32 0 0 0 45.256 0 32 32 0 0 0 0-45.254l-299.826-299.814 16.971-16.971 50.915-50.91z" transform="translate(43 -799)"/> +<path fill="gold" d="M255.989 844s168.008 128 168.008 256c0 64-56.003 136-152.007 136-64.003 0-104.241-47.764-104.241-47.764l-11.313 11.313a16 16 0 0 0-22.628 0 16 16 0 0 0-2.48 3.223 32 32 0 0 0-31.463 8.091 32 32 0 0 0-9.331 21.545c-25.432 13.753-67.565 40.575-86.27 75.592l.03.029a32 32 0 0 0-.03 31.971 32 32 0 0 0 43.715 11.713c35.026-18.708 61.855-60.852 75.605-86.281a32 32 0 0 0 21.537-9.315 32 32 0 0 0 7.932-13.201C177.569 1265.97 224.497 1300 287.99 1300c96.005 0 200.01-72 200.01-200 0-160-232.011-256-232.011-256" transform="translate(43 -799)"/> +</svg> diff --git a/images/favicon_com.svg b/images/favicon_com.svg new file mode 100644 index 0000000..9f9cc3b --- /dev/null +++ b/images/favicon_com.svg @@ -0,0 +1,5 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="56.693" height="56.693"> +<path fill="#bf2329" stroke-width="1.33333" d="M56.693 49.135c0 4.157-3.402 7.558-7.558 7.558H7.559C3.403 56.693 0 53.292 0 49.135V7.56C0 3.403 3.403 0 7.559 0h41.576c4.156 0 7.558 3.403 7.558 7.56z"/> +<path fill="#f14d3e" stroke-width="1.33333" d="m15.776 26.877-4.195-4.024 9.55-9.549 6.896 1.273-5.411 5.518S48.01 44.104 49.07 45.27s.069 2.412-.462 3.046c-.53.639-1.921 1.454-2.993.394-1.143-1.126-25.419-26.14-25.419-26.14Z"/> +<path fill="#f14d3e" stroke-width="1.33333" d="M15.765 35.833s10.248 5.45 16.268 4.802c6.02-.65 11.714-3.5 11.47-14.482-.244-10.978-15.538-20.7-15.538-20.7s21.07 5.328 21.556 22.043c.408 13.96-8.052 19.199-16.592 18.792S16.496 38.76 16.496 38.76l-.65.57.023.046s.642 1.343.114 1.95c-1.006 1.16-1.939-.067-2.46.474-.52.538-1.572 4.027-3.17 5.596-1.596 1.567-3.029 2.192-4.104 1.655l-.424-.339c-.666-1-.221-2.5 1.138-4.276 1.361-1.777 4.693-3.25 5.164-3.833s-.86-1.36.166-2.497c.542-.598 1.951-.128 1.951-.128z"/> +</svg> diff --git a/images/favicon_dem.svg b/images/favicon_dem.svg new file mode 100644 index 0000000..d91fcc7 --- /dev/null +++ b/images/favicon_dem.svg @@ -0,0 +1,39 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="56.693" height="56.693"> +<path fill="#397dc6" stroke-width="1.33333" d="M56.693 49.135c0 4.157-3.401 7.558-7.56 7.558H7.56c-4.159 0-7.56-3.401-7.56-7.558V7.56C0 3.403 3.401 0 7.56 0h41.573c4.159 0 7.56 3.403 7.56 7.56z"/> +<path fill="#c9e7f6" d="M12.596 23.901c1.639 1.472 2.416 3.67 3.388 5.69.445.925 1.07 1.758 1.413 2.669-2.305.21-2.298 2.644-2.6 4.485-.36 2.218-2.225 3.042-2.906 4.956-.65 1.82 1.081 4.32 1.778 6.002.891 2.136 1.495 3.628 3.011 5.28a105 105 0 0 0 2.621 2.732c.267.269 22.207.226 22.088-.06-1.252-3.046-1.738-6.672-2.432-9.847-.445-2.043-1.148-4.388-2.261-6.273-1.168-1.98-2.559-3.516-3.364-5.728-1.484-4.078-2.361-8.171-2.93-12.38-.285-2.111-.091-4.215-.514-6.304-.415-2.051-.717-4.036-1.024-6.127-.148-1.019-.599-2.116-.844-3.11-.252-1.029-.244-2.2-.763-3.162-.966-1.796-3.573-1.921-4.641-.18-1.115 1.816-.088 4.136.141 6.02.256 2.103.69 4.113.714 6.277.02 1.902-.115 4.058.094 5.927.162 1.419 1.703 6.29-.33 7.019-1.944.696-4.043-5.71-5.12-6.88-1.446-1.576-2.592-3.17-3.896-4.872-.659-.86-1.704-1.495-2.375-2.374-.636-.833-1.057-1.742-1.69-2.556-1.19-1.526-2.586-3.532-4.771-2.912-3.268.93-1.066 3.027-.068 4.627 1.21 1.936 2.172 4.095 3.24 6.1 1.189 2.241 2.172 3.303 4.041 4.981"/> +<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M12.596 23.901c1.639 1.472 2.416 3.67 3.388 5.69.445.925 1.07 1.758 1.413 2.669-2.305.21-2.298 2.644-2.6 4.485-.36 2.218-2.225 3.042-2.906 4.956-.65 1.82 1.081 4.32 1.778 6.002.891 2.136 1.495 3.628 3.011 5.28a105 105 0 0 0 2.621 2.732c.267.269 22.207.226 22.088-.06-1.252-3.046-1.738-6.672-2.432-9.847-.445-2.043-1.148-4.388-2.261-6.273-1.168-1.98-2.559-3.516-3.364-5.728-1.484-4.078-2.361-8.171-2.93-12.38-.285-2.111-.091-4.215-.514-6.304-.415-2.051-.717-4.036-1.024-6.127-.148-1.019-.599-2.116-.844-3.11-.252-1.029-.244-2.2-.763-3.162-.966-1.796-3.573-1.921-4.641-.18-1.115 1.816-.088 4.136.141 6.02.256 2.103.69 4.113.714 6.277.02 1.902-.115 4.058.094 5.927.162 1.419 1.703 6.29-.33 7.019-1.944.696-4.043-5.71-5.12-6.88-1.446-1.576-2.592-3.17-3.896-4.872-.659-.86-1.704-1.495-2.375-2.374-.636-.833-1.057-1.742-1.69-2.556-1.19-1.526-2.586-3.532-4.771-2.912-3.268.93-1.066 3.027-.068 4.627 1.21 1.936 2.172 4.095 3.24 6.1 1.189 2.241 2.172 3.303 4.041 4.981Z"/> +<path fill="#c9e7f6" d="M22.067 43.815c.028.964 2.948 4.393 3.92 4.742.95.343 2.18-.334 2.734-1.09.762-1.034.252-1.574-.064-2.687"/> +<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M22.067 43.815c.028.964 2.948 4.393 3.92 4.742.95.343 2.18-.334 2.734-1.09.762-1.034.252-1.574-.064-2.687"/> +<path fill="#c9e7f6" d="M22.11 36.904c-1.137-2.36-2.629-4.552-4.99-4.643"/> +<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M22.11 36.904c-1.137-2.36-2.629-4.552-4.99-4.643"/> +<path fill="#c9e7f6" d="M17.435 39.92c-.864-.35-1.984-2.365-2.672-3.004"/> +<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M17.435 39.92c-.864-.35-1.984-2.365-2.672-3.004"/> +<path fill="#c9e7f6" d="M13.153 45.347c1.788.902 4.271 1.132 6.227 2.028 1.33.612 4.64 3.029 5.283.246"/> +<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M13.153 45.347c1.788.902 4.271 1.132 6.227 2.028 1.33.612 4.64 3.029 5.283.246"/> +<path fill="#c9e7f6" d="M26.685 48.64c-.194 1.553 1.607 5.475 3.056 6.033"/> +<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M26.685 48.64c-.194 1.553 1.607 5.475 3.056 6.033"/> +<path fill="#c9e7f6" d="M36.363 53.787c1.52-.763 1.7-3.222 1.734-4.663"/> +<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M36.363 53.787c1.52-.763 1.7-3.222 1.734-4.663"/> +<path fill="#c9e7f6" d="M24.767 44.97c.044-.105-.142-.3.06-.206.232 1.135.497 1.916 1.656 1.864 1.346-.06 1.734-1.053 1.373-1.921"/> +<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M24.767 44.97c.044-.105-.142-.3.06-.206.232 1.135.497 1.916 1.656 1.864 1.346-.06 1.734-1.053 1.373-1.921"/> +<path fill="#c9e7f6" d="M23.027 45.807c-.366.088-.774.366-1.094.548.378 1.145 1.726 1.873 2.794 1.082"/> +<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M23.027 45.807c-.366.088-.774.366-1.094.548.378 1.145 1.726 1.873 2.794 1.082"/> +<path fill="#c9e7f6" d="M9.147 16.643c.71-.547 1.516-.948 2.185-1.51"/> +<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M9.147 16.643c.71-.547 1.516-.948 2.185-1.51"/> +<path fill="#c9e7f6" d="M23.459 9.145c.205.456 3.172-.005 3.95-.062"/> +<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M23.459 9.145c.205.456 3.172-.005 3.95-.062"/> +<path fill="#c9e7f6" d="M24.967 15.467c.777.642 2.55.461 3.393.05"/> +<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M24.967 15.467c.777.642 2.55.461 3.393.05"/> +<path fill="#c9e7f6" d="M12.273 22.184c.827-.956 2.439-1.7 3.438-2.725"/> +<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M12.273 22.184c.827-.956 2.439-1.7 3.438-2.725"/> +<path fill="#c9e7f6" d="M15.327 48.59c-.05-.018-.378 0-.2-.058.706-.39 1.701-1.087 2.141-1.641"/> +<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M15.327 48.59c-.05-.018-.378 0-.2-.058.706-.39 1.701-1.087 2.141-1.641"/> +<path fill="#c9e7f6" d="M28.292 32.245c.01 1.31-.49 2.995-.867 4.248"/> +<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M28.292 32.245c.01 1.31-.49 2.995-.867 4.248"/> +<path fill="#c9e7f6" d="M35.592 39.455c3.513.042 1.235 6.358.215 6.176"/> +<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M35.592 39.455c3.513.042 1.235 6.358.215 6.176"/> +<path fill="#c9e7f6" d="M33.703 37.757c-1.046 1.09-4.423.055-5.642-.492-1.912-.86-3.79-1.188-5.872-.586-1.685.488-4.242 1.362-4.461 3.44-.233 2.222 2.476 3.273 4.197 3.726 3.288.87 6.608.776 9.867 1.724"/> +<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M33.703 37.757c-1.046 1.09-4.423.055-5.642-.492-1.912-.86-3.79-1.188-5.872-.586-1.685.488-4.242 1.362-4.461 3.44-.233 2.222 2.476 3.273 4.197 3.726 3.288.87 6.608.776 9.867 1.724"/> +<path fill="#c9e7f6" d="M0 0c-.251-1.043-.621-1.581-1.709-1.516-.864.051-1.969.639-1.608 1.67.739 2.116 4.618 1.012 2.745-1.349" transform="matrix(1.33333 0 0 -1.33333 23.719 40.57)"/> +<path fill="none" stroke="#34699f" stroke-width=".75" d="M0 0c-.251-1.043-.621-1.581-1.709-1.516-.864.051-1.969.639-1.608 1.67.739 2.116 4.618 1.012 2.745-1.349" transform="matrix(1.33333 0 0 -1.33333 23.719 40.57)"/> +</svg> diff --git a/play.html b/play.html index f510ba0..d90c6ad 100644 --- a/play.html +++ b/play.html @@ -6,7 +6,7 @@ <meta name="theme-color" content="#444"> <meta charset="utf-8"> <title>1989</title> -<link rel="icon" href="favicon.png"> +<link rel="icon" href="images/Hammer_and_sickle.svg"> <link rel="stylesheet" href="/fonts/fonts.css"> <link rel="stylesheet" href="/common/client.css"> <link rel="stylesheet" href="play.css"> -- cgit v1.2.3