Temp Work

This commit is contained in:
2025-07-06 14:22:46 -03:00
parent 0ca79cbaba
commit 2a7b74542c
4 changed files with 69 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
import { CreepRole } from "types/creeps";
import { registerRoleHandler, RoleHandler } from "./roleHandler.interface";
class HarvesterHandler implements RoleHandler {
public readonly mappedRole: CreepRole = "harvester";
public run(creep: Creep): void {
if (creep.store.getFreeCapacity() > 0) {
const sources = creep.room.find(FIND_SOURCES);
if (creep.harvest(sources[0]) === ERR_NOT_IN_RANGE) {
creep.moveTo(sources[0]);
}
} else {
const spawn = Game.spawns['Spawn1'];
if (creep.transfer(spawn, RESOURCE_ENERGY) === ERR_NOT_IN_RANGE) {
creep.moveTo(spawn);
}
}
}
}
registerRoleHandler("harvester", HarvesterHandler);
export default HarvesterHandler;

View File

@@ -0,0 +1,19 @@
import { CreepRole } from "types/creeps";
export interface RoleHandler {
mappedRole: CreepRole;
run(creep: Creep): void;
}
export const ImplementationRegistry: { [roleName: string]: RoleHandler } = {};
export const registerRoleHandler = (roleName: string, handler: typeof RoleHandler) => {
if (ImplementationRegistry[roleName]) {
console.warn(`Role handler for ${roleName} is already registered. Overwriting.`);
}
ImplementationRegistry[roleName] = handler;
}

View File

@@ -6,6 +6,26 @@ class SpawnHandler {
constructor(private spawn: StructureSpawn) {}
public run(): void {
this.validateSpawnState();
for(var name in Game.creeps) {
var creep = Game.creeps[name];
if(creep.store.getFreeCapacity() > 0) {
var sources = creep.room.find(FIND_SOURCES);
if(creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) {
creep.moveTo(sources[0]);
}
}
else {
if(creep.transfer(Game.spawns['Spawn1'], RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
creep.moveTo(Game.spawns['Spawn1']);
}
}
}
}
private validateSpawnState() {
if (this.spawn.spawning) {
console.log(`Spawn ${this.spawn.name} is currently spawning a creep.`);
return;