--- import ItemCard from '../../components/ItemCard.astro'; import LoggedIn from '../../layouts/LoggedIn.astro'; import { Planet } from '../../lib/classes/managers/PlanetManager'; import SystemManager from '../../lib/classes/managers/SystemManager'; import { getAllBuildings } from '../../lib/db/buildings'; import { getName, getObj } from '../../lib/utils/langDriver'; import DBBuilding from '../../types/db/DBBuilding'; const { token, lang } = Astro.locals; const active: SystemManager | Planet = Astro.locals.active; if(active instanceof SystemManager) { return Astro.redirect('/game'); } const buildingsList = await getAllBuildings(); if(Astro.request.method === "POST") { const selectedBuildingId = (await Astro.request.formData()).get('id') as string | null; const request = await (await fetch(Astro.url.origin + '/api/build/createBuilding', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + token }, body: JSON.stringify({ planet: active._id, building: selectedBuildingId }) })).json(); console.log(request); } const modalSet: { [key: string]: { resources: Array, research: Array, buildings: Array, energy: number } } = {}; for(const building of buildingsList) { modalSet[building.id] = { resources: building.requirements.resources.map(resource => { return { id: resource.id, amount: Math.pow(building.multiplier, (active.buildings.getBuildingById(building.id)?.level ?? 0) ) * resource.amount }; }), research: building.requirements.research, buildings: building.requirements.buildings, energy: building.energy }; } const buildingsByCategory = buildingsList.reduce((acc: { [key: string]: Array }, building) => { if(!acc[building.category]) acc[building.category] = []; acc[building.category].push({ ...building, level: active.buildings.getBuildingById(building.id)?.level ?? 0 }); return acc; }, {}); ---

Required resources

None

Required buildings

None

Required research

None
{Object.entries(buildingsByCategory).map(([category, buildings]) => <>

{getName(lang, 'buildings', `cat-${category}`)}

{buildings.map(building => ( ))}
)}