Temp Work
This commit is contained in:
@@ -11,4 +11,5 @@ build({
|
|||||||
sourcemap: true,
|
sourcemap: true,
|
||||||
logLevel: 'info',
|
logLevel: 'info',
|
||||||
minify: false,
|
minify: false,
|
||||||
|
keepNames: true, // optional: keeps function/class names
|
||||||
}).catch(() => process.exit(1));
|
}).catch(() => process.exit(1));
|
||||||
|
|||||||
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) {}
|
constructor(private spawn: StructureSpawn) {}
|
||||||
|
|
||||||
public run(): void {
|
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) {
|
if (this.spawn.spawning) {
|
||||||
console.log(`Spawn ${this.spawn.name} is currently spawning a creep.`);
|
console.log(`Spawn ${this.spawn.name} is currently spawning a creep.`);
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user