Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions map-generator/assets/maps/britannia/info.json
Original file line number Diff line number Diff line change
Expand Up @@ -98,8 +98,7 @@
},
{
"coordinates": [404, 1146],
"name": "Fermanagh",
"flag": "gb-nir"
"name": "Fermanagh"
}
]
}
18 changes: 6 additions & 12 deletions map-generator/assets/maps/italia/info.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
"nations": [
{
"coordinates": [1038, 993],
"name": "Kingdom of the Two Sicilies",
"flag": "custom:Kingdom of the Two Sicilies"
"name": "Kingdom of the Two Sicilies"
},
{
"coordinates": [370, 1137],
Expand All @@ -18,8 +17,7 @@
},
{
"coordinates": [625, 534],
"name": "Tuscany",
"flag": "custom:Tuscany"
"name": "Tuscany"
},
{
"coordinates": [595, 190],
Expand All @@ -28,13 +26,11 @@
},
{
"coordinates": [469, 386],
"name": "Modena",
"flag": "custom:Modena"
"name": "Modena"
},
{
"coordinates": [391, 254],
"name": "Parma",
"flag": "custom:Parma"
"name": "Parma"
},
{
"coordinates": [361, 68],
Expand All @@ -43,8 +39,7 @@
},
{
"coordinates": [278, 774],
"name": "Kingdom of Sardinia",
"flag": "custom:Kingdom of Sardinia"
"name": "Kingdom of Sardinia"
},
{
"coordinates": [29, 266],
Expand All @@ -58,8 +53,7 @@
},
{
"coordinates": [1238, 349],
"name": "Ottoman Empire",
"flag": "custom:Ottoman Empire2"
"name": "Ottoman Empire"
}
]
}
22 changes: 11 additions & 11 deletions map-generator/assets/maps/montreal/info.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,17 @@
"nations": [
{
"coordinates": [800, 430],
"flag": "quebec",
"flag": "Quebec",
"name": "Laval"
},
{
"coordinates": [1110, 930],
"flag": "quebec",
"flag": "Quebec",
"name": "Royal Mount park"
},
{
"coordinates": [1220, 1360],
"flag": "quebec",
"flag": "Quebec",
"name": "Hochelaga Archipelago"
},
{
Expand All @@ -23,42 +23,42 @@
},
{
"coordinates": [1400, 1000],
"flag": "quebec",
"flag": "Quebec",
"name": "Saint-Lambert"
},
{
"coordinates": [500, 130],
"flag": "quebec",
"flag": "Quebec",
"name": "Blainville"
},
{
"coordinates": [350, 650],
"flag": "quebec",
"flag": "Quebec",
"name": "Saint-Eustache"
},
{
"coordinates": [200, 1350],
"flag": "quebec",
"flag": "Quebec",
"name": "Perrot Island"
},
{
"coordinates": [25, 950],
"flag": "quebec",
"flag": "Quebec",
"name": "Kanesatake Lands"
},
{
"coordinates": [50, 450],
"flag": "quebec",
"flag": "Quebec",
"name": "Mirabel"
},
{
"coordinates": [650, 1450],
"flag": "quebec",
"flag": "Quebec",
"name": "Chateauguay"
},
{
"coordinates": [1330, 300],
"flag": "quebec",
"flag": "Quebec",
"name": "Pointe-aux-Trembles"
}
]
Expand Down
9 changes: 3 additions & 6 deletions map-generator/assets/maps/straitofgibraltar/info.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
"nations": [
{
"coordinates": [1941, 1031],
"name": "Rif",
"flag": "Rif"
"name": "Rif"
},
{
"coordinates": [2733, 1190],
Expand All @@ -28,13 +27,11 @@
},
{
"coordinates": [1271, 1393],
"name": "Shilha",
"flag": "Shilha"
"name": "Shilha"
},
{
"coordinates": [1555, 258],
"name": "Andalusia",
"flag": "Andalusia"
"name": "Andalusia"
}
]
}
1 change: 0 additions & 1 deletion resources/maps/britannia/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,6 @@
},
{
"coordinates": [404, 1146],
"flag": "gb-nir",
"name": "Fermanagh"
}
]
Expand Down
6 changes: 0 additions & 6 deletions resources/maps/italia/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
"nations": [
{
"coordinates": [1038, 993],
"flag": "custom:Kingdom of the Two Sicilies",
"name": "Kingdom of the Two Sicilies"
},
{
Expand All @@ -33,7 +32,6 @@
},
{
"coordinates": [625, 534],
"flag": "custom:Tuscany",
"name": "Tuscany"
},
{
Expand All @@ -43,12 +41,10 @@
},
{
"coordinates": [469, 386],
"flag": "custom:Modena",
"name": "Modena"
},
{
"coordinates": [391, 254],
"flag": "custom:Parma",
"name": "Parma"
},
{
Expand All @@ -58,7 +54,6 @@
},
{
"coordinates": [278, 774],
"flag": "custom:Kingdom of Sardinia",
"name": "Kingdom of Sardinia"
},
{
Expand All @@ -73,7 +68,6 @@
},
{
"coordinates": [1238, 349],
"flag": "custom:Ottoman Empire2",
"name": "Ottoman Empire"
}
]
Expand Down
22 changes: 11 additions & 11 deletions resources/maps/montreal/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,17 @@
"nations": [
{
"coordinates": [800, 430],
"flag": "quebec",
"flag": "Quebec",
"name": "Laval"
},
{
"coordinates": [1110, 930],
"flag": "quebec",
"flag": "Quebec",
"name": "Royal Mount park"
},
{
"coordinates": [1220, 1360],
"flag": "quebec",
"flag": "Quebec",
"name": "Hochelaga Archipelago"
},
{
Expand All @@ -38,42 +38,42 @@
},
{
"coordinates": [1400, 1000],
"flag": "quebec",
"flag": "Quebec",
"name": "Saint-Lambert"
},
{
"coordinates": [500, 130],
"flag": "quebec",
"flag": "Quebec",
"name": "Blainville"
},
{
"coordinates": [350, 650],
"flag": "quebec",
"flag": "Quebec",
"name": "Saint-Eustache"
},
{
"coordinates": [200, 1350],
"flag": "quebec",
"flag": "Quebec",
"name": "Perrot Island"
},
{
"coordinates": [25, 950],
"flag": "quebec",
"flag": "Quebec",
"name": "Kanesatake Lands"
},
{
"coordinates": [50, 450],
"flag": "quebec",
"flag": "Quebec",
"name": "Mirabel"
},
{
"coordinates": [650, 1450],
"flag": "quebec",
"flag": "Quebec",
"name": "Chateauguay"
},
{
"coordinates": [1330, 300],
"flag": "quebec",
"flag": "Quebec",
"name": "Pointe-aux-Trembles"
}
]
Expand Down
3 changes: 0 additions & 3 deletions resources/maps/straitofgibraltar/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
"nations": [
{
"coordinates": [1941, 1031],
"flag": "Rif",
"name": "Rif"
},
{
Expand All @@ -43,12 +42,10 @@
},
{
"coordinates": [1271, 1393],
"flag": "Shilha",
"name": "Shilha"
},
{
"coordinates": [1555, 258],
"flag": "Andalusia",
"name": "Andalusia"
}
]
Expand Down
61 changes: 61 additions & 0 deletions tests/MapManifestFlags.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
import fs from "fs";
import { globSync } from "glob";
import path from "path";

