21 lines
905 B
TypeScript
21 lines
905 B
TypeScript
|
|
import { clamp } from "lodash-es";
|
|
|
|
export const TECH_LEVEL_STEP = 1000;
|
|
|
|
export function isTechLimited(startYear: number, year: number, tech: number, maxTechLevel: number, initialAllowedTechLevel: number, techLevelIncYear: number): boolean {
|
|
const relMaxTech = getMaxRelativeTechLevel(startYear, year, maxTechLevel, initialAllowedTechLevel, techLevelIncYear);
|
|
const techLevel = convTechLevel(tech, maxTechLevel);
|
|
|
|
return techLevel >= relMaxTech;
|
|
}
|
|
|
|
export function convTechLevel(tech: number, maxTechLevel: number): number{
|
|
return clamp(Math.floor(tech / TECH_LEVEL_STEP), 0, maxTechLevel);
|
|
}
|
|
|
|
|
|
export function getMaxRelativeTechLevel(startYear: number, year: number, maxTechLevel: number, initialAllowedTechLevel: number, techLevelIncYear: number): number {
|
|
const relYear = year - startYear;
|
|
return clamp(Math.floor(relYear / techLevelIncYear) + initialAllowedTechLevel, 1, maxTechLevel);
|
|
} |