### 数据定义使用文档
#### 1. 文件夹结构
程序在启动时会读取程序所在文件夹中的以下两个文件夹:
- **Data**:包含游戏的核心数据定义。
- **Mods**:包含用户或开发者创建的扩展模块。
每个文件夹下的子文件夹被视为一个独立的模块,但模块之间可以互相引用。推荐的文件夹结构如下:
```
root/
├── Data/
│ ├── Pack1/
│ │ ├── About/
│ │ ├── Define/
│ │ └── Translation/
│ └── Pack2/
│ ├── About/
│ ├── Define/
│ └── Translation/
└── Mods/
├── Mod1/
│ ├── About/
│ ├── Define/
│ └── Translation/
└── Mod2/
├── About/
├── Define/
└── Translation/
```
#### 2. XML 文件类型及用途
XML 文件根据根属性名分为三种类型:
- **Define**:用于定义游戏中的数据类型和具体实例。
- **About**:用于描述模块的基本信息(如名称、版本、依赖关系等)。
- **Translation**:用于提供多语言支持的翻译内容。
---
### 3. Define 定义
#### 3.1 根节点
根节点的属性名为 `Define`,表示这是一个数据定义文件。例如:
```xml
```
#### 3.2 数据块结构
每个数据块通常包含以下部分:
- **defName**:该数据块的唯一标识符(在同一类型中必须唯一)。
- **字段定义**:通过字段名和值为对应的类变量赋值。
- **引用**:通过 `defName` 引用其他数据块。
#### 3.3 示例解析
以下是一个典型的 `Define` 文件示例:
```xml
CatGirl
100
1.2
5
CatGirl
She is a cat girl with agile movements and sharp senses.
CatGirl
CatGirl_down
CatGirl_left
CatGirl_right
CatGirl_up
CatGirl_down
```
#### 3.4 加载流程
1. **索引建立**:程序加载时会依次读取所有 `Define` 文件,并记录每个数据块的 `defName` 和类型。
2. **引用连接**:在所有数据块加载完成后,程序会根据 `defName` 连接引用关系。
---
### 4. About 定义
#### 4.1 根节点
根节点的属性名为 `About`,表示这是一个模块的介绍文件。例如:
```xml
```
#### 4.2 字段说明
| 字段名 | 描述 |
|--------------|----------------------------------------------------------------------|
| `name` | 模块名称。 |
| `description` | 模块的详细描述。 |
| `version` | 模块版本号。 |
| `packID` | 模块的唯一标识符,用于区分不同模块。 |
| `sort` | 模块加载顺序配置,包含 `before` 和 `after` 两个子字段,分别指定优先加载的模块和后加载的模块。 |
#### 4.3 示例解析
以下是一个典型的 `About` 文件示例:
```xml
核心
这是游戏的核心模块,除非有完整的代替,否则应该永远作为启动项
0.1
core
```
---
### 5. Translation 定义
#### 5.1 根节点
根节点的属性名为 `Translation`,表示这是一个翻译文件。例如:
```xml
```
#### 5.2 字段说明
翻译文件中的每个字段以点号分隔的形式表示路径,格式为:
```
<类型名>..<字段名>
```
例如:
```
CharacterDef.CatGirl.label
```
#### 5.3 示例解析
以下是一个典型的 `Translation` 文件示例:
```xml
猫娘
她是一个猫娘,拥有猫的特性和人类的智慧。她的耳朵和尾巴显示了她的猫族血统。
```