type Nation = {
flag?: string;
};

type Manifest = {
nations?: Nation[];
};

describe("Map manifests: nation flags exist", () => {
test("All nations' flags reference existing SVG files", () => {
const manifestPaths = globSync("resources/maps/**/manifest.json");

expect(manifestPaths.length).toBeGreaterThan(0);

const flagDir = path.join(__dirname, "../resources/flags");
const errors: string[] = [];

for (const manifestPath of manifestPaths) {
try {
const raw = fs.readFileSync(manifestPath, "utf8");
const manifest = JSON.parse(raw) as Manifest;

(manifest.nations ?? []).forEach((nation, idx) => {
const flag = nation?.flag;
if (flag === undefined || flag === null) return;
if (typeof flag !== "string") {
errors.push(
`${manifestPath} -> nations[${idx}].flag is not a string`,
);
return;
}

if (flag.trim().length === 0) return;
if (flag.startsWith("!")) return;

const svgFile = flag.endsWith(".svg") ? flag : `${flag}.svg`;
const flagPath = path.join(flagDir, svgFile);
if (!fs.existsSync(flagPath)) {
errors.push(
`${manifestPath} -> nations[${idx}].flag "${flag}" does not exist in resources/flags`,
);
}
});
} catch (err) {
errors.push(
`Failed to parse ${manifestPath}: ${(err as Error).message}`,
);
}
}

if (errors.length > 0) {
throw new Error(
"Map manifest flag file violations:\n" + errors.join("\n"),
);
}
});
});
Loading