51 lines
1.6 KiB
JavaScript
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;
|
|
}
|