include "Math/Vec3f.fbs";
include "AreaBGMTable.fbs";
namespace pkNX.Structures.FlatBuffers.Arceus;
attribute "fs_serializer";

table AreaSettings {
    Name:string (required);
    NameParent:string (required);
    Position:Vec3f (required);
    Flag_03:bool;
    Flag_04:bool;
    Flag_05:bool;
    Flag_06:bool;
    Flag_07:bool;
    Flag_08:bool;
    NPC:string (required);
    NPCPokemon:string (required);
    BgParts:string (required);
    Emitter:string (required);
    Item:string (required);
    SearchItem:string (required);
    Spawners:string (required);
    Pos:string (required);
    BgEvent:string (required);
    Encounters:string (required);
    NavMesh:string (required);
    TerrainTable:string (required);
    NameOther:string (required);
    Flag_22:bool;
    Flag_23:bool;
    LandmarkItems:string (required);
    LandmarkItemSpawns:string (required);
    AttributeInfo:string (required);
    Locations:string (required);
    BattleStartPoint:string (required);
    SoundEvent:string (required);
    AreaCamera:string (required);
    TargetAI:string (required);
    Slot0:string (required);
    BGM:AreaBGMTable (required);
    Wormholes:string (required);
    WormholeSpawners:string (required);
    WormholeItems:string (required);
    OverViewDepth:string (required);
    RealTimeEventData:string (required);
    Mkrg:string (required);
    AreaWall:string (required);
    Balloon:string (required);
    UnownSpawners:string (required);
    MultiShapeSoundEvent:string (required);
    Field_44:ulong;
    Path:string (required);
    PopupEvent:string (required);
    Invisible:string (required);
    LocalWeather:string (required);
    SoundBank:string (required);
    Field_50:AreaSettings_F50 (required);
    Archive:string (required);
    Field_52:Vec3f (required);
    Field_53:Vec3f (required);

    /// A flag from system_works
    VisibleFlagHash:ulong;
    Field_55:bool;
}

table AreaSettings_F50 {
    Field_00:int;
    Field_01:int;
    Field_02:int;
    Field_03:int;
}

table AreaSettingsTable (fs_serializer) {
    Table:[AreaSettings] (required);
}

root_type AreaSettingsTable;
