Add map editor save and deploy actions

This commit is contained in:
2026-06-10 10:45:33 +08:00
parent 57caced672
commit 21f633658c
6 changed files with 309 additions and 12 deletions
+41 -5
View File
@@ -18,6 +18,7 @@ tools/map_editor/
├─ index.html 网页结构
├─ styles.css 编辑器样式
├─ app.js 解析、绘制、编辑和导出逻辑
├─ server.js 本地可写服务,用于保存和部署 .map
├─ README.md 快速说明
└─ DOCUMENTATION.md 本文档
```
@@ -30,7 +31,21 @@ game/assets/map/stage_01.map
## 本地运行
在仓库根目录启动静态服务:
推荐在仓库根目录启动本地可写服务:
```powershell
node tools/map_editor/server.js
```
打开:
```text
http://127.0.0.1:8787/tools/map_editor/
```
这种模式下,顶部工具栏的 `保存``一键部署` 会启用。
也可以启动普通静态服务:
```powershell
python -m http.server 8787
@@ -42,7 +57,7 @@ python -m http.server 8787
http://127.0.0.1:8787/tools/map_editor/
```
从仓库根目录启动时,工具会尝试自动加载:
静态模式可以编辑和下载,但不能直接写回项目文件。无论哪种模式,从仓库根目录启动时,工具会尝试自动加载:
```text
game/assets/map/stage_01.map
@@ -57,6 +72,8 @@ game/assets/map/stage_01.map
- `撤回`:撤回最近一次编辑操作。
- `加载 stage_01.map`:重新加载项目默认地图。
- `打开 .map`:从本地选择一个 `.map` 文本文件。
- `保存`:写入项目资源目录的 `game/assets/map/stage_01.map`,需要本地可写服务。
- `一键部署`:保存并同步到项目资源目录和已存在的 PC/Switch build 资源目录,需本地可写服务。
- `保存并下载`:下载当前导出的 `<地图ID>.map`
### 左侧菜单
@@ -165,6 +182,24 @@ Ctrl+Z
打开或重新加载 `.map` 会清空撤回历史。当前未实现重做。
### 保存和部署
使用本地可写服务启动时:
```powershell
node tools/map_editor/server.js
```
顶部按钮会启用:
- `保存`:写入 `game/assets/map/stage_01.map`
- `一键部署`:写入 `game/assets/map/stage_01.map`,并同步到已存在的构建资源目录:
- `build/windows/x64/release/assets/map/stage_01.map`
- `build/switch/aarch64/release/switch_game/assets/map/stage_01.map`
- `build/switch/aarch64/release/switch_game/romfs/assets/map/stage_01.map`
如果某个 build 目录不存在,一键部署会跳过该目标,不会创建完整 build 结构。
### 保存并下载
点击顶部“保存并下载”会下载:
@@ -175,7 +210,7 @@ Ctrl+Z
下载内容与右侧“导出文本”一致,并保持 `StageMapLoader` 兼容。
浏览器安全限制下,静态网页不能直接覆盖项目源文件。当前流程是:
普通静态服务模式下,浏览器安全限制不允许直接覆盖项目源文件。当前流程是:
1. 保存并下载 `.map`
2. 手动替换项目内目标地图文件。
@@ -207,7 +242,8 @@ spawn
## 当前限制
- 不能直接覆盖本地源文件,只能下载 `.map`
- 普通静态服务模式不能直接覆盖本地源文件,只能下载 `.map`
- `保存` / `一键部署` 需要使用 `node tools/map_editor/server.js` 启动本地可写服务。
- 导入图片的真实文件仍需手动放入项目资源目录。
- `.map` 中存在于 `game/assets/...``assets/...` 贴图路径会自动预览。
- 如果导入图片后没有把真实文件放到 `game/assets/...` 对应路径,重新打开 `.map` 后会显示 fallback 色块。
@@ -218,7 +254,7 @@ spawn
## 后续扩展建议
- 增加服务保存接口,部署后直接保存 `.map` 到服务器文件或数据库。
- 增加正式服务保存接口,部署后直接保存 `.map` 到服务器文件或数据库。
- 增加 tileset 图片预览和 tile palette。
- 增加多选、复制、粘贴、批量移动。
- 增加自动检查:视觉铺砖区与碰撞块错位提示。