#include "System/CollectBgm.h"

#include <array>

CollectBgm::CollectBgm() : CollectBgm(nullptr, nullptr, nullptr, nullptr, nullptr) {}

CollectBgm::CollectBgm(const char* name, const char* situation_name, const char* tag1,
                       const char* tag2, const char* category)
    : name(name), situationName(situation_name), tag1(tag1), tag2(tag2), category(category) {}

const char* CollectBgm::cSituationNameList[] = {
    "BossForestBattle3rd",
    "BossGolemBattle3rd",
    "CollectBgmGiantWanderBoss",
    "CollectBgmGiantWanderBoss8Bit",
    "CollectBgmWorldMap",
    "In2DArea",
    "InWater",
    "MuteOffPaulineVocal",
    "TankZone",
};
const s32 CollectBgm::cSituationNameListSize = std::size(cSituationNameList);
const char* CollectBgm::cCeremonyCollectBgmName = "StmRsBgmCityScenario03Clct";
const char* CollectBgm::cBonusCollectBgmName01 = "StmRsBgmEndRockSpecial";
const char* CollectBgm::cBonusCollectBgmName02 = "StmRsBgmCityScenario03Special";
const char* CollectBgm::cBonusCollectBgmSituationName02 = "MuteOffPaulineVocal";

