#ifndef WORLDS_HPP_INCLUDED
#define WORLDS_HPP_INCLUDED

#include "../../Core/Classes/World.hpp"
#include <functional>
#include <cstdint>
#include <string>
#include <vector>

namespace Worlds
{
    bool Refresh();

    bool SwitchWorld(Internal::World World);
    bool SwitchWorld(std::int32_t WorldID);

    std::int32_t GetCurrent();
    std::vector<Internal::World> GetAll();

    std::int32_t GetIndexOf(Internal::World World);
    std::int32_t GetIndexOf(std::int32_t WorldID);

    std::vector<Internal::World> GetF2P();
    std::vector<Internal::World> GetP2P();

    bool IsP2P(Internal::World World);
    bool IsP2P(std::int32_t WorldID);

    Internal::World GetBy(std::int32_t WorldID);
    std::vector<Internal::World> GetBy(const std::function<bool (Internal::World&)>& Filter);
}

#endif // WORLDS_HPP_INCLUDED
