85 lines
2.8 KiB
TypeScript
85 lines
2.8 KiB
TypeScript
|
import {Role} from "@/modules/setting";
|
||
|
|
||
|
export function SetRole(creep: Creep, role: Role){
|
||
|
switch(role){
|
||
|
case Role.Harvester:
|
||
|
creep.memory.role ="Harvester";
|
||
|
case Role.BigHarvester:
|
||
|
creep.memory.role = "BigHarvester";
|
||
|
case Role.Builder:
|
||
|
creep.memory.role = "Builder";
|
||
|
case Role.Upgrader:
|
||
|
creep.memory.role = "Upgrader";
|
||
|
case Role.Repairer:
|
||
|
creep.memory.role = "Repairer";
|
||
|
}
|
||
|
}
|
||
|
export function RoleToString(role: Role) : string{
|
||
|
switch(role){
|
||
|
case Role.Harvester:
|
||
|
return "Harvester";
|
||
|
case Role.BigHarvester:
|
||
|
return "BigHarvester";
|
||
|
case Role.Builder:
|
||
|
return "Builder";
|
||
|
case Role.Upgrader:
|
||
|
return "Upgrader";
|
||
|
case Role.Repairer:
|
||
|
return "Repairer";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export function SpawnCreep(spawn: StructureSpawn, body: Part[], role?:Role) : number{
|
||
|
const name = "Creep" + Game.time;
|
||
|
return spawn.spawnCreep(body, name, {memory: {role : RoleToString(role)}});
|
||
|
}
|
||
|
|
||
|
export function FindCapacity(creep: Creep): AnyStructure[] {
|
||
|
return creep.room.find(FIND_STRUCTURES, {
|
||
|
filter: (structure: StructureSpawn | StructureExtension) => {
|
||
|
let type = structure.structureType;
|
||
|
return (
|
||
|
(type == STRUCTURE_EXTENSION ||
|
||
|
type == STRUCTURE_SPAWN||
|
||
|
type == STRUCTURE_CONTAINER) &&
|
||
|
structure.store.getFreeCapacity(RESOURCE_ENERGY) as number > 0
|
||
|
)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
export function GetSource(sourceId: Id<Source> | null): Source {
|
||
|
return Game.getObjectById(sourceId);
|
||
|
}
|
||
|
|
||
|
export function GetConstructureSet(creep: Creep, structureType: string | null = null): ConstructionSite<BuildableStructureConstant>[] {
|
||
|
return creep.room.find(FIND_CONSTRUCTION_SITES, {
|
||
|
filter: (structure: Structure) => {
|
||
|
if (structureType == null) return true;
|
||
|
return structure.structureType == structureType;
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
export function GetConstructure(creep: Creep, structureType: string, ){
|
||
|
return creep.room.find(FIND_STRUCTURES, {filter:(structure: AnyStructure)=>{
|
||
|
return structure.structureType == structureType;
|
||
|
}})
|
||
|
}
|
||
|
|
||
|
export function GetContainer(creep: Creep): StructureContainer[]{
|
||
|
let target = GetConstructure(creep, STRUCTURE_CONTAINER) as StructureContainer[];
|
||
|
return target
|
||
|
}
|
||
|
|
||
|
export function GetCreeps() : Map<string, number>{
|
||
|
let resp: Map<string, number> = new Map();
|
||
|
for (var name in Game.creeps){
|
||
|
var creep = Game.creeps[name];
|
||
|
if(resp.has(creep.memory.role))
|
||
|
resp.set(creep.memory.role, resp.get(creep.memory.role)+1)
|
||
|
else
|
||
|
resp.set(creep.memory.role, 1);
|
||
|
}
|
||
|
return resp;
|
||
|
}
|