#pragma once

#include "IRenderTarget.hpp"
#include "Types.hpp"
#include "Vector2.hpp"

namespace TSE
{
    class IWindow : public IRenderTarget
    {
        public:
        static IWindow* lastWindow;
        string title;

        protected:
        virtual bool Init() = 0;
        public:
        virtual void Clear() const = 0;
        virtual void ClearDepthBuffer() const = 0;
        virtual bool ShouldClose() const = 0;
        virtual void DoneSetup() = 0;

        bool BaseInit() const;
        void BaseUpdate() const;
        Vector2 GetSize() const;
        ~IWindow();
    };
} // namespace TSE
