carry逻辑

This commit is contained in:
JIe 2024-11-04 16:59:12 +08:00
parent 2df2a171e7
commit 54df920ba1
4 changed files with 33 additions and 1 deletions

20
src/modules/carry.ts Normal file
View File

@ -0,0 +1,20 @@
import * as creepApi from "./creepApi"
export function Carry(creep: Creep) {
var containers = creepApi.GetContainer(creep);
var targets = creepApi.GetConstructure(creep, STRUCTURE_EXTENSION);
if (creep.store.getFreeCapacity(RESOURCE_ENERGY) > 0) {
for (var container of containers) {
if (container.store.getFreeCapacity(RESOURCE_ENERGY) == 0) {
if (creep.withdraw(container, RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
creep.moveTo(container, { visualizePathStyle: { stroke: "#00ffxx" } });
}
}
}
} else {
if (creep.transfer(targets[0], RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
creep.moveTo(targets[0], { visualizePathStyle: { stroke: "#00ffxx" } });
}
}
}

View File

@ -31,7 +31,7 @@ export function RoleToString(role: Role): string {
export function SpawnCreep(spawn: StructureSpawn, body: Part[], opt?: SpawnOptions): number {
const name = "Creep" + Game.time;
return spawn.spawnCreep(body, name, opt);//{ memory: { role: RoleToString(role) } });
return spawn.spawnCreep(body, name, opt);
}
export function FindCapacity(creep: Creep): AnyStructure[] {

View File

@ -1,6 +1,7 @@
export let HARVESTER_COUNT: number = 0;
export let BUILDER_COUNT: number = 1;
export let UPGRADER_COUNT: number = 4;
export let CARRYER_COUNT: number = 2;
export let MAIN_SOURCE_ID: Id<Source> = "ef990774d80108c" as Id<Source>;
export const enum Role {
@ -9,8 +10,10 @@ export const enum Role {
Builder,
Upgrader,
Repairer,
Carryer,
}
export let mk1Body: Part[] = [WORK, CARRY, MOVE];
export let mk2Body: Part[] = [WORK, WORK, CARRY, CARRY, MOVE, MOVE];
export let mk1CarryerBody: Part[] = [CARRY, CARRY, MOVE, MOVE];
export let Mk2harvesterBody: Part[] = [WORK, WORK, WORK, WORK, MOVE];

View File

@ -16,6 +16,10 @@ const createMk2Harvester = (spawn: StructureSpawn, container: StructureContainer
return creepApi.SpawnCreep(spawn, setting.Mk2harvesterBody, { memory: { role: creepApi.RoleToString(setting.Role.BigHarvester), workTarget: container.id } });
}
const createMk1Carryer = (spawn: StructureSpawn) => {
return creepApi.SpawnCreep(spawn, setting.mk1CarryerBody, { memory: { role: creepApi.RoleToString(setting.Role.Carryer) } });
}
export function SpawnCreep(spawn: StructureSpawn) {
if (spawn.spawning) return;
@ -36,6 +40,11 @@ export function SpawnCreep(spawn: StructureSpawn) {
console.log("Spawn Builder")
}
}
if (currentCreeps.get(creepApi.RoleToString(setting.Role.Carryer)) < setting.CARRYER_COUNT) {
if (createMk1Carryer(spawn) == 0) {
console.log("Spawn Carryer")
}
}
if (currentCreeps.get(creepApi.RoleToString(setting.Role.BigHarvester)) < currentContainer.length) {
for (var structure of Memory.structures) {
if (structure.structureType == STRUCTURE_CONTAINER && structure.creep == null)