Skip to content

Commit

Permalink
feat: creep.setStateAndRun (#20)
Browse files Browse the repository at this point in the history
  • Loading branch information
admon84 authored Feb 10, 2024
1 parent f940a8c commit d7ca0b0
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 15 deletions.
10 changes: 10 additions & 0 deletions src/prototypes/creep.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ declare global {
hasState(state?: number): boolean;
/** Changes the current state (task) for a creep. */
setState(state: number): void;
/** Changes the current state (task) for a creep and executes the runFunction. */
setStateAndRun(state: number, runFunction: (...args: any[]) => void, ...args: any[]): void;

/** @private */
_states?: number[];
Expand Down Expand Up @@ -43,3 +45,11 @@ Creep.prototype.setState = function (state) {
this._states.push(state);
this.memory.state = state;
};

Creep.prototype.setStateAndRun = function (state, runFunction, ...args) {
const canRunFunction = !this.hadState(state);
this.setState(state);
if (canRunFunction) {
runFunction(this, args);
}
};
8 changes: 3 additions & 5 deletions src/roles/builder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,15 @@ export function run(creep: Creep) {
break;
default:
logUnknownState(creep);
creep.setState(State.HarvestEnergy);
creep.setStateAndRun(State.HarvestEnergy, runHarvestEnergy);
break;
}
}

function runHarvestEnergy(creep: Creep) {
if (creep.isFull) {
creep.say('🔨Build');
creep.setState(State.BuildConstruction);
runBuildConstruction(creep);
creep.setStateAndRun(State.BuildConstruction, runBuildConstruction);
return;
}

Expand All @@ -48,8 +47,7 @@ function runHarvestEnergy(creep: Creep) {
function runBuildConstruction(creep: Creep) {
if (!creep.store[RESOURCE_ENERGY]) {
creep.say('⚡Harvest');
creep.setState(State.HarvestEnergy);
runHarvestEnergy(creep);
creep.setStateAndRun(State.HarvestEnergy, runHarvestEnergy);
return;
}

Expand Down
8 changes: 3 additions & 5 deletions src/roles/harvester.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,15 @@ export function run(creep: Creep) {
break;
default:
logUnknownState(creep);
creep.setState(State.HarvestEnergy);
creep.setStateAndRun(State.HarvestEnergy, runHarvestEnergy);
break;
}
}

function runHarvestEnergy(creep: Creep) {
if (creep.isFull) {
creep.say('💫Transfer');
creep.setState(State.TransferEnergy);
runTransferEnergy(creep);
creep.setStateAndRun(State.TransferEnergy, runTransferEnergy);
return;
}

Expand All @@ -48,8 +47,7 @@ function runHarvestEnergy(creep: Creep) {
function runTransferEnergy(creep: Creep) {
if (!creep.store[RESOURCE_ENERGY]) {
creep.say('⚡Harvest');
creep.setState(State.HarvestEnergy);
runHarvestEnergy(creep);
creep.setStateAndRun(State.HarvestEnergy, runHarvestEnergy);
return;
}

Expand Down
8 changes: 3 additions & 5 deletions src/roles/upgrader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,15 @@ export function run(creep: Creep) {
break;
default:
logUnknownState(creep);
creep.setState(State.HarvestEnergy);
creep.setStateAndRun(State.HarvestEnergy, runHarvestEnergy);
break;
}
}

function runHarvestEnergy(creep: Creep) {
if (creep.isFull) {
creep.say('🙏Upgrade');
creep.setState(State.UpgradeController);
runUpgradeController(creep);
creep.setStateAndRun(State.UpgradeController, runUpgradeController);
return;
}

Expand All @@ -46,8 +45,7 @@ function runHarvestEnergy(creep: Creep) {
function runUpgradeController(creep: Creep) {
if (!creep.store[RESOURCE_ENERGY]) {
creep.say('⚡Harvest');
creep.setState(State.HarvestEnergy);
runHarvestEnergy(creep);
creep.setStateAndRun(State.HarvestEnergy, runHarvestEnergy);
return;
}

Expand Down

0 comments on commit d7ca0b0

Please sign in to comment.