代码ts化, 修复编译上传脚本

This commit is contained in:
jie 2024-11-03 22:04:05 +08:00
parent 916150eea2
commit 57c28c29ef
21 changed files with 410 additions and 216 deletions

View File

@ -1,4 +1,4 @@
{
let config = {
"main": {
"token": "",
"protocol": "http",
@ -10,4 +10,7 @@
"local": {
"copyPath": "C:\\Users\\jie\\AppData\\Local\\Screeps\\scripts\\127_0_0_1___21025\\default"
}
}
}
export { config }

179
dist/main.js vendored
View File

@ -3333,8 +3333,183 @@ const errorMapper = function (next) {
}
};
var loop = errorMapper(function () {
console.log("Game Start");
function FindCapacity(creep) {
return creep.room.find(FIND_STRUCTURES, {
filter: (structure) => {
let type = structure.structureType;
return ((type == STRUCTURE_EXTENSION ||
type == STRUCTURE_SPAWN) &&
structure.store.getFreeCapacity() != null && structure.store.getFreeCapacity() > 0);
}
});
}
function Harvest(creep) {
if (creep.store.getFreeCapacity() > 0) {
let sources = creep.room.find(FIND_SOURCES);
if (creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) {
creep.moveTo(sources[0], { visualizePathStyle: { stroke: "#ffaa00" } });
}
}
else {
let targets = FindCapacity(creep);
if (targets.length > 0) {
if (creep.transfer(targets[0], RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
creep.moveTo(targets[0], { visualizePathStyle: { stroke: "#ffffff" } });
}
}
}
}
function Build(creep) {
if (creep.memory.working && creep.store[RESOURCE_ENERGY] == 0) {
creep.memory.working = false;
creep.say("harvest");
}
if (!creep.memory.working && creep.store.getFreeCapacity(RESOURCE_ENERGY) == 0) {
creep.memory.working = true;
creep.say("builder");
}
if (creep.memory.working) {
let target = creep.room.find(FIND_CONSTRUCTION_SITES);
if (target.length > 0) {
if (creep.build(target[0]) == ERR_NOT_IN_RANGE) {
creep.moveTo(target[0], { visualizePathStyle: { stroke: "#ffaa00" } });
}
}
else {
let targets = FindCapacity(creep);
if (targets.length > 0) {
target.sort();
if (creep.transfer(targets[0], RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
creep.moveTo(targets[0], { visualizePathStyle: { stroke: "#ffaa00" } });
}
}
}
}
else {
creep.memory.working = false;
let sources = creep.room.find(FIND_SOURCES);
if (creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) {
creep.moveTo(sources[0], { visualizePathStyle: { stroke: "#ffaa00" } });
}
}
}
/**@param {Creep} creep */
function Upgrade(creep) {
if (creep.memory.working && creep.store[RESOURCE_ENERGY] == 0) {
creep.memory.working = false;
creep.say('🔄 harvest');
}
if (!creep.memory.working && creep.store.getFreeCapacity() == 0) {
creep.memory.working = true;
creep.say('⚡ upgrade');
}
if (creep.memory.working) {
if (creep.upgradeController(creep.room.controller) == ERR_NOT_IN_RANGE) {
creep.moveTo(creep.room.controller, { visualizePathStyle: { stroke: '#ffffff' } });
}
}
else {
var sources = creep.room.find(FIND_SOURCES);
if (creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) {
creep.moveTo(sources[0], { visualizePathStyle: { stroke: '#ffaa00' } });
}
}
}
let HARVESTER_COUNT = 2;
let BUILDER_COUNT = 2;
let UPGRADER_COUNT = 6;
var createDefaultHarvester = (spawn) => {
let name = "Harvester" + Game.time;
return spawn.spawnCreep([WORK, CARRY, MOVE], name, {
memory: {
role: "Harvester",
working: false
}
});
};
var createDefaultBuilder = (spawn) => {
let name = "Builder" + Game.time;
return spawn.spawnCreep([WORK, CARRY, MOVE], name, {
memory: {
role: "Builder",
working: false
}
});
};
var createDefaultUpgrader = (spawn) => {
let name = "Upgrader" + Game.time;
return spawn.spawnCreep([WORK, CARRY, MOVE], name, {
memory: {
role: "Upgrader",
working: false
}
});
};
function SpawnCreep(spawn) {
if (spawn.spawning)
return;
let harvesters = _.filter(Game.creeps,
/**@param {Creep} creep*/
(creep) => {
return creep.memory.role == "Harvester";
});
let builders = _.filter(Game.creeps,
/**@param {Creep} creep*/
(creep) => {
return creep.memory.role == "Builder";
});
let upgraders = _.filter(Game.creeps,
/**@param {Creep} creep*/
(creep) => {
return creep.memory.role == "Upgrader";
});
if (harvesters.length < HARVESTER_COUNT) {
if (createDefaultHarvester(spawn) == 0) {
console.log("Spawn Harvester");
}
}
if (upgraders.length < UPGRADER_COUNT) {
if (createDefaultUpgrader(spawn) == 0) {
console.log("Spawn Upgrader");
}
}
if (builders.length < BUILDER_COUNT) {
if (createDefaultBuilder(spawn) == 0) {
console.log("Spawn Builder");
}
}
if (spawn.spawning) {
var spawningCreep = Game.creeps[spawn.spawning.name];
spawn.room.visual.text('🛠️' + spawningCreep.memory.role, spawn.pos.x + 1, spawn.pos.y, { align: 'left', opacity: 0.8 });
}
}
const loop = errorMapper(() => {
let mainSpawn = Game.spawns["Spawn1"];
SpawnCreep(mainSpawn);
for (var name in Memory.creeps) {
if (!Game.creeps[name]) {
delete Memory.creeps[name];
console.log("clearing non-existing creep memory:", name);
}
}
for (var name in Game.creeps) {
let creep = Game.creeps[name];
if (creep.memory.role == "Harvester") {
Harvest(creep);
}
else if (creep.memory.role == "Upgrader") {
Upgrade(creep);
}
else if (creep.memory.role == "Builder") {
Build(creep);
}
}
});
exports.loop = loop;

1
dist/main.js.map vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/main.js.map.js vendored

File diff suppressed because one or more lines are too long

View File

@ -3,6 +3,7 @@
"version": "1.0.0",
"description": "",
"main": "index.js",
"type": "module",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "rollup -cw",

View File

@ -4,27 +4,28 @@ import copy from 'rollup-plugin-copy'
import resolve from '@rollup/plugin-node-resolve'
import commonjs from '@rollup/plugin-commonjs'
import typescript from 'rollup-plugin-typescript2' // <== 新增这一行
import { config } from './.secret.js'
let config
console.log(config[process.env.DEST])
// 根据指定的目标获取对应的配置项
if (!process.env.DEST) console.log("未指定目标, 代码将被编译但不会上传")
else if (!(config = require("./.secret.json")[process.env.DEST])) {
else if (config.main == null && config.local == null) {
throw new Error("无效目标,请检查 secret.json 中是否包含对应配置")
}
let runConfig = config[process.env.DEST]
// 根据指定的配置决定是上传还是复制到文件夹
const pluginDeploy = config && config.copyPath ?
const pluginDeploy = runConfig && runConfig.copyPath ?
// 复制到指定路径
copy({
targets: [
{
src: 'dist/main.js',
dest: config.copyPath
dest: runConfig.copyPath
},
{
src: 'dist/main.js.map',
dest: config.copyPath,
dest: runConfig.copyPath,
rename: name => name + '.map.js',
transform: contents => `module.exports = ${contents.toString()};`
}
@ -33,7 +34,7 @@ const pluginDeploy = config && config.copyPath ?
verbose: true
}) :
// 更新 .map 到 .map.js 并上传
screeps({ config, dryRun: !config })
screeps({ runConfig, dryRun: !config })
export default {
input: 'src/main.ts',

5
src/index.d.ts vendored
View File

@ -1,3 +1,4 @@
interface CreepMemory{
role: string
}
role: string,
working: boolean | null
}

View File

@ -1,4 +1,26 @@
import { errorMapper } from "./modules/errorMapping";
import { Harvest } from "./modules/harvester";
import { Build } from "./modules/builder";
import { Upgrade } from "./modules/upgrader";
import { SpawnCreep } from "./modules/spawnCreep";
export const loop = errorMapper(() => {
console.log("Game Start");
let mainSpawn = Game.spawns["Spawn1"];
SpawnCreep(mainSpawn);
for (var name in Memory.creeps) {
if (!Game.creeps[name]) {
delete Memory.creeps[name];
console.log("clearing non-existing creep memory:", name);
}
}
for (var name in Game.creeps) {
let creep = Game.creeps[name];
if (creep.memory.role == "Harvester") {
Harvest(creep);
} else if (creep.memory.role == "Upgrader") {
Upgrade(creep);
} else if (creep.memory.role == "Builder") {
Build(creep);
}
}
})

34
src/modules/builder.ts Normal file
View File

@ -0,0 +1,34 @@
import { FindCapacity } from "./util";
export function Build(creep: Creep) {
if (creep.memory.working && creep.store[RESOURCE_ENERGY] == 0) {
creep.memory.working = false;
creep.say("harvest")
}
if (!creep.memory.working && creep.store.getFreeCapacity(RESOURCE_ENERGY) == 0) {
creep.memory.working = true
creep.say("builder")
}
if (creep.memory.working) {
let target = creep.room.find(FIND_CONSTRUCTION_SITES);
if (target.length > 0) {
if (creep.build(target[0]) == ERR_NOT_IN_RANGE) {
creep.moveTo(target[0], { visualizePathStyle: { stroke: "#ffaa00" } });
}
} else {
let targets = FindCapacity(creep);
if (targets.length > 0) {
target.sort();
if (creep.transfer(targets[0], RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
creep.moveTo(targets[0], { visualizePathStyle: { stroke: "#ffaa00" } });
}
}
}
} else {
creep.memory.working = false
let sources = creep.room.find(FIND_SOURCES);
if (creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) {
creep.moveTo(sources[0], { visualizePathStyle: { stroke: "#ffaa00" } });
}
}
}

17
src/modules/harvester.ts Normal file
View File

@ -0,0 +1,17 @@
import { FindCapacity } from "./util"
export function Harvest(creep: Creep) {
if (creep.store.getFreeCapacity() > 0) {
let sources: Source[] = creep.room.find(FIND_SOURCES);
if (creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) {
creep.moveTo(sources[0], { visualizePathStyle: { stroke: "#ffaa00" } });
}
} else {
let targets = FindCapacity(creep);
if (targets.length > 0) {
if(creep.transfer(targets[0], RESOURCE_ENERGY) == ERR_NOT_IN_RANGE){
creep.moveTo(targets[0], { visualizePathStyle: { stroke: "#ffffff" } });
}
}
}
}

9
src/modules/setting.ts Normal file
View File

@ -0,0 +1,9 @@
let HARVESTER_COUNT: number = 2;
let BUILDER_COUNT: number = 2;
let UPGRADER_COUNT: number = 6;
export {
HARVESTER_COUNT,
BUILDER_COUNT,
UPGRADER_COUNT
}

76
src/modules/spawnCreep.ts Normal file
View File

@ -0,0 +1,76 @@
import "./setting";
import { BUILDER_COUNT, HARVESTER_COUNT, UPGRADER_COUNT } from "./setting";
var createDefaultHarvester = (spawn: StructureSpawn) => {
let name = "Harvester" + Game.time;
return spawn.spawnCreep([WORK, CARRY, MOVE], name, {
memory: {
role: "Harvester",
working: false
}
});
}
var createDefaultBuilder = (spawn: StructureSpawn) => {
let name = "Builder" + Game.time;
return spawn.spawnCreep([WORK, CARRY, MOVE], name, {
memory: {
role: "Builder",
working: false
}
});
}
var createDefaultUpgrader = (spawn: StructureSpawn) => {
let name = "Upgrader" + Game.time;
return spawn.spawnCreep([WORK, CARRY, MOVE], name, {
memory: {
role: "Upgrader",
working: false
}
});
}
export function SpawnCreep(spawn: StructureSpawn) {
if (spawn.spawning) return;
let harvesters = _.filter(Game.creeps,
/**@param {Creep} creep*/
(creep) => {
return creep.memory.role == "Harvester";
});
let builders = _.filter(Game.creeps,
/**@param {Creep} creep*/
(creep) => {
return creep.memory.role == "Builder";
});
let upgraders = _.filter(Game.creeps,
/**@param {Creep} creep*/
(creep) => {
return creep.memory.role == "Upgrader";
});
if (harvesters.length < HARVESTER_COUNT) {
if (createDefaultHarvester(spawn) == 0) {
console.log("Spawn Harvester")
}
}
if (upgraders.length < UPGRADER_COUNT) {
if (createDefaultUpgrader(spawn) == 0) {
console.log("Spawn Upgrader")
}
}
if (builders.length < BUILDER_COUNT) {
if (createDefaultBuilder(spawn) == 0) {
console.log("Spawn Builder")
}
}
if (spawn.spawning) {
var spawningCreep = Game.creeps[spawn.spawning.name];
spawn.room.visual.text(
'🛠️' + spawningCreep.memory.role,
spawn.pos.x + 1,
spawn.pos.y,
{ align: 'left', opacity: 0.8 });
}
}

23
src/modules/upgrader.ts Normal file
View File

@ -0,0 +1,23 @@
/**@param {Creep} creep */
export function Upgrade(creep: Creep) {
if (creep.memory.working && creep.store[RESOURCE_ENERGY] == 0) {
creep.memory.working = false;
creep.say('🔄 harvest');
}
if (!creep.memory.working && creep.store.getFreeCapacity() == 0) {
creep.memory.working = true;
creep.say('⚡ upgrade');
}
if (creep.memory.working) {
if (creep.upgradeController(creep.room.controller) == ERR_NOT_IN_RANGE) {
creep.moveTo(creep.room.controller, { visualizePathStyle: { stroke: '#ffffff' } });
}
}
else {
var sources = creep.room.find(FIND_SOURCES);
if (creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) {
creep.moveTo(sources[0], { visualizePathStyle: { stroke: '#ffaa00' } });
}
}
}

12
src/modules/util.ts Normal file
View File

@ -0,0 +1,12 @@
export function FindCapacity(creep: Creep) {
return creep.room.find(FIND_STRUCTURES, {
filter: (structure: StructureSpawn | StructureExtension) => {
let type = structure.structureType;
return (
(type == STRUCTURE_EXTENSION ||
type == STRUCTURE_SPAWN) &&
structure.store.getFreeCapacity() != null && structure.store.getFreeCapacity() as number > 0
)
}
})
}

View File

@ -1,37 +0,0 @@
let util = require("util");
module.exports = {
/**@param {Creep} creep */
run: function (creep) {
if (creep.memory.working && creep.store[RESOURCE_ENERGY] == 0) {
creep.memory.working = false;
creep.say("harvest")
}
if (!creep.memory.working && creep.store.getFreeCapacity(RESOURCE_ENERGY) == 0) {
creep.memory.working = true
creep.say("builder")
}
if (creep.memory.working) {
let target = creep.room.find(FIND_CONSTRUCTION_SITES);
if (target.length > 0) {
if (creep.build(target[0]) == ERR_NOT_IN_RANGE) {
creep.moveTo(target[0], {visualizePathStyle: {stroke: "#ffaa00"}});
}
} else {
let targets = util.FindCapacity(creep);
if (targets.length > 0) {
target.sort();
if (creep.transfer(targets[0], RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
creep.moveTo(targets[0], {visualizePathStyle: {stroke: "#ffaa00"}});
}
}
}
} else {
creep.memory.working = false
let sources = creep.room.find(FIND_SOURCES);
if (creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) {
creep.moveTo(sources[0], {visualizePathStyle: {stroke: "#ffaa00"}});
}
}
}
}

View File

@ -1,22 +0,0 @@
let util = require("util")
module.exports = {
/**@param {Creep} creep */
run: function(creep){
if(creep.store.getFreeCapacity() > 0){
let sources = creep.room.find(FIND_SOURCES);
sources.sort();
if(creep.harvest(sources[0]) == ERR_NOT_IN_RANGE){
creep.moveTo(sources[0], {visualizePathStyle: {stroke: "#ffaa00"}});
}
}else{
let target = util.FindCapacity(creep);
if(target.length > 0){
if(creep.transfer(target[0], RESOURCE_ENERGY) == ERR_NOT_IN_RANGE){
creep.moveTo(target[0], {visualizePathStyle: {stroke: "#ffaa00"}});
}
}
}
}
}

View File

@ -1,27 +0,0 @@
let spawnCreeps = require("spawnCreeps");
let harvester = require("harvester")
let upgrader = require("upgrader")
let builder = require("builder")
module.exports.loop = function(){
let mainSpawn = Game.spawns["Spawn1"];
spawnCreeps.run(mainSpawn);
for(var name in Memory.creeps) {
if(!Game.creeps[name]) {
delete Memory.creeps[name];
console.log('Clearing non-existing creep memory:', name);
}
}
for (var name in Game.creeps){
let creep = Game.creeps[name];
if(creep.memory.role == "Harvester"){
harvester.run(creep);
}else if(creep.memory.role == "Upgrader"){
upgrader.run(creep)
}else if(creep.memory.role == "Builder"){
builder.run(creep)
}
}
}

View File

@ -1,72 +0,0 @@
let harvesterCount = 2;
let builderCount = 3;
let upgraderCount = 6;
/**@param {StructureSpawn} spawn */
var createDefaultHarvester = (spawn) => {
let name = "Harvester" + Game.time;
return spawn.spawnCreep([WORK, CARRY, MOVE], name, { memory: { role: "Harvester" } });
}
/**@param {StructureSpawn} spawn */
var createDefaultBuilder = (spawn) => {
let name = "Builder" + Game.time;
return spawn.spawnCreep([WORK, CARRY, MOVE], name, { memory: { role: "Builder" } });
}
/**@param {StructureSpawn} spawn */
var createDefaultUpgrader = (spawn) => {
let name = "Upgrader" + Game.time;
return spawn.spawnCreep([WORK, CARRY, MOVE], name, { memory: { role: "Upgrader" } });
}
module.exports = {
/**@param {StructureSpawn} spawn*/
run: function (spawn) {
if (spawn.spawning) return;
let harvesters = _.filter(Game.creeps,
/**@param {Creep} creep*/
(creep) => {
return creep.memory.role == "Harvester";
});
let builders = _.filter(Game.creeps,
/**@param {Creep} creep*/
(creep) => {
return creep.memory.role == "Builder";
});
let upgraders = _.filter(Game.creeps,
/**@param {Creep} creep*/
(creep) => {
return creep.memory.role == "Upgrader";
});
if (harvesters.length < harvesterCount) {
if (createDefaultHarvester(spawn) == 0) {
console.log("Spawn Harvester")
}
}
if (upgraders.length < upgraderCount) {
if(createDefaultUpgrader(spawn) == 0){
console.log("Spawn Upgrader")
}
}
if (builders.length < builderCount) {
if(createDefaultBuilder(spawn) == 0){
console.log("Spawn Builder")
}
}
if (spawn.spawning) {
var spawningCreep = Game.creeps[spawn.spawning.name];
spawn.room.visual.text(
'🛠️' + spawningCreep.memory.role,
spawn.pos.x + 1,
spawn.pos.y,
{ align: 'left', opacity: 0.8 });
}
}
}

View File

@ -1,25 +0,0 @@
module.exports = {
/**@param {Creep} creep */
run: function (creep) {
if (creep.memory.upgrading && creep.store[RESOURCE_ENERGY] == 0) {
creep.memory.upgrading = false;
creep.say('🔄 harvest');
}
if (!creep.memory.upgrading && creep.store.getFreeCapacity() == 0) {
creep.memory.upgrading = true;
creep.say('⚡ upgrade');
}
if (creep.memory.upgrading) {
if (creep.upgradeController(creep.room.controller) == ERR_NOT_IN_RANGE) {
creep.moveTo(creep.room.controller, { visualizePathStyle: { stroke: '#ffffff' } });
}
}
else {
var sources = creep.room.find(FIND_SOURCES);
if (creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) {
creep.moveTo(sources[0], { visualizePathStyle: { stroke: '#ffaa00' } });
}
}
}
}

View File

@ -1,18 +0,0 @@
module.exports = {
/**@param {Creep} creep */
FindCapacity: function(creep){
return creep.room.find(FIND_STRUCTURES, {
/**@param {Structure} structure */
filter: (structure)=>{
let type = structure.structureType;
return ((type == STRUCTURE_EXTENSION) ||
(type == STRUCTURE_SPAWN )) &&
structure.store.getFreeCapacity(RESOURCE_ENERGY) > 0;
}
});
},
/** @param {Creep} creep */
Log: function(creep, msg){
console.log(creep.name + " " + msg)
}
}

View File

@ -0,0 +1,21 @@
{
"compilerOptions": {
"target": "es2017",
"moduleResolution": "Node",
"outDir": "dist/",
"baseUrl": "./",
"sourceMap": true,
"allowSyntheticDefaultImports": true,
"resolveJsonModule": true,
"esModuleInterop": true,
"paths": {
"@/*": ["./src/*"]
}
},
"exclude": [
"node_modules"
],
"include": [
"src/**/*.ts"
]
}