#pragma once

/*
	ApplicationFramework
	by John Ryland
	Copyright (c) 2023
*/

////////////////////////////////////////////////////////////////////////////////////
//	Dear ImGui Ui System

#include "IUiSystem.h"

namespace ApplicationFramework {

class DearImGuiUiSystem : public IUiSystem
{
public:
    DearImGuiUiSystem();
    ~DearImGuiUiSystem() override;

    void Initialize() override;
    void Shutdown() override;

    void Prepare() override;
    void Update() override;
    void Render() override;
    void Present() override;

    int DefaultFontIndex() const override  { return m_defaultFontIndex;  }
    int FixedFontIndex() const override    { return m_fixedFontIndex;    }
    int IconFontIndex() const override     { return m_iconFontIndex;     }
    int UnicodeFontIndex() const override  { return m_unicodeFontIndex;  }
    int FallbackFontIndex() const override { return m_fallbackFontIndex; }

private:
    int  m_defaultFontIndex = 0;
    int  m_fixedFontIndex = 0;
    int  m_iconFontIndex = 0;
    int  m_unicodeFontIndex = 0;
    int  m_fallbackFontIndex = 0;
};

} // ApplicationFramework namespace
