Статьи по разработке игр на QSP

Структура конфигурационного файла классического плеера версии 5.7.0

Классический плеер QSP версии 5.7.0 хранит все настройки отображения и расположения окон в файле qspgui.cfg. Данный файл создаётся автоматически при первом запуске плеера и перезаписывается всякий раз, когда игрок плеер закрывает. Таким образом, чтобы сбросить настройки плеера, нужно просто удалить файл qspgui.cfg из папки с плеером.

Если файл qspgui.cfg найден в папке с игрой, то применяются настройки из него. Если в папке с игрой такой файл не найден, применяются настройки из файла, который лежит рядом с плеером.

Это позволяет для каждой отдельной игры задавать собственные настройки оформления.

Официального, задокументированного способа сделать это — нет. Но есть небольшой трюк, позволяющий добиться нужного эффекта:

  1. Запускаем в плеере свою игру.
  2. Вручную "расставляем" окна так, как нам нужно, в том числе задавая размер.
  3. Закрываем плеер.
  4. Открываем папку плеера (где находится qspgui.exe) и копируем оттуда файл qspgui.cfg в папку с игрой.
  5. Ставим на файле qspgui.cfg в папке с игрой атрибут "только для чтения".

Теперь игра будет открываться с нужным расположением и размером окон.

Если не выполнить пункт 5, то игрок сможет изменить расположение и размер окон, и новые настройки сохранятся у него для текущей игры после закрытия плеера.

Некоторых особо хитрых комбинаций расположения окон можно добиться только самостоятельным редактированием qspgui.cfg. И опять же, нет никакой подробной официальной документации по этому файлу. Все сведения, приведённые в данной статье, получены экспериментальным путём.

Конфигурационный файл qspgui.cfg состоит из нескольких секций настроек. Каждая секция объявляется заголовком, заключённым в квадратные скобки.

Настройки представляют собой пары типа Переменная=Значение. Если какую-то из настроек удалить, при запуске плеера будет применена настройка по-умолчанию, после чего эта настройка будет восстановлена в конфигурационном файле.

На каждую игру можно создать собственный конфигурационный файл, который будет иметь приоритет перед основным конфигурационным файлом плеера.

Если на конфигурационном файле не стоит атрибут "только для чтения", после закрытия плеера все данные в конфигурационном файле будут перезаписаны в соответствии с новыми настройками плеера.

Секция настроек цвета [Colors]

Данная секция объявляется заголовком [Colors]. В неё помещаются три настройки, каждая из которых должна располагаться на отдельной строке:

BackColor — цвет фона плеера.

FontColor — цвет шрифта плеера.

LinkColor — цвет ссылок плеера.

Цвет задаётся целочисленным цветовым кодом, который вычисляется из трёх цветовых составляющих: RED (красная), GREEN (зелёная) и BLUE (синяя). Вычислить необходимый цветовой код можно по формуле:

RED + GREEN*256 + BLUE*256*256

Пример настроек цветов для плеера (стандартные):

[Colors]
BackColor=14737632
FontColor=0
LinkColor=16711680
Секция настроек шрифта [Font]

Данная секция объявляется заголовком [Font]. В неё помещаются три настройки, каждая на отдельной строке:

FontSize — утанавливает предпочтительный размер шрифта в плеере. Это основной размер шрифта так же и для HTML-разметки. Может принимать значения от 1 до 72 (или сколько позволит система). Если выставить число ноль, то будет применён размер шрифта по-умолчанию, т.е. 12.

FontName — устанавливает имя предпочтительного шрифта в плеере. Можно указывать названия шрифтов, установленных в системе. Если указать несуществующий в системе шрифт, будет восстановлена настройка по-умолчанию, шрифт Segoe UI.

UseFontSize — эта настройка запрещает использовать иной размер шрифта, кроме указанного в секции настроек. Т.е. переменная fsize в игре перестаёт действовать. Можно указывать значение 0 — отключает принудительное использование системного размера шрифта, 1 — включает принудительное использование системного размера шрифта.

Пример настроек шрифта для плеера (стандартный):

[Font]
FontSize=12
FontName=Segoe UI
UseFontSize=0
Секция основных настроек [General]

