141 lines
5.1 KiB
JavaScript
141 lines
5.1 KiB
JavaScript
class Continent {
|
|
constructor(name) {
|
|
this.name = name;
|
|
this.yield = 0;
|
|
}
|
|
}
|
|
|
|
const REGIONS = {};
|
|
|
|
class Region {
|
|
constructor(name, continent) {
|
|
this.name = name;
|
|
this.owner = null;
|
|
this.strength = 0;
|
|
this.neighbours = new Set();
|
|
this.continent = continent;
|
|
|
|
REGIONS[name] = this;
|
|
}
|
|
|
|
static setNeighbours(region1, region2) {
|
|
region1.neighbours.add(region2);
|
|
region2.neighbours.add(region1);
|
|
}
|
|
|
|
static getRegion(name) {
|
|
return REGIONS[name];
|
|
}
|
|
|
|
/**
|
|
* Test if all regions are claimed or not.
|
|
*
|
|
* @returns {boolean}
|
|
*/
|
|
static allClaimed() {
|
|
return Object.values(REGIONS).find((r) => r.owner === null) === null;
|
|
}
|
|
|
|
claim(player) {
|
|
this.owner = player;
|
|
this.strength = 1;
|
|
}
|
|
|
|
reinforce(amount) {
|
|
this.strength += amount;
|
|
}
|
|
}
|
|
|
|
const EUROPE = new Continent("Europe");
|
|
const ASIA = new Continent("Asia");
|
|
const AUSTRALASIA = new Continent("Australasia");
|
|
const AFRICA = new Continent("Africa");
|
|
const SOUTH_AMERICA = new Continent("South America");
|
|
const NORTH_AMERICA = new Continent("North America");
|
|
|
|
const BRITISH_ISLES = new Region("British Isles", EUROPE);
|
|
const SPAIN = new Region("Spain", EUROPE);
|
|
const MEDITERRANEAN = new Region("Mediterranean", EUROPE);
|
|
const GERMANIC = new Region("Germanic States", EUROPE);
|
|
const WESTERN_SOVIET = new Region("USSR - West", EUROPE);
|
|
const SCANDINAVIA = new Region("Scandinavia", EUROPE);
|
|
const ICELAND = new Region("Iceland", EUROPE);
|
|
|
|
const GREENLAND = new Region("Greenland", NORTH_AMERICA);
|
|
const NEWFOUNDLAND = new Region("Newfoundland", NORTH_AMERICA);
|
|
const EAST_COAST = new Region("USA - East Coast", NORTH_AMERICA);
|
|
const CENTRAL_AMERICA = new Region("Mexico", NORTH_AMERICA);
|
|
const WEST_COAST = new Region("USA - West Coast", NORTH_AMERICA);
|
|
const ALASKA = new Region("USA - Alaskan", NORTH_AMERICA);
|
|
const WEST_CANADA = new Region("Canada - West", NORTH_AMERICA);
|
|
const NORTH_CANADA = new Region("Canada - North", NORTH_AMERICA);
|
|
const CENTRAL_CANADA = new Region("Canada - Central", NORTH_AMERICA);
|
|
|
|
const MIDDLE_EAST = new Region("Middle East", ASIA);
|
|
const INDIA = new Region("India", ASIA);
|
|
const SOUTH_EAST_ASIA = new Region("South East Asia", ASIA);
|
|
const SOUTH_CHINA = new Region("China - South", ASIA);
|
|
const NORTH_CHINA = new Region("China - North", ASIA);
|
|
const JAPAN = new Region("Japan", ASIA);
|
|
const ALASKAN_SOVIET = new Region("USSR - Alaskan", ASIA);
|
|
const EAST_NORTH_SOVIET = new Region("USSR - Far East/North", ASIA);
|
|
const EAST_SOUTH_SOVIET = new Region("USSR - Far East/South", ASIA);
|
|
const EASTERN_SOVIET = new Region("USSR - East", ASIA);
|
|
const CENTRAL_SOVIET = new Region("USSR - Central", ASIA);
|
|
const ISLAMIC_EMIRATE = new Region("Islamic Emirate States", ASIA);
|
|
|
|
const NORTH_AFRICA = new Region("Egypt", AFRICA);
|
|
const EAST_AFRICA = new Region("Somalia", AFRICA);
|
|
const SOUTH_AFRICA = new Region("Southern Africa", AFRICA);
|
|
const CENTRAL_AFRICA = new Region("Central Africa", AFRICA);
|
|
const WEST_AFRICA = new Region("Saharan Africa", AFRICA);
|
|
const MADAGASCAR = new Region("Madagascar", AFRICA);
|
|
|
|
const EAST_AUSTRALIA = new Region("Australia - Eastern", AUSTRALASIA);
|
|
const WEST_AUSTRALIA = new Region("Australia - Western", AUSTRALASIA);
|
|
const EAST_INDONESIA = new Region("East Indonesia", AUSTRALASIA);
|
|
const WEST_INDONESIA = new Region("West Indonesia", AUSTRALASIA);
|
|
|
|
const NORTH_SOUTH_AMERICA = new Region("Northern South America", SOUTH_AMERICA);
|
|
const EAST_SOUTH_AMERICA = new Region("Brazil", SOUTH_AMERICA);
|
|
const SOUTH_SOUTH_AMERICA = new Region("Argentina", SOUTH_AMERICA);
|
|
const WEST_SOUTH_AMERICA = new Region("Peru", SOUTH_AMERICA);
|
|
|
|
Region.setNeighbours(BRITISH_ISLES, ICELAND);
|
|
Region.setNeighbours(BRITISH_ISLES, SCANDINAVIA);
|
|
Region.setNeighbours(BRITISH_ISLES, GERMANIC);
|
|
Region.setNeighbours(BRITISH_ISLES, SPAIN);
|
|
|
|
Region.setNeighbours(SPAIN, BRITISH_ISLES);
|
|
Region.setNeighbours(SPAIN, GERMANIC);
|
|
Region.setNeighbours(SPAIN, MEDITERRANEAN);
|
|
Region.setNeighbours(SPAIN, WEST_AFRICA);
|
|
|
|
Region.setNeighbours(GERMANIC, SCANDINAVIA);
|
|
Region.setNeighbours(GERMANIC, WESTERN_SOVIET);
|
|
Region.setNeighbours(GERMANIC, MEDITERRANEAN);
|
|
Region.setNeighbours(GERMANIC, BRITISH_ISLES);
|
|
|
|
Region.setNeighbours(MEDITERRANEAN, GERMANIC);
|
|
Region.setNeighbours(MEDITERRANEAN, SPAIN);
|
|
Region.setNeighbours(MEDITERRANEAN, NORTH_AFRICA);
|
|
Region.setNeighbours(MEDITERRANEAN, WEST_AFRICA);
|
|
Region.setNeighbours(MEDITERRANEAN, MIDDLE_EAST);
|
|
Region.setNeighbours(MEDITERRANEAN, WESTERN_SOVIET);
|
|
|
|
Region.setNeighbours(ICELAND, GREENLAND);
|
|
Region.setNeighbours(ICELAND, SCANDINAVIA);
|
|
Region.setNeighbours(ICELAND, BRITISH_ISLES);
|
|
|
|
Region.setNeighbours(SCANDINAVIA, WESTERN_SOVIET);
|
|
Region.setNeighbours(SCANDINAVIA, ICELAND);
|
|
Region.setNeighbours(SCANDINAVIA, GERMANIC);
|
|
Region.setNeighbours(SCANDINAVIA, BRITISH_ISLES);
|
|
|
|
Region.setNeighbours(WESTERN_SOVIET, CENTRAL_SOVIET);
|
|
Region.setNeighbours(WESTERN_SOVIET, ISLAMIC_EMIRATE);
|
|
Region.setNeighbours(WESTERN_SOVIET, MIDDLE_EAST);
|
|
Region.setNeighbours(WESTERN_SOVIET, MEDITERRANEAN);
|
|
Region.setNeighbours(WESTERN_SOVIET, GERMANIC);
|
|
Region.setNeighbours(WESTERN_SOVIET, SCANDINAVIA);
|