25 lines
843 B
JavaScript
25 lines
843 B
JavaScript
// Loads the static game data and the lists of installed themes / languages.
|
|
|
|
import { buildContext } from '../engine/context.js';
|
|
|
|
async function getJson(url) {
|
|
const response = await fetch(url);
|
|
if (!response.ok) throw new Error(`${url}: HTTP ${response.status}`);
|
|
return response.json();
|
|
}
|
|
|
|
export async function loadGameContext() {
|
|
const [rules, generators, upgrades] = await Promise.all([
|
|
getJson('data/rules.json'),
|
|
getJson('data/generators.json'),
|
|
getJson('data/upgrades.json'),
|
|
]);
|
|
return buildContext({ rules, generators, upgrades });
|
|
}
|
|
|
|
/** [{ id, order, assets, locales }] discovered from public/themes/ by the server. */
|
|
export const fetchThemes = () => getJson('api/themes');
|
|
|
|
/** [{ code, name }] discovered from public/locales/ by the server. */
|
|
export const fetchLocales = () => getJson('api/locales');
|