Данная секция объявляется заголовком [General]. В неё помещается множество настроек.

Volume — данная настройка выставляет уровень громкости звуков в плеере. Принимает значения от 0 до 100 (проценты громкости). Пишется отдельной строкой.

ShowHotkeys — данная настройка отвечает за отображение подсказок по горячим клавишам действий. Принимает значения: 0 — горячие клавиши действий не отображаются, 1 — горячие клавиши действий отображаются. Пишется отдельной строкой

Language — данная настройка отвечает за выбор языка локализации плеера. Можно выбрать один из пяти языков: de_DE - немецкий, en_GB — английский, ru_RU — русский, uk_UA — украинский, eo — эсперанто. Можно заменить один из языков на свой собственный, используя инструкцию отсюда: Локализация классического плеера QSP.

Далее следуют настройки, перечисляемые в одну строку. Лучше всего их записывать по порядку, как есть, без лишних пробелов. Данные настройки разделяются на группы. Каждая группа закрывается вертикальной чертой |. Последняя группа так же должна быть закрыта вертикальной чертой. Внутри группы настройки закрываются точкой с запятой ;.

Panels

Первая группа состоит из одной настройки Panels. Её значение всегда сбрасывается к layout2, поэтому особого смысла менять её нет. Но если всё же измените на другую, пропорции панелей сбросятся к виду с приоритетом площади у окна основного описания.

Panels=layout2|

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

name

Первая переменная служебная и не относится непосредственно к настройкам плеера. Она нужна, чтобы плеер понимал для какого окна ему применить все последующие настройки. Это системное название окна:

name=imgview;

Данной переменной можно передавать только шесть значений — системные названия окон плеера. Это значения: imgview (окно предпросмотра изображений), desc (окно основного описания), objs (окно предметов), acts (окно действий), vars (окно дополнительного описания), input (окно пользовательского ввода, поле ввода). Именно по значению в этой переменной вы можете понять, к настройкам какого окна относится данная группа настроек.

caption

Следующей переменной бесполезно прописывать какие-либо настройки, так как значения в неё подтягиваются из текущей локализации. Это названия окон. Поэтому значения могут быть любыми в зависимости от локализации. Вот так выглядит эта "настройка" для окна предметов в английской локализации:

caption=Objects;

У окна основного описания нет своей подписи, поэтому и значение в данную переменную прописывается пустое:

caption=;
state

Переменная state отвечает за внешний вид и поведение окна. Можете поэкспериментировать с этой настройкой, задавая разные значения, но по-умолчанию всеми окнами используются лишь несколько значений, определяющих поведение:

768 — это значение предопределяет поведение окна, как у окна основного описания по-умолчанию. Например, при этом значении отсутствует заголовок окна.

6293500 — это значение предопределяет поведение окна, как у окон действий, предметов и дополнительного описания по-умолчанию. При этом значении обязательно присутствует заголовок окна.

2099196 — это значение предопределяет поведение окна, как у окна ввода по-умолчанию. Заголовок окна присутствует.

1080035324 — это значение предопределяет поведение окна, как у окна предпросмотра по-умолчанию.

Увеличение любого из этих значений на единицу сделает любое из окон независимым от основного окна плеера, то есть плавающим. Например окно основного описания можно сделать плавающим, прописав такую настройку:

state=769;

Увеличение любого из этих значений на 2 — скрывает окно, однако его можно вернуть обратно через меню плеера.

dir

Переменная dir отвечает за расположение и поведение окна. Можете так же поэкспериментировать с этой настройкой, задавая разные значения. Всего таких значений можно указать шесть: от 0 до 5. Если указать иное значение, окно появится в верхнем левом углу плеера в нерабочем виде. Название пременной очевидно происходит от слова "direction" — т.е. "направление". В зависимости от выбранного направления выстраиваются и прочие блоки.

0 — полностью скрывает окно из виду, а вернее сворачивает до небольшой полоски в левом верхнем углу.

1 — окно располагается в подвижный блок Top (то есть типа верх). При выборе данного направления, слои (layer) располагаются и нумеруются снизу вверх. В одном слое ряды (row) располагаются и нумеруются сверху вниз. В одном ряду (или слое) позиции (pos) располагаются и нумеруются слева направо.

