diff --git a/src/builder.ts b/src/creep/builder.ts similarity index 96% rename from src/builder.ts rename to src/creep/builder.ts index dc3a681..84ba569 100644 --- a/src/builder.ts +++ b/src/creep/builder.ts @@ -1,4 +1,4 @@ -import { randomIntInRange } from './utils/Random'; +import { randomIntInRange } from '../utils/Random'; interface BuilderMemory extends CreepMemory { building: boolean | undefined; diff --git a/src/creep/common.ts b/src/creep/common.ts new file mode 100644 index 0000000..50d01fc --- /dev/null +++ b/src/creep/common.ts @@ -0,0 +1,22 @@ +import { randomIntInRange } from '../utils/Random'; + +export interface SourceNumber { + sourceNum: number | undefined; +} + +function selectSource(memory: SourceNumber) { + if (memory.sourceNum === undefined) { + const sources = creep.room.find(FIND_SOURCES); + memory.sourceNum = randomIntInRange(0, sources.length); + } +} + +function moveToSource(creep: Creep) { + const memory = creep.memory as SourceNumber; + const sources = creep.room.find(FIND_SOURCES); + const sourceNum = memory.sourceNum; + if (creep.harvest(sources[sourceNum]) == ERR_NOT_IN_RANGE) { + creep.say('🔄 harvest ' + sourceNum); + creep.moveTo(sources[sourceNum], { visualizePathStyle: { stroke: '#ffaa00' } }); + } +} diff --git a/src/harvester.ts b/src/creep/harvester.ts similarity index 61% rename from src/harvester.ts rename to src/creep/harvester.ts index 4a0c568..0ddf9f6 100644 --- a/src/harvester.ts +++ b/src/creep/harvester.ts @@ -1,9 +1,23 @@ +import { randomIntInRange } from '../utils/Random'; + +interface HarvesterMemory extends CreepMemory { + sourceNum: number | undefined; +} + export function runAsHarvester(creep: Creep) { + const memory = creep.memory as HarvesterMemory; + + if (memory.sourceNum === undefined) { + const sources = creep.room.find(FIND_SOURCES); + memory.sourceNum = randomIntInRange(0, sources.length); + } + if (creep.store.getFreeCapacity() > 0) { let sources = creep.room.find(FIND_SOURCES); - if (creep.harvest(sources[0]) === ERR_NOT_IN_RANGE) { - creep.say('to source'); - creep.moveTo(sources[0], { visualizePathStyle: { stroke: '#ffaa00' } }); + const sourceNum = memory.sourceNum; + if (creep.harvest(sources[sourceNum]) === ERR_NOT_IN_RANGE) { + creep.say('To source ' + sourceNum); + creep.moveTo(sources[sourceNum], { visualizePathStyle: { stroke: '#ffaa00' } }); } } else { let targets = creep.room.find(FIND_STRUCTURES, { diff --git a/src/upgrader.ts b/src/creep/upgrader.ts similarity index 95% rename from src/upgrader.ts rename to src/creep/upgrader.ts index 20485bb..80eff48 100644 --- a/src/upgrader.ts +++ b/src/creep/upgrader.ts @@ -1,4 +1,4 @@ -import { randomIntInRange } from './utils/Random'; +import { randomIntInRange } from '../utils/Random'; interface UpgraderMemory extends CreepMemory { upgrading: boolean | undefined; diff --git a/src/main.ts b/src/main.ts index 243be50..63c8a30 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,7 +1,7 @@ import { ErrorMapper } from 'utils/ErrorMapper'; -import { runAsHarvester } from './harvester'; -import { runAsBuilder } from './builder'; -import { runAsUpgrader } from './upgrader'; +import { runAsHarvester } from './creep/harvester'; +import { runAsBuilder } from './creep/builder'; +import { runAsUpgrader } from './creep/upgrader'; import { uniqId } from './utils/Identity'; function makeName(role: string): string {