This commit is contained in:
2026-04-09 09:00:25 -04:00
parent 5b44762fbb
commit d61b8de6b7
3 changed files with 26 additions and 10 deletions

View File

@@ -63,6 +63,25 @@ let state: GameState = createInitialState(setup);
let isNewGameModalOpen = false;
let previousScoreSnapshot: ScoreSnapshot[] | null = null;
function rebuildSetup(overrides: Partial<SetupState> = {}) {
setup = createSetupState(
overrides.playerCount ?? setup.playerCount,
overrides.columns ?? setup.columns,
overrides.rows ?? setup.rows,
overrides.startingNodesPerPlayer ?? setup.startingNodesPerPlayer,
overrides.sunbeamChance ?? setup.sunbeamChance,
overrides.diseaseChance ?? setup.diseaseChance,
overrides.seedInputs ?? setup.seedInputs,
overrides.paletteOrder ?? setup.paletteOrder,
overrides.initiativeMode ?? setup.initiativeMode,
overrides.biddingOrderRule ?? setup.biddingOrderRule,
overrides.weatherDraftEnabled ?? setup.weatherDraftEnabled,
overrides.winCondition ?? setup.winCondition,
overrides.maxRounds ?? setup.maxRounds,
overrides.topLeafTarget ?? setup.topLeafTarget,
);
}
function getLiveExposureScores() {
return buildEnergySimulation(state).scores;
}
@@ -1307,7 +1326,7 @@ function attachEvents() {
if (output) {
output.textContent = input.value;
}
setup = createSetupState(Number(input.value), setup.columns, setup.rows, setup.startingNodesPerPlayer, setup.sunbeamChance, setup.diseaseChance, setup.seedInputs, setup.paletteOrder, setup.shuffleTurnOrder, setup.initiativeMode, setup.biddingOrderRule, setup.weatherDraftEnabled, setup.winCondition, setup.maxRounds, setup.topLeafTarget);
rebuildSetup({ playerCount: Number(input.value) });
render();
});
document.querySelector<HTMLInputElement>("#column-count")?.addEventListener("change", (event) => {
@@ -1316,7 +1335,7 @@ function attachEvents() {
return;
}
setup = createSetupState(setup.playerCount, Math.max(6, Math.min(24, columns)), setup.rows, setup.startingNodesPerPlayer, setup.sunbeamChance, setup.diseaseChance, setup.seedInputs, setup.paletteOrder, setup.shuffleTurnOrder, setup.initiativeMode, setup.biddingOrderRule, setup.weatherDraftEnabled, setup.winCondition, setup.maxRounds, setup.topLeafTarget);
rebuildSetup({ columns: Math.max(6, Math.min(24, columns)) });
render();
});
document.querySelector<HTMLInputElement>("#row-count")?.addEventListener("change", (event) => {
@@ -1325,7 +1344,7 @@ function attachEvents() {
return;
}
setup = createSetupState(setup.playerCount, setup.columns, Math.max(6, Math.min(24, rows)), setup.startingNodesPerPlayer, setup.sunbeamChance, setup.diseaseChance, setup.seedInputs, setup.paletteOrder, setup.shuffleTurnOrder, setup.initiativeMode, setup.biddingOrderRule, setup.weatherDraftEnabled, setup.winCondition, setup.maxRounds, setup.topLeafTarget);
rebuildSetup({ rows: Math.max(6, Math.min(24, rows)) });
render();
});
document.querySelector<HTMLInputElement>("#starting-nodes")?.addEventListener("change", (event) => {
@@ -1334,7 +1353,7 @@ function attachEvents() {
return;
}
setup = createSetupState(setup.playerCount, setup.columns, setup.rows, Math.max(1, nextValue), setup.sunbeamChance, setup.diseaseChance, setup.seedInputs, setup.paletteOrder, setup.shuffleTurnOrder, setup.initiativeMode, setup.biddingOrderRule, setup.weatherDraftEnabled, setup.winCondition, setup.maxRounds, setup.topLeafTarget);
rebuildSetup({ startingNodesPerPlayer: Math.max(1, nextValue) });
render();
});
document.querySelector<HTMLInputElement>("#sunbeam-chance")?.addEventListener("change", (event) => {