CollectBgm cCollectBgmList[] = {
    {"StmRsBgmHat", nullptr, nullptr, nullptr, "CapWorld"},
    {"StmRsBgmFall", nullptr, nullptr, nullptr, "WaterfallWorld"},
    {"StmRsBgmFall", "In2DArea", "ピコピコ", nullptr, "WaterfallWorld"},
    {"StmRsBgmDinosaur", nullptr, "キャプチャ", nullptr, "WaterfallWorld"},
    {"StmRsBgmDesertMain", nullptr, nullptr, nullptr, "SandWorld"},
    {"StmRsBgmDesertMain", "In2DArea", "ピコピコ", nullptr, "SandWorld"},
    {"StmRsBgmDesertNight", nullptr, nullptr, nullptr, "SandWorld"},
    {"StmRsBgmDesertNight", "In2DArea", "ピコピコ", nullptr, "SandWorld"},
    {"StmRsBgmDesertTownClct", nullptr, nullptr, nullptr, "SandWorld"},
    {"StmRsBgmJaguar", nullptr, nullptr, nullptr, "SandWorld"},
    {"StmRsBgmForest", nullptr, nullptr, nullptr, "ForestWorld"},
    {"StmRsBgmForest", "In2DArea", "ピコピコ", nullptr, "ForestWorld"},
    {"StmRsBgmForest", "TankZone", nullptr, nullptr, "ForestWorld"},
    {"StmRsBgmLakeScenario1", nullptr, nullptr, nullptr, "LakeWorld"},
    {"StmRsBgmLakeScenario1", "In2DArea", "ピコピコ", nullptr, "LakeWorld"},
    {"StmRsBgmLakeScenario2", nullptr, nullptr, nullptr, "LakeWorld"},
    {"StmRsBgmLakeTunnel", nullptr, nullptr, nullptr, "LakeWorld"},
    {"StmRsBgmClashFirst", nullptr, nullptr, nullptr, "ClashWorld"},
    {"StmRsBgmClashSecond", nullptr, nullptr, nullptr, "ClashWorld"},
    {"StmRsBgmClashSecond", "In2DArea", "ピコピコ", nullptr, "ClashWorld"},
    {"StmRsBgmCityScenario01", nullptr, nullptr, nullptr, "CityWorld"},
    {"StmRsBgmCityScenario01Strain", nullptr, nullptr, nullptr, "CityWorld"},
    {"StmRsBgmCityScenario04", nullptr, nullptr, nullptr, "CityWorld"},
    {"StmRsBgmCityCafe01", nullptr, nullptr, nullptr, "CityWorld"},
    {"StmRsBgmCitySessionCheck", nullptr, nullptr, nullptr, "CityWorld"},
    {"StmRsBgmCityScenario03Clct", nullptr, nullptr, nullptr, "CityWorld"},
    {"StmRsBgmCityScenario03Jp", nullptr, nullptr, nullptr, "CityWorld"},
    {"StmRsBgmCityScenario03Special", "MuteOffPaulineVocal", "ピコピコ", nullptr, "CityWorld"},
    {"StmRsBgmSea02", nullptr, nullptr, nullptr, "SeaWorld"},
    {"StmRsBgmSea02", "InWater", nullptr, nullptr, "SeaWorld"},
    {"StmRsBgmSea02", "In2DArea", "ピコピコ", nullptr, "SeaWorld"},
    {"StmRsBgmSnowTown", nullptr, nullptr, nullptr, "SnowWorld"},
    {"StmRsBgmSnowRaceEntrance", nullptr, nullptr, nullptr, "SnowWorld"},
    {"StmRsBgmLava", nullptr, nullptr, nullptr, "LavaWorld"},
    {"StmRsBgmLava", "In2DArea", "ピコピコ", nullptr, "LavaWorld"},
    {"StmRsBgmLavaTown", nullptr, nullptr, nullptr, "LavaWorld"},
    {"StmRsBgmSky01", nullptr, nullptr, nullptr, "SkyWorld"},
    {"StmRsBgmSky01", "In2DArea", "ピコピコ", nullptr, "SkyWorld"},
    {"StmRsBgmSky02", nullptr, nullptr, nullptr, "SkyWorld"},
    {"StmRsBgmMoon", nullptr, nullptr, nullptr, "MoonWorld"},
    {"StmRsBgmMoon", "In2DArea", "ピコピコ", nullptr, "MoonWorld"},
    {"StmRsBgmMoonDungeon", nullptr, nullptr, nullptr, "MoonWorld"},
    {"StmRsBgmMoonChurch", nullptr, nullptr, nullptr, "MoonWorld"},
    {"StmRsBgmMoonEscape", nullptr, "キャプチャ", nullptr, "MoonWorld"},
    {"StmRsBgmMoonEscape", "In2DArea", "キャプチャ", "ピコピコ", "MoonWorld"},
    {"StmRsBgmEndRockClct", nullptr, "キャプチャ", nullptr, "MoonWorld"},
    {"StmRsBgmEndRockJp", nullptr, nullptr, nullptr, "MoonWorld"},
    {"StmRsBgmEndRockSpecial", nullptr, "ピコピコ", nullptr, "MoonWorld"},
    {"StmRsBgmPeachCastle", nullptr, nullptr, nullptr, "PeachWorld"},
    {"StmRsBgmBossGateKeeper", nullptr, "ボス", nullptr, "BossBattle"},
    {"StmRsBgmBossBreeda", nullptr, "ボス", nullptr, "BossBattle"},
    {"StmRsBgmBossKnuckle", nullptr, "ボス", nullptr, "BossBattle"},
    {"StmRsBgmBossForest", "BossForestBattle3rd", "ボス", nullptr, "BossBattle"},
    {"StmRsBgmBossMofumofu", nullptr, "ボス", nullptr, "BossBattle"},
    {"StmRsBgmBossHaikai_B", "CollectBgmGiantWanderBoss", "ボス", nullptr, "BossBattle"},
    {"StmRsBgmBossHaikai_B", "CollectBgmGiantWanderBoss8Bit", "ボス", "ピコピコ", "BossBattle"},
    {"StmRsBgmBossMagma", nullptr, "ボス", nullptr, "BossBattle"},
    {"StmRsBgmBossDragon", nullptr, "ボス", nullptr, "BossBattle"},
    {"StmRsBgmBossGolem", "BossGolemBattle3rd", "ボス", nullptr, "BossBattle"},
    {"StmRsBgmBossKoopa01", nullptr, "ボス", nullptr, "BossBattle"},
    {"StmRsBgmBossKoopa02", nullptr, "ボス", nullptr, "BossBattle"},
    {"StmRsBgmExAthletic01", nullptr, nullptr, nullptr, "ExCourse"},
    {"StmRsBgmExAthletic02", nullptr, nullptr, nullptr, "ExCourse"},
    {"StmRsBgmExAthletic02", "In2DArea", "ピコピコ", nullptr, "ExCourse"},
    {"StmRsBgmExChika", nullptr, nullptr, nullptr, "ExCourse"},
    {"StmRsBgmExChika", "In2DArea", "ピコピコ", nullptr, "ExCourse"},
    {"StmRsBgmExChika2", nullptr, nullptr, nullptr, "ExCourse"},
    {"StmRsBgmExHat", nullptr, nullptr, nullptr, "ExCourse"},
    {"StmRsBgmExCold", nullptr, nullptr, nullptr, "ExCourse"},
    {"StmRsBgmExPsyche", nullptr, nullptr, nullptr, "ExCourse"},
    {"StmRsBgmExRuin", nullptr, nullptr, nullptr, "ExCourse"},
    {"StmRsBgmExRuin", "In2DArea", "ピコピコ", nullptr, "ExCourse"},
    {"StmRsBgmM1PL", nullptr, "ピコピコ", nullptr, "ExCourse"},
    {"StmRsBgmM1UG", nullptr, "ピコピコ", nullptr, "ExCourse"},
    {"StmRsBgmExBonus", nullptr, "雲の上", nullptr, "ExCourse"},
    {"StmRsBgmKinopioBrigade", nullptr, nullptr, nullptr, "EtcBgm"},
    {"StmRsBgmDemoWorldMap", "CollectBgmWorldMap", nullptr, nullptr, "EtcBgm"},
    {"StmRsBgmShopClct", nullptr, nullptr, nullptr, "EtcBgm"},
    {"StmRsBgmRace", nullptr, nullptr, nullptr, "EtcBgm"},
    {"StmRsBgmRadioControlCar", nullptr, "ラジコン", nullptr, "EtcBgm"},
    {"StmRsBgmSlotRoom", nullptr, nullptr, nullptr, "EtcBgm"},
    {"StmRsBgmMiniGame01", nullptr, nullptr, nullptr, "EtcBgm"},
};
const s32 cCollectBgmListSize = std::size(cCollectBgmList);
