From 76375e277603bc144ea1c572ec273bd3f3a79dcb Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Sat, 26 Oct 2024 22:10:36 +0200 Subject: Generate space and card name constants for code. --- Makefile | 28 ++-- play.js | 418 +++++++++++++++++++++++++++++++++++++++--------------- rules.js | 206 +++++++++++++++++++++++++-- tools/gencode.js | 1 - tools/genconst.js | 25 ++++ 5 files changed, 549 insertions(+), 129 deletions(-) create mode 100644 tools/genconst.js diff --git a/Makefile b/Makefile index daa5c21..fc78fed 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,21 @@ 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 + +rules.js: events.txt data.js + node tools/gencode.js > /tmp/events.inc + node tools/genconst.js > /tmp/const.inc + sed -i \ + -e '/BEGIN CONST/,/END CONST/{//!d}' \ + -e '/BEGIN CONST/r /tmp/const.inc' \ + -e '/BEGIN EVENTS/,/END EVENTS/{//!d}' \ + -e '/BEGIN EVENTS/r /tmp/events.inc' \ + rules.js + +play.js: tools/layout.svg data.js + node tools/genlayout.js > /tmp/layout.inc + node tools/genconst.js > /tmp/const.inc + sed -i \ + -e '/BEGIN CONST/,/END CONST/{//!d}' \ + -e '/BEGIN CONST/r /tmp/const.inc' \ + -e '/BEGIN LAYOUT/,/END LAYOUT/{//!d}' \ + -e '/BEGIN LAYOUT/r /tmp/layout.inc' \ + play.js diff --git a/play.js b/play.js index 03f58f5..f94a7db 100644 --- a/play.js +++ b/play.js @@ -1,5 +1,311 @@ "use strict" +// vim:set foldmethod=marker: + +// BEGIN CONST {{{ + +// SPACES +const S_SCHWERIN = 0 +const S_ROSTOCK = 1 +const S_BERLIN = 2 +const S_GERMAN_WRITERS = 3 +const S_WALTER_ULBRICHT_ACADEMY = 4 +const S_LUTHERAN_CHURCH = 5 +const S_MAGDEBURG = 6 +const S_HALLE = 7 +const S_LEIPZIG = 8 +const S_ERFURT = 9 +const S_KARL_MARX_STADT = 10 +const S_DRESDEN = 11 +const S_SZCZECIN = 12 +const S_GDANSK = 13 +const S_BYDGOSZCZ = 14 +const S_POZNAN = 15 +const S_WARSZAWA = 16 +const S_BIALYSTOK = 17 +const S_WROCLAW = 18 +const S_CATHOLIC_CHURCH_POLAND = 19 +const S_LODZ = 20 +const S_KATOWICE = 21 +const S_KRAKOW = 22 +const S_LUBLIN = 23 +const S_JAGIELLONIAN_UNIVERSITY = 24 +const S_POLISH_WRITERS = 25 +const S_PLZEN = 26 +const S_CESKE_BUDEJOVICE = 27 +const S_PRAHA = 28 +const S_CHARLES_UNIVERSITY = 29 +const S_CZECH_WRITERS = 30 +const S_BRNO = 31 +const S_OSTRAVA = 32 +const S_BRATISLAVA = 33 +const S_CATHOLIC_CHURCH_CZECHOSLOVAKIA = 34 +const S_PRESOV = 35 +const S_KOSICE = 36 +const S_CATHOLIC_CHURCH_HUNGARY = 37 +const S_GYOR = 38 +const S_TATABANYA = 39 +const S_MISKOLC = 40 +const S_DEBRECEN = 41 +const S_SZOMBATHELY = 42 +const S_SZEKESFEHERVAR = 43 +const S_BUDAPEST = 44 +const S_HUNGARIAN_WRITERS = 45 +const S_EOTVOS_LORAND_UNIVERSITY = 46 +const S_SZEGED = 47 +const S_PECS = 48 +const S_TIMISOARA = 49 +const S_CLUJ_NAPOCA = 50 +const S_TARGU_MURES = 51 +const S_IASI = 52 +const S_BABES_BOLYAI_UNIVERSITY = 53 +const S_ROMANIAN_WRITERS = 54 +const S_HARGHITA_COVASNA = 55 +const S_BRASOV = 56 +const S_ORTHODOX_CHURCH_ROMANIA = 57 +const S_PLOIESTI = 58 +const S_CRAIOVA = 59 +const S_BUCURESTI = 60 +const S_GALATI = 61 +const S_CONSTANTA = 62 +const S_PLEVEN = 63 +const S_ORTHODOX_CHURCH_BULGARIA = 64 +const S_RUSE = 65 +const S_SOFIA_UNIVERSITY = 66 +const S_SOFIA = 67 +const S_STARA_ZAGORA = 68 +const S_RAZGRAD = 69 +const S_BURGAS = 70 +const S_VARNA = 71 +const S_BULGARIAN_WRITERS = 72 +const S_PLOVDIV = 73 +const S_SLIVEN = 74 + +// CARDS +const C_LEGACY_OF_MARTIAL_LAW = 1 +const C_SOLIDARITY_LEGALIZED = 2 +const C_WALESA = 3 +const C_MICHNIK = 4 +const C_GENERAL_STRIKE = 5 +const C_BROUGHT_IN_FOR_QUESTIONING = 6 +const C_STATE_RUN_MEDIA = 7 +const C_PRUDENCE = 8 +const C_THE_WALL = 9 +const C_CULT_OF_PERSONALITY = 10 +const C_DISSIDENT_ARRESTED = 11 +const C_APPARATCHIKS = 12 +const C_STASI = 13 +const C_GORBACHEV_CHARMS_THE_WEST = 14 +const C_HONECKER = 15 +const C_NOMENKLATURA = 16 +const C_ROUNDTABLE_TALKS = 17 +const C_POSZGAY_DEFENDS_THE_REVOLUTION = 18 +const C_PAPAL_VISIT = 19 +const C_DEUTSCHE_MARKS = 20 +const C_COMMON_EUROPEAN_HOME = 21 +const C_POWER_STRUGGLE_POLAND = 22 +const C_POWER_STRUGGLE_HUNGARY = 23 +const C_ST_NICHOLAS_CHURCH = 24 +const C_PERESTROIKA = 25 +const C_HELSINKI_FINAL_ACT = 26 +const C_CONSUMERISM = 27 +const C_FACTORY_PARTY_CELLS = 28 +const C_JAN_PALACH_WEEK = 29 +const C_TEAR_GAS = 30 +const C_INTELLIGENTSIA = 31 +const C_PEASANT_PARTIES = 32 +const C_SAJUDIS = 33 +const C_FIDESZ = 34 +const C_HEAL_OUR_BLEEDING_WOUND = 35 +const C_DASH_FOR_THE_WEST = 36 +const C_NAGY_REBURIED = 37 +const C_THE_JULY_CONCEPT = 38 +const C_ECO_GLASNOST = 39 +const C_HUNGARIAN_DEMOCRATIC_FORUM = 40 +const C_CEAUSESCU = 41 +const C_POWER_STRUGGLE_EAST_GERMANY = 42 +const C_POWER_STRUGGLE_BULGARIA = 43 +const C_INFLATIONARY_CURRENCY = 44 +const C_SOVIET_TROOP_WITHDRAWALS = 45 +const C_GOODBYE_LENIN = 46 +const C_BULGARIAN_TURKS_EXPELLED = 47 +const C_WE_ARE_THE_PEOPLE = 48 +const C_FOREIGN_CURRENCY_DEBT_BURDEN = 49 +const C_THE_SINATRA_DOCTRINE = 50 +const C_40TH_ANNIVERSARY_CELEBRATION = 51 +const C_NORMALIZATION = 52 +const C_LI_PENG = 53 +const C_THE_CROWD_TURNS_AGAINST_CEAUSESCU = 54 +const C_POWER_STRUGGLE_CZECHOSLOVAKIA = 55 +const C_FOREIGN_TELEVISION = 56 +const C_CENTRAL_COMMITTEE_RESHUFFLE = 57 +const C_AUSTRIA_HUNGARY_BORDER_REOPENED = 58 +const C_GRENZTRUPPEN = 59 +const C_TOXIC_WASTE = 60 +const C_THE_MONDAY_DEMONSTRATIONS = 61 +const C_YAKOVLEV_COUNSELS_GORBACHEV = 62 +const C_GENSCHER = 63 +const C_LEGACY_OF_1968 = 64 +const C_PRESIDENTIAL_VISIT = 65 +const C_NEW_FORUM = 66 +const C_REFORMER_REHABILITATED = 67 +const C_KLAUS_AND_KOMAREK = 68 +const C_SYSTEMATIZATION = 69 +const C_SECURITATE = 70 +const C_KISS_OF_DEATH = 71 +const C_PEASANT_PARTIES_REVOLT = 72 +const C_LASZLO_TOKES = 73 +const C_FRG_EMBASSIES = 74 +const C_EXIT_VISAS = 75 +const C_WARSAW_PACT_SUMMIT = 76 +const C_SAMIZDAT = 77 +const C_WORKERS_REVOLT = 78 +const C_THE_THIRD_WAY = 79 +const C_NEPOTISM = 80 +const C_THE_BALTIC_WAY = 81 +const C_SPITZEL = 82 +const C_MODROW = 83 +const C_BREAKAWAY_BALTIC_REPUBLICS = 84 +const C_TANK_COLUMN_TANK_MAN = 85 +const C_THE_WALL_MUST_GO = 86 +const C_KOHL_PROPOSES_REUNIFICATION = 87 +const C_ADAMEC = 88 +const C_DOMINO_THEORY = 89 +const C_CIVIC_FORUM = 90 +const C_MY_FIRST_BANANA = 91 +const C_BETRAYAL = 92 +const C_SHOCK_THERAPY = 93 +const C_UNION_OF_DEMOCRATIC_FORCES = 94 +const C_POWER_STRUGGLE_ROMANIA = 95 +const C_THE_CHINESE_SOLUTION = 96 +const C_THE_TYRANT_IS_GONE = 97 +const C_POLITBURO_INTRIGUE = 98 +const C_LIGACHEV = 99 +const C_STAND_FAST = 100 +const C_ELENA = 101 +const C_NATIONAL_SALVATION_FRONT = 102 +const C_GOVERNMENT_RESIGNS = 103 +const C_NEW_YEARS_EVE_PARTY = 104 +const C_PUBLIC_AGAINST_VIOLENCE = 105 +const C_SOCIAL_DEMOCRATIC_PLATFORM_ADOPTED = 106 +const C_MASSACRE_IN_TIMISOARA = 107 +const C_ARMY_BACKS_REVOLUTION = 108 +const C_KREMLIN_COUP = 109 +const C_MALTA_SUMMIT = 110 + +// END CONST }}} +// BEGIN LAYOUT {{{ +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], +} +// END LAYOUT }}} + let action_register = [] function register_action(target, action, id) { @@ -544,115 +850,3 @@ function toggle_removed() { function find_country_index(country) { return countries.indexOf(country) } - -// #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], -} \ No newline at end of file diff --git a/rules.js b/rules.js index bebde72..a65383e 100644 --- a/rules.js +++ b/rules.js @@ -1,4 +1,6 @@ -//"use strict" +"use strict" + +// vim:set foldmethod=marker: const { spaces, cards, power_cards } = require("./data.js") @@ -10,6 +12,199 @@ const COM = "Communist" const first_strategy_card = 1 const last_strategy_card = 110 +// BEGIN CONSTANTS {{{ + +// SPACES +const S_SCHWERIN = 0 +const S_ROSTOCK = 1 +const S_BERLIN = 2 +const S_GERMAN_WRITERS = 3 +const S_WALTER_ULBRICHT_ACADEMY = 4 +const S_LUTHERAN_CHURCH = 5 +const S_MAGDEBURG = 6 +const S_HALLE = 7 +const S_LEIPZIG = 8 +const S_ERFURT = 9 +const S_KARL_MARX_STADT = 10 +const S_DRESDEN = 11 +const S_SZCZECIN = 12 +const S_GDANSK = 13 +const S_BYDGOSZCZ = 14 +const S_POZNAN = 15 +const S_WARSZAWA = 16 +const S_BIALYSTOK = 17 +const S_WROCLAW = 18 +const S_CATHOLIC_CHURCH_POLAND = 19 +const S_LODZ = 20 +const S_KATOWICE = 21 +const S_KRAKOW = 22 +const S_LUBLIN = 23 +const S_JAGIELLONIAN_UNIVERSITY = 24 +const S_POLISH_WRITERS = 25 +const S_PLZEN = 26 +const S_CESKE_BUDEJOVICE = 27 +const S_PRAHA = 28 +const S_CHARLES_UNIVERSITY = 29 +const S_CZECH_WRITERS = 30 +const S_BRNO = 31 +const S_OSTRAVA = 32 +const S_BRATISLAVA = 33 +const S_CATHOLIC_CHURCH_CZECHOSLOVAKIA = 34 +const S_PRESOV = 35 +const S_KOSICE = 36 +const S_CATHOLIC_CHURCH_HUNGARY = 37 +const S_GYOR = 38 +const S_TATABANYA = 39 +const S_MISKOLC = 40 +const S_DEBRECEN = 41 +const S_SZOMBATHELY = 42 +const S_SZEKESFEHERVAR = 43 +const S_BUDAPEST = 44 +const S_HUNGARIAN_WRITERS = 45 +const S_EOTVOS_LORAND_UNIVERSITY = 46 +const S_SZEGED = 47 +const S_PECS = 48 +const S_TIMISOARA = 49 +const S_CLUJ_NAPOCA = 50 +const S_TARGU_MURES = 51 +const S_IASI = 52 +const S_BABES_BOLYAI_UNIVERSITY = 53 +const S_ROMANIAN_WRITERS = 54 +const S_HARGHITA_COVASNA = 55 +const S_BRASOV = 56 +const S_ORTHODOX_CHURCH_ROMANIA = 57 +const S_PLOIESTI = 58 +const S_CRAIOVA = 59 +const S_BUCURESTI = 60 +const S_GALATI = 61 +const S_CONSTANTA = 62 +const S_PLEVEN = 63 +const S_ORTHODOX_CHURCH_BULGARIA = 64 +const S_RUSE = 65 +const S_SOFIA_UNIVERSITY = 66 +const S_SOFIA = 67 +const S_STARA_ZAGORA = 68 +const S_RAZGRAD = 69 +const S_BURGAS = 70 +const S_VARNA = 71 +const S_BULGARIAN_WRITERS = 72 +const S_PLOVDIV = 73 +const S_SLIVEN = 74 + +// CARDS +const C_LEGACY_OF_MARTIAL_LAW = 1 +const C_SOLIDARITY_LEGALIZED = 2 +const C_WALESA = 3 +const C_MICHNIK = 4 +const C_GENERAL_STRIKE = 5 +const C_BROUGHT_IN_FOR_QUESTIONING = 6 +const C_STATE_RUN_MEDIA = 7 +const C_PRUDENCE = 8 +const C_THE_WALL = 9 +const C_CULT_OF_PERSONALITY = 10 +const C_DISSIDENT_ARRESTED = 11 +const C_APPARATCHIKS = 12 +const C_STASI = 13 +const C_GORBACHEV_CHARMS_THE_WEST = 14 +const C_HONECKER = 15 +const C_NOMENKLATURA = 16 +const C_ROUNDTABLE_TALKS = 17 +const C_POSZGAY_DEFENDS_THE_REVOLUTION = 18 +const C_PAPAL_VISIT = 19 +const C_DEUTSCHE_MARKS = 20 +const C_COMMON_EUROPEAN_HOME = 21 +const C_POWER_STRUGGLE_POLAND = 22 +const C_POWER_STRUGGLE_HUNGARY = 23 +const C_ST_NICHOLAS_CHURCH = 24 +const C_PERESTROIKA = 25 +const C_HELSINKI_FINAL_ACT = 26 +const C_CONSUMERISM = 27 +const C_FACTORY_PARTY_CELLS = 28 +const C_JAN_PALACH_WEEK = 29 +const C_TEAR_GAS = 30 +const C_INTELLIGENTSIA = 31 +const C_PEASANT_PARTIES = 32 +const C_SAJUDIS = 33 +const C_FIDESZ = 34 +const C_HEAL_OUR_BLEEDING_WOUND = 35 +const C_DASH_FOR_THE_WEST = 36 +const C_NAGY_REBURIED = 37 +const C_THE_JULY_CONCEPT = 38 +const C_ECO_GLASNOST = 39 +const C_HUNGARIAN_DEMOCRATIC_FORUM = 40 +const C_CEAUSESCU = 41 +const C_POWER_STRUGGLE_EAST_GERMANY = 42 +const C_POWER_STRUGGLE_BULGARIA = 43 +const C_INFLATIONARY_CURRENCY = 44 +const C_SOVIET_TROOP_WITHDRAWALS = 45 +const C_GOODBYE_LENIN = 46 +const C_BULGARIAN_TURKS_EXPELLED = 47 +const C_WE_ARE_THE_PEOPLE = 48 +const C_FOREIGN_CURRENCY_DEBT_BURDEN = 49 +const C_THE_SINATRA_DOCTRINE = 50 +const C_40TH_ANNIVERSARY_CELEBRATION = 51 +const C_NORMALIZATION = 52 +const C_LI_PENG = 53 +const C_THE_CROWD_TURNS_AGAINST_CEAUSESCU = 54 +const C_POWER_STRUGGLE_CZECHOSLOVAKIA = 55 +const C_FOREIGN_TELEVISION = 56 +const C_CENTRAL_COMMITTEE_RESHUFFLE = 57 +const C_AUSTRIA_HUNGARY_BORDER_REOPENED = 58 +const C_GRENZTRUPPEN = 59 +const C_TOXIC_WASTE = 60 +const C_THE_MONDAY_DEMONSTRATIONS = 61 +const C_YAKOVLEV_COUNSELS_GORBACHEV = 62 +const C_GENSCHER = 63 +const C_LEGACY_OF_1968 = 64 +const C_PRESIDENTIAL_VISIT = 65 +const C_NEW_FORUM = 66 +const C_REFORMER_REHABILITATED = 67 +const C_KLAUS_AND_KOMAREK = 68 +const C_SYSTEMATIZATION = 69 +const C_SECURITATE = 70 +const C_KISS_OF_DEATH = 71 +const C_PEASANT_PARTIES_REVOLT = 72 +const C_LASZLO_TOKES = 73 +const C_FRG_EMBASSIES = 74 +const C_EXIT_VISAS = 75 +const C_WARSAW_PACT_SUMMIT = 76 +const C_SAMIZDAT = 77 +const C_WORKERS_REVOLT = 78 +const C_THE_THIRD_WAY = 79 +const C_NEPOTISM = 80 +const C_THE_BALTIC_WAY = 81 +const C_SPITZEL = 82 +const C_MODROW = 83 +const C_BREAKAWAY_BALTIC_REPUBLICS = 84 +const C_TANK_COLUMN_TANK_MAN = 85 +const C_THE_WALL_MUST_GO = 86 +const C_KOHL_PROPOSES_REUNIFICATION = 87 +const C_ADAMEC = 88 +const C_DOMINO_THEORY = 89 +const C_CIVIC_FORUM = 90 +const C_MY_FIRST_BANANA = 91 +const C_BETRAYAL = 92 +const C_SHOCK_THERAPY = 93 +const C_UNION_OF_DEMOCRATIC_FORCES = 94 +const C_POWER_STRUGGLE_ROMANIA = 95 +const C_THE_CHINESE_SOLUTION = 96 +const C_THE_TYRANT_IS_GONE = 97 +const C_POLITBURO_INTRIGUE = 98 +const C_LIGACHEV = 99 +const C_STAND_FAST = 100 +const C_ELENA = 101 +const C_NATIONAL_SALVATION_FRONT = 102 +const C_GOVERNMENT_RESIGNS = 103 +const C_NEW_YEARS_EVE_PARTY = 104 +const C_PUBLIC_AGAINST_VIOLENCE = 105 +const C_SOCIAL_DEMOCRATIC_PLATFORM_ADOPTED = 106 +const C_MASSACRE_IN_TIMISOARA = 107 +const C_ARMY_BACKS_REVOLUTION = 108 +const C_KREMLIN_COUP = 109 +const C_MALTA_SUMMIT = 110 + +// END CONSTANTS }}} + const dem_tst_req = [5, 5, 6, 6, 7, 8, 9, 10] const com_tst_req = [6, 6, 7, 7, 8, 7, 6, 5] const scoring_cards = [22, 23, 42, 43, 55, 95] @@ -9038,7 +9233,7 @@ states.vm_support_falters = { /* =================== EVENTS ================================ */ -// #region GENERATED EVENT CODE +// BEGIN EVENTS {{{ const CODE = [] CODE[1] = [ // Legacy of Martial Law* @@ -9941,9 +10136,4 @@ CODE[351] = [ // Scare Tactics [ vm_remove_opp_infl, 1 ], [ vm_return ], ] - - - - -// #endregion - +// END EVENTS }}} diff --git a/tools/gencode.js b/tools/gencode.js index f2e3a26..a46823f 100644 --- a/tools/gencode.js +++ b/tools/gencode.js @@ -103,4 +103,3 @@ for (let line of fs.readFileSync("events.txt", "utf-8").split("\n")) { emit(["return"]) console.log("]") -console.log("// #endregion") diff --git a/tools/genconst.js b/tools/genconst.js new file mode 100644 index 0000000..a2b9235 --- /dev/null +++ b/tools/genconst.js @@ -0,0 +1,25 @@ +const data = require("../data.js") + +function clean_name(s) { + return s.toUpperCase() + .replace(" - ", "_") + .replace(/[ /-]/g, "_") + .replace(/[!,*"'.]/g, "") +} + +console.log("") + +console.log("// SPACES") +for (let s of data.spaces) { + console.log("const S_" + clean_name(s.ascii_name) + " = " + s.space_id) +} + +console.log("") + +console.log("// CARDS") +for (let c of data.cards) { + if (c) + console.log("const C_" + clean_name(c.name) + " = " + c.number) +} + +console.log("") -- cgit v1.2.3 From af8119ac8f66aa81277c307ebc2e4be519219191 Mon Sep 17 00:00:00 2001 From: Tor Andersson 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 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 @@ + + + + + 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 @@ + + + + + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/play.html b/play.html index f510ba0..d90c6ad 100644 --- a/play.html +++ b/play.html @@ -6,7 +6,7 @@ 1989 - + -- cgit v1.2.3 From b8a0e71403e00cdce59f86c576cdfc68a76b7f10 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Sun, 27 Oct 2024 01:27:32 +0200 Subject: use card name constants. fix eslint issues in play.js --- .editorconfig | 7 ++ play.js | 217 +++++++++++++++++++++++++++++----------------------------- 2 files changed, 114 insertions(+), 110 deletions(-) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..5f2605e --- /dev/null +++ b/.editorconfig @@ -0,0 +1,7 @@ +root = true + +[*.js] +indent_style = tab +insert_final_newline = true +trim_trailing_whitespace = true +end_of_line = lf diff --git a/play.js b/play.js index f94a7db..dcbc928 100644 --- a/play.js +++ b/play.js @@ -2,6 +2,9 @@ // vim:set foldmethod=marker: +/* global view, roles, send_action, action_button, scroll_into_view */ +/* global spaces, cards, power_cards */ + // BEGIN CONST {{{ // SPACES @@ -328,9 +331,30 @@ const last_space = 74 const last_card = 110 const last_power_card = 54 -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 ] +const board_events = [ + C_SOLIDARITY_LEGALIZED, + C_THE_WALL, + C_SYSTEMATIZATION, + C_THE_TYRANT_IS_GONE +] + +const box_events = [ + C_HONECKER, + C_ST_NICHOLAS_CHURCH, + C_HELSINKI_FINAL_ACT, + C_ECO_GLASNOST, + C_WE_ARE_THE_PEOPLE, + C_FOREIGN_CURRENCY_DEBT_BURDEN, + C_LI_PENG, + C_AUSTRIA_HUNGARY_BORDER_REOPENED, + C_GRENZTRUPPEN, + C_PRESIDENTIAL_VISIT, + C_SECURITATE, + C_LASZLO_TOKES, + C_STAND_FAST, + C_ELENA, + C_NEW_YEARS_EVE_PARTY, +] const ui = { favicon: document.getElementById("favicon"), @@ -381,8 +405,8 @@ function create_ui() { 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 ) + let xc = Math.round(x + w / 2) + let yc = Math.round(y + h / 2) x -= 6 y -= 6 w += 12 @@ -401,14 +425,14 @@ function create_ui() { 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" + 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" + 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) @@ -416,7 +440,6 @@ function create_ui() { document.getElementById("markers").appendChild(dem_e) } - ui.cards = [] for (let c = 1; c <= last_card; ++c) { const card_e = document.createElement("div") @@ -455,76 +478,20 @@ function create_ui() { 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("space", space)) { - console.log('send_action with space:', space); - evt.stopPropagation() - } else if (send_action("sc", space)) { - //console.log('send_action with sc:', space); - evt.stopPropagation() - } else { - // console.log('send_action failed for space:', space); - } - } - //hide_popup_menu(); -} - -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" - } - - 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/)) { - text = text.substring(5) - p.className = "h2 dem" - } else if (text.match(/^\.h2c/)) { - text = text.substring(5) - p.className = "h2 com" - } else if (text.match(/^\.h2/)) { - text = text.substring(4) - p.className = "h2" - } else if (text.match(/^\.h3/)) { - text = text.substring(4) - p.className = "h3" - } - - p.innerHTML = text - return p -} - 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" + 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.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" @@ -533,18 +500,18 @@ function layout_round_marker() { 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" + ui.stability.style.left = x - 25 + "px" + ui.stability.style.top = y - 25 + "px" } -let TST_X = [ 53, 53+69, 53+69*2, 53+69*3, 53+69*4, 53+69*5, 53+69*6, 556 ] +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 ] 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" + e.style.left = x - 25 + "px" + e.style.top = y - 25 + "px" } function layout_vp_marker() { @@ -552,27 +519,25 @@ function layout_vp_marker() { if (view.vp === 0) { y = 2425 + 25 x = 843 + 28 - } - else if (view.vp < 0) { + } else if (view.vp < 0) { if (view.vp & 1) { y = 2456 + 25 - x = 803 + 28 - (-view.vp - 1)/2 * 62 + x = 803 + 28 - ((-view.vp - 1) / 2) * 62 } else { y = 2395 + 25 - x = 772 + 28 - (-view.vp - 2)/2 * 62 + x = 772 + 28 - ((-view.vp - 2) / 2) * 62 } - } - else if (view.vp > 0) { + } else if (view.vp > 0) { if (view.vp & 1) { y = 2396 + 25 - x = 883 + 28 + (view.vp - 1)/2 * 62 + x = 883 + 28 + ((view.vp - 1) / 2) * 62 } else { y = 2455 + 25 - x = 913 + 28 + (view.vp - 2)/2 * 62 + x = 913 + 28 + ((view.vp - 2) / 2) * 62 } } - ui.vp.style.left = (x - 25) + "px" - ui.vp.style.top = (y - 25) + "px" + ui.vp.style.left = x - 25 + "px" + ui.vp.style.top = y - 25 + "px" } function layout_country(id) { @@ -614,30 +579,30 @@ function on_update() { // UPDATE EVENT MARKERS ON THE BOARD - if (view.persistent_events.includes(2)) - ui.events[2].style.display = "block" + if (view.persistent_events.includes(C_SOLIDARITY_LEGALIZED)) + ui.events[C_SOLIDARITY_LEGALIZED].style.display = "block" else - ui.events[2].style.display = "none" + ui.events[C_SOLIDARITY_LEGALIZED].style.display = "none" - if (view.persistent_events.includes(9)) - ui.events[9].style.display = "block" + if (view.persistent_events.includes(C_THE_WALL)) + ui.events[C_THE_WALL].style.display = "block" else - ui.events[9].style.display = "none" + ui.events[C_THE_WALL].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" + ui.events[C_SYSTEMATIZATION].style.display = "block" + ui.events[C_SYSTEMATIZATION].style.left = ui.layout_xy[view.systematization][0] - 25 + "px" + ui.events[C_SYSTEMATIZATION].style.top = ui.layout_xy[view.systematization][1] - 25 + "px" } else { - ui.events[69].style.display = "none" + ui.events[C_SYSTEMATIZATION].style.display = "none" } - 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" + if (view.persistent_events.includes(C_THE_TYRANT_IS_GONE)) { + ui.events[C_THE_TYRANT_IS_GONE].style.display = "block" + ui.events[C_THE_TYRANT_IS_GONE].style.left = ui.layout_xy[view.the_tyrant_is_gone][0] - 25 + "px" + ui.events[C_THE_TYRANT_IS_GONE].style.top = ui.layout_xy[view.the_tyrant_is_gone][1] - 25 + "px" } else { - ui.events[97].style.display = "none" + ui.events[C_THE_TYRANT_IS_GONE].style.display = "none" } // EVENT REMINDER LIST @@ -775,22 +740,22 @@ function on_update() { // =========================== LOG FUNCTIONS ============================================== -function sub_card_name(match, p1) { +function sub_card_name(_match, p1) { let x = p1 | 0 return `${cards[x].name}` } -function sub_power_card_name(match, p1) { +function sub_power_card_name(_match, p1) { let x = p1 | 0 return `${power_cards[x].name}` } -function sub_power_card_value(match, p1) { +function sub_power_card_value(_match, p1) { let x = p1 | 0 return `${x}` } -function sub_space_name(match, p1) { +function sub_space_name(_match, p1) { let id = p1 | 0 let name = spaces[id].name_unique return `${name}` @@ -809,6 +774,42 @@ const die = { D6: '', } +function on_log(text) { + let p = document.createElement("div") + + if (text.match(/^>/)) { + text = text.substring(1) + p.className = "i" + } + + 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/)) { + text = text.substring(5) + p.className = "h2 dem" + } else if (text.match(/^\.h2c/)) { + text = text.substring(5) + p.className = "h2 com" + } else if (text.match(/^\.h2/)) { + text = text.substring(4) + p.className = "h2" + } else if (text.match(/^\.h3/)) { + text = text.substring(4) + p.className = "h3" + } + + p.innerHTML = text + return p +} + // =========================== VISUAL FUNCTIONS ==========================================# function on_focus_card_tip(card_number) { @@ -846,7 +847,3 @@ function toggle_discard() { function toggle_removed() { document.getElementById("removed_panel").classList.toggle("hide") } - -function find_country_index(country) { - return countries.indexOf(country) -} -- cgit v1.2.3