--- import Layout from '../../layouts/Layout.astro'; import NavBar from '../../components/NavBar.astro'; import BuildingCard from '../../components/ItemCard.astro'; import { getUserByAccessToken } from '../../lib/db/users'; import { getHighestWeightedLanguage, getLocales, getName, getObj } from '../../lib/utils/langDriver'; import ResourceBar from '../../components/ResourceBar.astro'; import { getAllBuildings } from '../../lib/db/buildings'; import locationManager from '../../lib/classes/managers/LocationManager'; import { ObjectId } from 'mongodb'; import DBBuilding from '../../types/db/DBBuilding'; const buildingsList = await getAllBuildings(); const loggedToken = Astro.cookies.get('sessionToken')?.value ?? null; const username = Astro.cookies.get('username')?.value ?? ""; if(loggedToken === null || username === "") return Astro.redirect('/logout'); const checkUser = await getUserByAccessToken(loggedToken); if(checkUser === null || checkUser.username !== username) return Astro.redirect('/logout'); const locale = Astro.cookies.get('language')?.value ?? await getHighestWeightedLanguage(Astro.request.headers.get('accept-language')); const lang = await getLocales(locale); const planetId = Astro.cookies.get('planetid')?.value ?? ""; if(planetId === "") return "No planet selected"; const planet = locationManager.getPlanet(new ObjectId(planetId)); if(!planet) return "Planet not found"; 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, (planet.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: planet.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 => ( ))}
)}