Better RoomRunner
This commit is contained in:
36
src/CreepRunner.ts
Normal file
36
src/CreepRunner.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
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;
|
||||
Reference in New Issue
Block a user