screepCode/src/modules/creepApi.ts
2024-11-04 13:09:46 +08:00

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;
}