diff --git a/src/components/ResourceBar.astro b/src/components/ResourceBar.astro index a24ec39..a3e44f6 100644 --- a/src/components/ResourceBar.astro +++ b/src/components/ResourceBar.astro @@ -32,7 +32,7 @@ for(const key of planet.resources.resources) { energy planet.energy.production ? "prod-full" : planet.energy.consumption >= (planet.energy.production * 0.9) ? "prod-almost-full" : ""}`}>{planet.energy.production - planet.energy.consumption}
- Energy + {getName(lang, 'resources', 'energy')} {getName(lang, 'general', 'production')}{planet.energy.production} {getName(lang, 'general', 'consumption')}{planet.energy.consumption} {getName(lang, 'general', 'balance')} planet.energy.production ? "prod-full" : planet.energy.consumption >= (planet.energy.production * 0.9) ? "prod-almost-full" : ""}`}>{planet.energy.production - planet.energy.consumption} @@ -42,7 +42,7 @@ for(const key of planet.resources.resources) { stellar-quartz 0
- Stellar Quartz + {getName(lang, 'resources', 'stellar-quartz')} {getName(lang, 'general', 'avaliable')}0
diff --git a/src/lib/db/lang.ts b/src/lib/db/lang.ts index 4cce2f9..8472dca 100644 --- a/src/lib/db/lang.ts +++ b/src/lib/db/lang.ts @@ -9,6 +9,7 @@ export const getLang = async (language = "en") => { resources: (await lang[3].find({}).toArray()).map(({ _id, ...rest }) => rest), research: (await lang[4].find({}).toArray()).map(({ _id, ...rest }) => rest), structures: (await lang[5].find({}).toArray()).map(({ _id, ...rest }) => rest), - defenses: (await lang[6].find({}).toArray()).map(({ _id, ...rest }) => rest) + defenses: (await lang[6].find({}).toArray()).map(({ _id, ...rest }) => rest), + missions: (await lang[7].find({}).toArray()).map(({ _id, ...rest }) => rest), } } \ No newline at end of file diff --git a/src/lib/db/mongodb.ts b/src/lib/db/mongodb.ts index a37b450..b51d222 100644 --- a/src/lib/db/mongodb.ts +++ b/src/lib/db/mongodb.ts @@ -91,7 +91,8 @@ export const Lang = async (language = "en") => { await db.collection('resources'), await db.collection('research'), await db.collection('structures'), - await db.collection('defenses') + await db.collection('defenses'), + await db.collection('missions'), ] } diff --git a/src/lib/utils/langDriver.ts b/src/lib/utils/langDriver.ts index 144418f..fa0d6cc 100644 --- a/src/lib/utils/langDriver.ts +++ b/src/lib/utils/langDriver.ts @@ -38,9 +38,9 @@ export async function getLocales(language: string) { } export function getName(locale: { [key: string]: { id: string, name: string }[] }, type: string, name: string) { - return locale[type].find((element: { id: string }) => element.id === name)?.name ?? `NTL_${name}`; + return locale[type]?.find((element: { id: string }) => element.id === name)?.name ?? `NTL_${name}`; } export function getObj(locale: { [key: string]: { id: string, name: string, description: string | null }[] }, type: string, name: string) { - return locale[type].find((element: { id: string }) => element.id === name) ?? { id: name, name: `NTL_${name}`, description: `NTL_${name}` }; + return locale[type]?.find((element: { id: string }) => element.id === name) ?? { id: name, name: `NTL_${name}`, description: `NTL_${name}` }; } \ No newline at end of file diff --git a/src/middleware.ts b/src/middleware.ts index a4c33b1..55520dc 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -15,15 +15,12 @@ const frontend = async (context: APIContext, next: MiddlewareNext) => { const user = locationManager.getUser(checkUser._id); if(user === null) return context.redirect('/logout'); - const lang = await getLocales(context.cookies.get('language')?.value ?? await getHighestWeightedLanguage(context.request.headers.get('accept-language'))); - const activeId = context.cookies.get('currentPlanet')?.value ?? "0"; const active = locationManager.findId(new ObjectId(activeId)); if(active === null) return context.redirect('/logout'); context.locals.token = loggedToken; - context.locals.lang = lang; context.locals.user = user; context.locals.active = active; @@ -31,5 +28,10 @@ const frontend = async (context: APIContext, next: MiddlewareNext) => { } export const onRequest = defineMiddleware(async (context, next) => { + if(context.url.pathname.startsWith('/api')) return next(); + + const lang = await getLocales(context.cookies.get('language')?.value ?? await getHighestWeightedLanguage(context.request.headers.get('accept-language'))); + context.locals.lang = lang; + return context.url.pathname.startsWith('/game') ? frontend(context, next) : next(); }); \ No newline at end of file diff --git a/src/pages/game/buildings.astro b/src/pages/game/buildings.astro index 2ff3bdf..0497ea5 100644 --- a/src/pages/game/buildings.astro +++ b/src/pages/game/buildings.astro @@ -60,12 +60,12 @@ const buildingsByCategory = buildingsList.reduce((acc: { [key: string]: Array
-

Required resources

-
None
-

Required buildings

-
None
-

Required research

-
None
+

{getName(lang, 'general', 'required-resources')}

+
{getName(lang, 'general', 'none')}
+

{getName(lang, 'general', 'required-buildings')}

+
{getName(lang, 'general', 'none')}
+

{getName(lang, 'general', 'required-research')}

+
{getName(lang, 'general', 'none')}
{Object.entries(buildingsByCategory).map(([category, buildings]) => <> @@ -145,19 +145,21 @@ h1 { if(!modalDiv) return; modalDiv.style.display = 'block'; + const langNone = lang['general'].find(g => g.id === 'none').name; + const reqResources = modalSet[el.parentElement.parentElement.parentElement.dataset.id]?.resources ?? []; const reqBuildings = modalSet[el.parentElement.parentElement.parentElement.dataset.id]?.buildings ?? []; const reqResearch = modalSet[el.parentElement.parentElement.parentElement.dataset.id]?.research ?? []; - modalResources.innerHTML = reqResources.length === 0 ? "None" : reqResources.map(resource => { + modalResources.innerHTML = reqResources.length === 0 ? langNone : reqResources.map(resource => { return `${lang['resources'].find(r => r.id === resource.id).name}: ${resource.amount}`; }).join("
"); - modalBuildings.innerHTML = reqBuildings.length === 0 ? "None" : reqBuildings.map(building => { + modalBuildings.innerHTML = reqBuildings.length === 0 ? langNone : reqBuildings.map(building => { return `${lang['buildings'].find(b => b.id === building.id).name}: ${building.level}`; }).join("
"); - modalResearch.innerHTML = reqResearch.length === 0 ? "None" : reqResearch.map(research => { + modalResearch.innerHTML = reqResearch.length === 0 ? langNone : reqResearch.map(research => { return `${lang['research'].find(r => r.id === research.id).name}: ${research.level}`; }).join("
"); diff --git a/src/pages/game/defenses.astro b/src/pages/game/defenses.astro index 08baf5b..e180f91 100644 --- a/src/pages/game/defenses.astro +++ b/src/pages/game/defenses.astro @@ -4,7 +4,7 @@ import LoggedIn from '../../layouts/LoggedIn.astro'; import { Planet } from '../../lib/classes/managers/PlanetManager'; import SystemManager from '../../lib/classes/managers/SystemManager'; import { getAllDefenses } from '../../lib/db/defenses'; -import { getObj } from '../../lib/utils/langDriver'; +import { getName, getObj } from '../../lib/utils/langDriver'; const { token, lang } = Astro.locals; const active: SystemManager | Planet = Astro.locals.active; @@ -47,12 +47,12 @@ const planetId = active instanceof SystemManager ? active.data._id : active._id;
-

Required resources

-
None
-

Required buildings

-
None
-

Required research

-
None
+

{getName(lang, 'general', 'required-resources')}

+
{getName(lang, 'general', 'none')}
+

{getName(lang, 'general', 'required-buildings')}

+
{getName(lang, 'general', 'none')}
+

{getName(lang, 'general', 'required-research')}

+
{getName(lang, 'general', 'none')}
@@ -120,19 +120,21 @@ const planetId = active instanceof SystemManager ? active.data._id : active._id; if(!modalDiv) return; modalDiv.style.display = 'block'; + const langNone = lang['general'].find(g => g.id === 'none').name; + const reqResources = modalSet[el.parentElement.parentElement.parentElement.dataset.id]?.resources ?? []; const reqBuildings = modalSet[el.parentElement.parentElement.parentElement.dataset.id]?.buildings ?? []; const reqResearch = modalSet[el.parentElement.parentElement.parentElement.dataset.id]?.research ?? []; - modalResources.innerHTML = reqResources.length === 0 ? "None" : reqResources.map(resource => { + modalResources.innerHTML = reqResources.length === 0 ? langNone : reqResources.map(resource => { return `${lang['resources'].find(r => r.id === resource.id).name}: ${resource.amount}`; }).join("
"); - modalBuildings.innerHTML = reqBuildings.length === 0 ? "None" : reqBuildings.map(building => { + modalBuildings.innerHTML = reqBuildings.length === 0 ? langNone : reqBuildings.map(building => { return `${lang['buildings'].find(b => b.id === building.id).name}: ${building.level}`; }).join("
"); - modalResearch.innerHTML = reqResearch.length === 0 ? "None" : reqResearch.map(research => { + modalResearch.innerHTML = reqResearch.length === 0 ? langNone : reqResearch.map(research => { return `${lang['research'].find(r => r.id === research.id).name}: ${research.level}`; }).join("
"); diff --git a/src/pages/game/energy.astro b/src/pages/game/energy.astro index 201d1e3..2774c93 100644 --- a/src/pages/game/energy.astro +++ b/src/pages/game/energy.astro @@ -2,6 +2,7 @@ import LoggedIn from '../../layouts/LoggedIn.astro'; import { Planet } from '../../lib/classes/managers/PlanetManager'; import SystemManager from '../../lib/classes/managers/SystemManager'; +import { getName } from '../../lib/utils/langDriver'; const { token, lang } = Astro.locals; const active: SystemManager | Planet = Astro.locals.active; @@ -31,13 +32,13 @@ const buildingsList = {
- - - - - + + + + + - + {buildingsList.mines.map(building => @@ -57,7 +58,7 @@ const buildingsList = { )} - + {buildingsList.powerPlants.map(building => @@ -77,7 +78,7 @@ const buildingsList = { )} - + {buildingsList.utilities.map(building => @@ -85,7 +86,7 @@ const buildingsList = { )} - + {buildingsList.storage.map(building => @@ -94,7 +95,7 @@ const buildingsList = { )}
Building nameLevelProduction %Production per hourEnergy usage{getName(lang, 'general', 'building-name')}{getName(lang, 'general', 'level')}{getName(lang, 'general', 'production-percent')}{getName(lang, 'general', 'production-per-hour')}{getName(lang, 'general', 'energy-usage')}
Mines
{getName(lang, 'buildings', 'cat-mines')}
{building.data.id} {building.level}15 -{building.level * building.data.energy}
Power plants
{getName(lang, 'buildings', 'cat-power-plants')}
{building.data.id} {building.level} +{building.level * building.data.energy}
Utilities
{getName(lang, 'buildings', 'cat-utilities')}
{building.data.id} {building.level} -{building.level * building.data.energy}
Storage
{getName(lang, 'buildings', 'cat-storage')}
{building.data.id} {building.level}-{building.level * building.data.energy}
- +
-