deadhead-space-freight-tycoon/packages/content/src/bundle.ts

38 lines
1.2 KiB
TypeScript

import { cargoTypes, skills } from "./data/cargo";
import { gameConfig } from "./data/config";
import { goods } from "./data/goods";
import { locations } from "./data/locations";
import { onboardingGoals, scriptedTutorialContracts, veteranPilot } from "./data/onboarding";
import { shipModels } from "./data/ships";
import { upgrades } from "./data/upgrades";
/** Returns a lookup that gives `undefined` for an unknown id instead of throwing. */
function byId<T extends { id: string }>(items: readonly T[]): (id: string) => T | undefined {
const map = new Map(items.map((item) => [item.id, item]));
return (id) => map.get(id);
}
/** All static game data in one object, with lookups by id. */
export const content = {
locations,
shipModels,
/** Ship models players can buy (excludes company ships such as the loaner). */
purchasableShipModels: shipModels.filter((s) => s.purchasable),
cargoTypes,
goods,
skills,
config: gameConfig,
scriptedTutorialContracts,
onboardingGoals,
veteranPilot,
upgrades,
location: byId(locations),
shipModel: byId(shipModels),
cargoType: byId(cargoTypes),
good: byId(goods),
skill: byId(skills),
onboardingGoal: byId(onboardingGoals),
upgrade: byId(upgrades),
};
export type Content = typeof content;