简介
@open-screeps/is-my-room
是一个用于 Screeps 游戏的开源项目,可以辅助你识别当前你的物理位置是否在 Screeps 中的房间内。
如果你正在开发 Screeps 相关的项目,那么 @open-screeps/is-my-room
可以让你更方便的管理房间,并且减少因为错误的房间管理带来的问题。
本文将详细介绍 @open-screeps/is-my-room
的使用方法,包括安装、配置以及使用示例。
安装
通过 npm 安装即可:
npm install @open-screeps/is-my-room
使用前请先阅读项目的文档并确保你填写了 Screeps 账户相关的配置。
配置
@open-screeps/is-my-room
需要使用 config
配置管理 Screeps 账户以及配置文件,配置文件可以在应用打包部署前配置。
const config = require('config'); config.isMyRoom.location = new RoomPosition(1, 1, "sim"); config.isMyRoom.options.roomNames = ["sim"]; config.isMyRoom.options.radius = 3;
location
: 表示你所在的位置,使用RoomPosition
对象进行配置。options
: 表示房间相关的配置,包括roomNames
和radius
两个参数。
其中:
roomNames
: 你需要创建的房间名称列表,如果你需要在W1N1
、W2N2
两个房间内启用该工具,将该参数配置为["W1N1", "W2N2"]
即可。radius
: 当前位置到房间边缘的距离,当你的物理位置距离房间边缘小于等于该参数时,你被视为在房间内。
使用
通过简单的调用即可完成验证:
const isMyRoom = require('@open-screeps/is-my-room'); if (isMyRoom()) { console.log(`I am in ${Game.rooms[Game.screeps.myRoomName]}`); } else { console.log(`I am outside of any room.`); }
上述代码中,如果当前位置在 Screeps 中的某个房间内,那么将打印出当前所在的房间名称,反之将打印出当前在房间外。
如果你需要获取你当前所在的房间,请使用 Game.rooms[Game.screeps.myRoomName]
获取。
示例
接下来,我们将通过实例来演示 @open-screeps/is-my-room
的使用方法。
-- -------------------- ---- ------- ----- -------- - ------------------------------------ ----- -------- - --- ---------------- --- ---------- ----- --------- - ---------- --------- ---------- ----- ------ - -- ------------------------ - --------- --------------------------------- - ---------- ------------------------------ - ------- -- ------------ - -------------- -- -- ----------------------------------------- - ---- - -------------- -- ------- -- --- -------- -
上述代码中,我们设置了当前的位置为 (39, 24)
即在 W12N92 中,然后将接下来的搜索半径设置为 1,表示如果我们距离房间边缘不超过 1 的话,我们就视为在房间内。
然后我们将需要搜索的房间列表设置为 ["W12N92", "W11N92", "W11N91"]
,表示只有在这三个房间中,我们才会被视为在房间内。
最后通过调用 isMyRoom()
就可以判断我们当前是不是在房间内了。
总结
本文介绍了 @open-screeps/is-my-room
的使用方法,其中包括了安装、配置以及使用示例。即便对于没有使用习惯的人也是非常好上手的,希望能够帮助你更好的管理 Screeps 中的房间。
如果你在使用该工具的过程中遇到了任何问题,可以通过项目的 GitHub 页面发起任何问题报告,开发者会给予尽快的回复。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005726c81e8991b448e8a18