AstroCol/src/lib/classes/Structure.ts

70 lines
2.8 KiB
TypeScript

import DBStructure from "../../types/db/DBStructure";
import StructureManager from "./managers/StructureManager";
export default class Structure {
manager: StructureManager
data: DBStructure;
level: number;
constructor(manager: StructureManager, data: DBStructure, level: number) {
this.manager = manager;
this.data = data;
this.level = level;
}
// async checkRequiredResources(level: number): Promise<boolean> {
// const resources = await this.manager.planet.resources.calculateCurrentAvailableResources();
// const requirements = this.data.requirements.resources;
// let canBuild = true;
// for(let res of requirements) {
// const resource = resources.find(r => r.id === res.id);
// if(!resource) return false;
// const required = Math.pow(this.data.multiplier, level) * res.amount;
// if(resource.amount < required) {
// canBuild = false;
// break;
// }
// }
// return canBuild;
// }
// async checkRequirements(): Promise<{ canBuild: boolean, error: string }> {
// const playerBuildings = this.manager.buildings;
// let playerBuildingsCanBuild = { canBuild: true, missing: "" };
// this.data.requirements.buildings.forEach((buildingReq: any) => {
// if(playerBuildings.filter((building) => building.data.id === buildingReq.id)[0]?.level ?? 0 < buildingReq.level) {
// playerBuildingsCanBuild = { canBuild: false, missing: `${buildingReq.id} level ${buildingReq.level} required, found ${playerBuildings.filter((building) => building.data.id === buildingReq.id)[0]?.level ?? 0}` };
// return;
// }
// });
// if(!playerBuildingsCanBuild.canBuild) return {
// canBuild: false,
// error: playerBuildingsCanBuild.missing
// }
// // research
// const playerResearch = this.manager.planet.manager.owner.research;
// let playerResearchCanBuild = { canBuild: true, missing: "" };
// for(const researchReq of this.data.requirements.research) {
// if((playerResearch.research.find((research) => research.id === researchReq.id)?.level ?? 0) < researchReq.level) {
// playerResearchCanBuild = { canBuild: false, missing: `${researchReq.id} level ${researchReq.level} required, found ${playerResearch.research.find((research) => research.id === researchReq.id)?.level ?? 0}` };
// }
// };
// if(!playerResearchCanBuild.canBuild) return {
// canBuild: false,
// error: playerResearchCanBuild.missing
// }
// return {
// canBuild: true,
// error: ""
// }
// }
}