diff options
author | Tor Andersson <tor@ccxvii.net> | 2025-02-23 18:37:17 +0100 |
---|---|---|
committer | Tor Andersson <tor@ccxvii.net> | 2025-02-27 17:10:32 +0100 |
commit | 4a3b2a010da17959766a4c4c58a04c33c398c422 (patch) | |
tree | afcb8f856d587f4c476ef9c5f4dfa1db2d71fb3b | |
parent | 2e7093f9e981832aaeeeb992d0d988959ac51d91 (diff) | |
download | land-and-freedom-4a3b2a010da17959766a4c4c58a04c33c398c422.tar.gz |
xxx
-rw-r--r-- | data.js | 4 | ||||
-rw-r--r-- | images/factions/communists.png (renamed from images/factions/communitsts.png) | bin | 33854 -> 33854 bytes | |||
-rw-r--r-- | info/rules.html | 2 | ||||
-rw-r--r-- | land-and-freedom.css | 230 | ||||
-rw-r--r-- | land-and-freedom.scss | 16 | ||||
-rw-r--r-- | play.html | 18 | ||||
-rw-r--r-- | play.js | 6 | ||||
-rw-r--r-- | play2.css | 577 | ||||
-rw-r--r-- | play2.js | 242 | ||||
-rw-r--r-- | rules.js | 8 |
10 files changed, 962 insertions, 141 deletions
@@ -1,7 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.LIBERTY_OR_COLLECTIVIZATION = exports.COMMUNIST_EXTRA_HERO_POINT = exports.ANARCHIST_EXTRA_HERO_POINT = exports.NORTHERN = exports.SOUTHERN = exports.ARAGON = exports.MADRID = exports.ORGANIZATION_MEDALLION_ID = exports.ARCHIVES_MEDALLION_ID = exports.VOLUNTEERS_MEDALLION_ID = exports.INTELLIGENCE_MEDALLION_ID = exports.PROPAGANDA_MEDALLION_ID = exports.STRATEGY_MEDALLION_ID = exports.FRONTS = exports.DEFEAT = exports.VICTORY = exports.TRASH = exports.TOWARDS_CENTER = exports.AWAY_FROM_CENTER = exports.SELF = exports.PLAYER_WITH_MOST_HERO_POINTS = exports.OTHER_PLAYERS = exports.ON = exports.OFF = exports.TEAMWORK_BONUS = exports.MORALE_BONUS = exports.FOREIGN_AID = exports.SOVIET_SUPPORT = exports.INITIATIVE_PLAYER = exports.GOVERNMENT = exports.COLLECTIVIZATION = exports.CLOSEST_TO_VICTORY = exports.CLOSEST_TO_DEFEAT = exports.LIBERTY = exports.ANY = exports.MODERATES_ID = exports.FASCIST_ID = exports.COMMUNISTS_ID = exports.ANARCHISTS_ID = exports.MODERATE = exports.COMMUNIST = exports.ANARCHIST = exports.ALL_PLAYERS = void 0; -exports.create_effect = create_effect; +exports.LIBERTY_OR_COLLECTIVIZATION = exports.COMMUNIST_EXTRA_HERO_POINT = exports.ANARCHIST_EXTRA_HERO_POINT = exports.NORTHERN = exports.SOUTHERN = exports.ARAGON = exports.MADRID = exports.ORGANIZATION_MEDALLION_ID = exports.ARCHIVES_MEDALLION_ID = exports.VOLUNTEERS_MEDALLION_ID = exports.INTELLIGENCE_MEDALLION_ID = exports.PROPAGANDA_MEDALLION_ID = exports.STRATEGY_MEDALLION_ID = exports.FRONTS = exports.DEFEAT = exports.VICTORY = exports.TRASH = exports.TOWARDS_CENTER = exports.AWAY_FROM_CENTER = exports.SELF = exports.PLAYER_WITH_MOST_HERO_POINTS = exports.OTHER_PLAYERS = exports.ON = exports.OFF = exports.TEAMWORK_BONUS = exports.MORALE_BONUS = exports.FOREIGN_AID = exports.SOVIET_SUPPORT = exports.INITIATIVE_PLAYER = exports.GOVERNMENT = exports.COLLECTIVIZATION = exports.CLOSEST_TO_VICTORY = exports.CLOSEST_TO_DEFEAT = exports.LIBERTY = exports.ANY = exports.MODERATES_ID = exports.FASCIST_ID = exports.COMMUNISTS_ID = exports.ANARCHISTS_ID = exports.MODERATE = exports.COMMUNIST = exports.ANARCHIST = exports.ALL_PLAYERS = exports.create_effect = void 0; const LIBERTY = 0; exports.LIBERTY = LIBERTY; const COLLECTIVIZATION = 1; @@ -96,6 +95,7 @@ function create_effect(type, target, value, faction) { faction, }; } +exports.create_effect = create_effect; const data = { cards: [ {}, diff --git a/images/factions/communitsts.png b/images/factions/communists.png Binary files differindex ff845b4..ff845b4 100644 --- a/images/factions/communitsts.png +++ b/images/factions/communists.png diff --git a/info/rules.html b/info/rules.html index 29b34df..b2704c0 100644 --- a/info/rules.html +++ b/info/rules.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html> <head> -<title>rules</title> +<title>Land and Freedom Rulebook</title> <link rel="stylesheet" href="/fonts/fonts.css"> <style> body{background-color:slategray} diff --git a/land-and-freedom.css b/land-and-freedom.css index 0fb77dc..49b6896 100644 --- a/land-and-freedom.css +++ b/land-and-freedom.css @@ -4,26 +4,26 @@ main { /* MAP */ #mapwrap { - width: 1000px; - height: 850px; + width: 1584px; + height: 1224px; box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2666666667); } #map { background-repeat: no-repeat; background-size: 100% 100%; - width: 1000px; - height: 850px; + width: 1584px; + height: 1224px; overflow: clip; } #map { - background-image: url(images/map75.png); + background-image: url(images/map72.png); } @media (min-resolution: 97dpi) { #map { - background-image: url(images/map100.png); + background-image: url(images/map144.png); } } #current_events .card:last-child { @@ -120,6 +120,8 @@ main { } .panel { + min-width: 1580px; + max-width: 1580px; min-width: 1271px; max-width: 1271px; background-color: #58641d; @@ -239,435 +241,435 @@ main { } .card[data-card-id="1"] { - background-image: url("images/cards100/card_1.png"); + background-image: url("images/cards72/card_1.png"); } .card[data-card-id="2"] { - background-image: url("images/cards100/card_2.png"); + background-image: url("images/cards72/card_2.png"); } .card[data-card-id="3"] { - background-image: url("images/cards100/card_3.png"); + background-image: url("images/cards72/card_3.png"); } .card[data-card-id="4"] { - background-image: url("images/cards100/card_4.png"); + background-image: url("images/cards72/card_4.png"); } .card[data-card-id="5"] { - background-image: url("images/cards100/card_5.png"); + background-image: url("images/cards72/card_5.png"); } .card[data-card-id="6"] { - background-image: url("images/cards100/card_6.png"); + background-image: url("images/cards72/card_6.png"); } .card[data-card-id="7"] { - background-image: url("images/cards100/card_7.png"); + background-image: url("images/cards72/card_7.png"); } .card[data-card-id="8"] { - background-image: url("images/cards100/card_8.png"); + background-image: url("images/cards72/card_8.png"); } .card[data-card-id="9"] { - background-image: url("images/cards100/card_9.png"); + background-image: url("images/cards72/card_9.png"); } .card[data-card-id="10"] { - background-image: url("images/cards100/card_10.png"); + background-image: url("images/cards72/card_10.png"); } .card[data-card-id="11"] { - background-image: url("images/cards100/card_11.png"); + background-image: url("images/cards72/card_11.png"); } .card[data-card-id="12"] { - background-image: url("images/cards100/card_12.png"); + background-image: url("images/cards72/card_12.png"); } .card[data-card-id="13"] { - background-image: url("images/cards100/card_13.png"); + background-image: url("images/cards72/card_13.png"); } .card[data-card-id="14"] { - background-image: url("images/cards100/card_14.png"); + background-image: url("images/cards72/card_14.png"); } .card[data-card-id="15"] { - background-image: url("images/cards100/card_15.png"); + background-image: url("images/cards72/card_15.png"); } .card[data-card-id="16"] { - background-image: url("images/cards100/card_16.png"); + background-image: url("images/cards72/card_16.png"); } .card[data-card-id="17"] { - background-image: url("images/cards100/card_17.png"); + background-image: url("images/cards72/card_17.png"); } .card[data-card-id="18"] { - background-image: url("images/cards100/card_18.png"); + background-image: url("images/cards72/card_18.png"); } .card[data-card-id="19"] { - background-image: url("images/cards100/card_19.png"); + background-image: url("images/cards72/card_19.png"); } .card[data-card-id="20"] { - background-image: url("images/cards100/card_20.png"); + background-image: url("images/cards72/card_20.png"); } .card[data-card-id="21"] { - background-image: url("images/cards100/card_21.png"); + background-image: url("images/cards72/card_21.png"); } .card[data-card-id="22"] { - background-image: url("images/cards100/card_22.png"); + background-image: url("images/cards72/card_22.png"); } .card[data-card-id="23"] { - background-image: url("images/cards100/card_23.png"); + background-image: url("images/cards72/card_23.png"); } .card[data-card-id="24"] { - background-image: url("images/cards100/card_24.png"); + background-image: url("images/cards72/card_24.png"); } .card[data-card-id="25"] { - background-image: url("images/cards100/card_25.png"); + background-image: url("images/cards72/card_25.png"); } .card[data-card-id="26"] { - background-image: url("images/cards100/card_26.png"); + background-image: url("images/cards72/card_26.png"); } .card[data-card-id="27"] { - background-image: url("images/cards100/card_27.png"); + background-image: url("images/cards72/card_27.png"); } .card[data-card-id="28"] { - background-image: url("images/cards100/card_28.png"); + background-image: url("images/cards72/card_28.png"); } .card[data-card-id="29"] { - background-image: url("images/cards100/card_29.png"); + background-image: url("images/cards72/card_29.png"); } .card[data-card-id="30"] { - background-image: url("images/cards100/card_30.png"); + background-image: url("images/cards72/card_30.png"); } .card[data-card-id="31"] { - background-image: url("images/cards100/card_31.png"); + background-image: url("images/cards72/card_31.png"); } .card[data-card-id="32"] { - background-image: url("images/cards100/card_32.png"); + background-image: url("images/cards72/card_32.png"); } .card[data-card-id="33"] { - background-image: url("images/cards100/card_33.png"); + background-image: url("images/cards72/card_33.png"); } .card[data-card-id="34"] { - background-image: url("images/cards100/card_34.png"); + background-image: url("images/cards72/card_34.png"); } .card[data-card-id="35"] { - background-image: url("images/cards100/card_35.png"); + background-image: url("images/cards72/card_35.png"); } .card[data-card-id="36"] { - background-image: url("images/cards100/card_36.png"); + background-image: url("images/cards72/card_36.png"); } .card[data-card-id="37"] { - background-image: url("images/cards100/card_37.png"); + background-image: url("images/cards72/card_37.png"); } .card[data-card-id="38"] { - background-image: url("images/cards100/card_38.png"); + background-image: url("images/cards72/card_38.png"); } .card[data-card-id="39"] { - background-image: url("images/cards100/card_39.png"); + background-image: url("images/cards72/card_39.png"); } .card[data-card-id="40"] { - background-image: url("images/cards100/card_40.png"); + background-image: url("images/cards72/card_40.png"); } .card[data-card-id="41"] { - background-image: url("images/cards100/card_41.png"); + background-image: url("images/cards72/card_41.png"); } .card[data-card-id="42"] { - background-image: url("images/cards100/card_42.png"); + background-image: url("images/cards72/card_42.png"); } .card[data-card-id="43"] { - background-image: url("images/cards100/card_43.png"); + background-image: url("images/cards72/card_43.png"); } .card[data-card-id="44"] { - background-image: url("images/cards100/card_44.png"); + background-image: url("images/cards72/card_44.png"); } .card[data-card-id="45"] { - background-image: url("images/cards100/card_45.png"); + background-image: url("images/cards72/card_45.png"); } .card[data-card-id="46"] { - background-image: url("images/cards100/card_46.png"); + background-image: url("images/cards72/card_46.png"); } .card[data-card-id="47"] { - background-image: url("images/cards100/card_47.png"); + background-image: url("images/cards72/card_47.png"); } .card[data-card-id="48"] { - background-image: url("images/cards100/card_48.png"); + background-image: url("images/cards72/card_48.png"); } .card[data-card-id="49"] { - background-image: url("images/cards100/card_49.png"); + background-image: url("images/cards72/card_49.png"); } .card[data-card-id="50"] { - background-image: url("images/cards100/card_50.png"); + background-image: url("images/cards72/card_50.png"); } .card[data-card-id="51"] { - background-image: url("images/cards100/card_51.png"); + background-image: url("images/cards72/card_51.png"); } .card[data-card-id="52"] { - background-image: url("images/cards100/card_52.png"); + background-image: url("images/cards72/card_52.png"); } .card[data-card-id="53"] { - background-image: url("images/cards100/card_53.png"); + background-image: url("images/cards72/card_53.png"); } .card[data-card-id="54"] { - background-image: url("images/cards100/card_54.png"); + background-image: url("images/cards72/card_54.png"); } .card[data-card-id="55"] { - background-image: url("images/cards100/card_55.png"); + background-image: url("images/cards72/card_55.png"); } .card[data-card-id="56"] { - background-image: url("images/cards100/card_56.png"); + background-image: url("images/cards72/card_56.png"); } .card[data-card-id="57"] { - background-image: url("images/cards100/card_57.png"); + background-image: url("images/cards72/card_57.png"); } .card[data-card-id="58"] { - background-image: url("images/cards100/card_58.png"); + background-image: url("images/cards72/card_58.png"); } .card[data-card-id="59"] { - background-image: url("images/cards100/card_59.png"); + background-image: url("images/cards72/card_59.png"); } .card[data-card-id="60"] { - background-image: url("images/cards100/card_60.png"); + background-image: url("images/cards72/card_60.png"); } .card[data-card-id="61"] { - background-image: url("images/cards100/card_61.png"); + background-image: url("images/cards72/card_61.png"); } .card[data-card-id="62"] { - background-image: url("images/cards100/card_62.png"); + background-image: url("images/cards72/card_62.png"); } .card[data-card-id="63"] { - background-image: url("images/cards100/card_63.png"); + background-image: url("images/cards72/card_63.png"); } .card[data-card-id="64"] { - background-image: url("images/cards100/card_64.png"); + background-image: url("images/cards72/card_64.png"); } .card[data-card-id="65"] { - background-image: url("images/cards100/card_65.png"); + background-image: url("images/cards72/card_65.png"); } .card[data-card-id="66"] { - background-image: url("images/cards100/card_66.png"); + background-image: url("images/cards72/card_66.png"); } .card[data-card-id="67"] { - background-image: url("images/cards100/card_67.png"); + background-image: url("images/cards72/card_67.png"); } .card[data-card-id="68"] { - background-image: url("images/cards100/card_68.png"); + background-image: url("images/cards72/card_68.png"); } .card[data-card-id="69"] { - background-image: url("images/cards100/card_69.png"); + background-image: url("images/cards72/card_69.png"); } .card[data-card-id="70"] { - background-image: url("images/cards100/card_70.png"); + background-image: url("images/cards72/card_70.png"); } .card[data-card-id="71"] { - background-image: url("images/cards100/card_71.png"); + background-image: url("images/cards72/card_71.png"); } .card[data-card-id="72"] { - background-image: url("images/cards100/card_72.png"); + background-image: url("images/cards72/card_72.png"); } .card[data-card-id="73"] { - background-image: url("images/cards100/card_73.png"); + background-image: url("images/cards72/card_73.png"); } .card[data-card-id="74"] { - background-image: url("images/cards100/card_74.png"); + background-image: url("images/cards72/card_74.png"); } .card[data-card-id="75"] { - background-image: url("images/cards100/card_75.png"); + background-image: url("images/cards72/card_75.png"); } .card[data-card-id="76"] { - background-image: url("images/cards100/card_76.png"); + background-image: url("images/cards72/card_76.png"); } .card[data-card-id="77"] { - background-image: url("images/cards100/card_77.png"); + background-image: url("images/cards72/card_77.png"); } .card[data-card-id="78"] { - background-image: url("images/cards100/card_78.png"); + background-image: url("images/cards72/card_78.png"); } .card[data-card-id="79"] { - background-image: url("images/cards100/card_79.png"); + background-image: url("images/cards72/card_79.png"); } .card[data-card-id="80"] { - background-image: url("images/cards100/card_80.png"); + background-image: url("images/cards72/card_80.png"); } .card[data-card-id="81"] { - background-image: url("images/cards100/card_81.png"); + background-image: url("images/cards72/card_81.png"); } .card[data-card-id="82"] { - background-image: url("images/cards100/card_82.png"); + background-image: url("images/cards72/card_82.png"); } .card[data-card-id="83"] { - background-image: url("images/cards100/card_83.png"); + background-image: url("images/cards72/card_83.png"); } .card[data-card-id="84"] { - background-image: url("images/cards100/card_84.png"); + background-image: url("images/cards72/card_84.png"); } .card[data-card-id="85"] { - background-image: url("images/cards100/card_85.png"); + background-image: url("images/cards72/card_85.png"); } .card[data-card-id="86"] { - background-image: url("images/cards100/card_86.png"); + background-image: url("images/cards72/card_86.png"); } .card[data-card-id="87"] { - background-image: url("images/cards100/card_87.png"); + background-image: url("images/cards72/card_87.png"); } .card[data-card-id="88"] { - background-image: url("images/cards100/card_88.png"); + background-image: url("images/cards72/card_88.png"); } .card[data-card-id="89"] { - background-image: url("images/cards100/card_89.png"); + background-image: url("images/cards72/card_89.png"); } .card[data-card-id="90"] { - background-image: url("images/cards100/card_90.png"); + background-image: url("images/cards72/card_90.png"); } .card[data-card-id="91"] { - background-image: url("images/cards100/card_91.png"); + background-image: url("images/cards72/card_91.png"); } .card[data-card-id="92"] { - background-image: url("images/cards100/card_92.png"); + background-image: url("images/cards72/card_92.png"); } .card[data-card-id="93"] { - background-image: url("images/cards100/card_93.png"); + background-image: url("images/cards72/card_93.png"); } .card[data-card-id="94"] { - background-image: url("images/cards100/card_94.png"); + background-image: url("images/cards72/card_94.png"); } .card[data-card-id="95"] { - background-image: url("images/cards100/card_95.png"); + background-image: url("images/cards72/card_95.png"); } .card[data-card-id="96"] { - background-image: url("images/cards100/card_96.png"); + background-image: url("images/cards72/card_96.png"); } .card[data-card-id="97"] { - background-image: url("images/cards100/card_97.png"); + background-image: url("images/cards72/card_97.png"); } .card[data-card-id="98"] { - background-image: url("images/cards100/card_98.png"); + background-image: url("images/cards72/card_98.png"); } .card[data-card-id="99"] { - background-image: url("images/cards100/card_99.png"); + background-image: url("images/cards72/card_99.png"); } .card[data-card-id="100"] { - background-image: url("images/cards100/card_100.png"); + background-image: url("images/cards72/card_100.png"); } .card[data-card-id="101"] { - background-image: url("images/cards100/card_101.png"); + background-image: url("images/cards72/card_101.png"); } .card[data-card-id="102"] { - background-image: url("images/cards100/card_102.png"); + background-image: url("images/cards72/card_102.png"); } .card[data-card-id="103"] { - background-image: url("images/cards100/card_103.png"); + background-image: url("images/cards72/card_103.png"); } .card[data-card-id="104"] { - background-image: url("images/cards100/card_104.png"); + background-image: url("images/cards72/card_104.png"); } .card[data-card-id="105"] { - background-image: url("images/cards100/card_105.png"); + background-image: url("images/cards72/card_105.png"); } .card[data-card-id="106"] { - background-image: url("images/cards100/card_106.png"); + background-image: url("images/cards72/card_106.png"); } .card[data-card-id="107"] { - background-image: url("images/cards100/card_107.png"); + background-image: url("images/cards72/card_107.png"); } .card[data-card-id="108"] { - background-image: url("images/cards100/card_108.png"); + background-image: url("images/cards72/card_108.png"); } .card.event { diff --git a/land-and-freedom.scss b/land-and-freedom.scss index 07c55b2..d20e4ac 100644 --- a/land-and-freedom.scss +++ b/land-and-freedom.scss @@ -19,8 +19,8 @@ main { /* MAP */ #mapwrap { - width: 1000px; - height: 850px; + width: 1584px; + height: 1224px; // background-color: #999f85; box-shadow: 1px 2px 4px #0004; } @@ -36,17 +36,17 @@ main { #map { background-repeat: no-repeat; background-size: 100% 100%; - width: 1000px; - height: 850px; + width: 1584px; + height: 1224px; overflow: clip; } #map { - background-image: url(images/map75.png); + background-image: url(images/map72.png); } @media (min-resolution: 97dpi) { #map { - background-image: url(images/map100.png); + background-image: url(images/map144.png); } } @@ -160,6 +160,8 @@ main { } .panel { + min-width: 1580px; + max-width: 1580px; min-width: 1271px; max-width: 1271px; // background-color: hsl(34, 10%, 35%); @@ -310,7 +312,7 @@ main { @for $i from 1 through 108 { .card[data-card-id='#{$i}'] { - background-image: url('images/cards100/card_#{$i}.png'); + background-image: url('images/cards72/card_#{$i}.png'); } } @@ -9,15 +9,12 @@ <link rel="icon" href="favicon.png"> <link rel="stylesheet" href="/fonts/fonts.css"> <link rel="stylesheet" href="/common/client.css"> -<link rel="stylesheet" href="land-and-freedom.css"> +<link rel="stylesheet" href="play2.css"> <script defer src="/common/client.js"></script> <script>var exports = {};</script> <script defer src="data.js"></script> <script defer src="play.js"></script> </head> -<style> -/* insert stylesheet here */ -</style> <body> <header> @@ -103,15 +100,16 @@ <div id="player_area" class="panel"> <div id="player_area_header" class="panel_header"> <div id="hand_tab" data-active="active" class="player_area_tab">Hand</div> - <div id="deck_tab" data-active="inactive" class="player_area_tab">Deck</div> - <div id="discard_tab" data-active="inactive" class="player_area_tab">Discard Pile</div> - <div id="trash_tab" data-active="inactive" class="player_area_tab">Trash</div> + <div id="deck_tab" data-active="inactive" class="player_area_tab hide">Deck</div> + <div id="discard_tab" data-active="inactive" class="player_area_tab hide">Discard Pile</div> + <div id="trash_tab" data-active="inactive" class="player_area_tab hide">Trash</div> </div> <div id="hand" data-active="active" class="panel_body"></div> - <div id="deck" data-active="inactive" class="panel_body"></div> - <div id="discard" data-active="inactive" class="panel_body"></div> - <div id="trash" data-active="inactive" class="panel_body"></div> + <div id="deck" data-active="inactive" class="panel_body hide"></div> + <div id="discard" data-active="inactive" class="panel_body hide"></div> + <div id="trash" data-active="inactive" class="panel_body hide"></div> </div> + <div id="player_areas"> <div id="player_area_Anarchist" class="panel"> <div class="panel_header" data-faction-id="a">Anarchist Tableau</div> @@ -347,11 +347,11 @@ function on_update() { } place_cards(ui.hand, view.hand); ui.player_area_tabs.hand_tab.replaceChildren(`Hand (${view.hand.length})`); - place_cards(ui.player_area_cards.deck, view.deck); + // place_cards(ui.player_area_cards.deck, view.deck); ui.player_area_tabs.deck_tab.replaceChildren(`Deck (${view.deck.length})`); - place_cards(ui.player_area_cards.discard, view.discard); + // place_cards(ui.player_area_cards.discard, view.discard); ui.player_area_tabs.discard_tab.replaceChildren(`Discard (${view.discard.length})`); - place_cards(ui.player_area_cards.trash, view.trash); + // place_cards(ui.player_area_cards.trash, view.trash); ui.player_area_tabs.trash_tab.replaceChildren(`Trash (${view.trash.length})`); place_cards(ui.selectable_cards, view.selectable_cards); for (let faction_id of FACTIONS) { diff --git a/play2.css b/play2.css new file mode 100644 index 0000000..bebfc07 --- /dev/null +++ b/play2.css @@ -0,0 +1,577 @@ +main { + background-color: dimgray; +} + +#mapwrap { + width: 1650px; + height: 1275px; +} + +#map { + width: 1650px; + height: 1275px; + background-size: 1650px 1275px; + box-shadow: 0px 1px 10px #0008; + background-image: url(images/map75.jpg); +} + +@media (min-resolution: 97dpi) { + #map { background-image: url(images/map150.jpg); } +} + +/* PANELS */ + +.panel { + background-color: #555; + max-width: 1650px; + margin: 24px auto; + position: relative; +} + +.panel_header { + background-color: #888; + padding: 6px; +} + +.panel_body { + display: flex; + flex-wrap: wrap; + gap: 12px; + padding: 12px; +} + +.card { + background-size: 100% 100%; + width: 206px; + height: 281px; + xborder-radius: 5px; + box-shadow: 0 0 0 1px #333; +} + +.card.event { + position: absolute; +} + +.faction_token[data-faction-id=a] { + background-image: url("images/factions/anarchists.png"); +} + +.faction_token[data-faction-id=c] { + background-image: url("images/factions/communists.png"); +} + +.faction_token[data-faction-id=m] { + background-image: url("images/factions/moderates.png"); +} + +.initiative_token { + background-image: url("images/initiative_clockwise.png"); +} + +.initiative_token[data-year="2"] { + background-image: url("images/initiative_counter_clockwise.png"); +} + +.standee[data-standee-id="0"] { + background-image: url("images/standees/standee_0.png"); +} + +.standee[data-standee-id="1"] { + background-image: url("images/standees/standee_1.png"); +} + +.standee[data-standee-id="2"] { + background-image: url("images/standees/standee_2.png"); +} + +.standee[data-standee-id="3"] { + background-image: url("images/standees/standee_3.png"); +} + +.standee[data-standee-id="4"] { + background-image: url("images/standees/standee_4.png"); +} + +.bonus[data-bonus-id="0"][data-bonus-on="0"] { + background-image: url("images/bonus/bonus_0_off.png"); +} + +.bonus[data-bonus-id="0"][data-bonus-on="1"] { + background-image: url("images/bonus/bonus_0_on.png"); +} + +.bonus[data-bonus-id="1"][data-bonus-on="0"] { + background-image: url("images/bonus/bonus_1_off.png"); +} + +.bonus[data-bonus-id="1"][data-bonus-on="1"] { + background-image: url("images/bonus/bonus_1_on.png"); +} + +.medallion[data-medallion-id="0"] { + background-image: url("images/medallions/medallion_0.png"); +} + +.medallion[data-medallion-id="1"] { + background-image: url("images/medallions/medallion_1.png"); +} + +.medallion[data-medallion-id="2"] { + background-image: url("images/medallions/medallion_2.png"); +} + +.medallion[data-medallion-id="3"] { + background-image: url("images/medallions/medallion_3.png"); +} + +.medallion[data-medallion-id="4"] { + background-image: url("images/medallions/medallion_4.png"); +} + +.medallion[data-medallion-id="5"] { + background-image: url("images/medallions/medallion_5.png"); +} + +.medallion[data-medallion-id="6"] { + background-image: url("images/medallions/medallion_6.png"); +} + +.medallion[data-medallion-id="7"] { + background-image: url("images/medallions/medallion_7.png"); +} + +.medallion[data-medallion-id="8"] { + background-image: url("images/medallions/medallion_8.png"); +} + +.card[data-card-id="1"] { + background-image: url("images/cards75/card_1.png"); +} + +.card[data-card-id="2"] { + background-image: url("images/cards75/card_2.png"); +} + +.card[data-card-id="3"] { + background-image: url("images/cards75/card_3.png"); +} + +.card[data-card-id="4"] { + background-image: url("images/cards75/card_4.png"); +} + +.card[data-card-id="5"] { + background-image: url("images/cards75/card_5.png"); +} + +.card[data-card-id="6"] { + background-image: url("images/cards75/card_6.png"); +} + +.card[data-card-id="7"] { + background-image: url("images/cards75/card_7.png"); +} + +.card[data-card-id="8"] { + background-image: url("images/cards75/card_8.png"); +} + +.card[data-card-id="9"] { + background-image: url("images/cards75/card_9.png"); +} + +.card[data-card-id="10"] { + background-image: url("images/cards75/card_10.png"); +} + +.card[data-card-id="11"] { + background-image: url("images/cards75/card_11.png"); +} + +.card[data-card-id="12"] { + background-image: url("images/cards75/card_12.png"); +} + +.card[data-card-id="13"] { + background-image: url("images/cards75/card_13.png"); +} + +.card[data-card-id="14"] { + background-image: url("images/cards75/card_14.png"); +} + +.card[data-card-id="15"] { + background-image: url("images/cards75/card_15.png"); +} + +.card[data-card-id="16"] { + background-image: url("images/cards75/card_16.png"); +} + +.card[data-card-id="17"] { + background-image: url("images/cards75/card_17.png"); +} + +.card[data-card-id="18"] { + background-image: url("images/cards75/card_18.png"); +} + +.card[data-card-id="19"] { + background-image: url("images/cards75/card_19.png"); +} + +.card[data-card-id="20"] { + background-image: url("images/cards75/card_20.png"); +} + +.card[data-card-id="21"] { + background-image: url("images/cards75/card_21.png"); +} + +.card[data-card-id="22"] { + background-image: url("images/cards75/card_22.png"); +} + +.card[data-card-id="23"] { + background-image: url("images/cards75/card_23.png"); +} + +.card[data-card-id="24"] { + background-image: url("images/cards75/card_24.png"); +} + +.card[data-card-id="25"] { + background-image: url("images/cards75/card_25.png"); +} + +.card[data-card-id="26"] { + background-image: url("images/cards75/card_26.png"); +} + +.card[data-card-id="27"] { + background-image: url("images/cards75/card_27.png"); +} + +.card[data-card-id="28"] { + background-image: url("images/cards75/card_28.png"); +} + +.card[data-card-id="29"] { + background-image: url("images/cards75/card_29.png"); +} + +.card[data-card-id="30"] { + background-image: url("images/cards75/card_30.png"); +} + +.card[data-card-id="31"] { + background-image: url("images/cards75/card_31.png"); +} + +.card[data-card-id="32"] { + background-image: url("images/cards75/card_32.png"); +} + +.card[data-card-id="33"] { + background-image: url("images/cards75/card_33.png"); +} + +.card[data-card-id="34"] { + background-image: url("images/cards75/card_34.png"); +} + +.card[data-card-id="35"] { + background-image: url("images/cards75/card_35.png"); +} + +.card[data-card-id="36"] { + background-image: url("images/cards75/card_36.png"); +} + +.card[data-card-id="37"] { + background-image: url("images/cards75/card_37.png"); +} + +.card[data-card-id="38"] { + background-image: url("images/cards75/card_38.png"); +} + +.card[data-card-id="39"] { + background-image: url("images/cards75/card_39.png"); +} + +.card[data-card-id="40"] { + background-image: url("images/cards75/card_40.png"); +} + +.card[data-card-id="41"] { + background-image: url("images/cards75/card_41.png"); +} + +.card[data-card-id="42"] { + background-image: url("images/cards75/card_42.png"); +} + +.card[data-card-id="43"] { + background-image: url("images/cards75/card_43.png"); +} + +.card[data-card-id="44"] { + background-image: url("images/cards75/card_44.png"); +} + +.card[data-card-id="45"] { + background-image: url("images/cards75/card_45.png"); +} + +.card[data-card-id="46"] { + background-image: url("images/cards75/card_46.png"); +} + +.card[data-card-id="47"] { + background-image: url("images/cards75/card_47.png"); +} + +.card[data-card-id="48"] { + background-image: url("images/cards75/card_48.png"); +} + +.card[data-card-id="49"] { + background-image: url("images/cards75/card_49.png"); +} + +.card[data-card-id="50"] { + background-image: url("images/cards75/card_50.png"); +} + +.card[data-card-id="51"] { + background-image: url("images/cards75/card_51.png"); +} + +.card[data-card-id="52"] { + background-image: url("images/cards75/card_52.png"); +} + +.card[data-card-id="53"] { + background-image: url("images/cards75/card_53.png"); +} + +.card[data-card-id="54"] { + background-image: url("images/cards75/card_54.png"); +} + +.card[data-card-id="55"] { + background-image: url("images/cards75/card_55.png"); +} + +.card[data-card-id="56"] { + background-image: url("images/cards75/card_56.png"); +} + +.card[data-card-id="57"] { + background-image: url("images/cards75/card_57.png"); +} + +.card[data-card-id="58"] { + background-image: url("images/cards75/card_58.png"); +} + +.card[data-card-id="59"] { + background-image: url("images/cards75/card_59.png"); +} + +.card[data-card-id="60"] { + background-image: url("images/cards75/card_60.png"); +} + +.card[data-card-id="61"] { + background-image: url("images/cards75/card_61.png"); +} + +.card[data-card-id="62"] { + background-image: url("images/cards75/card_62.png"); +} + +.card[data-card-id="63"] { + background-image: url("images/cards75/card_63.png"); +} + +.card[data-card-id="64"] { + background-image: url("images/cards75/card_64.png"); +} + +.card[data-card-id="65"] { + background-image: url("images/cards75/card_65.png"); +} + +.card[data-card-id="66"] { + background-image: url("images/cards75/card_66.png"); +} + +.card[data-card-id="67"] { + background-image: url("images/cards75/card_67.png"); +} + +.card[data-card-id="68"] { + background-image: url("images/cards75/card_68.png"); +} + +.card[data-card-id="69"] { + background-image: url("images/cards75/card_69.png"); +} + +.card[data-card-id="70"] { + background-image: url("images/cards75/card_70.png"); +} + +.card[data-card-id="71"] { + background-image: url("images/cards75/card_71.png"); +} + +.card[data-card-id="72"] { + background-image: url("images/cards75/card_72.png"); +} + +.card[data-card-id="73"] { + background-image: url("images/cards75/card_73.png"); +} + +.card[data-card-id="74"] { + background-image: url("images/cards75/card_74.png"); +} + +.card[data-card-id="75"] { + background-image: url("images/cards75/card_75.png"); +} + +.card[data-card-id="76"] { + background-image: url("images/cards75/card_76.png"); +} + +.card[data-card-id="77"] { + background-image: url("images/cards75/card_77.png"); +} + +.card[data-card-id="78"] { + background-image: url("images/cards75/card_78.png"); +} + +.card[data-card-id="79"] { + background-image: url("images/cards75/card_79.png"); +} + +.card[data-card-id="80"] { + background-image: url("images/cards75/card_80.png"); +} + +.card[data-card-id="81"] { + background-image: url("images/cards75/card_81.png"); +} + +.card[data-card-id="82"] { + background-image: url("images/cards75/card_82.png"); +} + +.card[data-card-id="83"] { + background-image: url("images/cards75/card_83.png"); +} + +.card[data-card-id="84"] { + background-image: url("images/cards75/card_84.png"); +} + +.card[data-card-id="85"] { + background-image: url("images/cards75/card_85.png"); +} + +.card[data-card-id="86"] { + background-image: url("images/cards75/card_86.png"); +} + +.card[data-card-id="87"] { + background-image: url("images/cards75/card_87.png"); +} + +.card[data-card-id="88"] { + background-image: url("images/cards75/card_88.png"); +} + +.card[data-card-id="89"] { + background-image: url("images/cards75/card_89.png"); +} + +.card[data-card-id="90"] { + background-image: url("images/cards75/card_90.png"); +} + +.card[data-card-id="91"] { + background-image: url("images/cards75/card_91.png"); +} + +.card[data-card-id="92"] { + background-image: url("images/cards75/card_92.png"); +} + +.card[data-card-id="93"] { + background-image: url("images/cards75/card_93.png"); +} + +.card[data-card-id="94"] { + background-image: url("images/cards75/card_94.png"); +} + +.card[data-card-id="95"] { + background-image: url("images/cards75/card_95.png"); +} + +.card[data-card-id="96"] { + background-image: url("images/cards75/card_96.png"); +} + +.card[data-card-id="97"] { + background-image: url("images/cards75/card_97.png"); +} + +.card[data-card-id="98"] { + background-image: url("images/cards75/card_98.png"); +} + +.card[data-card-id="99"] { + background-image: url("images/cards75/card_99.png"); +} + +.card[data-card-id="100"] { + background-image: url("images/cards75/card_100.png"); +} + +.card[data-card-id="101"] { + background-image: url("images/cards75/card_101.png"); +} + +.card[data-card-id="102"] { + background-image: url("images/cards75/card_102.png"); +} + +.card[data-card-id="103"] { + background-image: url("images/cards75/card_103.png"); +} + +.card[data-card-id="104"] { + background-image: url("images/cards75/card_104.png"); +} + +.card[data-card-id="105"] { + background-image: url("images/cards75/card_105.png"); +} + +.card[data-card-id="106"] { + background-image: url("images/cards75/card_106.png"); +} + +.card[data-card-id="107"] { + background-image: url("images/cards75/card_107.png"); +} + +.card[data-card-id="108"] { + background-image: url("images/cards75/card_108.png"); +} diff --git a/play2.js b/play2.js new file mode 100644 index 0000000..9a0e8f4 --- /dev/null +++ b/play2.js @@ -0,0 +1,242 @@ +"use strict" + +const ui = { + map: document.getElementById('map'), + glory_container: document.getElementById('glory'), + hand: document.getElementById('hand'), + player_areas: { + Anarchist: document.getElementById('player_area_Anarchist'), + Communist: document.getElementById('player_area_Communist'), + Moderate: document.getElementById('player_area_Moderate'), + }, + tableaus: { + a: document.getElementById('tableau_a'), + c: document.getElementById('tableau_c'), + m: document.getElementById('tableau_m'), + }, + standees: [], + fronts: [], + cards: [], +}; + +let action_register = [] + +function register_action(e, action, id) { + e.my_action = action + e.my_id = id + e.onmousedown = on_click_action + action_register.push(e) +} + +function on_click_action(evt) { + if (evt.button === 0) + if (send_action(evt.target.my_action, evt.target.my_id)) + evt.stopPropagation() +} + +function is_action(action, arg) { + if (arg === undefined) + return !!(view.actions && view.actions[action] === 1) + return !!(view.actions && view.actions[action] && view.actions[action].includes(arg)) +} + +let on_init_once = false; + +function on_init() { + if (on_init_once) + return; + on_init_once = true; + for (let t = 0; t < TRACK_COUNT; ++t) { + for (let s = 0; s < TRACK_LENGTH; ++s) { + const bm = t * 11 + s; + let e = (ui.blank_markers[bm] = document.createElement('div')); + e.className = 'blank_marker'; + register_action(e, 'blank_marker', bm); + } + } + for (let b = 0; b < BONUSES_COUNT; ++b) { + let e = (ui.bonuses[b] = document.createElement('div')); + e.className = 'bonus'; + e.setAttribute('data-bonus-id', '' + b); + e.style.left = LAYOUT_BONUSES[b][0] + 'px'; + e.style.top = LAYOUT_BONUSES[b][1] + 'px'; + LAYOUT_BONUSES; + register_action(e, 'bonus', b); + ui.map.appendChild(ui.bonuses[b]); + } + for (let g = 0; g < GLORY_COUNT; ++g) { + let e = (ui.glory[g] = document.createElement('div')); + e.className = 'faction_token'; + ui.glory_container.appendChild(ui.glory[g]); + e.style.left = LAYOUT_GLORY[g][0] + 'px'; + e.style.top = LAYOUT_GLORY[g][1] + 'px'; + } + for (let m = 0; m < medallionS_COUNT; ++m) { + let e = (ui.medallions[m] = document.createElement('div')); + e.className = 'medallion'; + e.setAttribute('data-medallion-id', '' + m); + register_action(e, 'medallion', m); + } + for (let s = 0; s < STANDEES_COUNT; ++s) { + let e = (ui.standees[s] = document.createElement('div')); + e.className = 'standee'; + e.setAttribute('data-standee-id', '' + s); + register_action(e, 'standee', s); + ui.tracks.appendChild(ui.standees[s]); + } + for (let c = 1; c < CARD_COUNT; ++c) { + let e = (ui.cards[c] = document.createElement('div')); + e.className = 'card'; + e.setAttribute('data-card-id', '' + data.cards[c].id); + register_action(e, 'card', c); + } + let e = (ui.initiative_token = document.createElement('div')); + e.className = 'initiative_token'; + data.fronts.forEach((front) => { + ui.tokens_on_front[front.id] = {}; + FACTIONS.forEach((faction_id) => { + let e = (ui.tokens_on_front[front.id][faction_id] = + document.createElement('div')); + e.className = 'faction_token'; + e.setAttribute('data-faction-id', faction_id); + }); + }); + Object.keys(ui.fronts).forEach((front_id) => { + register_action(ui.fronts[front_id].front, 'front', front_id); + }); +} + +function place_cards(e, cards) { + e.replaceChildren() + for (let c of cards) { + ui.cards[c].classList.remove("selected") + e.appendChild(ui.cards[c]) + if (view.selected_cards.includes(c)) { + ui.cards[c].classList.add("selected") + } + } +} + +function on_update() { + console.log('on_update', view); + on_init(); + for (let key of Object.keys(view.hero_points)) { + ui.roles[key].hero_points.replaceChildren(`Hero Points: ${view.hero_points[key]}`); + } + ui.bag_of_glory.replaceChildren(`Bag of Glory: ${view.bag_of_glory_count}`); + ui.current_events.replaceChildren(); + for (let i = 0; i < view.current_events.length; i++) { + const cardId = view.current_events[i]; + ui.current_events.appendChild(ui.cards[cardId]); + ui.cards[cardId].classList.add('event'); + ui.cards[cardId].style.left = LAYOUT_CURRENT_EVENTS[i][0] + 'px'; + ui.cards[cardId].style.top = LAYOUT_CURRENT_EVENTS[i][1] + 'px'; + } + ui.markers.replaceChildren(); + for (let bm of view.triggered_track_effects) { + const s = bm % 11; + const t = Math.floor(bm / 11); + ui.markers.appendChild(ui.blank_markers[bm]); + ui.blank_markers[bm].style.left = LAYOUT_TRACKS[t][s][0] + 'px'; + ui.blank_markers[bm].style.top = LAYOUT_TRACKS[t][s][1] + 'px'; + } + for (let bonus_id of Object.keys(view.bonuses)) { + ui.bonuses[bonus_id].setAttribute('data-bonus-on', view.bonuses[bonus_id] + 0); + } + place_cards(ui.hand, view.hand); + ui.player_area_tabs.hand_tab.replaceChildren(`Hand (${view.hand.length})`); + place_cards(ui.player_area_cards.deck, view.deck); + ui.player_area_tabs.deck_tab.replaceChildren(`Deck (${view.deck.length})`); + place_cards(ui.player_area_cards.discard, view.discard); + ui.player_area_tabs.discard_tab.replaceChildren(`Discard (${view.discard.length})`); + place_cards(ui.player_area_cards.trash, view.trash); + ui.player_area_tabs.trash_tab.replaceChildren(`Trash (${view.trash.length})`); + place_cards(ui.selectable_cards, view.selectable_cards); + for (let faction_id of FACTIONS) { + place_cards(ui.tableaus[faction_id], view.tableaus[faction_id]); + } + for (let i = 0; i < view.tracks.length; ++i) { + ui.standees[i].style.left = LAYOUT_TRACKS[i][view.tracks[i]][0] + 'px'; + ui.standees[i].style.top = LAYOUT_TRACKS[i][view.tracks[i]][1] + 'px'; + } + for (let front_id of Object.keys(view.fronts)) { + const front_data = view.fronts[front_id]; + ui.fronts[front_id].value.replaceChildren(front_data.status !== null ? front_data.status : front_data.value); + ui.fronts[front_id].contributions.replaceChildren(); + for (let faction_id of front_data.contributions) { + ui.fronts[front_id].contributions.appendChild(ui.tokens_on_front[front_id][faction_id]); + } + } + ui.medallions_container.replaceChildren(); + for (let i = 0; i < view.medallions.pool.length; ++i) { + if (view.medallions.pool[i] !== null) { + const id = view.medallions.pool[i]; + ui.medallions[id].style.left = LAYOUT_medallionS[i][0] + 'px'; + ui.medallions[id].style.top = LAYOUT_medallionS[i][1] + 'px'; + ui.medallions_container.appendChild(ui.medallions[id]); + } + } + for (let f of FACTIONS) { + ui.roles[f].medallions.replaceChildren(); + for (let m of view.medallions[f]) { + ui.roles[f].medallions.appendChild(ui.medallions[m]); + } + } + ui.roles[view.initiative].medallions.appendChild(ui.initiative_token); + ui.initiative_token.setAttribute('data-year', view.year); + if (view.played_card === null) { + ui.turn_info.style.display = 'none'; + } + else { + ui.turn_info.style.display = ''; + ui.turn_info_card.setAttribute('data-card-id', view.played_card + ''); + } + Object.values(ui.glory).forEach((elt) => elt.removeAttribute('data-faction-id')); + for (let g = 0; g < view.glory.length; ++g) { + ui.glory[g].setAttribute('data-faction-id', view.glory[g]); + } + for (let e of action_register) + e.classList.toggle('action', is_action(e.my_action, e.my_id)); + ui.year.replaceChildren(`Year ${view.year}`); + action_button('add_to_front', '+1 to a Front'); + action_button('d_liberty', 'Decrease Liberty'); + action_button('soviet_support', 'Soviet Support'); + action_button('collectivization', 'Collectivization'); + action_button('d_collectivization', 'Decrease Collectivization'); + action_button('d_foreign_aid', 'Decrease Foreign Aid'); + action_button('d_government', 'Decrease Government'); + action_button('d_soviet_support', 'Decrease Soviet Support'); + action_button('foreign_aid', 'Foreign Aid'); + action_button('government', 'Government'); + action_button('liberty', 'Liberty'); + action_button('government_to_center', 'Government towards center'); + action_button('teamwork_on', 'Teamwork Bonus On'); + action_button('Anarchist', 'Anarchist'); + action_button('Communist', 'Communist'); + action_button('Moderate', 'Moderate'); + action_button('gain_hp', 'Gain Hero Points'); + action_button('lose_hp', 'Lose Hero Points'); + action_button('draw_card', 'Draw a card'); + action_button('draw_cards', 'Draw cards'); + action_button('play_to_tableau', 'Play card to Tableau'); + action_button('play_for_event', 'Play card for Event'); + action_button('use_ap', 'Use Action Points'); + action_button('use_morale_bonus', 'Use Morale Bonus'); + action_button('move_track', 'Move a Track'); + action_button('turn_on_bonus', 'Turn on a Bonus'); + action_button('add_glory', 'Add to Bag of Glory'); + action_button('draw_glory', 'Draw from Bag of Glory'); + action_button('up', 'Up'); + action_button('down', 'Down'); + action_button('next', 'Next'); + action_button('remove_blank_marker', 'Remove Blank marker'); + action_button('confirm', 'Confirm'); + action_button('yes', 'Yes'); + action_button('no', 'No'); + action_button('skip', 'Skip'); + action_button('spend_hp', 'Spend Hero Points'); + action_button('use_momentum', 'Play second card (Momentum)'); + action_button('done', 'Done'); + action_button('end_turn', 'End turn'); + action_button('undo', 'Undo'); +} @@ -1,9 +1,6 @@ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); -exports.roles = exports.scenarios = void 0; -exports.action = action; -exports.view = game_view; -exports.setup = setup; +exports.setup = exports.view = exports.action = exports.roles = exports.scenarios = void 0; const data_1 = require("./data"); const OBSERVER = 'Observer'; const states = {}; @@ -92,6 +89,7 @@ function action(state, player, action, arg) { throw new Error('Invalid action: ' + action); return game; } +exports.action = action; const state_node = 'l'; const seq_node = 's'; const function_node = 'f'; @@ -397,6 +395,7 @@ function game_view(state, current) { } return view; } +exports.view = game_view; function setup(seed, _scenario, _options) { game = { seed: seed, @@ -491,6 +490,7 @@ function setup(seed, _scenario, _options) { start_year(); return game; } +exports.setup = setup; function draw_hand_cards(faction_id, count) { const deck = list_deck(faction_id); if (game.medallions[faction_id].includes(data_1.INTELLIGENCE_MEDALLION_ID)) { |