docs: add dedicated DASHBOARD_DEV.md and PLUGIN_DEV.md, simplify README & CONTRIBUTING
This commit is contained in:
+2
-67
@@ -2,73 +2,8 @@
|
||||
|
||||
## 贡献方式
|
||||
|
||||
### 提交游戏插件 (`.tsp`)
|
||||
|
||||
创建一个包含 `manifest.json` 和 `parser.py` 的文件夹,压缩为 zip 改后缀:
|
||||
|
||||
```
|
||||
my_game/
|
||||
├── manifest.json
|
||||
└── parser.py
|
||||
```
|
||||
|
||||
#### manifest.json
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "unique_game_id",
|
||||
"name": "游戏名称",
|
||||
"parser_type": "forza",
|
||||
"description": "简短描述",
|
||||
"author": "你的名字",
|
||||
"version": "1.0.0",
|
||||
"default_port": 20777
|
||||
}
|
||||
```
|
||||
|
||||
#### parser.py 规范
|
||||
|
||||
必须实现 `get_parser()` 函数,返回对象包含:
|
||||
|
||||
```python
|
||||
import time
|
||||
from server.telemetry.data import TelemetryData
|
||||
|
||||
|
||||
def get_parser():
|
||||
return MyParser()
|
||||
|
||||
|
||||
class MyParser:
|
||||
def game_id(self) -> str:
|
||||
return "unique_game_id"
|
||||
|
||||
def parse(self, data: bytes, addr: tuple) -> TelemetryData:
|
||||
td = TelemetryData(game_id="unique_game_id", timestamp=time.time())
|
||||
td.raw = {"raw_hex": data.hex(), "length": len(data)}
|
||||
# 填充遥测字段...
|
||||
return td
|
||||
```
|
||||
|
||||
安装方式:在 TurboSu 设置页面 → 游戏插件管理 → 导入 `.tsp`
|
||||
|
||||
### 提交仪表盘主题 (`.tsd`)
|
||||
|
||||
创建独立文件夹:
|
||||
|
||||
```
|
||||
my_dashboard/
|
||||
├── manifest.json # 元信息 (参考下方格式)
|
||||
└── index.html # 完整独立页面
|
||||
```
|
||||
|
||||
`index.html` 需包含:
|
||||
- WebSocket 连接:`ws://<host>/ws`
|
||||
- 接收 `telemetry` 消息类型的数据
|
||||
- 用 `data-bind="字段名"` 属性绑定数据
|
||||
- 比例约束渲染逻辑
|
||||
|
||||
安装方式:在 TurboSu 仪表盘页面 → 导入 `.tsd`,或右键卡片导出。
|
||||
- **提交游戏插件** (.tsp) — 见 [游戏插件兼容开发指南](docs/PLUGIN_DEV.md)
|
||||
- **提交仪表盘主题** (.tsd) — 见 [仪表盘开发指南](docs/DASHBOARD_DEV.md)
|
||||
|
||||
### 报告 Bug
|
||||
|
||||
|
||||
Reference in New Issue
Block a user