ProductionGame/frontend/js/data/products.js

51 lines
1.6 KiB
JavaScript

// Production - The Idle Game: Product Catalog & Supply Chain Definitions
// Clean modular orchestrator combining sector definitions
import { AGRICULTURE_SECTOR, AGRICULTURE_PRODUCTS } from './sectors/agriculture.js';
import { MATERIALS_SECTOR, MATERIALS_PRODUCTS } from './sectors/materials.js';
import { MINING_SECTOR, MINING_PRODUCTS } from './sectors/mining.js';
import { CHEMICALS_SECTOR, CHEMICALS_PRODUCTS } from './sectors/chemicals.js';
import { ELECTRONICS_SECTOR, ELECTRONICS_PRODUCTS } from './sectors/electronics.js';
import { HEAVY_INDUSTRY_SECTOR, HEAVY_INDUSTRY_PRODUCTS } from './sectors/heavyIndustry.js';
export const SECTORS = [
AGRICULTURE_SECTOR,
MATERIALS_SECTOR,
MINING_SECTOR,
CHEMICALS_SECTOR,
ELECTRONICS_SECTOR,
HEAVY_INDUSTRY_SECTOR
];
export const PRODUCTS = [
...AGRICULTURE_PRODUCTS,
...MATERIALS_PRODUCTS,
...MINING_PRODUCTS,
...CHEMICALS_PRODUCTS,
...ELECTRONICS_PRODUCTS,
...HEAVY_INDUSTRY_PRODUCTS
];
// Helper to look up a product by ID
export function getProduct(id) {
return PRODUCTS.find(p => p.id === id);
}
// Milestone thresholds that grant a 2x throughput multiplier
export const UNIT_MILESTONES = [1, 10, 25, 50, 100, 200, 300, 400, 500, 750, 1000, 1500, 2000];
export function getUnitMilestoneMultiplier(count) {
let reached = 0;
for (const m of UNIT_MILESTONES) {
if (count >= m) reached++;
else break;
}
return Math.pow(2.0, reached);
}
export function getNextMilestone(count) {
for (const m of UNIT_MILESTONES) {
if (count < m) return m;
}
return count + 1000;
}