diff --git a/docs/battle-map-terrain-atlas-pipeline.md b/docs/battle-map-terrain-atlas-pipeline.md index 9cbb248..9a2d67e 100644 --- a/docs/battle-map-terrain-atlas-pipeline.md +++ b/docs/battle-map-terrain-atlas-pipeline.md @@ -2,7 +2,7 @@ ## Scope -The first fifty-six campaign battles now use the same hand-painted tactical map pipeline. The renderer still reads the original scenario tile coordinates and battle logic; only the map texture asset changes from flat/vector map art to low-contrast raster terrain. +The first fifty-eight campaign battles now use the same hand-painted tactical map pipeline. The renderer still reads the original scenario tile coordinates and battle logic; only the map texture asset changes from flat/vector map art to low-contrast raster terrain. ## Art Direction @@ -86,6 +86,8 @@ python scripts/generate-handpaint-map-sample.py --map fifty-third --webp-quality python scripts/generate-handpaint-map-sample.py --map fifty-fourth --webp-quality 90 python scripts/generate-handpaint-map-sample.py --map fifty-fifth --webp-quality 90 python scripts/generate-handpaint-map-sample.py --map fifty-sixth --webp-quality 90 +python scripts/generate-handpaint-map-sample.py --map fifty-seventh --webp-quality 90 +python scripts/generate-handpaint-map-sample.py --map fifty-eighth --webp-quality 90 ``` Comparison example: @@ -152,6 +154,8 @@ python scripts/generate-handpaint-map-sample.py --map thirtieth --tile-size 192 - `src/assets/images/battle/fifty-fourth-battle-map.webp` - `src/assets/images/battle/fifty-fifth-battle-map.webp` - `src/assets/images/battle/fifty-sixth-battle-map.webp` +- `src/assets/images/battle/fifty-seventh-battle-map.webp` +- `src/assets/images/battle/fifty-eighth-battle-map.webp` ## QA Outputs @@ -265,5 +269,9 @@ python scripts/generate-handpaint-map-sample.py --map thirtieth --tile-size 192 - `docs/fifty-fifth-battle-map-handpaint-preview.png` - `docs/fifty-sixth-battle-map-handpaint-before-after.png` - `docs/fifty-sixth-battle-map-handpaint-preview.png` +- `docs/fifty-seventh-battle-map-handpaint-before-after.png` +- `docs/fifty-seventh-battle-map-handpaint-preview.png` +- `docs/fifty-eighth-battle-map-handpaint-before-after.png` +- `docs/fifty-eighth-battle-map-handpaint-preview.png` Browser screenshots are saved per verification run after build/deploy. diff --git a/docs/fifty-eighth-battle-map-handpaint-before-after.png b/docs/fifty-eighth-battle-map-handpaint-before-after.png new file mode 100644 index 0000000..4708d1a Binary files /dev/null and b/docs/fifty-eighth-battle-map-handpaint-before-after.png differ diff --git a/docs/fifty-eighth-battle-map-handpaint-preview.png b/docs/fifty-eighth-battle-map-handpaint-preview.png new file mode 100644 index 0000000..6e08bbb Binary files /dev/null and b/docs/fifty-eighth-battle-map-handpaint-preview.png differ diff --git a/docs/fifty-seventh-battle-map-handpaint-before-after.png b/docs/fifty-seventh-battle-map-handpaint-before-after.png new file mode 100644 index 0000000..286e7ec Binary files /dev/null and b/docs/fifty-seventh-battle-map-handpaint-before-after.png differ diff --git a/docs/fifty-seventh-battle-map-handpaint-preview.png b/docs/fifty-seventh-battle-map-handpaint-preview.png new file mode 100644 index 0000000..3497f2f Binary files /dev/null and b/docs/fifty-seventh-battle-map-handpaint-preview.png differ diff --git a/scripts/generate-handpaint-map-sample.py b/scripts/generate-handpaint-map-sample.py index 04057dd..955862f 100644 --- a/scripts/generate-handpaint-map-sample.py +++ b/scripts/generate-handpaint-map-sample.py @@ -562,6 +562,26 @@ MAP_CONFIGS = { "seed": 241254, "tile_size": GIGANTIC_LARGE_MAP_TILE_SIZE, }, + "fifty-seventh": { + "slug": "fifty-seventh-battle-map", + "terrain_export": "fiftySeventhBattleMap", + "units_export": "fiftySeventhBattleUnits", + "ally_positions_export": "fiftySeventhBattleAllyPositions", + "out": BATTLE_IMAGE_DIR / "fifty-seventh-battle-map.webp", + "before": BATTLE_IMAGE_DIR / "fifty-seventh-battle-map.svg", + "seed": 241264, + "tile_size": GIGANTIC_LARGE_MAP_TILE_SIZE, + }, + "fifty-eighth": { + "slug": "fifty-eighth-battle-map", + "terrain_export": "fiftyEighthBattleMap", + "units_export": "fiftyEighthBattleUnits", + "ally_positions_export": "fiftyEighthBattleAllyPositions", + "out": BATTLE_IMAGE_DIR / "fifty-eighth-battle-map.webp", + "before": BATTLE_IMAGE_DIR / "fifty-eighth-battle-map.svg", + "seed": 241274, + "tile_size": GIGANTIC_LARGE_MAP_TILE_SIZE, + }, } @@ -1019,7 +1039,9 @@ def paint_structure(draw: ImageDraw.ImageDraw, x: int, y: int, kind: str) -> Non draw.line((bx - w // 2 - 5, by, bx + w // 2 + 5, by), fill=(230, 170, 74, 72), width=3) for _ in range(5): px = RNG.randint(left + 30, right - 30) - py = RNG.randint(top + 120, bottom - 20) + ground_top = top + max(28, int(TILE * 0.54)) + ground_bottom = bottom - max(12, int(TILE * 0.09)) + py = RNG.randint(ground_top, ground_bottom) draw.line((px, py, px + RNG.randint(18, 34), py + RNG.randint(-4, 5)), fill=(*PALETTE["wood"], 120), width=3) elif kind == "camp": draw.ellipse((left + 24, top + 34, right - 18, bottom - 10), fill=(*PALETTE["road_shadow"], 54)) diff --git a/src/assets/images/battle/fifty-eighth-battle-map.svg b/src/assets/images/battle/fifty-eighth-battle-map.svg deleted file mode 100644 index a30bce4..0000000 --- a/src/assets/images/battle/fifty-eighth-battle-map.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/assets/images/battle/fifty-eighth-battle-map.webp b/src/assets/images/battle/fifty-eighth-battle-map.webp new file mode 100644 index 0000000..a6ec7f6 Binary files /dev/null and b/src/assets/images/battle/fifty-eighth-battle-map.webp differ diff --git a/src/assets/images/battle/fifty-seventh-battle-map.svg b/src/assets/images/battle/fifty-seventh-battle-map.svg deleted file mode 100644 index 723b3a4..0000000 --- a/src/assets/images/battle/fifty-seventh-battle-map.svg +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/assets/images/battle/fifty-seventh-battle-map.webp b/src/assets/images/battle/fifty-seventh-battle-map.webp new file mode 100644 index 0000000..1f18be6 Binary files /dev/null and b/src/assets/images/battle/fifty-seventh-battle-map.webp differ diff --git a/src/game/data/battleMapAssets.ts b/src/game/data/battleMapAssets.ts index f9c8bbf..475e738 100644 --- a/src/game/data/battleMapAssets.ts +++ b/src/game/data/battleMapAssets.ts @@ -7,7 +7,7 @@ import fiftySecondBattleMapUrl from '../../assets/images/battle/fifty-second-bat import fiftyThirdBattleMapUrl from '../../assets/images/battle/fifty-third-battle-map.webp'; import fiftyFourthBattleMapUrl from '../../assets/images/battle/fifty-fourth-battle-map.webp'; import fiftyFifthBattleMapUrl from '../../assets/images/battle/fifty-fifth-battle-map.webp'; -import fiftyEighthBattleMapUrl from '../../assets/images/battle/fifty-eighth-battle-map.svg'; +import fiftyEighthBattleMapUrl from '../../assets/images/battle/fifty-eighth-battle-map.webp'; import fiftyNinthBattleMapUrl from '../../assets/images/battle/fifty-ninth-battle-map.svg'; import sixtiethBattleMapUrl from '../../assets/images/battle/sixtieth-battle-map.svg'; import sixtyFirstBattleMapUrl from '../../assets/images/battle/sixty-first-battle-map.svg'; @@ -16,7 +16,7 @@ import sixtyThirdBattleMapUrl from '../../assets/images/battle/sixty-third-battl import sixtyFourthBattleMapUrl from '../../assets/images/battle/sixty-fourth-battle-map.svg'; import sixtyFifthBattleMapUrl from '../../assets/images/battle/sixty-fifth-battle-map.svg'; import sixtySixthBattleMapUrl from '../../assets/images/battle/sixty-sixth-battle-map.svg'; -import fiftySeventhBattleMapUrl from '../../assets/images/battle/fifty-seventh-battle-map.svg'; +import fiftySeventhBattleMapUrl from '../../assets/images/battle/fifty-seventh-battle-map.webp'; import fiftySixthBattleMapUrl from '../../assets/images/battle/fifty-sixth-battle-map.webp'; import fifthBattleMapUrl from '../../assets/images/battle/fifth-battle-map.webp'; import fifteenthBattleMapUrl from '../../assets/images/battle/fifteenth-battle-map.webp';