Temp Work
This commit is contained in:
29
src/roleHandlers/harvesterHandler.ts
Normal file
29
src/roleHandlers/harvesterHandler.ts
Normal 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;
|
||||
19
src/roleHandlers/roleHandler.interface.ts
Normal file
19
src/roleHandlers/roleHandler.interface.ts
Normal 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;
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user