Temporary fix for buildings system
This commit is contained in:
parent
3025178129
commit
afca4bc0ea
|
@ -4,21 +4,39 @@
|
|||
"buildings": [
|
||||
{
|
||||
"id": "iron-mine",
|
||||
"cost": {
|
||||
"iron": 1,
|
||||
"gold": 1,
|
||||
"coal": 1
|
||||
},
|
||||
"cost": [
|
||||
{
|
||||
"name": "iron",
|
||||
"amount": 1
|
||||
},
|
||||
{
|
||||
"name": "gold",
|
||||
"amount": 1
|
||||
},
|
||||
{
|
||||
"name": "coal",
|
||||
"amount": 1
|
||||
}
|
||||
],
|
||||
"energy": 11,
|
||||
"multiplier": 2
|
||||
},
|
||||
{
|
||||
"id": "gold-mine",
|
||||
"cost": {
|
||||
"iron": 2,
|
||||
"gold": 2,
|
||||
"coal": 2
|
||||
},
|
||||
"cost": [
|
||||
{
|
||||
"name": "iron",
|
||||
"amount": 1
|
||||
},
|
||||
{
|
||||
"name": "gold",
|
||||
"amount": 1
|
||||
},
|
||||
{
|
||||
"name": "coal",
|
||||
"amount": 1
|
||||
}
|
||||
],
|
||||
"energy": 11,
|
||||
"multiplier": 2.5
|
||||
}
|
||||
|
@ -28,11 +46,20 @@
|
|||
"buildings": [
|
||||
{
|
||||
"id": "research-lab",
|
||||
"cost": {
|
||||
"iron": 10,
|
||||
"gold": 11,
|
||||
"coal": 12
|
||||
},
|
||||
"cost": [
|
||||
{
|
||||
"name": "iron",
|
||||
"amount": 1
|
||||
},
|
||||
{
|
||||
"name": "gold",
|
||||
"amount": 1
|
||||
},
|
||||
{
|
||||
"name": "coal",
|
||||
"amount": 1
|
||||
}
|
||||
],
|
||||
"energy": 100,
|
||||
"multiplier": 3
|
||||
}
|
||||
|
|
|
@ -1,16 +1,20 @@
|
|||
import type Resource from "../../types/Resource";
|
||||
import type Resources from "../../types/Resources";
|
||||
|
||||
export default function calculateAvailableResources(userResources: Resources, buildingCost: Resources) {
|
||||
export default function calculateAvailableResources(userResources: Array<Resource>, buildingCost: Array<Resource>) {
|
||||
let canBuild = true;
|
||||
const resources = {} as Resources;
|
||||
|
||||
let resource: keyof Resources;
|
||||
for (resource in buildingCost) {
|
||||
resources[resource] = userResources[resource] - buildingCost[resource];
|
||||
if (userResources[resource] < buildingCost[resource]) {
|
||||
canBuild = false;
|
||||
const resources = {} as Array<Resource>;
|
||||
|
||||
userResources.forEach((userResource) => {
|
||||
const resource = buildingCost.find((buildingResource) => buildingResource.name === userResource.name);
|
||||
if (resource) {
|
||||
resources.push({
|
||||
name: userResource.name,
|
||||
amount: userResource.amount - resource.amount
|
||||
});
|
||||
if (userResource.amount < resource.amount) canBuild = false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return {
|
||||
canBuild,
|
||||
|
|
|
@ -1,16 +1,26 @@
|
|||
import { type APIRoute } from "astro";
|
||||
import validateAccessToken from "../../../lib/utils/validateAccessToken";
|
||||
import { getAccessToken } from "../../../lib/db/accessTokens";
|
||||
import { getUserResources } from "../../../lib/db/users";
|
||||
// import { getUserResources } from "../../../lib/db/users";
|
||||
import { getUserResources } from "../../../lib/utils/resourceManager";
|
||||
import buildings from '../../../lib/data/buildings.json';
|
||||
import calculateAvailableResources from "../../../lib/utils/calculateAvailableResources";
|
||||
import { getUserByAccessToken } from "../../../lib/db/users";
|
||||
|
||||
export const POST: APIRoute = async({ request }) => {
|
||||
const response = await validateAccessToken(request);
|
||||
if(response instanceof Response) return response;
|
||||
|
||||
const user = response.username;
|
||||
const resources = await getUserResources(user);
|
||||
const user = await getUserByAccessToken(response);
|
||||
if(user === null) {
|
||||
return new Response(
|
||||
JSON.stringify({
|
||||
code: 401,
|
||||
message: "Unauthorized"
|
||||
}), { status: 401 }
|
||||
)
|
||||
}
|
||||
const resources = await getUserResources(user._id);
|
||||
const buildingId = (await request.json()).building;
|
||||
const building = buildings.map(cat => cat.buildings.filter(b => b.id === buildingId))[0][0];
|
||||
const balance = calculateAvailableResources(resources, building.cost);
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
---
|
||||
import Layout from '../../layouts/Layout.astro';
|
||||
import NavBar from '../../components/NavBar.astro';
|
||||
import { getUserByAccessToken, getUserResources } from '../../lib/db/users';
|
||||
import { getUserByAccessToken } from '../../lib/db/users';
|
||||
import { getHighestWeightedLanguage, getLocales } from '../../lib/lang/langDriver';
|
||||
import ResourceBar from '../../components/ResourceBar.astro';
|
||||
// import { calculateCurrentAvailableResources } from '../../lib/utils/resourceManager';
|
||||
// import { getUserResources } from '../../lib/utils/resourceManager';
|
||||
|
||||
const buildingsList = (await import('../../lib/data/buildings.json')).default;
|
||||
|
||||
|
@ -14,13 +16,14 @@ if(loggedToken === null || username === "") return Astro.redirect('/logout');
|
|||
const checkUser = await getUserByAccessToken(loggedToken);
|
||||
if(checkUser === null || checkUser.username !== username) return Astro.redirect('/logout');
|
||||
|
||||
const resources = await getUserResources(checkUser._id);
|
||||
// const resources = await getUserResources(checkUser._id);
|
||||
|
||||
const locale = getHighestWeightedLanguage(Astro.request.headers.get('accept-language'));
|
||||
|
||||
const langResources = await getLocales(locale, 'resources');
|
||||
const langGame = await getLocales(locale, 'game');
|
||||
const langBuildings = await getLocales(locale, 'buildings');
|
||||
// console.log(await calculateCurrentAvailableResources(checkUser._id));
|
||||
---
|
||||
|
||||
<Layout title="Buildings">
|
||||
|
|
|
@ -3,6 +3,7 @@ import Layout from '../../layouts/Layout.astro';
|
|||
import NavBar from '../../components/NavBar.astro';
|
||||
import ResourceBar from '../../components/ResourceBar.astro';
|
||||
import { getUserByAccessToken } from '../../lib/db/users';
|
||||
// import { createInitialResources } from '../../lib/utils/resourceManager';
|
||||
|
||||
const loggedToken = Astro.cookies.get('sessionToken')?.value ?? null;
|
||||
const username = Astro.cookies.get('username')?.value ?? "";
|
||||
|
@ -10,7 +11,7 @@ if(loggedToken === null || username === "") return Astro.redirect('/logout');
|
|||
|
||||
const checkUser = await getUserByAccessToken(loggedToken);
|
||||
if(checkUser === null || checkUser.username !== username) return Astro.redirect('/logout');
|
||||
|
||||
// createInitialResources(checkUser._id);
|
||||
---
|
||||
|
||||
<Layout title="chujów sto">
|
||||
|
|
Loading…
Reference in New Issue