70 lines
2.4 KiB
JavaScript
70 lines
2.4 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';
|
|
|
|
import { ENERGY_SECTOR, ENERGY_PRODUCTS } from './sectors/energy.js';
|
|
import { CONSTRUCTION_SECTOR, CONSTRUCTION_PRODUCTS } from './sectors/construction.js';
|
|
import { AEROSPACE_SECTOR, AEROSPACE_PRODUCTS } from './sectors/aerospace.js';
|
|
import { BIOTECH_SECTOR, BIOTECH_PRODUCTS } from './sectors/biotech.js';
|
|
import { CONSUMER_GOODS_SECTOR, CONSUMER_GOODS_PRODUCTS } from './sectors/consumer_goods.js';
|
|
import { AUTOMATION_SECTOR, AUTOMATION_PRODUCTS } from './sectors/automation.js';
|
|
|
|
export const SECTORS = [
|
|
AGRICULTURE_SECTOR,
|
|
MATERIALS_SECTOR,
|
|
MINING_SECTOR,
|
|
CHEMICALS_SECTOR,
|
|
ELECTRONICS_SECTOR,
|
|
HEAVY_INDUSTRY_SECTOR,
|
|
ENERGY_SECTOR,
|
|
CONSTRUCTION_SECTOR,
|
|
AEROSPACE_SECTOR,
|
|
BIOTECH_SECTOR,
|
|
CONSUMER_GOODS_SECTOR,
|
|
AUTOMATION_SECTOR
|
|
];
|
|
|
|
export const PRODUCTS = [
|
|
...AGRICULTURE_PRODUCTS,
|
|
...MATERIALS_PRODUCTS,
|
|
...MINING_PRODUCTS,
|
|
...CHEMICALS_PRODUCTS,
|
|
...ELECTRONICS_PRODUCTS,
|
|
...HEAVY_INDUSTRY_PRODUCTS,
|
|
...ENERGY_PRODUCTS,
|
|
...CONSTRUCTION_PRODUCTS,
|
|
...AEROSPACE_PRODUCTS,
|
|
...BIOTECH_PRODUCTS,
|
|
...CONSUMER_GOODS_PRODUCTS,
|
|
...AUTOMATION_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;
|
|
}
|