Compare commits
No commits in common. "e6d90d43a4d8f3465daec27e0561d6836df57b5f" and "bb03c6d88441af165b2ddfcb39e567918550350d" have entirely different histories.
e6d90d43a4
...
bb03c6d884
3
main.js
3
main.js
|
@ -1,4 +1,5 @@
|
||||||
var roleDispatcher = require('role_dispatcher');
|
var roleDispatcher = require('role.dispatcher');
|
||||||
|
|
||||||
|
|
||||||
module.exports.loop = function () {
|
module.exports.loop = function () {
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,15 @@
|
||||||
var energyUtils = require('util_energy');
|
var energyUtils = require('utils.energy');
|
||||||
var roleBase = require('role_base');
|
|
||||||
|
const body = [
|
||||||
|
WORK, CARRY, MOVE
|
||||||
|
];
|
||||||
|
|
||||||
|
var roleBuilder = {
|
||||||
|
body,
|
||||||
|
|
||||||
class roleBuilder extends roleBase{
|
|
||||||
/** @param {Creep} creep **/
|
/** @param {Creep} creep **/
|
||||||
static name = 'builder';
|
run: function(creep) {
|
||||||
|
|
||||||
static run(creep) {
|
|
||||||
if(creep.memory.building && creep.store[RESOURCE_ENERGY] == 0) {
|
if(creep.memory.building && creep.store[RESOURCE_ENERGY] == 0) {
|
||||||
creep.memory.building = false;
|
creep.memory.building = false;
|
||||||
}
|
}
|
|
@ -1,8 +1,8 @@
|
||||||
var roleHarvester = require('role_harvester');
|
var roleHarvester = require('role.harvester');
|
||||||
var roleUpgrader = require('role_upgrader');
|
var roleUpgrader = require('role.upgrader');
|
||||||
var roleBuilder = require('role_builder');
|
var roleBuilder = require('role.builder');
|
||||||
var roleRepairer = require('role_repairer');
|
var roleRepairer = require('role.repairer');
|
||||||
var roleGuard = require('role_guard');
|
var roleGuard = require('role.guard');
|
||||||
|
|
||||||
const roleMap = {
|
const roleMap = {
|
||||||
harvester: roleHarvester,
|
harvester: roleHarvester,
|
||||||
|
@ -23,7 +23,7 @@ var creepCounts = {
|
||||||
function runRole(creep){
|
function runRole(creep){
|
||||||
const role = roleMap[creep.memory.role];
|
const role = roleMap[creep.memory.role];
|
||||||
|
|
||||||
if(role !== 'undefined'){
|
if(role && typeof role.run === 'function'){
|
||||||
role.run(creep);
|
role.run(creep);
|
||||||
} else {
|
} else {
|
||||||
console.log('Unknown or undefined role: ' + creep.memory.role);
|
console.log('Unknown or undefined role: ' + creep.memory.role);
|
||||||
|
@ -33,9 +33,12 @@ function runRole(creep){
|
||||||
function spawnCreeps(spawn){
|
function spawnCreeps(spawn){
|
||||||
for(const [role, count] of Object.entries(creepCounts)){
|
for(const [role, count] of Object.entries(creepCounts)){
|
||||||
var roleCreeps = _.filter(Game.creeps, (creep) => creep.memory.role == role);
|
var roleCreeps = _.filter(Game.creeps, (creep) => creep.memory.role == role);
|
||||||
|
|
||||||
|
|
||||||
if(roleCreeps.length < count && !spawn.spawning) {
|
if(roleCreeps.length < count && !spawn.spawning) {
|
||||||
roleMap[role].spawn(spawn);
|
var newName = role + Game.time;
|
||||||
|
console.log(spawn.spawnCreep(roleMap[role].body, newName,
|
||||||
|
{memory: {role: role}}));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
24
role.guard.js
Normal file
24
role.guard.js
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
var energyUtils = require('utils.energy');
|
||||||
|
|
||||||
|
const body = [
|
||||||
|
MOVE, RANGED_ATTACK
|
||||||
|
];
|
||||||
|
|
||||||
|
var roleGuard = {
|
||||||
|
body,
|
||||||
|
|
||||||
|
/** @param {Creep} creep **/
|
||||||
|
run: function(creep) {
|
||||||
|
const target = creep.pos.findClosestByRange(FIND_HOSTILE_CREEPS);
|
||||||
|
if(target) {
|
||||||
|
if(creep.rangedAttack(target) == ERR_NOT_IN_RANGE) {
|
||||||
|
creep.moveTo(target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
creep.moveTo(Game.flags.IdleArea);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = roleGuard;
|
|
@ -1,12 +1,14 @@
|
||||||
var energyUtils = require('util_energy');
|
var energyUtils = require('utils.energy');
|
||||||
var roleBase = require('role_base');
|
|
||||||
|
const body = [
|
||||||
|
WORK, CARRY, MOVE
|
||||||
|
];
|
||||||
|
|
||||||
|
var roleHarvester = {
|
||||||
|
body,
|
||||||
|
|
||||||
class roleHarvester extends roleBase{
|
|
||||||
/** @param {Creep} creep **/
|
/** @param {Creep} creep **/
|
||||||
|
run: function(creep) {
|
||||||
static name = 'harvester';
|
|
||||||
|
|
||||||
static run(creep) {
|
|
||||||
if(creep.store.getFreeCapacity() > 0) {
|
if(creep.store.getFreeCapacity() > 0) {
|
||||||
var sources = creep.room.find(FIND_SOURCES);
|
var sources = creep.room.find(FIND_SOURCES);
|
||||||
if(creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) {
|
if(creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) {
|
|
@ -1,10 +1,15 @@
|
||||||
var energyUtils = require('util_energy');
|
var energyUtils = require('utils.energy');
|
||||||
var roleBase = require('role_base');
|
|
||||||
|
const body = [
|
||||||
|
WORK, CARRY, MOVE
|
||||||
|
];
|
||||||
|
|
||||||
|
var roleRepairer = {
|
||||||
|
body,
|
||||||
|
|
||||||
class roleRepairer extends roleBase {
|
|
||||||
static name = 'repairer';
|
|
||||||
/** @param {Creep} creep **/
|
/** @param {Creep} creep **/
|
||||||
static run(creep) {
|
run: function(creep) {
|
||||||
|
|
||||||
if(creep.memory.building && creep.store[RESOURCE_ENERGY] == 0) {
|
if(creep.memory.building && creep.store[RESOURCE_ENERGY] == 0) {
|
||||||
creep.memory.building = false;
|
creep.memory.building = false;
|
||||||
}
|
}
|
|
@ -1,10 +1,12 @@
|
||||||
var roleBase = require('role_base');
|
const body = [
|
||||||
|
WORK, CARRY, MOVE
|
||||||
|
];
|
||||||
|
|
||||||
class roleUpgrader extends roleBase {
|
var roleUpgrader = {
|
||||||
static name = 'upgrader';
|
body,
|
||||||
|
|
||||||
/** @param {Creep} creep **/
|
/** @param {Creep} creep **/
|
||||||
static run(creep) {
|
run: function(creep) {
|
||||||
|
|
||||||
if(creep.memory.upgrading && creep.store[RESOURCE_ENERGY] == 0) {
|
if(creep.memory.upgrading && creep.store[RESOURCE_ENERGY] == 0) {
|
||||||
creep.memory.upgrading = false;
|
creep.memory.upgrading = false;
|
13
role_base.js
13
role_base.js
|
@ -1,13 +0,0 @@
|
||||||
class roleBase{
|
|
||||||
static body = [ MOVE, WORK, CARRY ];
|
|
||||||
static name = 'Creep';
|
|
||||||
/** @param {Creep} creep **/
|
|
||||||
run(creep) { }
|
|
||||||
static spawn(spawnPoint){
|
|
||||||
spawnPoint.spawnCreep(this.body, this.name + Game.time,
|
|
||||||
{memory : {role : this.name}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = roleBase;
|
|
|
@ -1,37 +0,0 @@
|
||||||
var roleBase = require('role_base');
|
|
||||||
|
|
||||||
class roleGuard extends roleBase{
|
|
||||||
static body = [ MOVE, MOVE, RANGED_ATTACK, RANGED_ATTACK ];
|
|
||||||
static name = 'streltsy'
|
|
||||||
/** @param {Creep} creep **/
|
|
||||||
static run(creep) {
|
|
||||||
const target = creep.pos.findClosestByRange(FIND_HOSTILE_CREEPS);
|
|
||||||
if(target) {
|
|
||||||
if(creep.rangedAttack(target) == ERR_NOT_IN_RANGE) {
|
|
||||||
creep.moveTo(target);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var currentWaypoint = Game.flags[creep.memory.waypoints[creep.memory.currentWaypoint]];
|
|
||||||
if(creep.pos.getRangeTo(currentWaypoint) > 0){
|
|
||||||
creep.moveTo(currentWaypoint);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
creep.memory.currentWaypoint += 1;
|
|
||||||
if(creep.memory.currentWaypoint > creep.memory.waypoints.length){
|
|
||||||
creep.memory.currentWaypoint = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
static spawn(spawnPoint, newWaypoints){
|
|
||||||
if(typeof newWaypoints === 'undefined')
|
|
||||||
newWaypoints = ['A','B'];
|
|
||||||
|
|
||||||
spawnPoint.spawnCreep(this.body, this.name + Game.time,
|
|
||||||
{memory : {role : this.name, waypoints : newWaypoints, currentWaypoint : 0}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = roleGuard;
|
|
|
@ -1,6 +0,0 @@
|
||||||
var progressUtils = {
|
|
||||||
checkProgress : function() {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = progressUtils;
|
|
|
@ -23,15 +23,15 @@ var energyUtils = {
|
||||||
depositEnergy : function(creep) {
|
depositEnergy : function(creep) {
|
||||||
var targets = creep.room.find(FIND_STRUCTURES, {
|
var targets = creep.room.find(FIND_STRUCTURES, {
|
||||||
filter: (structure) => {
|
filter: (structure) => {
|
||||||
return (structure.structureType == STRUCTURE_SPAWN ||
|
return structure.structureType == STRUCTURE_SPAWN &&
|
||||||
structure.structureType == STRUCTURE_EXTENSION) &&
|
structure.store.getUsedCapacity(RESOURCE_ENERGY) < 250;
|
||||||
structure.store.getFreeCapacity(RESOURCE_ENERGY) > 0;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if(targets.length == 0){
|
if(targets.length == 0){
|
||||||
targets = creep.room.find(FIND_STRUCTURES, {
|
targets = creep.room.find(FIND_STRUCTURES, {
|
||||||
filter: (structure) => {
|
filter: (structure) => {
|
||||||
return (structure.structureType == STRUCTURE_CONTAINER ||
|
return (structure.structureType == STRUCTURE_EXTENSION ||
|
||||||
|
structure.structureType == STRUCTURE_CONTAINER ||
|
||||||
structure.structureType == STRUCTURE_TOWER) &&
|
structure.structureType == STRUCTURE_TOWER) &&
|
||||||
structure.store.getFreeCapacity(RESOURCE_ENERGY) > 0;
|
structure.store.getFreeCapacity(RESOURCE_ENERGY) > 0;
|
||||||
}
|
}
|
||||||
|
@ -41,10 +41,9 @@ var energyUtils = {
|
||||||
if(creep.transfer(targets[0], RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
|
if(creep.transfer(targets[0], RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
|
||||||
creep.moveTo(targets[0], {visualizePathStyle: {stroke: '#ffffff'}});
|
creep.moveTo(targets[0], {visualizePathStyle: {stroke: '#ffffff'}});
|
||||||
}
|
}
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
return false;
|
return targets.length > 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = energyUtils;
|
module.exports = energyUtils;
|
Loading…
Reference in a new issue