2.7 KiB
AGENTS.md
Build & Run
dotnet build # .NET 10.0 SDK (pinned in global.json)
dotnet run -- --tables path/to/__tables__.xlsx # pass tables config
The tool is a single-project console app (ExcelTool.csproj → ExcelTool.sln). No tests, no CI.
Excel Sheet Convention
| Row (0-indexed) | Purpose |
|---|---|
| 0 | Field names |
| 1 | Field types (case-insensitive) |
| 2 | Field descriptions (→ XML doc comments) |
| 5+ | Data rows |
- Sheets whose name starts with
#are skipped entirely. - The sheet named
__enums__is parsed specially — not as a data table but as enum definitions. - Empty data rows are skipped automatically.
The __tables__.xlsx Master Config
Column layout (row 0-3 are ignored; data starts at row 4, 0-indexed):
| Col | Field | Example |
|---|---|---|
| A | Input .xlsx path | AudioConfigs.xlsx |
| B | Namespace | OCES.Audio |
| C | Output code dir | ../hola_unity/Assets/Src/Config/ |
| D | Output data dir | ../hola_unity/Assets/Resources/Config/ |
Paths in the config are relative to the directory containing __tables__.xlsx unless rooted.
Type System
All supported types are registered in TypeRegistry.cs. To add a new type, add a Register(...) call in RegisterAll(). The registry drives both binary serialization and C# code generation — one change fixes both.
Supported types: int, uint, short, ushort, sbyte, byte, float, double, long, bool, string, vector (→ List<float>, 3 components), vectorlist (→ List<List<float>>), xxxlist (e.g., intlist), list<T> generic syntax.
Any type not in the registry is treated as an enum and serialized as a single byte.
Output
Per parsed sheet, three artifacts are generated:
{SheetName}.cs— data model class +{SheetName}Configcontainer (bothpartial, implementingIBinarySerializable)AudioConsts.cs— enums/Cues/NameDictionaries (only ifAudioObjectsheet or__enums__sheet exists){SheetName}.bytes— binary serialized data for UnityResources.Load<TextAsset>
The first field of every data sheet is assumed to be Id (used as dictionary key in *Config.QueryById()).
Key Files
| File | Role |
|---|---|
Program.cs |
CLI entrypoint (--tables option) |
TablesConfig.cs |
Parses __tables__.xlsx into TableEntry list |
ExcelHelper.cs |
Parses individual .xlsx → ParsedSheet / ParsedEnum |
TypeRegistry.cs |
Central type registry (binary write + codegen) |
Parser/GenModels.cs |
Generates {SheetName}.cs |
Parser/GenAudioConsts.cs |
Generates AudioConsts.cs |
Parser/TableExcelExportBytes.cs |
Generates .bytes files |
FileManager.cs |
File I/O utilities |