455 lines
14 KiB
JavaScript
455 lines
14 KiB
JavaScript
/**
|
|
* FARM AUTOMATION TIERS SYSTEM
|
|
* Progressive automation from manual labor to AI-driven farm
|
|
*/
|
|
class AutomationTierSystem {
|
|
constructor(scene) {
|
|
this.scene = scene;
|
|
this.enabled = true;
|
|
|
|
// Current tier
|
|
this.currentTier = 1;
|
|
|
|
// Tier definitions
|
|
this.tiers = {
|
|
1: {
|
|
name: 'Manual Labor',
|
|
description: 'Player does everything',
|
|
efficiency: 1.0,
|
|
automation: 0,
|
|
unlockRequirement: null,
|
|
features: ['manual_farming', 'manual_crafting', 'manual_building']
|
|
},
|
|
2: {
|
|
name: 'Zombie Workers',
|
|
description: 'Basic automation with zombie workers',
|
|
efficiency: 0.5,
|
|
automation: 0.3,
|
|
unlockRequirement: { type: 'tame_zombies', count: 5 },
|
|
features: ['zombie_workers', 'simple_tasks', 'task_queue']
|
|
},
|
|
3: {
|
|
name: 'Creature Helpers',
|
|
description: 'Specialized automation with creatures',
|
|
efficiency: 0.75,
|
|
automation: 0.6,
|
|
unlockRequirement: { type: 'befriend_creatures', count: 10 },
|
|
features: ['creature_workers', 'complex_tasks', 'crafting_automation', 'sorting']
|
|
},
|
|
4: {
|
|
name: 'Mechanical Automation',
|
|
description: 'Full automation with machines',
|
|
efficiency: 1.0,
|
|
automation: 0.9,
|
|
unlockRequirement: { type: 'build_all_automation', buildings: ['auto_planter', 'auto_harvester', 'irrigation', 'conveyor', 'silo', 'sorter'] },
|
|
features: ['24_7_operation', 'no_management', 'full_automation']
|
|
},
|
|
5: {
|
|
name: 'AI Farm',
|
|
description: 'Self-sustaining AI-driven farm',
|
|
efficiency: 1.5,
|
|
automation: 1.0,
|
|
unlockRequirement: { type: 'complete_quest', quest: 'singularity' },
|
|
features: ['self_optimizing', 'resource_balancing', 'profit_collection', 'ai_decisions']
|
|
}
|
|
};
|
|
|
|
// Tier progress
|
|
this.tierProgress = {
|
|
zombiesTamed: 0,
|
|
creaturesBefriended: 0,
|
|
automationBuildings: [],
|
|
questsCompleted: []
|
|
};
|
|
|
|
// AI Farm settings (Tier 5)
|
|
this.aiSettings = {
|
|
optimizationInterval: 60000, // 1 minute
|
|
resourceBalanceThreshold: 0.8,
|
|
profitCollectionInterval: 300000, // 5 minutes
|
|
lastOptimization: 0,
|
|
lastProfitCollection: 0
|
|
};
|
|
|
|
this.loadProgress();
|
|
this.init();
|
|
|
|
console.log('✅ Automation Tier System initialized');
|
|
}
|
|
|
|
init() {
|
|
console.log(`🤖 Current Tier: ${this.currentTier} - ${this.tiers[this.currentTier].name}`);
|
|
}
|
|
|
|
// ========== TIER MANAGEMENT ==========
|
|
|
|
checkTierUnlock(tier) {
|
|
const tierData = this.tiers[tier];
|
|
if (!tierData || !tierData.unlockRequirement) return false;
|
|
|
|
const req = tierData.unlockRequirement;
|
|
|
|
switch (req.type) {
|
|
case 'tame_zombies':
|
|
return this.tierProgress.zombiesTamed >= req.count;
|
|
|
|
case 'befriend_creatures':
|
|
return this.tierProgress.creaturesBefriended >= req.count;
|
|
|
|
case 'build_all_automation':
|
|
return req.buildings.every(b =>
|
|
this.tierProgress.automationBuildings.includes(b)
|
|
);
|
|
|
|
case 'complete_quest':
|
|
return this.tierProgress.questsCompleted.includes(req.quest);
|
|
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
|
|
upgradeTier() {
|
|
const nextTier = this.currentTier + 1;
|
|
|
|
if (nextTier > 5) {
|
|
console.log('❌ Already at max tier!');
|
|
return false;
|
|
}
|
|
|
|
if (!this.checkTierUnlock(nextTier)) {
|
|
console.log(`❌ Requirements not met for Tier ${nextTier}`);
|
|
this.showTierRequirements(nextTier);
|
|
return false;
|
|
}
|
|
|
|
// Upgrade!
|
|
this.currentTier = nextTier;
|
|
this.applyTierBonuses();
|
|
|
|
// Visual effect
|
|
if (this.scene.visualEnhancements) {
|
|
const player = this.scene.player;
|
|
if (player) {
|
|
const pos = player.getPosition();
|
|
this.scene.visualEnhancements.createSparkleEffect(pos.x, pos.y);
|
|
this.scene.visualEnhancements.screenFlash(0x00ff00, 500);
|
|
}
|
|
}
|
|
|
|
// Achievement
|
|
if (this.scene.uiGraphics) {
|
|
if (this.currentTier === 5) {
|
|
this.scene.uiGraphics.unlockAchievement('ai_farm_master');
|
|
}
|
|
}
|
|
|
|
this.saveProgress();
|
|
console.log(`🎉 Upgraded to Tier ${this.currentTier}: ${this.tiers[this.currentTier].name}!`);
|
|
return true;
|
|
}
|
|
|
|
showTierRequirements(tier) {
|
|
const tierData = this.tiers[tier];
|
|
const req = tierData.unlockRequirement;
|
|
|
|
console.log(`📋 Requirements for ${tierData.name}:`);
|
|
|
|
switch (req.type) {
|
|
case 'tame_zombies':
|
|
console.log(` - Tame ${req.count} zombies (${this.tierProgress.zombiesTamed}/${req.count})`);
|
|
break;
|
|
|
|
case 'befriend_creatures':
|
|
console.log(` - Befriend ${req.count} creatures (${this.tierProgress.creaturesBefriended}/${req.count})`);
|
|
break;
|
|
|
|
case 'build_all_automation':
|
|
console.log(` - Build all automation buildings:`);
|
|
req.buildings.forEach(b => {
|
|
const built = this.tierProgress.automationBuildings.includes(b);
|
|
console.log(` ${built ? '✅' : '❌'} ${b}`);
|
|
});
|
|
break;
|
|
|
|
case 'complete_quest':
|
|
console.log(` - Complete quest: "${req.quest}"`);
|
|
break;
|
|
}
|
|
}
|
|
|
|
applyTierBonuses() {
|
|
const tier = this.tiers[this.currentTier];
|
|
|
|
// Apply efficiency to all workers
|
|
if (this.scene.farmAutomation) {
|
|
for (const worker of this.scene.farmAutomation.zombieWorkers) {
|
|
worker.efficiency = tier.efficiency;
|
|
}
|
|
for (const worker of this.scene.farmAutomation.creatureWorkers) {
|
|
worker.efficiency = tier.efficiency;
|
|
}
|
|
}
|
|
|
|
// Enable features
|
|
this.enableTierFeatures(tier.features);
|
|
}
|
|
|
|
enableTierFeatures(features) {
|
|
for (const feature of features) {
|
|
switch (feature) {
|
|
case '24_7_operation':
|
|
this.enable24_7Operation();
|
|
break;
|
|
|
|
case 'no_management':
|
|
this.enableNoManagement();
|
|
break;
|
|
|
|
case 'self_optimizing':
|
|
this.enableSelfOptimizing();
|
|
break;
|
|
|
|
case 'resource_balancing':
|
|
this.enableResourceBalancing();
|
|
break;
|
|
|
|
case 'ai_decisions':
|
|
this.enableAIDecisions();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
// ========== TIER 2: ZOMBIE WORKERS ==========
|
|
|
|
tameZombie() {
|
|
this.tierProgress.zombiesTamed++;
|
|
this.checkAutoUpgrade();
|
|
this.saveProgress();
|
|
console.log(`🧟 Zombie tamed! (${this.tierProgress.zombiesTamed}/5)`);
|
|
}
|
|
|
|
// ========== TIER 3: CREATURE HELPERS ==========
|
|
|
|
befriendCreature() {
|
|
this.tierProgress.creaturesBefriended++;
|
|
this.checkAutoUpgrade();
|
|
this.saveProgress();
|
|
console.log(`🦌 Creature befriended! (${this.tierProgress.creaturesBefriended}/10)`);
|
|
}
|
|
|
|
// ========== TIER 4: MECHANICAL AUTOMATION ==========
|
|
|
|
buildAutomationBuilding(buildingType) {
|
|
if (!this.tierProgress.automationBuildings.includes(buildingType)) {
|
|
this.tierProgress.automationBuildings.push(buildingType);
|
|
this.checkAutoUpgrade();
|
|
this.saveProgress();
|
|
console.log(`🏭 Built ${buildingType}! (${this.tierProgress.automationBuildings.length}/6)`);
|
|
}
|
|
}
|
|
|
|
enable24_7Operation() {
|
|
// Buildings work 24/7 without stopping
|
|
if (this.scene.farmAutomation) {
|
|
for (const building of this.scene.farmAutomation.automationBuildings.values()) {
|
|
building.alwaysActive = true;
|
|
}
|
|
}
|
|
console.log('⚡ 24/7 operation enabled!');
|
|
}
|
|
|
|
enableNoManagement() {
|
|
// Workers don't need food/rest
|
|
if (this.scene.farmAutomation) {
|
|
for (const worker of [...this.scene.farmAutomation.zombieWorkers, ...this.scene.farmAutomation.creatureWorkers]) {
|
|
worker.needsManagement = false;
|
|
worker.hunger = 100;
|
|
worker.fatigue = 0;
|
|
}
|
|
}
|
|
console.log('🤖 No management needed!');
|
|
}
|
|
|
|
// ========== TIER 5: AI FARM ==========
|
|
|
|
completeQuest(questId) {
|
|
if (!this.tierProgress.questsCompleted.includes(questId)) {
|
|
this.tierProgress.questsCompleted.push(questId);
|
|
this.checkAutoUpgrade();
|
|
this.saveProgress();
|
|
console.log(`✅ Quest completed: ${questId}`);
|
|
}
|
|
}
|
|
|
|
enableSelfOptimizing() {
|
|
console.log('🧠 Self-optimizing AI enabled!');
|
|
}
|
|
|
|
enableResourceBalancing() {
|
|
console.log('⚖️ Automatic resource balancing enabled!');
|
|
}
|
|
|
|
enableAIDecisions() {
|
|
console.log('🤖 AI decision-making enabled!');
|
|
}
|
|
|
|
optimizeFarm() {
|
|
if (this.currentTier < 5) return;
|
|
|
|
// AI analyzes farm and makes decisions
|
|
const decisions = [];
|
|
|
|
// Check resource levels
|
|
if (this.scene.inventorySystem) {
|
|
const resources = this.scene.inventorySystem.items;
|
|
|
|
// Low on seeds? Plant more
|
|
if (resources.wheat_seeds < 10) {
|
|
decisions.push({ action: 'plant_wheat', priority: 'high' });
|
|
}
|
|
|
|
// Too much wood? Craft tools
|
|
if (resources.wood > 100) {
|
|
decisions.push({ action: 'craft_tools', priority: 'medium' });
|
|
}
|
|
|
|
// Low on food? Harvest crops
|
|
if (resources.wheat < 20) {
|
|
decisions.push({ action: 'harvest_crops', priority: 'high' });
|
|
}
|
|
}
|
|
|
|
// Execute decisions
|
|
for (const decision of decisions) {
|
|
this.executeAIDecision(decision);
|
|
}
|
|
|
|
this.aiSettings.lastOptimization = Date.now();
|
|
}
|
|
|
|
executeAIDecision(decision) {
|
|
console.log(`🤖 AI Decision: ${decision.action} (${decision.priority} priority)`);
|
|
|
|
// Add task to automation queue
|
|
if (this.scene.farmAutomation) {
|
|
this.scene.farmAutomation.addToTaskQueue({
|
|
type: decision.action,
|
|
priority: decision.priority === 'high' ? 3 : decision.priority === 'medium' ? 2 : 1
|
|
});
|
|
}
|
|
}
|
|
|
|
balanceResources() {
|
|
if (this.currentTier < 5) return;
|
|
|
|
// AI balances resources automatically
|
|
// Convert excess resources to needed ones
|
|
|
|
console.log('⚖️ Balancing resources...');
|
|
|
|
this.aiSettings.lastProfitCollection = Date.now();
|
|
}
|
|
|
|
collectProfits() {
|
|
if (this.currentTier < 5) return;
|
|
|
|
// Collect all profits from automation
|
|
let totalProfit = 0;
|
|
|
|
if (this.scene.farmAutomation) {
|
|
// Calculate profits from all automated systems
|
|
totalProfit += this.scene.farmAutomation.zombieWorkers.length * 10;
|
|
totalProfit += this.scene.farmAutomation.creatureWorkers.length * 20;
|
|
totalProfit += this.scene.farmAutomation.automationBuildings.size * 50;
|
|
}
|
|
|
|
if (this.scene.inventorySystem) {
|
|
this.scene.inventorySystem.gold += totalProfit;
|
|
}
|
|
|
|
console.log(`💰 Collected ${totalProfit} gold from automation!`);
|
|
}
|
|
|
|
// ========== AUTO-UPGRADE ==========
|
|
|
|
checkAutoUpgrade() {
|
|
const nextTier = this.currentTier + 1;
|
|
if (nextTier <= 5 && this.checkTierUnlock(nextTier)) {
|
|
this.upgradeTier();
|
|
}
|
|
}
|
|
|
|
// ========== UPDATE ==========
|
|
|
|
update(delta) {
|
|
if (this.currentTier < 5) return;
|
|
|
|
const now = Date.now();
|
|
|
|
// Self-optimization
|
|
if (now - this.aiSettings.lastOptimization > this.aiSettings.optimizationInterval) {
|
|
this.optimizeFarm();
|
|
}
|
|
|
|
// Profit collection
|
|
if (now - this.aiSettings.lastProfitCollection > this.aiSettings.profitCollectionInterval) {
|
|
this.collectProfits();
|
|
this.balanceResources();
|
|
}
|
|
}
|
|
|
|
// ========== GETTERS ==========
|
|
|
|
getTierInfo() {
|
|
return {
|
|
current: this.currentTier,
|
|
name: this.tiers[this.currentTier].name,
|
|
description: this.tiers[this.currentTier].description,
|
|
efficiency: this.tiers[this.currentTier].efficiency,
|
|
automation: this.tiers[this.currentTier].automation,
|
|
features: this.tiers[this.currentTier].features
|
|
};
|
|
}
|
|
|
|
getProgress() {
|
|
return {
|
|
zombiesTamed: this.tierProgress.zombiesTamed,
|
|
creaturesBefriended: this.tierProgress.creaturesBefriended,
|
|
automationBuildings: this.tierProgress.automationBuildings.length,
|
|
questsCompleted: this.tierProgress.questsCompleted.length
|
|
};
|
|
}
|
|
|
|
// ========== PERSISTENCE ==========
|
|
|
|
saveProgress() {
|
|
const data = {
|
|
currentTier: this.currentTier,
|
|
tierProgress: this.tierProgress
|
|
};
|
|
|
|
localStorage.setItem('novafarma_automation_tiers', JSON.stringify(data));
|
|
}
|
|
|
|
loadProgress() {
|
|
const saved = localStorage.getItem('novafarma_automation_tiers');
|
|
if (saved) {
|
|
try {
|
|
const data = JSON.parse(saved);
|
|
this.currentTier = data.currentTier || 1;
|
|
this.tierProgress = data.tierProgress || this.tierProgress;
|
|
console.log('✅ Automation tier progress loaded');
|
|
} catch (error) {
|
|
console.error('Failed to load tier progress:', error);
|
|
}
|
|
}
|
|
}
|
|
|
|
destroy() {
|
|
this.saveProgress();
|
|
console.log('🤖 Automation Tier System destroyed');
|
|
}
|
|
}
|