/******************************************************************************
*	File		-	terminal.h
*	Author		-	Joey Pollack
*	Date		-	2022/05/13 (y/m/d)
*	Mod Date	-	2022/05/13 (y/m/d)
*	Description	-	API for the cross-platform terminal
******************************************************************************/

#ifndef LUNARIUM_TERMINAL_H_
#define LUNARIUM_TERMINAL_H_

#include <core/common_defs.h>
#include <utils/op_res.h>

namespace lunarium
{
    enum TermColor
    {
        TC_WHITE,
        TC_BLACK,
        TC_RED,
        TC_YELLOW,
        TC_GREEN,
        TC_BLUE,
        TC_CYAN,
        TC_MAGENTA,
        TC_DEFAULT
    };

    class Terminal
    {
    public:
        static OpRes Initialize();
        static void Shutdown();
        static const char* Color(TermColor color);
        static TermColor GetColor();
        static void SetDefaultColor();

    private:
        static OpRes InitWindowsTerm();
        static void ShutdownWinTerm();
        static u32 WinPrevOutMode;
        static u32 WinPrevInMode;

    };
}

#endif  // LUNARIUM_TERMINAL_H_