37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
import { CreepRole, CreepRoles } from "types/creeps";
|
|
import { getRoomCreeps } from "utils/funcs/getRoomCreeps";
|
|
|
|
class CreepRunner {
|
|
public static run(room: Room, state: GameState): GameState {
|
|
for (const name in getRoomCreeps(room)) {
|
|
const creep = Game.creeps[name];
|
|
|
|
if (!creep) {
|
|
this.clearDeadCreepMemory(name, state);
|
|
continue;
|
|
}
|
|
|
|
const roleDefinition = CreepRoles[creep.memory.role as CreepRole];
|
|
if (!roleDefinition) {
|
|
this.clearDeadCreepMemory(name, state);
|
|
continue;
|
|
}
|
|
|
|
state = roleDefinition.handler.run(creep, state);
|
|
}
|
|
|
|
return state;
|
|
}
|
|
|
|
private static clearDeadCreepMemory(creepName: string, state: GameState): void {
|
|
console.log(`Creep ${creepName} is dead, cleaning up memory.`);
|
|
|
|
const roleDefinition = CreepRoles[Memory.creeps[creepName].role as CreepRole];
|
|
roleDefinition.handler.destroy(Memory.creeps[creepName], state);
|
|
|
|
delete Memory.creeps[creepName]; // Clean up memory for dead creeps
|
|
}
|
|
}
|
|
|
|
export default CreepRunner;
|