/******************************************************************************
*	File		-	iRunMode.h
*	Author		-	Joey Pollack
*	Date		-	2021/09/15 (y/m/d)
*	Mod Date	-	2021/09/15 (y/m/d)
*	Description	-	The interface that run mode classes must implement
******************************************************************************/

#ifndef RUN_MODE_H_
#define RUN_MODE_H_

#include <utils/op_res.h>
#include <input/input_manager.h>
#include <input/keyboard.h>

namespace lunarium
{
    class IGraphics;
    class iRunMode
    {
    public:
        virtual OpRes Initialize() = 0;
        virtual void Shutdown() = 0;
        virtual void OnTick(double delta) = 0;
        virtual void OnRender(IGraphics* g) = 0;

    public: // Optional Events
        virtual void OnKeyPress(InputManager::KeyPress kp);
        virtual void OnKeyRelease(Keyboard::Key k);
    };
}

#endif  // RUN_MODE_H_