refactor: encapsulate label generation functions within LabelsModule

This commit is contained in:
StempunkDev 2026-02-17 01:50:26 +01:00
parent 6ab2c03860
commit 861db87bff

View file

@ -50,8 +50,8 @@ class LabelsModule {
generate(): void { generate(): void {
this.clear(); this.clear();
generateStateLabels(); this.generateStateLabels();
generateBurgLabels(); this.generateBurgLabels();
} }
getAll(): LabelData[] { getAll(): LabelData[] {
@ -145,24 +145,22 @@ class LabelsModule {
clear(): void { clear(): void {
pack.labels = []; pack.labels = [];
} }
}
/** /**
* Generate state labels data entries for each state. * Generate state labels data entries for each state.
* Only stores essential label data; raycast path calculation happens during rendering. * Only stores essential label data; raycast path calculation happens during rendering.
* @param list - Optional array of stateIds to regenerate only those * @param list - Optional array of stateIds to regenerate only those
*/ */
export function generateStateLabels(list?: number[]): void { generateStateLabels(list?: number[]): void {
if (TIME) console.time("generateStateLabels"); if (TIME) console.time("generateStateLabels");
const { states } = pack; const { states } = pack;
const labelsModule = window.Labels;
// Remove existing state labels that need regeneration // Remove existing state labels that need regeneration
if (list) { if (list) {
list.forEach((stateId) => labelsModule.removeStateLabel(stateId)); list.forEach((stateId) => this.removeStateLabel(stateId));
} else { } else {
labelsModule.removeByType("state"); this.removeByType("state");
} }
// Generate new label entries // Generate new label entries
@ -170,7 +168,7 @@ export function generateStateLabels(list?: number[]): void {
if (!state.i || state.removed || state.lock) continue; if (!state.i || state.removed || state.lock) continue;
if (list && !list.includes(state.i)) continue; if (list && !list.includes(state.i)) continue;
labelsModule.addStateLabel({ this.addStateLabel({
stateId: state.i, stateId: state.i,
text: state.name!, text: state.name!,
fontSize: 100, fontSize: 100,
@ -178,20 +176,17 @@ export function generateStateLabels(list?: number[]): void {
} }
if (TIME) console.timeEnd("generateStateLabels"); if (TIME) console.timeEnd("generateStateLabels");
} }
/** /**
* Generate burg labels data from burgs. * Generate burg labels data from burgs.
* Populates pack.labels with BurgLabelData for each burg. * Populates pack.labels with BurgLabelData for each burg.
*/ */
export function generateBurgLabels(): void { generateBurgLabels(): void {
if (!TIME) console.time("generateBurgLabels"); if (TIME) console.time("generateBurgLabels");
else TIME && console.time("generateBurgLabels");
const labelsModule = window.Labels;
// Remove existing burg labels // Remove existing burg labels
labelsModule.removeByType("burg"); this.removeByType("burg");
// Generate new labels for all active burgs // Generate new labels for all active burgs
for (const burg of pack.burgs) { for (const burg of pack.burgs) {
@ -204,7 +199,7 @@ export function generateBurgLabels(): void {
const dx = 0; const dx = 0;
const dy = 0; const dy = 0;
labelsModule.addBurgLabel({ this.addBurgLabel({
burgId: burg.i, burgId: burg.i,
group, group,
text: burg.name!, text: burg.name!,
@ -215,8 +210,10 @@ export function generateBurgLabels(): void {
}); });
} }
if (!TIME) console.timeEnd("generateBurgLabels"); if (TIME) console.timeEnd("generateBurgLabels");
else TIME && console.timeEnd("generateBurgLabels"); }
} }
window.Labels = new LabelsModule(); window.Labels = new LabelsModule();