include "Math/Vec3f.fbs";

namespace pkNX.Structures.FlatBuffers.SV;
attribute "fs_serializer";

enum EndCameraType : int {
    FRONT = 0,
    BACK = 1,
}

enum IconAnimPtn : int {
    NONE = 0,
    MUSHI = 1,
    KUSA = 2,
    MIZU = 3,
    DENKI = 4,
    NORMAL = 5,
    KOORI = 6,
    GHOST = 7,
    ESPER = 8,
    AKU = 9,
    FAIRY = 10,
    HONOO = 11,
    DOKU = 12,
    KAKUTOU = 13,
    HIKOU = 14,
    HAGANE = 15,
    IWA = 16,
    JIMEN = 17,
    DRAGON = 18,
}
enum IconColorPtn : int {
    GYM = 0,
    DAN = 1,
    NUSHI = 2,
    UTIL = 3,
}
enum IconDisplayLevel : int {
    FULLVIEW = 0,
    ZOOMOUT = 1,
    DEFAULT = 2,
    ZOOMIN = 3,
}
enum MapIconKind : int {
    POKECEN = 0,
    JIM = 1,
    DAN = 2,
    NUSHI = 3,
    COMMON = 4,
    TREASURE_RAID = 5,
    GREAT_OCCUR = 6,
    NETWORK_PLAYER = 7,
    TOWN = 8,
    HAIRSALON = 9,
    BOUTIQUE = 10,
    RESTAURANT = 11,
    SHOP_UTIL = 12,
    FOOD_SHOP = 13,
    LANDMARK = 14,
    IDO_JUNDEN = 15,
    FLY_POINT = 16,
}

enum OnCursorDataKind : int {
    NONE = 0,
    TOWN = 1,
    POINT = 2,
    MISSION = 3,
}

enum SkyFlyPointType : int {
    NORMAL = 0,
    SAFETY = 1,
    PLAYER = 2,
}

table EventSkyFly {
    ID:string (required);
    MapIconKind:MapIconKind;
    FollowSceneName:string (required);
    FollowObjectName:string (required);
    FollowPositionOffset:Vec3f (required);
    IconPosition:Vec3f (required);
    EffectRadius:float;
    ReleasePointFlagStr:string (required);
    IsIncludeSkyFly:bool;
    EndPlayerRotationY:float;
    EndCameraType:EndCameraType;
    EnableFlyFlagStr:string (required);
    SkyFlyPointKind:SkyFlyPointType;
    SkyFlyPointOffset:Vec3f (required);
    OnCursorDataKind:OnCursorDataKind;
    OnCursorDataID:string (required);
    IconTextureReplaceFileName:string (required);
    IsDisplayInZoomOut:bool;
    IsDisplayInZoomNormal:bool;
    IsDisplayInZoomIn:bool;
    PointName:string (required);
    ExInfoTextureName:string (required);
    ExInfoTextLabelName:string (required);
    IconThumbnailTextureName:string (required);
    IconDisplayLevel:IconDisplayLevel;
    IconAnimPtn:IconAnimPtn;
    IconColorPtn:IconColorPtn;
}

table EventSkyFlyArray (fs_serializer) {
    Table:[EventSkyFly] (required);
}

root_type EventSkyFlyArray;
