51 lines
1.6 KiB
JavaScript
51 lines
1.6 KiB
JavaScript
class ZombieWorkerSystem {
|
|
constructor(scene) {
|
|
this.scene = scene;
|
|
this.workers = []; // Array of tamed zombies (NPC objects)
|
|
|
|
console.log('🧟 ZombieWorkerSystem: Initialized');
|
|
}
|
|
|
|
registerWorker(npc) {
|
|
if (!this.workers.includes(npc)) {
|
|
this.workers.push(npc);
|
|
npc.workerStats = {
|
|
energy: 100, // Energija (pada ob delu)
|
|
decay: 0, // Razpadanje (0-100%, 100% = smrt)
|
|
xp: 0, // Izkušnje zombija
|
|
level: 1,
|
|
task: 'IDLE' // IDLE, FARM, MINE, GUARD, FOLLOW
|
|
};
|
|
console.log(`🧟 Zombie ${this.workers.length} registered as Worker!`);
|
|
|
|
// UI Feedback
|
|
this.scene.events.emit('show-floating-text', {
|
|
x: npc.sprite.x,
|
|
y: npc.sprite.y - 50,
|
|
text: "New Worker!",
|
|
color: "#00FF00"
|
|
});
|
|
}
|
|
}
|
|
|
|
unregisterWorker(npc) {
|
|
const idx = this.workers.indexOf(npc);
|
|
if (idx > -1) {
|
|
this.workers.splice(idx, 1);
|
|
console.log('🧟 Zombie Worker removed.');
|
|
}
|
|
}
|
|
|
|
update(time, delta) {
|
|
// Update logic for all workers (e.g. decay, energy regen if sleeping)
|
|
// This is called every frame, so keep it light.
|
|
|
|
// Example: Decay tick every 10 seconds (handled by timer, or simplified here)
|
|
}
|
|
|
|
// Assign a task to all idle workers or specific one
|
|
assignTask(taskName, targetPos) {
|
|
// TODO: Poišči prostega delavca in mu daj nalogo
|
|
}
|
|
}
|