#pragma once

#include <Critical.h>
#include <HashMap.h>
#include <Thread.h>

#include "Area.h"

class WorldLoader : public Framework::Thread
{
private:
    Framework::Critical cs;
    Framework::Array<Area> requestQueue;
    bool exit;

public:
    WorldLoader();
    ~WorldLoader();
    void thread() override;
    void requestLoading(Area request);
    void exitAndWait();
    bool existsChunk(int x, int y, int dimension) const;
};