Zmeika
простая аркадная игра
|
абстракция текущего экрана + инкапсуляция привязки обработчиков событий FreeGlut. Подробнее...
#include <Screen.hpp>
Открытые члены | |
virtual | ~AScreen () |
базовый деструктор выполняет также "отвязку" данного экрана, если он был активным, но on_deselect уже не вызывает | |
void | select () |
использовать данный экран для обработки событий (сделать его активным) Подробнее... | |
Открытые статические члены | |
static bool | has_active () |
узнать выбран ли какой-либо объект AScreen в качестве активного | |
static AScreen & | get_active () |
получить ссылку на текущий активный экран | |
Защищенные члены | |
virtual void | on_select () |
вызывается при выборе данного экрана | |
virtual void | on_deselect () |
вызывается при выборе другого экрана, если этот экран был активным | |
virtual void | on_idle () |
отсутствие событий, вызывается периодически | |
virtual void | on_display ()=0 |
перерисовка кадра | |
virtual void | on_display_before () |
действие, выполняемое перед отрисовкой кадра | |
virtual void | on_display_after () |
действие, выполняемое после отрисовки кадра | |
virtual void | on_reshape (int width, int height) |
изменение размеров окна извне Подробнее... | |
virtual void | on_position (int x, int y) |
перемещение окна (не реализовано в FreeGLUT 2.8) Подробнее... | |
virtual void | on_visibility (bool visible) |
изменение видимости окна (присутствует на экране, не присутствует на экране) Подробнее... | |
virtual void | on_char (unsigned char code, int mouse_x, int mouse_y) |
нажатие клавиши (код клавиши преобразуется в соответствующий ASCII-код) Подробнее... | |
virtual void | on_char_up (unsigned char code, int mouse_x, int mouse_y) |
отпускание зажатой клавиши (код клавиши преобразуется в соответствующий ASCII-код) Подробнее... | |
virtual void | on_special_key (int code, int mouse_x, int mouse_y) |
нажатие специальной клавиши Подробнее... | |
virtual void | on_special_key_up (int code, int mouse_x, int mouse_y) |
отпускание зажатой специальной клавиши Подробнее... | |
virtual void | on_entry (bool entered) |
вход/выход мыши в окно Подробнее... | |
virtual void | on_hover (int mouse_x, int mouse_y) |
движение мыши с отпущенными кнопками Подробнее... | |
virtual void | on_drag (int mouse_x, int mouse_y) |
движение мыши с зажатыми кнопками Подробнее... | |
virtual void | on_mouse (int button, int mouse_x, int mouse_y) |
нажатие кнопки мыши Подробнее... | |
virtual void | on_mouse_up (int button, int mouse_x, int mouse_y) |
отпускание кнопки мыши Подробнее... | |
virtual void | on_mouse_wheel (int wheel_number, int direction, int mouse_x, int mouse_y) |
прокручивание колеса мыши Подробнее... | |
Закрытые статические члены | |
static void | current_screen_select (AScreen *) |
static void | on_idle_wrapper () |
static void | on_display_wrapper () |
static void | on_reshape_wrapper (int width, int height) |
static void | on_position_wrapper (int x, int y) |
static void | on_visibility_wrapper (int status) |
static void | on_char_wrapper (unsigned char code, int mouse_x, int mouse_y) |
static void | on_char_up_wrapper (unsigned char code, int mouse_x, int mouse_y) |
static void | on_special_key_wrapper (int code, int mouse_x, int mouse_y) |
static void | on_special_key_up_wrapper (int code, int mouse_x, int mouse_y) |
static void | on_entry_wrapper (int status) |
static void | on_hover_wrapper (int mouse_x, int mouse_y) |
static void | on_drag_wrapper (int mouse_x, int mouse_y) |
static void | on_mouse_button_wrapper (int button, int state, int x, int y) |
static void | on_mouse_wheel_wrapper (int wheel, int direction, int x, int y) |
абстракция текущего экрана + инкапсуляция привязки обработчиков событий FreeGlut.
Предполагается, что классы-наследники дадут свои определения нужным им обработчикам событий. Готовые элементы реализации предполагают выключенный буфер глубины и включенную двойную буферизацию.
|
inlineprotectedvirtual |
нажатие клавиши (код клавиши преобразуется в соответствующий ASCII-код)
code | ASCII-код нажатой клавиши (нелатинские буквы могут не работать) |
mouse_x | x-координата мыши в окне в момент нажатия |
mouse_y | y-координата мыши в окне в момент нажатия |
Переопределяется в Game_screen, Hall_of_fame_screen и Enter_name_screen.
|
inlineprotectedvirtual |
отпускание зажатой клавиши (код клавиши преобразуется в соответствующий ASCII-код)
code | ASCII-код отпущенной клавиши (нелатинские буквы могут не работать) |
mouse_x | x-координата мыши в окне в момент отпускания |
mouse_y | y-координата мыши в окне в момент отпускания |
|
inlineprotectedvirtual |
движение мыши с зажатыми кнопками
Срабатывает периодически с некоторой частотой в процессе движения.
mouse_x | x-координата мыши в окне |
mouse_y | y-координата мыши в окне |
|
inlineprotectedvirtual |
вход/выход мыши в окно
entered | признак входа указателя мыши в окно (true – вошёл, false – вышел) |
|
inlineprotectedvirtual |
движение мыши с отпущенными кнопками
Срабатывает периодически с некоторой частотой в процессе движения.
mouse_x | x-координата мыши в окне |
mouse_y | y-координата мыши в окне |
|
inlineprotectedvirtual |
нажатие кнопки мыши
Координаты мыши отсчитываются от верхнего левого угла окна (не области рисования, без учёта заголовка?) вправо по горизонтали (x) и вниз по вертикали (y).
code | код (GLUT_LEFT_BUTTON, GLUT_RIGHT_BUTTON или GLUT_MIDDLE_BUTTON) нажатой кнопки |
mouse_x | x-координата мыши в окне в момент нажатия |
mouse_y | y-координата мыши в окне в момент нажатия |
Переопределяется в Game_screen.
|
inlineprotectedvirtual |
отпускание кнопки мыши
code | код нажатой кнопки |
mouse_x | x-координата мыши в окне в момент отпускания |
mouse_y | y-координата мыши в окне в момент отпускания |
|
inlineprotectedvirtual |
прокручивание колеса мыши
wheel_number | – "номер колеса" (можно игнорировать?) |
direction | – направление прокрутки (теоретически должно быть равно либо +1, либо -1) |
mouse_x | x-координата мыши в окне в момент срабатывания |
mouse_y | y-координата мыши в окне в момент срабатывания |
|
inlineprotectedvirtual |
перемещение окна (не реализовано в FreeGLUT 2.8)
x | смещение вправо от левого верхнего угла экрана |
y | смещение вниз от левого верхнего угла экрана |
|
protectedvirtual |
изменение размеров окна извне
width | новая ширина области рисования (в пикселах) |
height | новая высота области рисования (в пикселах) |
|
inlineprotectedvirtual |
нажатие специальной клавиши
code | код (см. GLUT_KEY_...) нажатой клавиши |
mouse_x | x-координата мыши в окне в момент нажатия |
mouse_y | y-координата мыши в окне в момент нажатия |
Переопределяется в Game_screen.
|
inlineprotectedvirtual |
отпускание зажатой специальной клавиши
code | код (см. GLUT_KEY_...) отпущенной клавиши |
mouse_x | x-координата мыши в окне в момент отпускания |
mouse_y | y-координата мыши в окне в момент отпускания |
|
inlineprotectedvirtual |
изменение видимости окна (присутствует на экране, не присутствует на экране)
visible | признак видимости окна (true – видно) |
void AScreen::select | ( | ) |
использовать данный экран для обработки событий (сделать его активным)
В каждый конкретный момент может быть выбран только один активный экран.