From 66040e5bf9a84c83685a18a7fda361c89340f8b6 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Sat, 1 Jan 2022 01:27:29 +0100 Subject: Washington's War: DO NOT PUBLISH. --- data.js | 344 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 344 insertions(+) create mode 100644 data.js (limited to 'data.js') diff --git a/data.js b/data.js new file mode 100644 index 0000000..8e692a5 --- /dev/null +++ b/data.js @@ -0,0 +1,344 @@ +"use strict"; + +let BOXES = {} +let BLOCKADE = {}; +let COLONIES = {}; +let SPACES = {}; +let PATH_INDEX = {}; +let PATH_NAME; +let PATH_TYPE; + +const GENERALS = { + "Arnold": { owner: "American", strategy: 1, battle: 3, agility: 2, bonus: false }, + "Gates": { owner: "American", strategy: 2, battle: 2, agility: 1, bonus: false }, + "Greene": { owner: "American", strategy: 1, battle: 4, agility: 2, bonus: true }, + "Lafayette": { owner: "American", strategy: 1, battle: 2, agility: 1, bonus: false }, + "Lee": { owner: "American", strategy: 2, battle: 1, agility: 1, bonus: false }, + "Lincoln": { owner: "American", strategy: 2, battle: 1, agility: 1, bonus: false }, + "Washington": { owner: "American", strategy: 1, battle: 5, agility: 2, bonus: true }, + + "Burgoyne": { owner: "British", strategy: 2, battle: 2, agility: 1, bonus: false }, + "Carleton": { owner: "British", strategy: 3, battle: 3, agility: 2, bonus: false }, + "Clinton": { owner: "British", strategy: 3, battle: 4, agility: 2, bonus: false }, + "Cornwallis": { owner: "British", strategy: 2, battle: 4, agility: 2, bonus: false }, + "Howe": { owner: "British", strategy: 3, battle: 6, agility: 3, bonus: false }, + + "Rochambeau": { owner: "French", strategy: 2, battle: 4, agility: 2, bonus: false }, +}; + +function getEdge(A, B) { + if (A > B) + return PATHS[B + "/" + A]; + return PATHS[A + "/" + B]; +} + +(function() { + let info = {}; + + function box(category, A, x, y) { + BOXES[A] = { name: A, category: category, x: x, y: y }; + } + + function space(colony, name, x, y, type) { + if (type == 'winter-quarters') { + x += 1; y += 1; + } + if (!(colony in COLONIES)) + COLONIES[colony] = []; + COLONIES[colony].push(name); + SPACES[name] = { name: name, colony: colony, type: type, port: false, x: x, y: y, exits: [] }; + } + + function line(A, B, type) { + if (A > B) { + let C = B; B = A; A = C; + } + let id = A + "/" + B; + SPACES[A].exits.push(B); + SPACES[B].exits.push(A); + info[id] = type; + if (!(A in PATH_INDEX)) PATH_INDEX[A] = {} + if (!(B in PATH_INDEX)) PATH_INDEX[B] = {} + PATH_INDEX[A][B] = -1; + PATH_INDEX[B][A] = -1; + } + + space("CA", "Fort Detroit", 55, 673, "regular-space"); + space("CA", "Montreal", 1000, 159, "fortified-port"); + space("CA", "Quebec", 1122, 57, "fortified-port"); + space("CT", "Hartford", 1183, 749, "winter-quarters"); + space("CT", "New Haven", 1088, 736, "regular-space"); + space("DE", "Wilmington DE", 885, 1079, "winter-quarters"); + space("GA", "Augusta", 140, 2060, "regular-space"); + space("GA", "Savannah", 227, 2271, "regular-space"); + space("GA", "St. Mary's", 180, 2394, "regular-space"); + space("MA", "Barnstable", 1394, 705, "regular-space"); + space("MA", "Boston", 1327, 592, "winter-quarters"); + space("MA", "Falmouth", 1334, 410, "regular-space"); + space("MA", "Lexington Concord", 1218, 628, "regular-space"); + space("MA", "Springfield", 1095, 624, "winter-quarters"); + space("MD", "Baltimore", 769, 1105, "winter-quarters"); + space("MD", "Fort Cumberland", 446, 1098, "regular-space"); + space("MD", "Frederick Town", 646, 1097, "regular-space"); + space("NC", "Charlotte", 215, 1653, "regular-space"); + space("NC", "Gilbert Town", 123, 1568, "regular-space"); + space("NC", "Hillsboro", 484, 1582, "regular-space"); + space("NC", "New Bern", 764, 1670, "regular-space"); + space("NC", "Salem", 308, 1561, "regular-space"); + space("NC", "Wake (Raleigh)", 606, 1671, "regular-space"); + space("NC", "Wilmington NC", 676, 1816, "regular-space"); + space("NH", "Brattleboro", 1102, 486, "regular-space"); + space("NH", "Concord", 1214, 460, "regular-space"); + space("NH", "Norwich", 1125, 342, "winter-quarters"); + space("NJ", "Monmouth", 998, 1074, "regular-space"); + space("NJ", "Morristown", 864, 831, "regular-space"); + space("NJ", "New Brunswick", 961, 942, "regular-space"); + space("NY", "Albany", 965, 626, "winter-quarters"); + space("NY", "Fort Niagara", 461, 526, "regular-space"); + space("NY", "Fort Stanwix", 877, 483, "winter-quarters"); + space("NY", "Genesee", 668, 582, "regular-space"); + space("NY", "Long Island", 1147, 868, "regular-space"); + space("NY", "New York", 1024, 838, "winter-quarters"); + space("NY", "Oswego", 768, 424, "regular-space"); + space("NY", "Saratoga", 992, 496, "regular-space"); + space("NY", "Ticonderoga", 993, 355, "winter-quarters"); + space("NY", "Westchester", 955, 747, "regular-space"); + space("PA", "Bassett Town", 147, 984, "regular-space"); + space("PA", "Harrisburg", 555, 880, "regular-space"); + space("PA", "Philadelphia", 846, 961, "fortified-port"); + space("PA", "Pittsburgh", 439, 958, "winter-quarters"); + space("PA", "Reading", 684, 900, "regular-space"); + space("PA", "Wyoming Valley", 685, 747, "winter-quarters"); + space("PA", "York", 589, 992, "regular-space"); + space("RI", "Newport", 1289, 736, "winter-quarters"); + space("SC", "Camden", 346, 1773, "regular-space"); + space("SC", "Charleston", 444, 2050, "fortified-port"); + space("SC", "Cheraw", 496, 1795, "regular-space"); + space("SC", "Eutaw Springs", 404, 1905, "regular-space"); + space("SC", "Fort Prince George", 74, 1773, "regular-space"); + space("SC", "Georgetown", 574, 1915, "regular-space"); + space("SC", "Ninety Six", 222, 1932, "regular-space"); + space("VA", "Abingdon", 61, 1451, "regular-space"); + space("VA", "Alexandria", 653, 1217, "winter-quarters"); + space("VA", "Charlottesville", 434, 1257, "winter-quarters"); + space("VA", "Fincastle", 349, 1402, "regular-space"); + space("VA", "Fort Chiswell", 212, 1408, "regular-space"); + space("VA", "Lynch's Ferry", 486, 1444, "regular-space"); + space("VA", "Norfolk", 781, 1450, "winter-quarters"); + space("VA", "Petersburg", 634, 1446, "regular-space"); + space("VA", "Point Pleasant", 132, 1218, "regular-space"); + space("VA", "Richmond", 608, 1323, "winter-quarters"); + space("VA", "Yorktown", 767, 1317, "regular-space"); + + box("SEA", "Sea1", 1277, 65, "blockade"); + box("SEA", "Sea2", 1469, 514, "blockade"); + box("SEA", "Sea3", 1213, 981, "blockade"); + box("SEA", "Sea4", 1058, 1174, "blockade"); + box("SEA", "Sea5", 947, 1395, "blockade"); + box("SEA", "Sea6", 637, 2027, "blockade"); + box("SEA", "Sea7", 359, 2358, "blockade"); + + box("HOLDING", "Continental Congress Dispersed", 545, 350); + box("HOLDING", "Captured Generals", 1463, 80); + box("HOLDING", "British Leader Reinforcements", 1425, 1745); + box("HOLDING", "American Leader Reinforcements", 400, 310); + box("HOLDING", "French Reinforcements", 150, 340); + + box("ALLIANCE", "French Alliance Track 0", 898, 2240); + box("ALLIANCE", "French Alliance Track 1", 964, 2240); + box("ALLIANCE", "French Alliance Track 2", 1030, 2240); + box("ALLIANCE", "French Alliance Track 3", 1096, 2240); + box("ALLIANCE", "French Alliance Track 4", 1162, 2240); + box("ALLIANCE", "French Alliance Track 5", 1228, 2240); + box("ALLIANCE", "French Alliance Track 6", 1294, 2240); + box("ALLIANCE", "French Alliance Track 7", 1360, 2240); + box("ALLIANCE", "French Alliance Track 8", 1426, 2240); + box("ALLIANCE", "French Alliance Track 9", 1492, 2240); + + box("TURN", "Game Turn 1775", 898, 2370); + box("TURN", "Game Turn 1776", 964, 2370); + box("TURN", "Game Turn 1777", 1030, 2370); + box("TURN", "Game Turn 1778", 1096, 2370); + box("TURN", "Game Turn 1779", 1162, 2370); + box("TURN", "Game Turn 1780", 1228, 2370); + box("TURN", "Game Turn 1781", 1294, 2370); + box("TURN", "Game Turn 1782", 1360, 2370); + box("TURN", "Game Turn 1783", 1426, 2370); + + box("CONTROL", "CA", 1376, 967); + box("CONTROL", "NH", 1458, 1006); + box("CONTROL", "NY", 1375, 1081); + box("CONTROL", "MA", 1491, 1081); + box("CONTROL", "CT", 1455, 1156); + box("CONTROL", "RI", 1533, 1156); + box("CONTROL", "PA", 1299, 1194); + box("CONTROL", "NJ", 1376, 1189); + box("CONTROL", "MD", 1299, 1266); + box("CONTROL", "DE", 1376, 1266); + box("CONTROL", "VA", 1241, 1337); + box("CONTROL", "NC", 1260, 1407); + box("CONTROL", "SC", 1212, 1479); + box("CONTROL", "GA", 1164, 1550); + + function wilderness(A,B) { line(A,B, "wilderness"); } + function path(A,B) { line(A,B, "path"); } + function sea(space,zone) { SPACES[space].port = true; BLOCKADE[space] = zone; } + + wilderness("Quebec", "Falmouth"); + wilderness("Fort Detroit", "Bassett Town"); + wilderness("Bassett Town", "Point Pleasant"); + + path("Quebec", "Montreal"); + path("Montreal", "Ticonderoga"); + path("Montreal", "Oswego"); + path("Oswego", "Fort Niagara"); + path("Oswego", "Fort Stanwix"); + path("Fort Niagara", "Fort Detroit"); + path("Fort Niagara", "Genesee"); + path("Ticonderoga", "Norwich"); + path("Ticonderoga", "Saratoga"); + path("Norwich", "Brattleboro"); + path("Norwich", "Concord"); + path("Concord", "Falmouth"); + path("Concord", "Brattleboro"); + path("Saratoga", "Brattleboro"); + path("Saratoga", "Albany"); + path("Brattleboro", "Springfield"); + path("Fort Stanwix", "Albany"); + path("Albany", "Springfield"); + path("Lexington Concord", "Springfield"); + path("Lexington Concord", "Boston"); + path("Falmouth", "Boston"); + path("Barnstable", "Boston"); + path("Newport", "Boston"); + path("Newport", "Hartford"); + path("Springfield", "Hartford"); + path("New Haven", "Hartford"); + path("New Haven", "New York"); + path("New Haven", "Westchester"); + path("New York", "Westchester"); + path("New York", "Long Island"); + path("Newport", "Lexington Concord"); + path("Albany", "Westchester"); + path("Fort Stanwix", "Genesee"); + path("Genesee", "Wyoming Valley"); + path("Fort Niagara", "Pittsburgh"); + path("Morristown", "Westchester"); + path("Morristown", "Wyoming Valley"); + path("Morristown", "Reading"); + path("Morristown", "New Brunswick"); + path("Morristown", "New York"); + path("New York", "New Brunswick"); + path("Monmouth", "New Brunswick"); + path("Philadelphia", "New Brunswick"); + path("Monmouth", "Philadelphia"); + path("Reading", "Philadelphia"); + path("Wyoming Valley", "Reading"); + path("Wilmington DE", "Philadelphia"); + path("Wilmington DE", "Baltimore"); + path("Bassett Town", "Pittsburgh"); + path("Fort Cumberland", "Pittsburgh"); + path("Harrisburg", "Pittsburgh"); + path("Harrisburg", "York"); + path("Reading", "York"); + path("Harrisburg", "Reading"); + path("Frederick Town", "York"); + path("Frederick Town", "Baltimore"); + path("Frederick Town", "Alexandria"); + path("Frederick Town", "Charlottesville"); + path("Frederick Town", "Fort Cumberland"); + path("Richmond", "Alexandria"); + path("Richmond", "Yorktown"); + path("Richmond", "Petersburg"); + path("Richmond", "Lynch's Ferry"); + path("Richmond", "Charlottesville"); + path("Richmond", "Norfolk"); + path("Fincastle", "Charlottesville"); + path("Fincastle", "Lynch's Ferry"); + path("Fincastle", "Fort Chiswell"); + path("Point Pleasant", "Fort Chiswell"); + path("Abingdon", "Fort Chiswell"); + path("Abingdon", "Gilbert Town"); + path("Fort Prince George", "Gilbert Town"); + path("Charlotte", "Gilbert Town"); + path("Charlotte", "Salem"); + path("Hillsboro", "Salem"); + path("Cheraw", "Salem"); + path("Lynch's Ferry", "Salem"); + path("Charlotte", "Camden"); + path("Abingdon", "Fort Prince George"); + path("New Bern", "Norfolk"); + path("Petersburg", "Norfolk"); + path("Petersburg", "Wake (Raleigh)"); + path("New Bern", "Wake (Raleigh)"); + path("Hillsboro", "Wake (Raleigh)"); + path("Petersburg", "Hillsboro"); + path("Petersburg", "Lynch's Ferry"); + path("Wilmington NC", "Wake (Raleigh)"); + path("Wilmington NC", "Cheraw"); + path("Wilmington NC", "Georgetown"); + path("Cheraw", "Georgetown"); + path("Cheraw", "Camden"); + path("Ninety Six", "Fort Prince George"); + path("Ninety Six", "Camden"); + path("Ninety Six", "Augusta"); + path("Eutaw Springs", "Camden"); + path("Eutaw Springs", "Charleston"); + path("Georgetown", "Charleston"); + path("Savannah", "Charleston"); + path("Alexandria", "Baltimore"); + path("Savannah", "Augusta"); + path("Savannah", "St. Mary's"); + path("Charlottesville", "Lynch's Ferry"); + + sea("Quebec", "Sea1"); + sea("Montreal", "Sea1"); + + sea("Falmouth", "Sea2"); + sea("Boston", "Sea2"); + sea("Barnstable", "Sea2"); + sea("Newport", "Sea2"); + + sea("New Haven", "Sea3"); + sea("New York", "Sea3"); + sea("Long Island", "Sea3"); + + sea("Philadelphia", "Sea4"); + sea("Wilmington DE", "Sea4"); + + sea("Baltimore", "Sea5"); + sea("Alexandria", "Sea5"); + sea("Yorktown", "Sea5"); + sea("Norfolk", "Sea5"); + + sea("New Bern", "Sea6"); + sea("Wilmington NC", "Sea6"); + sea("Charleston", "Sea6"); + + sea("Savannah", "Sea7"); + sea("St. Mary's", "Sea7"); + + PATH_NAME = Object.keys(info).sort(); + PATH_TYPE = []; + for (let id of PATH_NAME) + PATH_TYPE.push(info[id]); + for (let a in PATH_INDEX) { + for (let b in PATH_INDEX[a]) { + let id = a < b ? a + '/' + b : b + '/' + a; + PATH_INDEX[a][b] = PATH_NAME.indexOf(id); + } + } +})(); + +if (typeof module == 'object') { + module.exports = { + GENERALS:GENERALS, + BOXES:BOXES, + COLONIES:COLONIES, + SPACES:SPACES, + PATH_NAME:PATH_NAME, + PATH_TYPE:PATH_TYPE, + PATH_INDEX:PATH_INDEX, + BLOCKADE + } +} -- cgit v1.2.3