namespace pkNX.Structures.FlatBuffers.Arceus;
attribute "fs_serializer";
attribute "fs_valueStruct";

/// poke_resource_table.trpmcatalog

table PokeResourceVersionInfo {
    Major: int = 5; // 4 in prior game format
    Minor: int = 4; // 2 in prior game format
}

struct NullableInt32 (fs_valueStruct) {
    Value:int32;
}

table PokeModelConfig {
    SpeciesInfo: PokeModelSpeciesInfo (required);
    ModelPath: string (required);
    MaterialTablePath: string;
    ConfigPath: string (required);
    Unused: byte; // unused!
    Animations: [FileNamePathPair] (required);
    Effects: [FileNamePathPair] (required);
    ArceusType: NullableInt32; // Specified by Arceus' forms -- NEW!
}

table PokeModelSpeciesInfo {
    Species:ushort;
    Form:ushort;
    Gender:ubyte;
}

table FileNamePathPair {
    Name:string (required);
    Path:string (required);
}

table PokeResourceTable (fs_serializer) {
    Version: PokeResourceVersionInfo (required);
    Table: [PokeModelConfig] (required);
}

root_type PokeResourceTable;
