# 代码与数据存储规范 ## 1. 命名空间规范 所有代码必须位于命名空间 `Cell` 中。例如: ```csharp namespace Cell { // 所有类、接口、枚举等均需定义在此命名空间下 } ``` ### 1.1 接口规范 为了实现更方便的帧控制,受时刻影响的代码应选择实现以下接口之一或多个: - **ITick**:适用于通用逻辑更新。 - **ITickPhysics**:适用于物理相关逻辑更新(使用平稳的物理帧)。 - **ITickUI**:适用于用户界面相关的逻辑更新。 首次启动需要调用Clock.Instance来初始化时钟 #### 1.1.1 接口说明 - **ITick** 和 **ITickPhysics** 受暂停影响。 - **ITickPhysics** 使用系统提供的平稳物理帧进行更新。 - **ITickUI** 不受暂停影响,始终在每一帧更新。 #### 1.1.2 示例代码 ```csharp namespace Cell { public class ExampleObject : ITick, ITickPhysics { public void Tick() { // 更新通用逻辑 } public void TickPhysics() { // 更新物理逻辑 } } } ``` --- ## 2. 数据存储规范 ### 2.1 数据存储格式 参考 RimWorld 的数据存储格式,本体和 Mod 的数据均使用 XML 文件存储,并支持动态加载。 #### 2.1.1 文件夹结构 程序启动时会读取以下两个文件夹中的 XML 文件: - **Data 文件夹**:存放本体的核心数据。 - **Mods 文件夹**:存放 Mod 提供的扩展数据。 #### 2.1.2 XML 文件根属性规范 XML 文件的根节点必须包含以下两种属性之一: - **Define**:表示此 XML 文件定义的是一个数据类型。 - **About**:表示此 XML 文件是 Mod 的介绍信息。 - **Translation**:表示此 XML 文件是翻译文件。 #### 2.1.3 示例 XML 文件 ##### 定义数据类型 (Define) ```xml class1 value ... ... class1 ``` ##### Mod 介绍 (About) ```xml AuthorName This is a description of the mod. ``` ##### 翻译文件 (Translation) ```xml 苹果 Value2 in English ``` --- ## 3. 动态加载流程 ### 3.1 启动时加载 程序启动时,按以下顺序加载数据: 1. **加载 Data 文件夹**:读取并解析核心数据。 2. **加载 Mods 文件夹**:依次读取每个 Mod 的 XML 文件,动态加载 Mod 数据。 #### 3.1.1 加载优先级 由加载列表确定加载优先级