LINUX.ORG.RU

Инфраструктура приложения.

 ,


1

3

Пишу небольшею программку на c++ и glut, пытаюсь сделать, что то вроде карты где можно будет двигать какую-то модельку, вращать камеру, делать еще кучу лабуды.

Вопрос:

Как обработать и инкапсулировать запросы мыши и клавиатуры так чтобы это было красиво. То есть как обрабатываются io из мыши и клавиатуры в играх?

Быдло схема. http://imgur.com/6gHHDeL

Ввод клавиатуры переводит систему в активное состояние. В активном состоянии(одном из) система умеет обрабатывать ввод и реагировать экшеном(...). Акшен(Профит) что-то меняет насцене, в камере, или еще где.

С той же клавиатуры из любого состояния можно вернуться обратно в состояние none(ожидание ступор).



Последнее исправление: Trieforce (всего исправлений: 3)

Снизь уже дозу, выдохни, и попробуй ещё раз то же самое, но по-русски.

А не

Я имею дело с ними прямо там, где сейчас, чтобы получать данные. В заполненной формы мало, они вызывают модулем обработки данных законом.
Я смущен, состояние модуля, но что есть, а входит в клавиатуру и мышь. Было бы логичнее включить возможно. Когда сигнал состояния мыши начали двигаться, в данном случае, как это я делаю так, проблема в том, что вы будете, я не знаю.

anonymous
()
Ответ на: комментарий от Trieforce

У не умею объяснять людям

Объясни через блок схему.

anonymous
()

Пишу небольшею программку на c++ и glut,

Советую переделать на SDL2, в процессе придётся написать основной цикл, но это не архисложно (я даже мог бы сделать пример на github).

Касательно клавиатуры, тут можно использовать два режима: рассылка горячих клавиш и ввод текста.

Когда кто-то захватыват ввод текста, диспетчер клавиатуры прекращает рассылать горячие клавиши (кроме, возможно, пары особенных клавиш вроде F1-12, но не Escape и Enter) и передаёт ввод текста единственному подписавшемуся объекту. Причём можно передавать ему события «вставлен текст X», «нажата backspace», «нажата delete», «нажата enter», «нажата escape».

В режиме рассылки горячих клавиш можно позволить на каждую клавишу записывать связанное с ней действие, и это действие выполнять.

quiet_readonly ★★★★
()
Последнее исправление: quiet_readonly (всего исправлений: 2)
Ответ на: комментарий от quiet_readonly

glut, на самом деле не важен. Мне важна именно логика.

То есть сделать что-то вроде этого? void (*)(int, int)

Спасибо.

Trieforce
() автор топика
Ответ на: комментарий от Trieforce

Для хранения действия на хоткее лучше всего использовать std::function, тогда можно будет передавать указатели на метод класса или анонимную функцию.

quiet_readonly ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.