90 lines
1.8 KiB
Markdown
90 lines
1.8 KiB
Markdown
# TTRPG Tools
|
||
|
||
一个基于 `solid.js` 和 `rsbuild` 的 `ttrpg` 工具箱。
|
||
|
||
## 功能
|
||
|
||
- **CLI**: 提供一个 cli 工具,用于将目录内的各种 ttrpg 文档编译为 html。
|
||
- **Markdown**: 解析以各种格式编写的 ttrpg 内容,并支持扩展的语法。
|
||
- **TTRPG 组件**: 用于 ttrpg 内容的各种 UI 组件,且可以在 markdown 中通过扩展语法插入。
|
||
|
||
## CLI 命令
|
||
|
||
```bash
|
||
# 克隆仓库后,npm install & npm link安装
|
||
|
||
# 在项目文件夹内运行
|
||
ttrpg serve [dir] -p 3000
|
||
|
||
```
|
||
|
||
## 组件语法
|
||
|
||
### csv
|
||
|
||
所有csv使用英文逗号分割。可使用空行。以#为注释。所有包含#或者英文逗号的字段,都应该使用双引号包裹。
|
||
|
||
### 骰子组件
|
||
|
||
```markdown
|
||
:dice[2d6+d8]
|
||
:dice[1d20+5]{key="attack"}
|
||
```
|
||
|
||
### 表格组件
|
||
|
||
```markdown
|
||
:table[./sparks.csv]
|
||
:table[./sparks.csv]{roll=true}
|
||
:table[./sparks.csv]{roll=true remix=true}
|
||
```
|
||
|
||
### 卡牌组件
|
||
|
||
假设准备有`./cards.csv`内容如下:
|
||
|
||
```csv
|
||
label,title,body
|
||
1,卡牌1,这张卡牌的**效果**的markdown文本
|
||
2,卡牌2,更多卡牌效果
|
||
```
|
||
|
||
```markdown
|
||
:md-deck[./cards.csv]{grid="5x8" layers="title:1,1-5,1f8 body:1,5-5,8f3"}
|
||
```
|
||
|
||
上述卡牌将生成5x8的卡牌牌面排版,其中title层占第1行1-5列,8mm字体。
|
||
|
||
## 开发
|
||
|
||
```bash
|
||
# 安装依赖
|
||
npm install
|
||
|
||
# 开发模式
|
||
npm run dev
|
||
|
||
# 构建
|
||
npm run build
|
||
|
||
# 预览
|
||
npm run preview
|
||
```
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
ttrpg-tools/
|
||
├── src/
|
||
│ ├── cli/ # CLI 工具源码
|
||
│ ├── components/ # TTRPG 组件
|
||
│ ├── markdown/ # Markdown 解析器
|
||
│ ├── App.tsx # 主应用组件
|
||
│ ├── main.tsx # 入口文件
|
||
│ └── styles.css # 样式文件
|
||
├── content/ # 示例内容
|
||
├── package.json
|
||
├── tsconfig.json
|
||
└── rsbuild.config.ts
|
||
```
|