#include "quicksavemanager.hpp"

MWState::QuickSaveManager::QuickSaveManager(std::string& saveName, unsigned int maxSaves)
    : mSaveName(saveName)
    , mMaxSaves(maxSaves)
    , mSlotsVisited(0)
    , mOldestSlotVisited(nullptr)
{
}

void MWState::QuickSaveManager::visitSave(const Slot* saveSlot)
{
    if (mSaveName == saveSlot->mProfile.mDescription)
    {
        ++mSlotsVisited;
        if (isOldestSave(saveSlot))
            mOldestSlotVisited = saveSlot;
    }
}

bool MWState::QuickSaveManager::isOldestSave(const Slot* compare) const
{
    if (mOldestSlotVisited == nullptr)
        return true;
    return (compare->mTimeStamp <= mOldestSlotVisited->mTimeStamp);
}

bool MWState::QuickSaveManager::shouldCreateNewSlot() const
{
    return (mSlotsVisited < mMaxSaves);
}

const MWState::Slot* MWState::QuickSaveManager::getNextQuickSaveSlot()
{
    if (shouldCreateNewSlot())
        return nullptr;
    return mOldestSlotVisited;
}
