public void SetupList()
    {
        buttons.ResetButtons();
        availableMaps.Clear();
        for (int i = 0; i < missionLibrary.Size(); i++)
        {
            MissionEntry    mission  = (MissionEntry)missionLibrary.GetEntryByIndex(i);
            MissionProgress progress = playerData.GetMissionProgress(mission.uuid);
            if (progress.cleared)
            {
                continue;
            }

            switch (mission.unlockReq)
            {
            case MissionEntry.Unlocking.TIME:
                if (mission.unlockDay <= currentDay.value)
                {
                    availableMaps.Add(mission);
                }
                break;

            case MissionEntry.Unlocking.SQUADSIZE:
                if (playerData.stats.Count <= mission.squadSize)
                {
                    availableMaps.Add(mission);
                }
                break;

            case MissionEntry.Unlocking.RECRUITED:
                if (playerData.HasCharacter(mission.characterReq.uuid))
                {
                    availableMaps.Add(mission);
                }
                break;

            case MissionEntry.Unlocking.MISSION:
                if (playerData.GetMissionProgress(mission.clearedMission.uuid).cleared)
                {
                    availableMaps.Add(mission);
                }
                break;

            case MissionEntry.Unlocking.DEATH:
                if (playerData.IsDead(mission.characterReq.uuid))
                {
                    availableMaps.Add(mission);
                }
                break;
            }
        }
        for (int i = 0; i < availableMaps.Count; i++)
        {
            buttons.AddButton(availableMaps[i].entryName);
        }

        buttons.ForcePosition(0);
        locationIndex.value = (int)availableMaps[0].mapLocation;
        missionChangedEvent.Invoke();
        ShowMissionInfo();
    }