2 — окно располагается в подвижный блок Right (то есть типа право). При выборе данного направления, слои (layer) располагаются и нумеруются слева направо. В одном слое ряды (row) располагаются и нумеруются справа налево. В одном ряду (или слое) позиции (pos) располагаются и нумеруются сверху вниз.

3 — окно располагается в подвижный блок Bottom (то есть типа низ). При выборе данного направления, слои (layer) располагаются и нумеруются сверху вниз. В одном слое ряды (row) располагаются и нумеруются снизу вверх. В одном ряду (или слое) позиции (pos) располагаются и нумеруются слева направо.

4 — окно располагается в подвижный блок Left (то есть типа лево). При выборе данного направления, слои (layer) располагаются и нумеруются справа налево. В одном слое ряды (row) располагаются и нумеруются слева направо. В одном ряду (или слое) позиции (pos) располагаются и нумеруются сверху вниз.

5 — окно располагается в неподвижный блок Center. При выборе данного направления, слои (layer) располагаются и нумеруются слева направа. В одном слое ряды (row) располагаются и нумеруются слева направо. В одном ряду (или слое) позиции (pos) располагаются и нумеруются сверху вниз.

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

layer

Значение переменной layer определяет номер слоя, в котором будет располагаться окно. Может принимать значения от 0 до 5. Слои выстравиваются в определённом порядке в зависимости от выбранного направления (переменная dir).

raw

Значения переменной raw определяет номер ряда, в котором будет располагаться окно. Ряды выстравиваются в определённом порядке внутри слоя (переменная layer), в зависимости от выбранного направления (переменная dir).

pos

Значения переменной pos определяет номер позиции, в которой будет располагаться окно. Позиции располагаются определённым образом внутри ряда или слоя, в зависимости от выбранного направления (переменная dir).

prop

Переменная prop устанавливает пропорции между окнами внутри ряда. Значения указываются от 100000 в одну или другую сторону.

bestw, besth, minw, minh, maxw, maxh

Переменные bestw и besth — это предпочтительные ширина и высота окна соответственно. Эти параметры будут применяться в зависимости от того, в каком направлении размещено окно, и как изменено значение переменной prop.

Переменные maxw и maxh — это максимальные ширина и высота окна соответственно. Эти параметры могут не работать, в зависимости от того, как скомбинированы окна.

Переменные minw и minh — это минимальные ширина и высота окна соответственно. Эти параметры могут не работать, в зависимости от того, как скомбинированы окна.

floatx, floaty, floatw, floath

Переменные floatx, floaty, floatw, floath отвечают за расположение и размеры окна, когда окно откреплено от окна плеера, т.е. когда оно переключено в режим плавающего окошка. floatx — отступ от левой границы экрана, floaty — отступ от верхней границы экрана, floatw — ширина плавающего окна, floath — высота плавающего окна.

dock_size

В конце секции основных настроек прописываются несколько групп dock_size, количество которых совпадает с числом окон, размещённых в направлениях top, right, bottom и left. Изменение значений этих настроек не влияют на отображение окон, это служебные значения.

Секция настроек окна плеера [Pos]

Данная секция объявляется заголовком [Pos]. Здесь расположены пять настроек, каждая из которых записывается отдельной строкой.

Left и Top — определяют отступ от левой и верхней границ экрана.

Width и Height — определяют ширину и высоту окна соответственно.

Maximize — определяет развернётся ли окно плеера на всю свободную ширину и высоту экрана, или откроется в окне с размерами, указанными в настройках Left, Top, Width, Height. Может принимать значения 0 (окно с указанными размерами) и 1 (развёрнутое окно).

Пример настроек окна плеера (стандартные):

[Pos]
Left=10
Top=10
Width=850
Height=650
Maximize=0
Post Scriptum

Для более полного понимания работы настроек рекомендуется ознакомиться с документацией по wxWidgets.

Вводная часть статьи взята из инструкции за авторством Nex`а в теме Настройка окошек классического плеера с помощью qspgui.cfg