#ifndef PKE_AT_PKE_AT_SETLIST_TYPES_HPP #define PKE_AT_PKE_AT_SETLIST_TYPES_HPP #include enum PKE_AT_SECTION_TYPE_INDEX { PKE_AT_SECTION_TYPE_INDEX_NONE, PKE_AT_SECTION_TYPE_INDEX_VERSE, PKE_AT_SECTION_TYPE_INDEX_CHORUS, PKE_AT_SECTION_TYPE_INDEX_BRIDGE, PKE_AT_SECTION_TYPE_INDEX_INTRO, PKE_AT_SECTION_TYPE_INDEX_OUTRO, PKE_AT_SECTION_TYPE_INDEX_INSTRUMENTAL, PKE_AT_SECTION_TYPE_INDEX_INTERLUDE, PKE_AT_SECTION_TYPE_INDEX_COUNT, }; struct pke_at_section_type { enum PKE_AT_SECTION_TYPE_INDEX section_type_index = PKE_AT_SECTION_TYPE_INDEX_NONE; AssetKey title_key; AssetHandle title_handle = AssetHandle_MAX; }; struct pke_at_section_details { pk_uuid song_uuid; uint8_t sequence; uint8_t beats_per_bar = 0; uint8_t bar_count = 0; enum PKE_AT_SECTION_TYPE_INDEX section_type_index = PKE_AT_SECTION_TYPE_INDEX_NONE; }; struct pke_at_section { pke_at_section_details details{}; }; struct pke_at_song_details { pk_uuid uuid; long ccli; pk_cstr title; pk_cstr arrangement; uint8_t bpm; }; struct pke_at_song { struct pke_at_song_details details{}; float calculated_delta = 0.f; pk_arr_t sections; }; struct pke_at_setlist_details { pk_uuid uuid; pk_cstr title; }; struct pke_at_setlist { struct pke_at_setlist_details details{}; pk_arr_t tracks; }; struct pke_at_setlist_song_details { pk_uuid setlist_uuid; pk_uuid song_uuid; }; struct pke_at_setlist_song { struct pke_at_setlist_song_details details{}; }; #endif /* PKE_AT_PKE_AT_SETLIST_TYPES_HPP */