#pragma once

#include "core/gameevent.h"
#include "core/updatedata.h"

namespace kku
{

/// Game
///
/// Functional aggregation of
/// logic for actual game mode
class Game
{
public:
    virtual ~Game() = default;

    virtual void run() = 0;
    virtual void input(GameEvent&& inputdata) = 0;
    virtual void update(UpdateData&& updatedata) = 0;
    virtual void display() const = 0;
};

}
