screeps/RoomInit.js

50 lines
1.9 KiB
JavaScript
Raw Normal View History

2020-11-09 19:31:39 -06:00
let initroom = {
run: function(name) {
console.log('Initing room ' + name)
Game.rooms[name].memory.phase=0
Game.rooms[name].memory.CreepNum=0
Game.rooms[name].memory.minbuildpct=-1
Game.rooms[name].memory.minupgradepct=.5
Game.rooms[name].memory.minrepairpct=.5
Game.rooms[name].memory.hasbeeninited=1
Game.rooms[name].memory.tickssofar=0
2020-11-10 01:29:27 -06:00
Game.rooms[name].memory.maphits={}
2020-11-14 01:18:05 -06:00
//Game.rooms[name].memory.minablepositions= this.checkminablepositions(name)
2020-11-14 02:14:51 -06:00
let minablepositions = 0
let srcs = Game.rooms[name].find(FIND_SOURCES);
for(let i = 0;i<srcs.length;i++)
{
minablepositions = minablepositions + this.computeSourceAccessPoints(Game.rooms[name],srcs[i])
//minablepositions = minablepositions + this.checkminablepositions(srcs[i])
}
//todo - create array of minable positions in the room and assign a screep to them, rather than having them constantly try to find the nearest one.
2020-11-14 02:14:51 -06:00
Game.rooms[name].memory.minablepositions = minablepositions
2020-11-14 01:18:05 -06:00
},
2020-11-14 02:14:51 -06:00
computeSourceAccessPoints: function(room, source){
const roomTerrain = room.getTerrain();
var accessPoints = 0;
for(var x = -1;x<=1;x++)
{
for(var y = -1;y<=1;y++)
{
if(x==0 && y==0){continue;}
if(roomTerrain.get(source.pos.x+x,source.pos.y+y)!=1){accessPoints++;}
}
}
return accessPoints;
},
2020-11-14 01:18:05 -06:00
checkminablepositions: function(name){
2020-11-14 02:14:51 -06:00
let x = this.pos.x;
let y = this.pos.y;
let walkable = this.room.lookForAtArea(
LOOK_TERRAIN,
y - 1, // top
x - 1, // left
y + 1, // bottom
x + 1, // right
true // asArray
).filter(o => o[LOOK_TERRAIN] !== 'wall');
return walkable.length;
2020-11-09 19:31:39 -06:00
}
}
module.exports = initroom