Options
Options - объект, который используется для хранения и управления глобальными параметрами приложения. Также Options позволяет хранить и использовать параметры записанные в него другими объектами.
Общие параметры
Смотреть описание Object.
Основные параметры
- язык (lang) - Язык, принудительно используемый приложением.
- url обновлений (surl) - url, по которому ищем обновления опций.
- sound (sound) - Громкость звука:
- 1 - максимальный,
- 0 - отключен.
- music (music)- Громкость музыки:
- 1 - максимальная,
- 0 - отключена.
- voice (voice) - Голос рассказчика:
- 0 - отключен,
- не 0 - включен.
- ambient (ambient) - Громкость окружающих звуков (шелест листьев, шум дождя, пения птиц и т.д.):
- 0 - отключен,
- не 0 - включен.
- курсор (curs) - Графический ресурс курсора по умолчанию для всего проекта.
- page (page) - Номер страницы для книги.
- fullScreen (fullScreen) - Полноэкранный режим, используется в приложениях для PC:
- 1 - на весь экран,
- 0 - в окне.
- immersive mode (immersive) -
- activity (activity) - Графический ресурс для индикатора загрузки. Перетаскивается мышкой из редактора ресурсов (поле должно находиться в состоянии редактирования).
- first loading bg (fl_bg) - Графический ресурс для индикатора загрузки. Перетаскивается мышкой из редактора ресурсов (поле должно находиться в состоянии редактирования).
- first loading bar (fl_bar) - Графический ресурс для индикатора загрузки. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования).
- аниматор загрузки - аниматор загрузки динамических ресурсов для flash. Должен иметь состояния start и progress, а также графический ресурс аниматора (он обязательно должен быть статическим!!!), который будет рисоваться в месте загружаемого динамического ресурса.
- show progress (progr) - 1 - Отображать не только крутилку activity, но и прогрессбар (кастомный или беленький программный).
- loading bg (res_bg) - Графический ресурс для индикатора загрузки. Перетаскивается мышкой из редактора ресурсов (поле должно находиться в состоянии редактирования).
- loading bar (res_bar) - Графический ресурс для индикатора загрузки. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования).
- поле ввода (edit) - Объект типа edit, из которого будет браться имя при добавлении/редактировании профилей (состояние add у опций).
- таблица (table) - Объект типа table, в который мы будем складывать все профиля (состояние update у опций).
- разрешить рекламу (ad) - Разрешить или нет показ рекламы объектом Advertisement:
- 1 - разрешить,
- 0 - запретить
Добавляемые параметры
Меню выбора Добавляемые параметры к объектам активируется по нажатию правой кнопки мыши.
ввод пустого имени - При попытке добавить пустое имя состоянием add будет изменено состояние заданного объекта.
- объект - При попытке добавить пустое имя перевести объект в состояние из следующего поля.
- состояние - Новое состояние для объекта из предыдущего поля.
ввод существующего имени - Когда будет введено существующее имя, изменить состояние заданного объекта.
- объект - Когда будет введено существующее имя, перевести объект в состояние из следующего поля.
- состояние - Новое состояние для объекта из предыдущего поля.
Android - кнопка Back - При нажатии на кнопку перевести объект в новое состояние.
- объект - При клике на кнопку перевести объект в состояние из следующего поля.
- состояние - Новое состояние для объекта из предыдущего поля.
Android - кнопка Menu - При нажатии на кнопку перевести объект в новое состояние.
- объект - При клике на кнопку перевести объект в состояние из следующего поля.
- состояние - Новое состояние для объекта из предыдущего поля.
Windows - кнопка ESC - При нажатии на кнопку перевести объект в новое состояние.
- объект - При клике на кнопку перевести объект в состояние из следующего поля.
- состояние - Новое состояние для объекта из предыдущего поля.
Обновление с сервера - успех - При успешном обновлении опций с сервера перевести объект в новое состояние.
- объект - Объект, состояние которого меняем.
- состояние - Новое состояние для объекта из предыдущего поля.
Обновление с сервера - ошибка - При ошибочном обновлении опций с сервера перевести объект в новое состояние.
- объект - Объект, состояние которого меняем.
- состояние - Новое состояние для объекта из предыдущего поля.
Возврат из паузы - При возврате из паузы перевести объект в новое состояние.
- объект - При возврате из паузы перевести объект в состояние из следующего поля.
- состояние - Новое состояние для объекта из предыдущего поля.
Переход в полноэкранный режим - При переходе в полноэкранный режим перевести объект в новое состояние.
- объект - При переходе в полноэкранный режим перевести объект в состояние из следующего поля.
- состояние - Новое состояние для объекта из предыдущего поля.
Возврат из полноэкранного режима - При выходе из полноэкранного режима перевести объект в новое состояние.
- объект - При выходе из полноэкранного режима перевести объект в состояние из следующего поля.
- состояние - Новое состояние для объекта из предыдущего поля
Смена разрешения - При смене разрешения перевести объект в новое состояние.
- объект - При смене разрешения перевести объект в состояние из следующего поля.
- состояние - Новое состояние для объекта из предыдущего поля
При смене разрешения объект переведётся в новое состояние уже после записи новых resh, resw, а не как при возврате из (переходе в) полноэкранный режим.
!!! Если в машине, которая вызывается по нажатию на Android-кнопку, есть обращение к опциям, то это обращение нужно писать в другом состоянии, через команду '''wait'''
!!! Машину, которая вызывается по нажатию на Android-кнопку, нужно размещать на расшариной сцене, если в ней есть команда '''wait''' потому, что эта команда работает, если прописана на текущем экране, а не на фоновом (глобальном, не текущем).
одинаковые имена - Когда будет введено существующее имя (в поле edit), перевести объект в состояние из следующего поля.
- объект - Когда будет введено существующее имя, перевести объект в состояние из следующего поля.
- состояние - Новое состояние для объекта из предыдущего поля
Необходим пак - Когда параметр в опциях совпадет тогда начнем фоновою загрузку нужного нам пака. (Пока только в бете)
- поле - имя параметра в опциях.
- значение - значения поля при котором начнем загрузку пака.
- пак - Номер пака который хотим загрузить.
!!! Важно до окончания фоновой загрузки у нас не должны вызываться текстуры с того пака который хотим загрузить
Дополнительные стандартные параметры
- rlang - Текущий язык устройства, если не указан принудительно какой-либо язык (параметр lang).При каждом запуске вьювера этот параметр будет перебиваться, в зависимости от системной локализации.
- r_install - Дата и время установки в секундах.
- r_hours - Время прошедшее с момента установки в часах.
- r_playtime - Время нахождения в игре в минутах.
- r_launches - Количество запусков игры.
- r_days - Сколько дней подряд запускалась игра, если пропускается хотя бы день, то сбрасывается.
- r_lastlaunch - Дата и время последнего запуска в секундах.
- downloadErrCode - Код ошибки возвращаемый при неудачной загрузке:
- 1 - неизвестная ошибка (возможно нет интернета),
- 2 - отключён wi-fi,
- 3 - недоступна карта памяти,
- 4 - недостаточно места на карте памяти для загрузки,
- 5 - ошибка при распаковке архива (чаще всего, не хватает места для распаковки архива).
- reloadScrID - id экрана, на который мы перейдем после перегрузки лейаута. Перегрузка вызывается в команде init в машине состояний.
- curScrID - id текущего экрана.
- prevScrID - id предыдущего экрана.
Состояния
Объект Options обладает рядом состояний:
- init - Инициализация опций.
- add - Добавить новый профиль из заданного поля ввода и сделать его текущим.
- update - Заполнить заданную таблицу списком профилей.
- change - Сменить профиль на выбранный на данный момент в таблице.
- delete - Удалить выбранный профиль (выбранный в таблице профилей).
- generate - Генерирует имя профиля по умолчанию при создании нового профиля.
- save - Сохранение всех параметров в опции. Это состояние вызывается автоматически при переходе между экранами, выгрузки и закрытии приложения. При его вызове приложение физически открывает файл options.xml и записывает туда данные. Частое обращение к этому файлу снизит быстродействие нашего приложения.
- edit - С текущего поля ввода считывает имя и устанавливает его для текущего профиля.
- reset - Заменяет файл Options файлом Options_default, то есть сбрасываются все параметры и устанавливаются все параметры по умолчанию
- clear_cur_player - Удаляет весь текущий прогресс по выбранному профилю, таким образом можно организовать прохождение игры заново для одного и того же профиля.
- delete_node - Удаляет ноду в опциях, вычитав ее название из поля param.
- readCursor - Считать новый ресурс курсора из объекта опций.
- updateCursor - Обновить курсор над объектом, который под мышкой.
- invariantCursor - Курсор не изменяется при наведении над объектами с переопределенным курсором.
- variableCursor - Курсор меняется при наведении над объектами с переопределенным курсором.
- disableCursor - Курсор отключается полностью.
- check_server - Запросить обновление опций с сервера.
- send_options - Отправить опции на сервер.
- sendExtCommand - Отправить внешнюю команду.
- updateVolumes - Обновить уровень громкости музыки и звуков.
- setGroupMember - устанавливаем группе ( id из поля groupID), единственного члена группы ( id из поля groupMemID), важно: к группе не должен быть подвязан ни один объект Детальнее.
- checkInternet - проверяет подключение к интернету, вызывает обработчики internetYES при наличии интернета и internetNO при его отсутствии.
- calculateDate - вычисляет календарную дату времени (текущее игровое время + добавляет время из поля param (в секундах)), выводит информацию в параметры "dateDay", "dateMonth", "dateYear".
Испольозвание опций для хранения настроек
Рассмотрим маленькие примеры, которые часто встречаются в окнах с настройками игры.
1. Отправить письмо
Для объекта типа "button" следует прописать следующее:
2. Сменить язык
Организовывается с помощью объектов типа "groupbox" и "checkbox":
Благодаря такой конструкции при выборе одного (в данном случае) языка снимается галочка со второго. В самом чекбоксе следует прописать следующее:
Изначально следует проверить язык устройства и установить соответствующий чекбокс:
Использование Options
Options могут быть использованы, чтобы записывать переменные и опции игрока, которые будут использоваться между сессиями. Чтобы записать переменную в Options, нужно сделать set с галочками obj, par и val. В obj мы заносим наш обьект Options, в par - название переменной, а в val - ее значение.
Переменные хранятся в файле options.xml в папке, которая находится по пути C:\Users\agava\AppData\Roaming\Absolutist\(название игры). Можно записывать переменные через точки - они определяют вложенность переменной в xml-файле. Например, запись p0.tutorial.tutorial_all будет означать XML-атрибут tutorial_all, который лежит в XML-теге tutorial, который в свою очередь лежит в теге p0. В файле это выглядит так:
<p0> <tutorial tutorial_all="1"/> </p0>
Эту переменную можно в любой момент изменить с помощью команды set, или же вытащить для использования с помощью команды var. Например, чтобы увеличить ее на некоторое значение.
Также в опции пишут свои данные некоторые обьекты, такие как economics, eitems, taskorganizer и другие в виде (название обьекта)(ID в проекте). Данные, которые они пишут, удобно использовать, например, в счетчиках, или в if-ах для проверки достижения значений.
Здесь можно понять, что счетчик берет свое значение из тега eitems22 (это автополе, создаваемое обьектом eitems c objID=22), из атрибута i10773 (автоматически созданный атрибут, который означает предмет экономики с txtID=10773). Такой счетчик будет обновлять свое значение каждый раз, когда мы будем передавать ему состояние read/read_anim.
Внешние команды
Используются для общения с Flash вьювером в web версиях приложений. Могут приходить из flash или отправляться во флеш.
Реакция на внешнюю команду настраивается через объект options:
Если мы хотим отправить команду, мы указываем её имя и передаём состояние sendExtCommand:
Список команд:
- cmdShowMenu - отправляем, если хотим поднять табы ( по умолчанию табы выключены).
- cmdLevel - отправляем, при повышении уровня игрока ( в extCommandParam - указываем текущий уровень).
- cmdScore - отправляем, при при закрытиях окон "после монстра" и "после локации" ( в extCommandParam - указываем текущее значение общих очков - public.EconomicsTotalScore).
- cmdFullscreenDisabled - команда приходит, если нужно спрятать кнопки перехода фулскрина ( в связи с багами в версии флеша и браузера), приходить один раз за сессию.
- cmdFullscreenFailed - команда приходит каждый раз, при показе системного окна о том, что мы не можем перейти в полноэкранный режим ( в связи с багами в версии флеша и браузера).
Общие для экономических проектов:
- cmdShowGame - приходит, если нажали на таб "игра".
- cmdShowInvite - приходит, если нажали на таб "Друзья".
- cmdShowBank - приходит, если нажали на таб "Банк".
- cmdShowGifts - приходит, если нажали на таб "Лидеры".