grinders-farm 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +93 -109
- package/SKILL.md +79 -132
- package/assets/tiles/crops/carrot_growing_1.png +0 -0
- package/assets/tiles/crops/carrot_growing_2.png +0 -0
- package/assets/tiles/crops/carrot_ready.png +0 -0
- package/assets/tiles/crops/carrot_seed.png +0 -0
- package/assets/tiles/crops/carrot_sprout.png +0 -0
- package/assets/tiles/crops/potato_growing_1.png +0 -0
- package/assets/tiles/crops/potato_growing_2.png +0 -0
- package/assets/tiles/crops/potato_ready.png +0 -0
- package/assets/tiles/crops/potato_seed.png +0 -0
- package/assets/tiles/crops/potato_sprout.png +0 -0
- package/assets/tiles/crops/pumpkin_growing_1.png +0 -0
- package/assets/tiles/crops/pumpkin_growing_2.png +0 -0
- package/assets/tiles/crops/pumpkin_ready.png +0 -0
- package/assets/tiles/crops/pumpkin_seed.png +0 -0
- package/assets/tiles/crops/pumpkin_sprout.png +0 -0
- package/assets/tiles/crops/tomato_growing_1.png +0 -0
- package/assets/tiles/crops/tomato_growing_2.png +0 -0
- package/assets/tiles/crops/tomato_ready.png +0 -0
- package/assets/tiles/crops/tomato_seed.png +0 -0
- package/assets/tiles/crops/tomato_sprout.png +0 -0
- package/assets/tiles/terrain/empty.png +0 -0
- package/assets/tiles/terrain/watered.png +0 -0
- package/dist/src/adapters/auto-worker.js +1 -1
- package/dist/src/adapters/daemon.d.ts +1 -1
- package/dist/src/adapters/oneshot.d.ts +1 -0
- package/dist/src/adapters/oneshot.js +1 -0
- package/dist/src/adapters/oneshot.js.map +1 -1
- package/dist/src/adapters/terminal.d.ts +1 -0
- package/dist/src/adapters/terminal.js +1 -0
- package/dist/src/adapters/terminal.js.map +1 -1
- package/dist/src/game/engine.js +3 -3
- package/dist/src/game/engine.js.map +1 -1
- package/dist/src/local-auto.d.ts.map +1 -1
- package/dist/src/local-auto.js +26 -5
- package/dist/src/local-auto.js.map +1 -1
- package/dist/src/notify/openclaw-push.d.ts +1 -1
- package/dist/src/notify/openclaw-push.js +1 -1
- package/dist/src/render/image-renderer.d.ts.map +1 -1
- package/dist/src/render/image-renderer.js +21 -1
- package/dist/src/render/image-renderer.js.map +1 -1
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -1,134 +1,118 @@
|
|
|
1
1
|
# 🌿 Grinder's Farm
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
一个轻量像素农场游戏:种地、浇水、收获、卖货、接订单。
|
|
4
|
+
你可以在终端玩,也可以在 OpenClaw 的聊天渠道里玩。
|
|
4
5
|
|
|
5
|
-
##
|
|
6
|
+
## 这款游戏有什么
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
- 4x5 农田网格,开局 50G
|
|
9
|
+
- 订单系统(完成后有额外奖励)
|
|
10
|
+
- 动态市场价格(卖得多会有压价反馈)
|
|
11
|
+
- 多渠道自动推送(Telegram / WebChat 等)
|
|
12
|
+
- 文本农场视图 + PNG 像素图
|
|
13
|
+
|
|
14
|
+
## 3 分钟上手
|
|
15
|
+
|
|
16
|
+
### 1) 安装
|
|
8
17
|
|
|
9
18
|
```bash
|
|
10
19
|
npm install -g grinders-farm
|
|
11
20
|
openclaw plugins install openclaw-plugin-grinders-farm --dangerously-force-unsafe-install
|
|
12
|
-
# skill 发布到 ClawHub 后:
|
|
13
|
-
# openclaw skills install grinders-farm
|
|
14
21
|
```
|
|
15
22
|
|
|
16
|
-
|
|
23
|
+
如果你已经在 ClawHub 发布了 skill,再执行:
|
|
17
24
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
25
|
+
```bash
|
|
26
|
+
openclaw skills install grinders-farm
|
|
27
|
+
```
|
|
21
28
|
|
|
22
|
-
|
|
29
|
+
### 2) 在聊天里绑定渠道
|
|
23
30
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
31
|
+
在你希望收到推送的每个频道里,先发一次:
|
|
32
|
+
|
|
33
|
+
```text
|
|
34
|
+
/farm farm
|
|
28
35
|
```
|
|
29
36
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
| Command | Description |
|
|
33
|
-
|---------|-------------|
|
|
34
|
-
| `farm` / `status` | View your farm (renders a PNG image + text) |
|
|
35
|
-
| `plant <crop> <pos>` | Plant a crop, e.g. `plant carrot A1` |
|
|
36
|
-
| `water [pos]` | Water a plot, or all plots if no position given |
|
|
37
|
-
| `harvest [pos]` | Harvest a ready crop, or all ready crops |
|
|
38
|
-
| `shop` | View seed shop with prices |
|
|
39
|
-
| `sell` | Sell everything in your inventory |
|
|
40
|
-
| `inventory` / `inv` | View inventory |
|
|
41
|
-
| `start` | Start local auto worker (fixed **20s/day**). Auto-pushes to all bound channels |
|
|
42
|
-
| `stop` | Stop local auto worker |
|
|
43
|
-
| `reset` | Start over |
|
|
44
|
-
| `help` | Show help |
|
|
45
|
-
| `quit` / `exit` | Exit the game (terminal mode only) |
|
|
46
|
-
|
|
47
|
-
## Available Crops
|
|
48
|
-
|
|
49
|
-
| Crop | Growth | Seed Cost | Sell Price |
|
|
50
|
-
|------|--------|-----------|------------|
|
|
51
|
-
| 🥕 Carrot | 5 days | 5G | 11G |
|
|
52
|
-
| 🥔 Potato | 7 days | 8G | 22G |
|
|
53
|
-
| 🍅 Tomato | 6 days | 9G | 24G |
|
|
54
|
-
| 🎃 Pumpkin | 8 days | 12G | 34G |
|
|
55
|
-
|
|
56
|
-
Growth art stages now map to `seed -> sprout -> growing_1 -> growing_2 -> ready`, and in-game growth days are scaled proportionally from real-world maturity time.
|
|
57
|
-
|
|
58
|
-
## How It Works
|
|
59
|
-
|
|
60
|
-
1. You start with a 4×5 grid and 50G
|
|
61
|
-
2. Buy seeds from the shop and plant them on empty plots
|
|
62
|
-
3. Water your crops each day — unwatered crops don't grow
|
|
63
|
-
4. After enough days, crops become ready to harvest
|
|
64
|
-
5. Harvest and sell for gold, then plant more
|
|
65
|
-
|
|
66
|
-
## Local Files
|
|
67
|
-
|
|
68
|
-
| Path | Purpose |
|
|
69
|
-
|------|---------|
|
|
70
|
-
| `~/.grinders-farm/farm.json` | Save game |
|
|
71
|
-
| `~/.grinders-farm/farm.png` | Latest rendered farm image |
|
|
72
|
-
| `~/.grinders-farm/image-server.pid` / `image-server.json` | Local image HTTP server metadata (for clickable PNG URL in OpenClaw) |
|
|
73
|
-
| `~/.grinders-farm/auto.pid` / `auto.config.json` | Local auto-advance worker (when running) |
|
|
74
|
-
| `~/.grinders-farm/auto.log` | Optional log from the auto worker |
|
|
75
|
-
| `~/.grinders-farm/openclaw-delivery.json` | Auto-written when you use `/farm` in OpenClaw (push target) |
|
|
76
|
-
| `~/.grinders-farm/openclaw-deliveries.json` | Auto-written binding list (fan-out auto-push to all bound channels) |
|
|
77
|
-
|
|
78
|
-
## OpenClaw
|
|
79
|
-
|
|
80
|
-
- **Skill**: `SKILL.md`(推荐走 ClawHub 安装)
|
|
81
|
-
- Plugin runtime auto-detects in this order: `GRINDERS_FARM_ROOT` → plugin `gameRoot` → plugin parent directory → `grinders-farm` CLI in `PATH` (`GRINDERS_FARM_CLI_BIN` override).
|
|
82
|
-
- 对外安装推荐走 npm 包:`openclaw-plugin-grinders-farm`,无需源码路径。
|
|
83
|
-
- Plugin will start a local image server on Gateway boot (default `http://127.0.0.1:18931/farm.png`) so status output uses a clickable URL instead of `file://...`.
|
|
84
|
-
- **Proactive push (OpenClaw)**: In every channel you want to receive pushes, send **`/farm …` once**. Plugin records them in `~/.grinders-farm/openclaw-deliveries.json`. After `/farm start`, each auto-advance tick fan-outs to all recorded channels. Stop worker: `/farm stop`.
|
|
85
|
-
|
|
86
|
-
## OpenClaw Plugin Release Notes
|
|
87
|
-
|
|
88
|
-
- Plugin package: `openclaw-plugin/` (contains `openclaw.plugin.json`, `README.md`, `LICENSE`).
|
|
89
|
-
- Root package exports runnable CLI (`grinders-farm`) and includes only release files via `package.json.files`.
|
|
90
|
-
- Plugin package is precompiled (`openclaw-plugin/dist/`) for npm install; end users do not build.
|
|
91
|
-
- Skill sync script is cross-machine (`npm run sync-skill`), no Homebrew-only hardcoded path.
|
|
92
|
-
- Recommended validation before publishing:
|
|
93
|
-
- `npm run build`
|
|
94
|
-
- `(cd openclaw-plugin && npm run build)`
|
|
95
|
-
- `npx tsx src/adapters/oneshot.ts help`
|
|
96
|
-
- OpenClaw smoke test: `/farm farm`, `/farm start`, `/farm stop`
|
|
97
|
-
|
|
98
|
-
## Architecture
|
|
37
|
+
### 3) 开始自动推进
|
|
99
38
|
|
|
39
|
+
```text
|
|
40
|
+
/farm start
|
|
100
41
|
```
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
├── render/ # Text + PNG output
|
|
110
|
-
├── storage/ # ~/.grinders-farm JSON persistence
|
|
111
|
-
└── adapters/
|
|
112
|
-
├── oneshot.ts # Single command (used by OpenClaw plugin)
|
|
113
|
-
├── auto-worker.ts # Background loop: auto-advance on an interval
|
|
114
|
-
├── daemon.ts # Dev helper → auto-worker @ 10s
|
|
115
|
-
└── terminal.ts # Interactive CLI
|
|
42
|
+
|
|
43
|
+
- 固定每 20 分钟推进一天
|
|
44
|
+
- 自动推送到所有已绑定频道
|
|
45
|
+
|
|
46
|
+
停止自动推进:
|
|
47
|
+
|
|
48
|
+
```text
|
|
49
|
+
/farm stop
|
|
116
50
|
```
|
|
117
51
|
|
|
118
|
-
##
|
|
52
|
+
## 命令速查
|
|
53
|
+
|
|
54
|
+
| 命令 | 说明 |
|
|
55
|
+
|---|---|
|
|
56
|
+
| `farm` / `status` | 查看农场 |
|
|
57
|
+
| `plant <crop> <pos>` | 种植(例:`plant carrot A1`) |
|
|
58
|
+
| `water [pos]` | 浇水(不填位置则浇全部) |
|
|
59
|
+
| `harvest [pos]` | 收获(不填位置则收全部成熟作物) |
|
|
60
|
+
| `shop` | 查看商店 |
|
|
61
|
+
| `sell` | 出售仓库全部作物 |
|
|
62
|
+
| `inventory` / `inv` | 查看仓库 |
|
|
63
|
+
| `start` | 启动自动推进与自动推送 |
|
|
64
|
+
| `stop` | 停止自动推进 |
|
|
65
|
+
| `reset` | 重开一局 |
|
|
66
|
+
| `help` | 查看帮助 |
|
|
67
|
+
|
|
68
|
+
## 作物一览
|
|
69
|
+
|
|
70
|
+
| 作物 | 成熟天数 | 种子价 | 基础售价 |
|
|
71
|
+
|---|---:|---:|---:|
|
|
72
|
+
| 🥕 Carrot | 5 | 5G | 11G |
|
|
73
|
+
| 🥔 Potato | 7 | 8G | 22G |
|
|
74
|
+
| 🍅 Tomato | 6 | 9G | 24G |
|
|
75
|
+
| 🎃 Pumpkin | 8 | 12G | 34G |
|
|
119
76
|
|
|
120
|
-
|
|
121
|
-
|--------|---------|
|
|
122
|
-
| `npm run dev` | Interactive terminal game |
|
|
123
|
-
| `npm run daemon` | Auto-advance every **10s** (dev) |
|
|
124
|
-
| `npm run auto-worker -- 3600` | Run worker directly (e.g. 3600s interval) |
|
|
125
|
-
| `npm run sync-skill` | Copy `SKILL.md` to OpenClaw skills dir (portable path detection) |
|
|
77
|
+
## 游戏循环建议
|
|
126
78
|
|
|
127
|
-
|
|
79
|
+
1. 先看 `shop`,根据现金和订单选种子
|
|
80
|
+
2. `plant` 后每天 `water`
|
|
81
|
+
3. 成熟后 `harvest`,再 `sell`
|
|
82
|
+
4. 利用订单奖励和市场反馈,滚动扩大收益
|
|
128
83
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
-
|
|
84
|
+
## 推送与渠道说明
|
|
85
|
+
|
|
86
|
+
- 绑定文件:`~/.grinders-farm/openclaw-deliveries.json`
|
|
87
|
+
- 执行 `/farm start` 后,自动 fan-out 到所有已绑定目标
|
|
88
|
+
- WebChat 走 `chat.inject`,消息渠道走 `openclaw message send`
|
|
89
|
+
|
|
90
|
+
## 本地数据文件
|
|
91
|
+
|
|
92
|
+
| 路径 | 用途 |
|
|
93
|
+
|---|---|
|
|
94
|
+
| `~/.grinders-farm/farm.json` | 存档 |
|
|
95
|
+
| `~/.grinders-farm/farm.png` | 最新像素图 |
|
|
96
|
+
| `~/.grinders-farm/auto.pid` / `auto.config.json` | 自动推进进程信息 |
|
|
97
|
+
| `~/.grinders-farm/auto.log` | 自动推进日志 |
|
|
98
|
+
| `~/.grinders-farm/image-server.json` | 图片服务元数据 |
|
|
99
|
+
|
|
100
|
+
## 开发者
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
npm install
|
|
104
|
+
npm run generate-tiles
|
|
105
|
+
npm run build
|
|
106
|
+
npm run dev
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
插件开发构建:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
cd openclaw-plugin
|
|
113
|
+
npm install
|
|
114
|
+
npm run build
|
|
115
|
+
```
|
|
132
116
|
|
|
133
117
|
## License
|
|
134
118
|
|
package/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: grinders-farm
|
|
3
|
-
description: "
|
|
3
|
+
description: "将农场意图稳定映射到 grinders_farm tool,执行种植、浇水、收获、交易与自动推进命令。"
|
|
4
4
|
metadata: { "openclaw": { "emoji": "🌾", "requires": { "bins": ["npx"] } } }
|
|
5
5
|
command-dispatch: tool
|
|
6
6
|
command-tool: grinders_farm
|
|
@@ -9,134 +9,81 @@ disable-model-invocation: false
|
|
|
9
9
|
|
|
10
10
|
# Grinder's Farm
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
##
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
- `command: "start"`
|
|
92
|
-
- `command: "stop"`
|
|
93
|
-
|
|
94
|
-
### 在 OpenClaw 里:自动后台 + 定时推送(推荐,无需手填收件人)
|
|
95
|
-
|
|
96
|
-
1. 每个你希望接收推送的频道里,先发一次 **`/farm …`**(或任意入站消息触发绑定),插件会把会话写入 `~/.grinders-farm/openclaw-deliveries.json`。`~/.grinders-farm/openclaw-delivery.json` 仍保留为单目标兼容。
|
|
97
|
-
2. 执行 **`/farm start`** 后,本地 worker 固定每 20 秒推进一天;每次推进成功后会自动推送当前农场到**所有已绑定频道**(**不经模型**)。Telegram 等使用 `openclaw message send`,webchat 使用 Gateway **`chat.inject`**。
|
|
98
|
-
3. **停止自动推进**:`/farm stop`(与 CLI 一致)。
|
|
99
|
-
|
|
100
|
-
### Reset
|
|
101
|
-
|
|
102
|
-
- `command: "reset"`
|
|
103
|
-
|
|
104
|
-
## Grid
|
|
105
|
-
|
|
106
|
-
4 rows (A-D) × 5 columns (1-5). Positions: `A1`, `B3`, `D5`.
|
|
107
|
-
|
|
108
|
-
## Game Loop
|
|
109
|
-
|
|
110
|
-
1. Start: 50G, 4×5 empty grid
|
|
111
|
-
2. `shop` → pick crop → `plant <crop> <pos>`
|
|
112
|
-
3. `water` → 等待自动推进(repeat daily)
|
|
113
|
-
4. When ready → `harvest` → `sell`
|
|
114
|
-
|
|
115
|
-
## Natural Language Mapping
|
|
116
|
-
|
|
117
|
-
若用户自由打字,也应优先直接调用 `grinders_farm` tool;用户手动输入 **`/farm …`** 或 **`/grinders_farm …`** 也可。
|
|
118
|
-
|
|
119
|
-
- "种胡萝卜在A1" → `plant carrot A1`
|
|
120
|
-
- "全部浇水" → `water`
|
|
121
|
-
- "收获所有" → `harvest`
|
|
122
|
-
- "卖掉" → `sell`
|
|
123
|
-
- "买什么好" → run `shop`, then recommend based on gold
|
|
124
|
-
- "开启自动模式" / "start auto" → `start`
|
|
125
|
-
- "停止自动" / "stop auto" → `stop`
|
|
126
|
-
|
|
127
|
-
## OpenClaw 集成
|
|
128
|
-
|
|
129
|
-
1. 安装并启用 `openclaw-plugin-grinders-farm`(或开发模式下本仓库 `openclaw-plugin/`)。插件注册:
|
|
130
|
-
- **`grinders_farm` tool** — 与 frontmatter 中 `command-dispatch: tool` / `command-tool` 配合,使 slash 直达工具执行。
|
|
131
|
-
- **`/farm`** — 插件命令,直接跑 `oneshot.ts`,并写入 `openclaw-delivery.json`(兼容)+ `openclaw-deliveries.json`(多频道 fan-out)供推送使用。
|
|
132
|
-
2. 修改 Gateway 配置后重启。插件会按顺序自动定位运行时:`GRINDERS_FARM_ROOT` → `plugins.entries.grinders-farm.config.gameRoot` → 插件父目录 → `PATH` 中的 `grinders-farm`(可用 `GRINDERS_FARM_CLI_BIN` 覆盖)。若自动定位失败,再显式设置 `gameRoot`。可选:`autoStartWorkerOnGatewayBoot`、`imageServerPort`。
|
|
133
|
-
3. `disable-model-invocation: false` 允许模型在自然语言对话中直接调用本 skill 的 `grinders_farm` tool;slash / 插件命令仍可用。
|
|
134
|
-
|
|
135
|
-
## Notes
|
|
136
|
-
|
|
137
|
-
- State: `~/.grinders-farm/farm.json`
|
|
138
|
-
- PNG: `~/.grinders-farm/farm.png`(多数会改变状态的命令后会更新)
|
|
139
|
-
- Local image URL (plugin auto-start): `http://127.0.0.1:18931/farm.png`(可在 plugin config 里改端口 `imageServerPort`)
|
|
140
|
-
- 本地自动推进日志(可选):`~/.grinders-farm/auto.log`
|
|
141
|
-
- 推送会话:`~/.grinders-farm/openclaw-deliveries.json`(由 `/farm` 自动累积);兼容文件 `~/.grinders-farm/openclaw-delivery.json`
|
|
142
|
-
- 终端快速测试自动:`npm run daemon`(10 秒/天)
|
|
12
|
+
此 Skill 的目标只有一个:把用户输入映射成**唯一明确**的 `grinders_farm` 命令并执行。
|
|
13
|
+
|
|
14
|
+
## 必须遵守
|
|
15
|
+
|
|
16
|
+
1. 用户在玩农场时,必须调用 `grinders_farm` tool。
|
|
17
|
+
2. 不用 shell/exec/cargo 等其它执行路径。
|
|
18
|
+
3. 不要只讲解不执行(除非用户明确说“先别执行”)。
|
|
19
|
+
4. 作物只允许:`carrot` `potato` `tomato` `pumpkin`。
|
|
20
|
+
5. 坐标格式固定:`A1`~`D5`(行 A-D,列 1-5)。
|
|
21
|
+
|
|
22
|
+
## 命令白名单(仅这些)
|
|
23
|
+
|
|
24
|
+
- `farm`
|
|
25
|
+
- `plant <crop> <pos>`
|
|
26
|
+
- `water [pos]`
|
|
27
|
+
- `harvest [pos]`
|
|
28
|
+
- `shop`
|
|
29
|
+
- `sell`
|
|
30
|
+
- `inventory`
|
|
31
|
+
- `start`
|
|
32
|
+
- `stop`
|
|
33
|
+
- `reset`
|
|
34
|
+
- `help`
|
|
35
|
+
|
|
36
|
+
## 意图映射(按优先级匹配)
|
|
37
|
+
|
|
38
|
+
命中后立即执行,不要多重猜测。
|
|
39
|
+
|
|
40
|
+
1. **自动推进**
|
|
41
|
+
- “开启自动 / 开始挂机 / start auto” -> `start`
|
|
42
|
+
- “停止自动 / 关掉挂机 / stop auto” -> `stop`
|
|
43
|
+
2. **种植**
|
|
44
|
+
- 包含“种/种植/播种”且有作物+坐标 -> `plant <crop> <pos>`
|
|
45
|
+
3. **浇水**
|
|
46
|
+
- “浇水”+坐标 -> `water <pos>`
|
|
47
|
+
- 仅“浇水” -> `water`
|
|
48
|
+
4. **收获**
|
|
49
|
+
- “收获”+坐标 -> `harvest <pos>`
|
|
50
|
+
- 仅“收获” -> `harvest`
|
|
51
|
+
5. **交易/信息**
|
|
52
|
+
- “商店/买什么” -> `shop`
|
|
53
|
+
- “卖掉/出售” -> `sell`
|
|
54
|
+
- “仓库/库存/背包” -> `inventory`
|
|
55
|
+
6. **重置/帮助**
|
|
56
|
+
- “重置/重开” -> `reset`
|
|
57
|
+
- “帮助/help” -> `help`
|
|
58
|
+
7. **兜底**
|
|
59
|
+
- 农场相关但不够明确 -> `farm`
|
|
60
|
+
|
|
61
|
+
## 输出规则(避免歧义)
|
|
62
|
+
|
|
63
|
+
1. 工具返回内容优先,尽量原样呈现。
|
|
64
|
+
2. 若含 markdown 表格,原样输出,不包代码块。
|
|
65
|
+
3. 若含图片 URL,保持纯链接可点击,不加反引号。
|
|
66
|
+
4. 命令失败时:先返回错误原文,再给一条可执行示例命令。
|
|
67
|
+
|
|
68
|
+
## 标准示例
|
|
69
|
+
|
|
70
|
+
- “在 A4 种胡萝卜” -> `command: "plant carrot A4"`
|
|
71
|
+
- “看农场” -> `command: "farm"`
|
|
72
|
+
- “全部浇水” -> `command: "water"`
|
|
73
|
+
- “收 A2” -> `command: "harvest A2"`
|
|
74
|
+
- “开自动” -> `command: "start"`
|
|
75
|
+
- “停自动” -> `command: "stop"`
|
|
76
|
+
|
|
77
|
+
## OpenClaw 使用要点
|
|
78
|
+
|
|
79
|
+
- 插件:`openclaw-plugin-grinders-farm`
|
|
80
|
+
- 先在每个目标频道执行一次 `/farm farm` 完成绑定
|
|
81
|
+
- 执行 `/farm start` 开始自动推进(固定 20 分钟/天)
|
|
82
|
+
- 执行 `/farm stop` 停止自动推进
|
|
83
|
+
|
|
84
|
+
## 本地状态文件
|
|
85
|
+
|
|
86
|
+
- `~/.grinders-farm/farm.json`
|
|
87
|
+
- `~/.grinders-farm/farm.png`
|
|
88
|
+
- `~/.grinders-farm/auto.log`
|
|
89
|
+
- `~/.grinders-farm/openclaw-deliveries.json`
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Background worker: advances one in-game day every `intervalSec` seconds.
|
|
3
|
-
* Writes ~/.grinders-farm/auto.pid and auto.config.json
|
|
3
|
+
* Writes ~/.grinders-farm/auto.pid and auto.config.json.
|
|
4
4
|
*/
|
|
5
5
|
import * as fs from "node:fs";
|
|
6
6
|
import * as os from "node:os";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oneshot.js","sourceRoot":"","sources":["../../../src/adapters/oneshot.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"oneshot.js","sourceRoot":"","sources":["../../../src/adapters/oneshot.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;AACnC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;AACvC,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;AAE9F,SAAS,mBAAmB,CAAC,SAAiB;IAC5C,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAA0B,CAAC;YACjG,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC1D,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACvD,OAAO,GAAG,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;IACrC,CAAC;IACD,OAAO,UAAU,SAAS,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,IAAI,CAAC,OAAO,EAAE,CAAC;IACb,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACpD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAE5B,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;IACrB,OAAO,CAAC,GAAG,CAAC,iBAAiB,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AACxE,CAAC;AAED,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../../src/adapters/terminal.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../../src/adapters/terminal.ts"],"names":[],"mappings":"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"}
|
package/dist/src/game/engine.js
CHANGED
|
@@ -2,7 +2,7 @@ import { createNewFarm, plant, water, harvest, sellAll, nextDay, getShopText, ge
|
|
|
2
2
|
import { renderFarmText } from "../render/text-renderer.js";
|
|
3
3
|
import { renderFarmImage } from "../render/image-renderer.js";
|
|
4
4
|
import { startLocalAuto, stopLocalAuto } from "../local-auto.js";
|
|
5
|
-
const DEFAULT_START_INTERVAL_SEC = 20;
|
|
5
|
+
const DEFAULT_START_INTERVAL_SEC = 20 * 60;
|
|
6
6
|
const KNOWN_COMMANDS = new Set([
|
|
7
7
|
"farm",
|
|
8
8
|
"status",
|
|
@@ -115,7 +115,7 @@ export class GameEngine {
|
|
|
115
115
|
return { success: true, message: getInventoryText(this.state) };
|
|
116
116
|
case "start":
|
|
117
117
|
if (parts.length > 1) {
|
|
118
|
-
return { success: false, message: '用法: start(固定每 20
|
|
118
|
+
return { success: false, message: '用法: start(固定每 20 分钟推进一天)' };
|
|
119
119
|
}
|
|
120
120
|
return startLocalAuto(DEFAULT_START_INTERVAL_SEC);
|
|
121
121
|
case "stop":
|
|
@@ -225,7 +225,7 @@ function getHelpText() {
|
|
|
225
225
|
" shop 查看种子商店",
|
|
226
226
|
" sell 出售仓库中所有农产品",
|
|
227
227
|
" inventory / inv 查看仓库",
|
|
228
|
-
" start 启动自动推进(固定20
|
|
228
|
+
" start 启动自动推进(固定20分钟/天,自动推送到已绑定频道)",
|
|
229
229
|
" stop 停止自动推进",
|
|
230
230
|
" reset 重新开始",
|
|
231
231
|
" help 显示此帮助",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/game/engine.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,OAAO,EACP,WAAW,EACX,gBAAgB,EAChB,eAAe,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjE,MAAM,0BAA0B,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/game/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-auto.d.ts","sourceRoot":"","sources":["../../src/local-auto.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,+EAA+E;AAC/E,eAAO,MAAM,YAAY,QAAmE,CAAC;AAG7F,eAAO,MAAM,aAAa,QAAkC,CAAC;AAC7D,eAAO,MAAM,gBAAgB,QAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"local-auto.d.ts","sourceRoot":"","sources":["../../src/local-auto.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,+EAA+E;AAC/E,eAAO,MAAM,YAAY,QAAmE,CAAC;AAG7F,eAAO,MAAM,aAAa,QAAkC,CAAC;AAC7D,eAAO,MAAM,gBAAgB,QAA0C,CAAC;AAoGxE;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA2DxG;AAED,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAEhF;AAED,wBAAgB,aAAa,IAAI,aAAa,CAuD7C;AAED,wBAAgB,kBAAkB,IAAI,aAAa,CAiClD"}
|
package/dist/src/local-auto.js
CHANGED
|
@@ -28,7 +28,7 @@ function listRunningAutoWorkerPids() {
|
|
|
28
28
|
return [];
|
|
29
29
|
const pids = new Set();
|
|
30
30
|
for (const line of out.split("\n")) {
|
|
31
|
-
if (!line.includes("
|
|
31
|
+
if (!line.includes("auto-worker.ts") && !line.includes("auto-worker.js"))
|
|
32
32
|
continue;
|
|
33
33
|
const m = line.trim().match(/^(\d+)\s+/);
|
|
34
34
|
if (!m)
|
|
@@ -74,6 +74,21 @@ function resolveOpenclawBinForWorker() {
|
|
|
74
74
|
}
|
|
75
75
|
return null;
|
|
76
76
|
}
|
|
77
|
+
function resolveWorkerCommand(gameRoot, intervalSec) {
|
|
78
|
+
const tsWorker = path.join(gameRoot, "src", "adapters", "auto-worker.ts");
|
|
79
|
+
if (fs.existsSync(tsWorker)) {
|
|
80
|
+
return { cmd: "npx", args: ["tsx", tsWorker, String(intervalSec)] };
|
|
81
|
+
}
|
|
82
|
+
const distWorker = path.join(gameRoot, "dist", "src", "adapters", "auto-worker.js");
|
|
83
|
+
if (fs.existsSync(distWorker)) {
|
|
84
|
+
return { cmd: process.execPath, args: [distWorker, String(intervalSec)] };
|
|
85
|
+
}
|
|
86
|
+
const srcJsWorker = path.join(gameRoot, "src", "adapters", "auto-worker.js");
|
|
87
|
+
if (fs.existsSync(srcJsWorker)) {
|
|
88
|
+
return { cmd: process.execPath, args: [srcJsWorker, String(intervalSec)] };
|
|
89
|
+
}
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
77
92
|
function removeStalePidFile() {
|
|
78
93
|
if (!fs.existsSync(AUTO_PID_FILE))
|
|
79
94
|
return;
|
|
@@ -113,9 +128,15 @@ export async function startLocalAutoAtRoot(gameRoot, intervalSec) {
|
|
|
113
128
|
return { success: false, message: `自动推进已在运行中 (PID ${pid})。用 "stop" 停止` };
|
|
114
129
|
}
|
|
115
130
|
}
|
|
116
|
-
const worker =
|
|
131
|
+
const worker = resolveWorkerCommand(gameRoot, intervalSec);
|
|
132
|
+
if (!worker) {
|
|
133
|
+
return {
|
|
134
|
+
success: false,
|
|
135
|
+
message: '自动推进未找到 worker 入口。请确认安装完整(应包含 dist/src/adapters/auto-worker.js),或在源码目录下运行并确保可执行 "npx tsx src/adapters/auto-worker.ts"',
|
|
136
|
+
};
|
|
137
|
+
}
|
|
117
138
|
const resolvedOpenclawBin = resolveOpenclawBinForWorker();
|
|
118
|
-
const child = spawn(
|
|
139
|
+
const child = spawn(worker.cmd, worker.args, {
|
|
119
140
|
cwd: gameRoot,
|
|
120
141
|
detached: true,
|
|
121
142
|
stdio: "ignore",
|
|
@@ -133,7 +154,7 @@ export async function startLocalAutoAtRoot(gameRoot, intervalSec) {
|
|
|
133
154
|
return {
|
|
134
155
|
success: true,
|
|
135
156
|
message: [
|
|
136
|
-
"🤖
|
|
157
|
+
"🤖 本地自动推进已启动",
|
|
137
158
|
`${human} 推进一天 · 后台 PID ${pid}`,
|
|
138
159
|
"用 \"stop\" 停止;用 \"farm\" 随时查看农场",
|
|
139
160
|
].join("\n"),
|
|
@@ -210,7 +231,7 @@ export function stopLocalAuto() {
|
|
|
210
231
|
export function getLocalAutoStatus() {
|
|
211
232
|
removeStalePidFile();
|
|
212
233
|
if (!fs.existsSync(AUTO_PID_FILE)) {
|
|
213
|
-
return { success: true, message: "💤 自动推进: 未运行\n用 \"start\" 启动(固定每 20
|
|
234
|
+
return { success: true, message: "💤 自动推进: 未运行\n用 \"start\" 启动(固定每 20 分钟推进一天)" };
|
|
214
235
|
}
|
|
215
236
|
const pid = parseInt(fs.readFileSync(AUTO_PID_FILE, "utf8").trim(), 10);
|
|
216
237
|
if (!Number.isFinite(pid) || !isProcessRunning(pid)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-auto.js","sourceRoot":"","sources":["../../src/local-auto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,+EAA+E;AAC/E,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAE7F,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAC3D,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAExE,SAAS,gBAAgB,CAAC,GAAW;IACnC,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB;IAChC,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE;YACjD,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;SAC3B,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"local-auto.js","sourceRoot":"","sources":["../../src/local-auto.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,7 +41,7 @@ export interface PushFarmSnapshotResult {
|
|
|
41
41
|
message: string;
|
|
42
42
|
}
|
|
43
43
|
/**
|
|
44
|
-
* Renders current farm, then runs `openclaw message send
|
|
44
|
+
* Renders current farm, then runs `openclaw message send`.
|
|
45
45
|
* Web 控制端(webchat)使用 `openclaw gateway call chat.inject`。
|
|
46
46
|
*/
|
|
47
47
|
export declare function pushFarmSnapshot(opts?: PushFarmSnapshotOptions): Promise<PushFarmSnapshotResult>;
|
|
@@ -321,7 +321,7 @@ function pushWebchatViaGatewayInject(params) {
|
|
|
321
321
|
};
|
|
322
322
|
}
|
|
323
323
|
/**
|
|
324
|
-
* Renders current farm, then runs `openclaw message send
|
|
324
|
+
* Renders current farm, then runs `openclaw message send`.
|
|
325
325
|
* Web 控制端(webchat)使用 `openclaw gateway call chat.inject`。
|
|
326
326
|
*/
|
|
327
327
|
export async function pushFarmSnapshot(opts) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-renderer.d.ts","sourceRoot":"","sources":["../../../src/render/image-renderer.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAA4B,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"image-renderer.d.ts","sourceRoot":"","sources":["../../../src/render/image-renderer.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAA4B,MAAM,kBAAkB,CAAC;AAiJvE,wBAAsB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAgFvE"}
|
|
@@ -6,7 +6,25 @@ import { fileURLToPath } from "node:url";
|
|
|
6
6
|
import { GrowthStage } from "../game/types.js";
|
|
7
7
|
import { getStage } from "../game/crops.js";
|
|
8
8
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
9
|
-
|
|
9
|
+
function resolveTilesDir() {
|
|
10
|
+
const fromEnv = process.env.GRINDERS_FARM_TILES_DIR?.trim();
|
|
11
|
+
const candidates = [
|
|
12
|
+
fromEnv || "",
|
|
13
|
+
// source layout: src/render -> ../../assets/tiles
|
|
14
|
+
path.join(__dirname, "..", "..", "assets", "tiles"),
|
|
15
|
+
// packaged layout: dist/src/render -> ../../../assets/tiles
|
|
16
|
+
path.join(__dirname, "..", "..", "..", "assets", "tiles"),
|
|
17
|
+
path.join(process.cwd(), "assets", "tiles"),
|
|
18
|
+
]
|
|
19
|
+
.map((p) => p.trim())
|
|
20
|
+
.filter(Boolean);
|
|
21
|
+
for (const dir of candidates) {
|
|
22
|
+
if (fs.existsSync(path.join(dir, "terrain", "empty.png")))
|
|
23
|
+
return dir;
|
|
24
|
+
}
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
const TILES_DIR = resolveTilesDir();
|
|
10
28
|
const TILE = 16;
|
|
11
29
|
const SCALE = 4;
|
|
12
30
|
const SCALED_TILE = TILE * SCALE;
|
|
@@ -28,6 +46,8 @@ const STAGE_Y_OFFSET_PX = {
|
|
|
28
46
|
const imageCache = new Map();
|
|
29
47
|
const cropAnchorCache = new Map();
|
|
30
48
|
async function getTile(subdir, name) {
|
|
49
|
+
if (!TILES_DIR)
|
|
50
|
+
return null;
|
|
31
51
|
const key = `${subdir}/${name}`;
|
|
32
52
|
if (imageCache.has(key))
|
|
33
53
|
return imageCache.get(key);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-renderer.js","sourceRoot":"","sources":["../../../src/render/image-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAa,WAAW,EAAe,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,MAAM,
|
|
1
|
+
{"version":3,"file":"image-renderer.js","sourceRoot":"","sources":["../../../src/render/image-renderer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "grinders-farm",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "A pixel-art farm simulation game — plant, water, harvest, and sell crops",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
7
7
|
"types": "dist/src/index.d.ts",
|
|
8
8
|
"files": [
|
|
9
9
|
"dist/",
|
|
10
|
+
"assets/tiles/",
|
|
10
11
|
"src/notify/notify.json.example",
|
|
11
12
|
"README.md",
|
|
12
13
|
"SKILL.md",
|
|
13
14
|
"LICENSE"
|
|
14
15
|
],
|
|
15
16
|
"bin": {
|
|
16
|
-
"grinders-farm": "dist/src/adapters/terminal.js"
|
|
17
|
+
"grinders-farm": "dist/src/adapters/terminal.js",
|
|
18
|
+
"grinders-farm-oneshot": "dist/src/adapters/oneshot.js"
|
|
17
19
|
},
|
|
18
20
|
"scripts": {
|
|
19
21
|
"build": "tsc",
|