Skip to content
Snippets Groups Projects
Select Git revision
  • 0660af11caa453842cd9a996d0eb18297da833a6
  • master default
  • Huaer
  • krueger
4 results

Platform.hpp

Blame
  • Platform.hpp 890 B
    // Cross-platform rendering and input interface.
    
    #ifndef PLATFORM_HPP
    #define PLATFORM_HPP
    
    #include <chrono>
    #include <functional>
    #include <unordered_set>
    #include "PixelBuffer.hpp"
    
    using FloatSeconds = std::chrono::duration<float>;
    
    class Platform {
    protected:
    	FloatSeconds frame_time_prev = FloatSeconds(0.0f);
    
    public:
    	static constexpr FloatSeconds FRAME_TIME_TARGET = FloatSeconds(1.0f / 60.0f);
    
    	// Runs [func], then sleeps until one frame has elapsed. The default
    	// implementation uses C++ standard library facilities.
    	virtual void frame(std::function<void(FloatSeconds const &)> func);
    
    	// Returns any keys currently pressed.
    	virtual std::unordered_set<char> get_input(void) = 0;
    
    	virtual void render(PixelBuffer const &buffer) = 0;
    	virtual void set_title(std::string const &title);
    
    	// More reliable than destructors.
    	virtual void exit();
    };
    
    #endif // PLATFORM_HPP