#pragma once

namespace mt
{
    class Window;
}

class AbstractUIInterface
{
public:
    virtual ~AbstractUIInterface() = default;

    virtual void initialize() = 0;

    virtual void loop() = 0;

    virtual void shutDown() = 0;

    virtual void showWindow(mt::Window* window) = 0;

    virtual void addWindow(mt::Window* window) = 0;

    void setUseHardwareRendering(bool useHardware)
    {
        mUseHardwareRendering = useHardware;
    }

protected:
    bool mUseHardwareRendering{false};
};
