diff --git a/public/images/research/advanced-engine.jpeg b/public/images/research/advanced-engine.jpeg new file mode 100644 index 0000000..a4fb314 Binary files /dev/null and b/public/images/research/advanced-engine.jpeg differ diff --git a/public/images/research/advanced-technologies.jpeg b/public/images/research/advanced-technologies.jpeg new file mode 100644 index 0000000..15dac96 Binary files /dev/null and b/public/images/research/advanced-technologies.jpeg differ diff --git a/public/images/research/basic-engine.jpeg b/public/images/research/basic-engine.jpeg new file mode 100644 index 0000000..0f71a2e Binary files /dev/null and b/public/images/research/basic-engine.jpeg differ diff --git a/public/images/research/combat-utilities.jpeg b/public/images/research/combat-utilities.jpeg new file mode 100644 index 0000000..77fda17 Binary files /dev/null and b/public/images/research/combat-utilities.jpeg differ diff --git a/public/images/research/defensive-utilities.jpeg b/public/images/research/defensive-utilities.jpeg new file mode 100644 index 0000000..34a1b5a Binary files /dev/null and b/public/images/research/defensive-utilities.jpeg differ diff --git a/public/images/research/nuclear-power.jpeg b/public/images/research/nuclear-power.jpeg new file mode 100644 index 0000000..e690bdf Binary files /dev/null and b/public/images/research/nuclear-power.jpeg differ diff --git a/public/images/research/oxygen-production.jpeg b/public/images/research/oxygen-production.jpeg new file mode 100644 index 0000000..760a287 Binary files /dev/null and b/public/images/research/oxygen-production.jpeg differ diff --git a/public/images/research/terraforming.jpeg b/public/images/research/terraforming.jpeg new file mode 100644 index 0000000..daabdb2 Binary files /dev/null and b/public/images/research/terraforming.jpeg differ diff --git a/src/lib/db/mongodb.ts b/src/lib/db/mongodb.ts index 2627c59..9eb1094 100644 --- a/src/lib/db/mongodb.ts +++ b/src/lib/db/mongodb.ts @@ -40,6 +40,11 @@ export const Buildings = async() => { return db.collection('buildings'); } +export const Research = async() => { + const db = await getDB(); + return db.collection('research'); +} + export const Lang = async (language = "en") => { const db = await getDB(`${config.MONGODB_DB}_${language}`); return [ diff --git a/src/lib/db/research.ts b/src/lib/db/research.ts new file mode 100644 index 0000000..01ccb31 --- /dev/null +++ b/src/lib/db/research.ts @@ -0,0 +1,12 @@ +import DBResearch from '../../types/DBResearch'; +import { Research } from '../db/mongodb'; + +export const getAllResearch = async () => { + return (await Research()).find({}).toArray() as unknown as Array; +} + +export const getResearchById = async (id: string) => { + return (await Research()).findOne({ + id + }) as unknown as DBResearch; +} \ No newline at end of file diff --git a/src/pages/game/research.astro b/src/pages/game/research.astro index 21bd05c..5c867d4 100644 --- a/src/pages/game/research.astro +++ b/src/pages/game/research.astro @@ -1,15 +1,15 @@ --- -import { Icon } from 'astro-icon/components' - import Layout from '../../layouts/Layout.astro'; import NavBar from '../../components/NavBar.astro'; import { getUserByAccessToken } from '../../lib/db/users'; import { getHighestWeightedLanguage, getLocales, getName, getObj } from '../../lib/utils/langDriver'; import ResourceBar from '../../components/ResourceBar.astro'; +import ItemCard from '../../components/ItemCard.astro'; +import DBResearch from '../../types/DBResearch'; +import { getAllResearch } from '../../lib/db/research'; -type ResearchDetail = { id: string, level: number, requiredResearch: { id: string, level: number}[], cost: { [key: string]: number } }; - -const researchList = (await import('../../lib/data/research.json')).default; +// const researchList = (await import('../../lib/data/research.json')).default; +const researchList = await getAllResearch(); const loggedToken = Astro.cookies.get('sessionToken')?.value ?? null; const username = Astro.cookies.get('username')?.value ?? ""; @@ -22,57 +22,57 @@ const locale = await getHighestWeightedLanguage(Astro.request.headers.get('accep const lang = await getLocales(locale); -const researchDetails: ResearchDetail[] = []; //TODO: Add union type for cost keys -researchList.forEach(element => { - const userLevel = checkUser.research.find(x => x.id === element.id)?.level ?? 0; - const tempResDetails: ResearchDetail = { - id: element.id, - level: userLevel, - requiredResearch: element.requirements.research, - cost: {} - } +// type DBResearchDetails = DBResearch & { level: number }; +// const researchDetails: DBResearchDetails[] = []; +// researchList.forEach(element => { +// const userLevel = checkUser.research.find(x => x.id === element.id)?.level ?? 0; +// const tempResDetails: DBResearchDetails = { +// level: userLevel, +// ...element +// } - Object.entries(element.requirements.resources).forEach(([key, value]) => { - tempResDetails.cost[key] = value * Math.pow(element.multiplier, userLevel); - }); - researchDetails.push(tempResDetails); -}); +// researchDetails.push(tempResDetails); +// }); + + +const modalSet: { [key: string]: { resources: Array, research: Array, buildings: Array } } = {}; + +for(const research of researchList) { + modalSet[research.id] = { + resources: research.requirements.resources, + research: research.requirements.research, + buildings: research.requirements.buildings, + // energy: building.energy + }; +} --- - {researchDetails.map(research => ( -
-

{getObj(lang, "research", research.id).name}

-
-
- {getObj(lang, "research", research.id).description}
- - {getName(lang, "general", "nav-research")} -
- -
-
{getName(lang, "general", "required")}:
- {research.requiredResearch.length !== 0 ? research.requiredResearch.map(req => ( -
- {getObj(lang, "research", req.id).name} - {req.level} -
- )) : getName(lang, "general", "none")} -
-
-
-
- Level: {research.level} -
-
- {Object.entries(research.cost).map(([key, value]) =>
- {getName(lang, "resources", key)}: {value} || -
)} -
+
+
+

Required resources

+
None
+

Required buildings

+
None
+

Required research

+
None
- ))} +
+ +
+ {researchList.map(research => <> + + )} +
-