Урок 3.1. EventHandlerWindows – Обработчик событий окон

> Свободная база знаний SFML > Уроки SFML > Разработка 2D Игр > Уроки от legozaur > Урок 3.1. EventHandlerWindows - Обработчик событий окон

Почти в каждой современной игре есть окна и кнопки для элементарного взаимодействия с игроком.
Вот пример одной MMORPG c оконной системой
test1
Скажем так, SFML не предоставляет такого функционала, поэтому его придётся делать вручную. В нескольких уроках мы рассмотрим как создавать такую систему практически с 0. Мы будем имитировать работу оконной системы Windows.

1. EventHandlerWindows
2. Window
3. Design
4. Item

В этом уроке рассмотрим всё поверхностно, а в следующем углубимся.


1. EventHandlerWindows – обработчик событий окон.


Это класс, который содержит в себе ссылки на окна и некоторые данные для обработки, а так-же ориентируясь на мышь управляет окнами.

Основные функции нужные в обработчике:

Из комментариев и так понятно для чего нужны эти функции.

Стоит выделить самые важные из них:
1. add(Window* win) – добавляет окно в обработчик окон
2. behavior(int numEvent) – управляет окнами опираясь на входящие события мыши (numEvent)
3. draw() – отображение окон

В цикле обработки игры это будет выглядеть вот так:


2. Window – окно


Класс Window представляет собой набор параметров (например координаты и размеры окна) и объекты (спрайты, кнопки, картинки и т.д.), а так-же набор функций для добавления этих объектов, их обработки и отображения.

Наше окно может перемещаться, закрываться и даже изменять размеры! В файле Window.h описаны доп. структуры которые и образуют окно.

Немного поподробнее:
winSprite – это спрайт, из которого создаётся сама рамка окна
winItem – это базовый класс для последующих элементов, которые будут расположены на нашем окне (winButton, winSlot, winCheckBox, winMcText)
winMcText – тот же mcText только привязанный к окну.
winSave – набор параметров, которые нужны для изменения размеров окна.

Основные функции нужные в окне:

setDesign(DesignWindow* desWin) – меняет все winSprite основываясь на входящем дизайне. Об этом позже.
save(vec2i, int) – сохраняет информацию из обработчика окон в winSave
changeSize(Mouse*) – изменение размеров окна
changePosition(Mouse*) – изменение положения окна
setPosition(int x, int y) – установка координат окна и компонентов
addItem(int type, sf::String filename, vec2f vec) – добавление элемента в окно (кнопок, слотов, чекБоксов, картинок)


3. Design – дизайн


Этот класс служит для того чтобы создавать картинки для дизайнов окон, курсора, кнопок и т.д.
Windows8.1Вот такая картинка используется для создания окон в стиле аля Windows 8
image0


4. Item – итем


 

Содержит в себе SFML image, texture, sprite и информацию (позиция и размер). Используется в структуре winItem.

В сумме результат работы всех этих классов выглядит вот так:
image_07012017_1

Подробный разбор классов будет во второй части.

 
Буду благодарен, если поделитесь: