();
+ for (const item of items) {
+ const arr = map.get(item.tier) ?? [];
+ arr.push(item);
+ map.set(item.tier, arr);
+ }
+ return [...map.entries()].sort((a, b) => a[0] - b[0]);
+ }, [items]);
+
+ const tiers = useMemo(() => {
+ const all = tab === "units"
+ ? [...new Set(allUnits.map(u => u.tier))]
+ : [...new Set(allBuildings.map(b => b.tier))];
+ return all.sort((a, b) => a - b);
+ }, [tab, allUnits, allBuildings]);
+
+ return (
+
+
+
+
+ β DEMO ONLY β Wesnoth sprites are CC-BY-SA / GPL-2.0+ (copyleft). Replace before Steam release.
+
+
+
+
+ { setTab("units"); setTierFilter("all"); }}>
+ Units ({allUnits.length})
+
+ { setTab("buildings"); setTierFilter("all"); }}>
+ Buildings ({allBuildings.length})
+
+
+
+ setSearch(e.target.value)}
+ />
+
+ setTierFilter(e.target.value === "all" ? "all" : Number(e.target.value))}
+ >
+ All Tiers
+ {tiers.map(tier => (
+ Tier {tier}
+ ))}
+
+
+
+ {covered}
+ /
+ {items.length}
+ sprites covered
+
+
+
+ {byTier.map(([tier, group]) => (
+
+
+ T{tier}
+ {group.length} {tab}
+ {" Β· "}
+ {group.filter(item => !!urlMap[item.id]).length}/{group.length} sprited
+
+
+ {group.map(item => {
+ const url = urlMap[item.id];
+ const maleUrl = tab === "units" ? UNIT_URLS[`${item.id}_dwarf_male`] : undefined;
+ const femaleUrl = tab === "units" ? UNIT_URLS[`${item.id}_dwarf_female`] : undefined;
+ return (
+
+ {url ? (
+
+ ) : maleUrl ? (
+
+ ) : (
+ ?
+ )}
+ {item.name}
+ {"unit_type" in item && (
+ {(item as UnitRecord).unit_type}
+ )}
+ {"category" in item && (
+ {(item as BuildingRecord).category}
+ )}
+ {item.id}
+ {(maleUrl || femaleUrl) && (
+
+ {maleUrl && }
+ {femaleUrl && }
+
+ )}
+ {!url && !maleUrl && missing }
+
+ );
+ })}
+
+
+ ))}
+
+ );
+}
diff --git a/.project/designs/sprite-gallery.html b/.project/designs/sprite-gallery.html
new file mode 100644
index 00000000..1cae70f4
--- /dev/null
+++ b/.project/designs/sprite-gallery.html
@@ -0,0 +1,137 @@
+
+
+
+
+Age of Dwarves β Sprite Gallery
+
+
+
+
+
+Sprite Gallery
+Age of Dwarves β Demo sprites (Battle for Wesnoth CC-BY-SA / GPL-2.0+)
+β DEMO ONLY β Wesnoth sprites are copyleft. Replace before Steam release.
+
+
Units (0 )
+
Buildings (0 )
+
+
All Tiers
+
0 / 0 sprites covered
+
+
+
+
+
+
diff --git a/.project/screenshots/p2-74-cluster3-hud-minimap.png b/.project/screenshots/p2-74-cluster3-hud-minimap.png
new file mode 100644
index 00000000..72a0aeab
Binary files /dev/null and b/.project/screenshots/p2-74-cluster3-hud-minimap.png differ