Если попробовать использовать события? В модуле ввода, регистрируется слушатель.
При обновлении модуль ввода отсылает слушателям события через заранее определенную функцию.
Например, думаю идея понятна:
Код
// Событие
struct SEvent
{
// содержание события: код клавиши, время или еще чего...
EKey key;
};
// Слушатель событий
struct IInputListener
{
virtual void OnInputEvent(SEvent *) = 0;
};
// Модуль ввода
struct IInput
{
virtual void AddListener(IInputListener *) = 0;
virtual void RemoveListener(IInputListener *) = 0;
};
// Использование
struct IPlayer : public IInputListener
{
};
struct CPlayer : public IPlayer
{
// Инииализация игрока
bool Initialize()
{
pInput->AddListener(this);
return true;
}
// Обработчик событий
void OnInputEvent(SEvent *pEvent)
{
if(pEvent->key == KEY_UP)
{
goForward();
}
}
};