include "PlacementZoneUnitObjectHolder.fbs";
include "PlacementZoneSpeciesHolder.fbs";
include "PlacementZoneWarpHolder.fbs";
include "PlacementZoneStepJumpHolder.fbs";
include "PlacementZoneParticleHolder.fbs";
include "PlacementZoneFieldItemHolder.fbs";
include "PlacementZoneTriggerHolder.fbs";
include "PlacementZoneTrainerHolder.fbs";
include "PlacementZoneTrainerTipHolder.fbs";
include "PlacementZoneEnvironmentHolder.fbs";
include "PlacementZoneFlightAnchorHolder.fbs";
include "PlacementZonePokeCenterSpawnAnchorHolder.fbs";
include "PlacementZoneNPCHolder.fbs";
include "PlacementZoneAdvancedTipHolder.fbs";
include "PlacementZoneMovementPathHolder.fbs";
include "PlacementZoneOtherNPCHolder.fbs";
include "PlacementZoneQuadrantHolder.fbs";
include "PlacementZoneFishingPointHolder.fbs";
include "PlacementZoneHiddenItemHolder.fbs";
include "PlacementZoneSymbolSpawnHolder.fbs";
include "PlacementZoneNestHoleHolder.fbs";
include "PlacementZoneBerryTreeHolder.fbs";
include "PlacementZoneLadderHolder.fbs";
include "PlacementZonePopupHolder.fbs";
include "PlacementZoneIKStepHolder.fbs";
include "PlacementZoneStaticObjectsHolder.fbs";
include "PlacementZoneRotomRallyEntry.fbs";
namespace pkNX.Structures.FlatBuffers.SWSH;
attribute "fs_serializer";

table PlacementZone (fs_serializer) {
    Meta:PlacementZoneMeta (required);
    UnitObjects:[PlacementZoneUnitObjectHolder] (required);
    Critters:[PlacementZoneSpeciesHolder] (required);
    Warps:[PlacementZoneWarpHolder] (required);
    StepJumps:[PlacementZoneStepJumpHolder] (required);
    Particles:[PlacementZoneParticleHolder] (required);
    FieldItems:[PlacementZoneFieldItemHolder] (required);
    Triggers:[PlacementZoneTriggerHolder] (required);
    Trainers:[PlacementZoneTrainerHolder] (required);
    TrainerTips:[PlacementZoneTrainerTipHolder] (required);
    Environments:[PlacementZoneEnvironmentHolder] (required);
    FlyTo:[PlacementZoneFlightAnchorHolder] (required);
    PokeCenterAnchor:[PlacementZonePokeCenterSpawnAnchorHolder] (required);
    NPCType1:[PlacementZoneNPCHolder] (required);
    AdvancedTips:[PlacementZoneAdvancedTipHolder] (required);
    Paths:[PlacementZoneMovementPathHolder] (required);
    NPCType2:[PlacementZoneOtherNPCHolder] (required);
    Quadrants:[PlacementZoneQuadrantHolder] (required);
    FishingPoint:[PlacementZoneFishingPointHolder] (required);
    HiddenItems:[PlacementZoneHiddenItemHolder] (required);
    Symbols:[PlacementZoneSymbolSpawnHolder] (required);
    Nests:[PlacementZoneNestHoleHolder] (required);
    BerryTrees:[PlacementZoneBerryTreeHolder] (required);
    Ladders:[PlacementZoneLadderHolder] (required);
    Popups:[PlacementZonePopupHolder] (required);
    IKStep:[PlacementZoneIKStepHolder] (required);
    StaticObjects:[PlacementZoneStaticObjectsHolder] (required);
    RotomRally:[PlacementZoneRotomRallyEntry] (required);
}

table PlacementZoneMeta {
    Field_00:PlacementZoneMetaTripleXYZ (required);
    ZoneID:ulong;
    Hash_02:ulong;
    Field_03:string (required); // none have this
    Field_04:uint;
    Music:string (required);
    Field_06:float;
    Hash_07:ulong;
    Hash_08:ulong;
    Hash_09:ulong;
    Field_10:ubyte;
    Field_11:ubyte;
    Hash_12:ulong;
    Field_13:ubyte;
    Field_14:ubyte;
    Num_15:int;
}

root_type PlacementZone;
