HiddenList

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск

HiddenList является менеджером поисковых объектов. На сегодня HiddenList не просто управляет объектами на сцене - он отвечает за все штрафы и поощрения. В связке с такими объектами как HiddenHint + Effect HiddenList дает возможность реализовать систему подсказок, а также такие графические эффекты как: "ночь", "трансформация цвета" и т.д. с одним набором графики.

Общие параметры

(см. описание Object)

HOList 1.jpg
  • имя ( nm ) - Имя объекта HiddenList в дереве проекта. Может быт произвольным.
  • id-объекта - Уникальный номер объекта HiddenList, который можно увидеть в строке "имя" либо при наведении курсора на неё.
  • синхронизация ( sync ) - Применяется для синхронизации между лейаутами. Если указан параметр "нет", то объект будет активен только на текущем лейауте. По умолчанию указан параметр "да".
  • сохранение параметров ( sv ) - Настройка этого параметра актуальна, если приложение в дальнейшем будет сворачиваться в системную панель («трей»). Выбирается значение этого параметра из выпадающего списка. Возможны следующие варианты: "нет", "только объект", "объект с подобъектами", "только подобъекты". При выходе из трэя будут восстановлены ранее измененные/установленные (при переходе с одного экрана на другой)параметры объектов или подобъектов в зависимости от выбранного варианта для этого параметра. По умолчанию указан параметр "нет". Следует помнить, что если выбирается для объекта некоторой сцены значения этого параметра отличное от "нет", то должно и предусматриваться соответствующее значение этого параметра и для этой сцены, и для экрана, содержащего эту сцену.
  • z ( z ) - Параметр порядка рисования объекта. Сначала рисуются объекты с большим z, затем, поверх них - с меньшим.
  • память ( memo ):
1 - при повторном открытии экрана объект не обновляет свои параметры (помнит текущие параметры, оставшиеся от предыдущего посещения экрана);
0 - обновит свои параметры, при повторном открытии экрана.
  • группа ( gr ) - Группа, в которую входит текущий объект.

У листа также есть группы стандартных параметров такие как положение, размер, модификаторы. Но, по сути, они не важны. Главное, чтобы лист не перекрывал на сцене другие объекты. Поэтому ему лучше находиться за пределами сцены.

Основные параметры

  • Картинка ( res ) - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Обычно не используется, а применяется для отображения table;
  • Таблица ( table ) - Объект типа table, который является визуальным отображением списка. Должна быть обязательно;
  • Подсказка ( hint ) — объект типа HiddenHint, который является менеджером хинтов;
  • highlighter ( hl ) — объект типа hiddenhighlighter, который подсвечивает не найденные объекты.;
  • Счетчик ( hdncnt ) — объект типа Counter, который отображает количество найденных объектов.

В самом счетчике в параметрах нужно указать val = 0, поскольку изначально нет найденных объектов;

  • Таймер ( timer ) — объект типа Timer, который отображает время игры.

При инициализации листа он передаст состояние "start" таймеру.

  • отладка ( trace ) — Отображать в окне состояний текущий объект.


Группа - внешний вид

  • вычеркнуть ( cross ):
1 - найденный объект вычеркивается, оставаясь в списке(таблице);
число - найденный объект удаляется из списка;
  • листать ( scroll )
1 - список можно листать (скролировать);
число - ищутся только те объекты, которые видны в списке (таблице);
  • тип списка ( kind ) - Тип поиска объектов:
1 - слово;
2 - предложение;
3 - удаляемая пиктограмма;
4 - пиктограмма;
5 - поиск различий.
  • поиск пар ( pair ) - Если 1, то идет поиска пар объектов с одинаковым типом, иначе обычный режим
пары - поиск пар;
одиночные - поиск по одному объекту.

Группа - звуки

  • обычный ( sndNrm ) - Звук при нахождении обычного HiddenObject.
  • коллекционный ( sndCol ) - Звук при нахождении коллекционного HiddenObject(объекту должна быть установлена коллекция).


Группа - параметры поиска

  • объектов ( num ) - Максимальное количество доступных для поиска объектов в одной игровой сессии. (ВАЖНО!!! Таблице нужно установить общее количество ячеек равное(или больше) количеству доступных для поиска объектов).
  • активных объектов ( numact ) - Максимальное количество активных объектов в одной игровой сессии.
  • видимых объектов ( numvis) - Максимальное количество видимых объектов в одной игровой сессии.
  • одного типа ( max ):
число - Максимальное количество объектов одного типа - поле тип в hiddenObject или хидден объекты с одинаковыми текстовыми ID могут считаться объектами одного типа;
-1 - игнорируется.
  • прятать ( hide ) - Делать невидимыми объекты, не участвующие в поиске.
  • оставлять ( stay ) - Оставлять найденный объект на месте (вызывая только флаеры) при удачном клике.
  • актёр-иконка ( actorIco ) - если "да", то во время полёта найденного хидден-объекта вместо него летит иконка которая помечена как "main picture" и указана в текстовом id хидден-объекта.
  • актер ( actor ) - машина состояний, которая управляет процессом полета к таблице найденных HiddenObject .
  • целевой объект (trg) - Если задан, HiddenObject после нахождения летит не в ячейку таблицы, а к нему.


Группа - скорость

Отвечают за скорость перемещения найденного объекта.

  • полета ( vf ) - Скорость полета в пикселях в секунду.
  • вращения ( vr ) - Скорость вращения в градусах в секунду.

Дополнительные параметры

  • скалирование объектов ( scale_object ) - При нахождении во время полета объект будет скалироватся:
0 - отключено;
1 - включено.
  • пропадание объектов ( alpha_object ) - При нахождении во время полета объект будет менять альфу:
0 - отключено;
1 - включено.
  • реагировать на отпускание ( touch_up ) - Объекты связанные с этим хидденлистом будут реагировать на отпускание, а не на нажатие:
0 - отключено;
1 - включено (То есть реагировать на четкий клик, если кликнули и сместили область клика объект не реагирует!).
  • реагировать на finger tap ( finger_tap ) - Объекты, связанные с этим хидденлистом, будут реагировать на отпускание после ожидания даблтача.
  • задержка срабатывания ( touch_delay ) - только для реакции на нажатие. Время между нажатием и реакцией списка объектов.
  • объединять одинаковые тексты ( same_txt ) - Объекты с одинаковым текстом будут жить в одной ячейке таблицы с добавлением множителя xN.
0 - отключено;
1 - включено.
  • множитель для иконок ( ico_res ) - Графический ресурс(анимация) для отображения множителя у иконок для типа списка 4(поиск по иконкам) и включенного объединения одинаковых текстов. Первый фрейм - х2, второй - х3 и т.д.
  • исключать одинаковые тексты ( unTxtID ) - исключает или не исключает из поиска объекты с одинаковыми txtID, используется совместно с одного типа.
  • вероятность пассивного предпочитаемого объекта ( prefProb ) - вероятность выпадения пассивного объекта, если у объекта стоит параметр "предпочитаемый" используется при исключении объектов с одинаковыми текстовыми ID.
  • вероятность активного предпочитаемого объекта ( prefProbAct ) - вероятность выпадения активного объекта, если у объекта стоит параметр "предпочитаемый" используется при исключении объектов с одинаковыми текстовыми ID.
  • реагировать на невидимые ( canInvis ) - реагировать или нет на объекты, которые в момент игры не видны в таблице. (Кликаются только те hiddenObject которые отображены в таблице, остальные нет!).
  • распределять равномерно ( undist ) - Равномерно распределять объекты по площади сцены.
  • альтернативный алгоритм ( altern_algo ) - Использовать альтернативный алгоритм равномерного распределения (при включенном равномерном распределении).
  • прятать актеров при старте ( hideact ) - Устанавливать актерам видимость false при старте (по умолчанию - да)(То есть всем актерам которые находятся на сцене при запуске принудительно установиться vis = 0).
  • аномалия ( anom ) - для всех аномалий кроме текстовой HiddenObject и игровой фон должны быть подобъектами Effect):
0 - нет;
1 - текстовая;
2 - ночь; В машине которая выставляет эффект ночь, должны передавать сцене с объектом аномалия ( obj="scene"; par="drag"; val="0" ) и ( obj="scene"; st="update");
3 - трансформация цвета;
4 - дым.
  • флурри ( flurry ) - Нужно ли отправлять статистику флурри "regexp=":
0 - нет;
1 - да.
  • вероятность инверсии ( invProb ) - Вероятность того, что сцена будет перевернута по x;
  • набор ( kit ) - Набор, из которого берутся объекты.
  • поведение дифференсов (difbeh) - Поведение найденных объектов в режиме поиск отличий.


Группа - появление новых объектов

  • время ( acttm ) - Время появления объекта (мс);
  • начальный скейл ( actsc ) - Начальный скейл;
  • начальная альфа ( actal ) - Начальная альфа.


Группа - сессии

  • сессионность ( ses ):
0 - нет;
1 - да.
  • ограничение сессий ( sesLim ) - Максимальное количество сессий, в которые можно играть.
  • набор объектов ( sesSet ) - Набор объектов при заходе в хидден после последней сессии:
0 - случайный;
1 - последний фон;
2 - пустой.


Группа - цвета

  • Цвет обязательных ( c_forced ) — цвет текста для обязательных объектов, указывается код цвета, если строку не заполнять цвет не используется.
  • Цвет найденных ( c_found ) — цвет текста для найденных объектов, указывается код цвета, если строку не заполнять цвет не используется.
  • Время перехода ( c_time ) - Время изменения цвета.


Группа - время

  • игры ( tmGm ) - Общее время игры. Если оно истекает, идет переход на экран [время вышло] (см.ниже):
-1 - игнорируется;
число - время игры.
  • прерывать ( tmInt ):
1 - по окончанию времени игра будет прервана;
0 - по окончанию времени игра продолжится, но переход все равно будет на неудачную ветку.
  • паузы ( tmWt ) - Время перед закрытием окна после разбора (для осмысления результата);
  • полета актера ( tmActor ) - Время работы актера, после которого обрабатываются ячейки таблицы;
  • перед исчезновением ( tmWtHide ) - Время, в течение которого объект остается видимым после обработки.


Группа - ошибки

  • flyer при ошибке ( fl ) - обычно объект типа flyer (летуны которых надо показать в точке клика, если этот клик ошибочный). Можно в принципе любой объект который обладает состоянием "beg". Ошибочный клик - все клики мимо hiddenObject.
  • вычет времени при ошибке ( tmPen ) - Сколько отнять миллисекунд за ошибочный клик.


Группа - переход

  • при разборе ( scrOk ) - Экран на который надо перейти, если все объекты найдены.
  • время вышло ( scrOv ) - Экран на который надо перейти если время вышло, а не все объекты найдены.


Группа - система очков

  • Счетчик ( score_counter ) — счетчик, отображающий набранные очки.
  • счетчик (test) ( score_counter_test ) — счетчик, отображающий набранные очки.
  • ID пака ( pack_id ) — строковый идентификатор пака(для записи набранных очков в options должен быть заполнен); используется для вытаскивания суммарных очков в счетчики и дальнейшего их отображения.
  • ID игры ( game_id ) — строковый идентификатор игры (сцены).

Обязательно должен иметь префикс ID пака. Например, если pack_id = "pack1", то game_id = "pack1.game1".

  • мультипликатор очков ( scoreM ) — Мультипликатор очков за объект, если все собрано за отведенное время.
  • Очки ( score ) — количество очков, которые даются за каждый найденный hiddenObject.
  • Бонус за скорость ( bonusS ) — бонус за быстро найденный hiddenObject.
  • Бонусный интервал ( bonusT ) — время, за которое нужно найти hiddenObject для получения бонуса.
  • бонус за время ( bonusTime ) - бонус за оставшееся время игры = коэффициент который введем * оставшееся время таймера.
  • Бонусный мультипликатор ( grow ):
1 - умножать очки за второй быстро найденный предмет на 2, за третий на 3, и т. д.
0 - не умножать.
  • Количество кликов для штрафа ( wrngC ) — количество неверных кликов, после которых запустится блокатор (см. ниже).
  • Интервал для штрафа ( wrngT ) — время, за которое нужно совершить неверные клики.
  • Штраф (очки) ( delS ) — Сколько отнимаем очков за ошибочный клик.
  • Штраф (время) ( delT ) — Сколько отнимаем времени за ошибочный клик.
  • блокатор ( blockImg ) - Объект, блокирующий сцену при серии ошибочных кликов. (Обычно маска растянутая на весь экран. ДОЛЖНА иметь состояние "beg").
  • время блокировки ( blockTime ) - Время блокировки при серии ошибочных кликов по истечении переводит "блокатор" в состояние end.
  • порог touch move ( mvSens ) - Порог, начиная с которого движение пальца воспринимается как мув и сбрасываются неправильные клики.
  • touch move как штраф ( tchMvPen ) - Считать ли touch move за ложное попадание:
0 - нет;
1 - да.
  • клик на найденный как штраф ( clkFndPen ) - Считать ли клик на найденный объект за ложное попадание(актуально если объекты остаются на сцене).
  • аниматор очков ( scoreAnim ) - машина, которая анимирует полученные очки, должна иметь состояние anim.
  • коэффициент комбо ( cmbCoef ) - коэффициент для расчёта комбо очков по формуле s(n) = k * n * (n + 1).
  • счётчик очков за объект ( objScCnt ) - счётчик который показывает очки за последний полученный объект (учитывая бонусы).
  • счётчик комбо-очков ( cmbScCnt ) - счётчик очков полученных за комбо-серию.
  • счётчик комбо-серий ( cmbRwCnt ) - счётчик который показывает комбо-серию (комбо из 2-х, 3-х и т.д. найденных объектов).
  • комбо2 прогресс ( cmb2Pr ) - комбо2 прогресс;
  • комбо2 время ( cmb2Tm ) - комбо2 время;
  • комбо2 кол-во ( cmb2Num ) - комбо2 кол-во.
  • очки 3.0 (score30) - Использовать систему очков, придуманную Степановым в августе 2015.
  • очки 3.0 коэф. комбо (score30lc) - в конце комбо даем за него очков n * s * l * (n-1) - где n число предметов в комбо, s - очки за один предмет, l - этот коэффициент
  • очки 3.0 коэф. аккуратности (score30la) - в конце игры начисляем очки за точность по формуле s * la / (1 + Nmiss / N)
  • очки 3.0 коэф. времени 1 (l) (score30lt) - в конце игры начисляем очки за время по формуле s * lt / (1 + T / (tt * N))
  • очки 3.0 коэф. времени 2 (t) (score30tt) - в конце игры начисляем очки за время по формуле s * lt / (1 + T / (tt * N))


Группа - звезды

  • combo num ( comboNum ) - Количество быстро найденных объектов, нужное для получения звезды Combo.
  • combo time ( comboInt ) - Интервал между кликами, считающимися быстрыми для Combo.
  • accuracy ( accuracy ) - Точность кликов для получения звезды Accuracy (1 = 100%, все клики должны быть только удачные).
  • лимит ложных кликов ( starWrAcc ) - Лимит ложных кликов.

Формула расчета проста, количество верных кликов делим на общее количество получаем коэффициент если он равен или больше указного нами то в опции пишем параметр, если нет то не пишем.

Параметры бота и мультиплеера

Группа - Хидден бот

  • тип бота - тип бота:
нет - обычная одиночная игра, бот выключен;
на одном поле - игра с ботом на одном поле, у обоих одинаковый список предметов;
с маленьким полем - бот будет играть на отдельном поле (??????);
горячий стул - hotsit, игра двух живых игроков на одном девайсе, передача хода по очереди;
мультиплеер - игра через сервер с живым оппонентом;
  • файл уровня - xml файл с настройками сложности бота (пример);
  • номер уровня - номер уровня в файле (начиная с 0);
  • номер уровня max - если задан больше предыдущего номера - выбирается рандомное значение;
  • multiplayer - объект мультиплеера;
  • кнопка хинта - кнопка хинта для 2го игрока \ бота;
  • проверять интернет - проверять интернет при игре с ботом (так же, как при игре с живым игроком);
  • первый ход (вероятность) - вероятность первого хода игрока при игре с ботом (в процентах);
  • t min abs ms - самая минимальная задержка между ходами бота;
  • t1 min ms - минимальное время для быстрого нахождения предмета ботом;
  • t1 max ms - максимальное время для быстрого нахождения предмета ботом;
  • t1 prob % - вероятность быстрого нахождения предмета ботом;
  • t2 min ms - минимальное время для нахождения предмета ботом;
  • t2 max ms - максимальное время для нахождения предмета ботом;
  • t coef delta - коэффициент сложности (кажется от -1 до 1, могу ошибаться);
  • t wrong min ms - минимальное время между ложными кликами (мимо объекта) бота;
  • t wrong max ms - максимальное время между ложными кликами бота;
  • bot hint chance (percent) - шанс бота использовать хинт (в процентах);
  • bot hint num - максимальное кол-во использования хинтов ботом на игру;
  • доп. поле x - координаты доп. поля по Х;
  • доп. поле y - координаты доп. поля по Y;
  • доп. поле sx - масштаб доп. поля;
  • доп. поле sy - масштаб доп. поля;
  • указатель хода - указатель хода бота\оппонента. Должен иметь состояние beg и находитсья в сцене с хидденами;
  • родитель - родитель, в который поместим клонированную сцену (доп. поле);
  • счетчик очков бота - счетчик, выводящий очки;
  • счетчик без бонусов бота - счетчик, выводящий очки без бонусов за время и точность;
  • комбо2 прогресс бота - комбо2 прогресс;
  • аниматор очков бота - машина, которая при нахождении хиддена анимирует полученные очки;
  • счетчик очков за объект бот - счетчик, выводящий очки за объект;
  • счетчик комбо-серий (макс) бот - счетчик, выводящий макс. количество комбо-серий;
  • счетчик комбо-серий (тек) бот - счетчик, выводящий текущее количество комбо-серий;
  • flyer при ошибке - объект типа flyer который надо показать в точке клика, если этот клик ошибочный;
  • таймер хода бота - таймер хода бота;
  • таймер хода игрока - таймер хода игрока;
  • длительность хода ms - длительность хода игрока \ бота. Если задан 0 - игроки ходят одновременно;
  • длительность паузы между ходами ms - длительность паузы при смене хода игрока\бота.

Настройка сложности бота

Файл уровней для хидден-бота должен иметь такую структуру:

  <bots>
    <obj id="0">
      <bot weight="3" t1min="1000" t1max="2000" t1percent="15" t2min="3000" t2max="21000" twrongmax="10000" />
      <bot weight="1" t1min="1000" t1max="2000" t1percent="15" t2min="3000" t2max="5000" twrongmax="10000" />
    </obj>
    <obj id="1">
      <bot weight="1" t1min="1000" t1max="2000" t1percent="10" t2min="10000" t2max="25000" twrongmax="10000" />
      <bot weight="1" t1min="1000" t1max="2000" t1percent="15" t2min="3000" t2max="7000" twrongmax="10000" />
    </obj>
    <obj id="2">
      <bot weight="1" t1min="1000" t1max="2000" t1percent="10" t2min="7000" t2max="21000" twrongmax="10000" />
      <bot weight="2" t1min="1000" t1max="2000" t1percent="15" t2min="3000" t2max="5000" twrongmax="10000" />
    </obj>
  </bots>
  • bots - основной таг
  • obj > id - номер уровня
  • bot - содержит те же параметры, что и настройки бота в хидден листе

Состояния

Состояния которые есть у листа. Мы можем передавать их с помощью различных объектов:

  • invert - горизонтально отображает изображение;
  • run - переводит хидден с состояние активности, если до этого был на паузе;
  • pause -переводит хидден с состояние паузы, объекты не кликаются!

Примечания

  • HiddenList должен располагаться в дереве проекта ниже всех своих поисковых объектов.
  • Единственный обязательный объект о котором должен знать лист это Table для отображения списка поиска, даже если таблица не будет использоваться быть все равно должна!
  • После завершения хидден-игры (по разбору или по времени)при переходе на другой экран HiddenList записывает данные в опции в два места: первое - это то, которое указано у настройках (ID пака, ID уровня, тип списка), для каждой локации свое; а второе - это last_game.

Например,
last_game.time_spent (либо же pck_N.lvl_N.kind_N.time_spent) - время последней игры,
last_game.clicks (либо же pck_N.lvl_N.kind_N.clicks) - количество найденных объектов и т.д.
Все их можно увидеть в опциях. last_game был придуман для того, чтобы было удобно задавать счетчики в окне результатов. Также эти данные могут быть сохранены в опциях, если задать листу состояние wait.

  • Для проверки кликабельности хидденобъектов можно воспользоваться следующими настройками в app.icf:
[GHiddenList]
HitTest=0
HitTestDx=1 - шаг по х
HitTestDy=1 - шаг по y

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

Добавляемые параметры

+.png появляется новый объект: изменить состояние объекта ( actst ):

объект ( obj ) - Объект, состояние которого нужно изменить;
состояние ( st ) - Новое состояние объекта.
HOList 3.jpg

+.png разбор: если был экран ( wscrOk ) - При нахождении всех объектов, переходим на определенный экран, если некоторый экран был уже хотя бы раз посещен:

был экран ( was ) - Экран, который мы проверяем на то, был ли он уже открыт хотя бы один раз;
перейти на ( scr ) - Переходим на этот экран, если экран из предыдущего поля уже открывался.

+.png разбор: изменить состояние объекта ( nstOk ) - При нахождении всех объектов, перевести объект в новое состояние:

объект ( obj ) - Перевести объект в состояние из следующего поля;
состояние ( st ) - Новое состояние для объекта из предыдущего поля.

+.png разбор: изменить параметр объекта ( chgOk ) - При нахождении всех объектов, изменить параметр объекта:

объект ( obj ) - этот объект меняет свой параметр;
свойство ( par ) - Параметр, который мы изменяем;
значение ( val ) - Новое значение параметра.

+.png не успел: если был экран ( wscrOv ) - Если вышло время, а объекты не найдены, переходим на определенный экран, если некоторый экран был уже хотя бы раз посещен:

был экран ( was ) - Экран, который мы проверяем на то, был ли он уже открыт хотя бы один раз;
перейти на ( scr ) - Переходим на этот экран, если экран из предыдущего поля уже открывался.

+.png не успел: изменить состояние объекта ( nstOv ) - Если вышло время, а объекты не найдены, перевести объект в новое состояние:

объект ( obj ) - перевести объект в состояние из следующего поля;
состояние ( st ) - Новое состояние для объекта из предыдущего поля.

+.png не успел: изменить параметр объекта ( chgOv ) - Если вышло время, а объекты не найдены, изменить параметр объекта:

объект ( obj ) - этот объект меняет свой параметр;
свойство ( par )- Параметр, который мы изменяем;
значение ( val ) - Новое значение параметра.

+.png счетчик очков ( scoreCnt ):

счетчик ( cnt ) - Каунтер, которому приходят очки.

+.png группа extra bonus ( extraBonus ). Используется для economics, при нахождении объекта с некой вероятностью может выпасть бонус. Объект который анимирует появление бонуса должен иметь состояние show, время на анимацию бонуса - 10 секунд:

монетки объект ( coinsObj ) - объект который анимирует получение монет;
монетки вероятность ( coinsProb ) - вероятность по нахождению объекта получить дополнительно монетки;
опыт объект ( expObj ) - объект который анимирует получение опыта;
опыт вероятность ( expProb ) - вероятность по нахождению объекта получить дополнительно опыт;
энергия объект ( energyObj ) - объект который анимирует получение энергии;
энергия вероятность ( energyProb ) - вероятность по нахождению объекта получить дополнительно энергию.

+.png Объект, который срабатывает, если долго не находить хидден ( notfnd ):

объект ( obj ) - Объект, который переводится в указанное состояние, если долго не находить хидден;
состояние ( st ) - Состояние, в которое переводится объект;
время ( tm ) - Время от последнего нахождения хиддена, после которого срабатывает объект.

+.png параметры аномалии с исчезновением букв ( hlPars ):

оставшиеся буквы ( min ) - Минимальное количество оставшихся букв в предложении;
задержка ( wait ) - Момент времени, начиная с которого аномалия будет проявляться;
задержка 2 ( wait2 ) - Задержка для появившихся слов, изначально недоступных;
время ( time ) - Время, за которое должны исчезнуть все буквы (если -1, то до конца времени в хиддене);
промежутки ( dt ) - промежутки времени между каждой итерацией;
флайер ( fl ) - Флайер, анимирующий исчезающую букву (должен иметь текстовый тип).

+.png параметры аномалии ночь ( nightPars ):

effect ( ef ) - эффект, управляющий трансформацией цвета;
tag ( eftag ) - Тег эффекта, реализующего ночь.

+.png параметры аномалии трансформации цвета ( colInvPars ):

effect ( ef ) - Эффект, управляющий трансформацией цвета;
tags ( eftags ) - Теги эффектов, реализующих трансформацию цвета, из которых будет выбран один.

+.png параметры аномалии дым ( smokePars ):

effect ( ef ) - Машина, управляющая эффектом дыма;
tag ( eftag ) - Тег эффекта, реализующего дым.

Все аномалии кроме текстовой должны быть настроены с помощью объекта Effect

Get Started

Минимальный набор ресурсов:

  • Фоновая картинка для поисковой сцены
  • Комплект картинок, с которых будут сделаны поисковые объекты
  • Текстовые объекты для идентификации спрятанных объектов

Минимальный набор объектов редактора:

  • Image который будет изменен в хидден-лист
  • Таблица в которой будут отображаться тексты/картинки (зависит от режима) спрятанных объектов.
  • По одному Image для каждого спрятанного объекта (будут созданы автоматически при добавлении картинок из базы ресурсов на сцену)

Наши действия:

  1. откроем редактор сцен и создадим новый проект,
  2. добавим новый экран с именем scrHList
  3. создадим в этом экране сцену stgHList
  4. перейдём в редактор ресурсов
    1. создаём папку HList
    2. добавим в ней картинку для фона и картинки для спрятанных объектов.
    3. выделим все картинки в дереве ресурсов и перенесем их на нашу сцену stgHList, при этом для каждой картинки автоматически создастся объект Image.
    4. закроем редактор ресурсов
  5. перейдём в редактор текстов
    1. создаём папку HListText
    2. добавим в нее текстовые объекты, по одному на каждый поисковый объект.
    3. сохраним внесенные изменения.
  6. перейдём в редактор сцен.
  7. создадим в сцене stgHList объект Table и назовем его HOT
    1. настроим размер и положение таблицы, согласно нашего дизайна
    2. установим параметры колонок = "50", колонок видно = "5", строчек = "5", строчек видно = "1" (таким образом в таблице будут отображаться 5 поисковых предметов, а максимальное количество объектов для поиска будет равно 250)
    3. установим параметры скорость листания = "650", добавлять по строкам = "0", центрировать = "растянуть", сдвигать ячейки при удалении ="да"
  8. создадим в сцене stgHList объект HiddenList, напоминаем что его размер и положение на сцене не имеют значения, по этому расположим его где-нибудь за границей экрана.
    Важно В дереве проекта хидден-лист должен быть ниже всех своих поисковых объектов.
    1. в поле таблица указываем нашу HOT
    2. установим параметр объектов = "10"
    3. установим параметр пропадание объектов = "да"
    4. установим параметр реагировать на отпускание = "да"
    5. установим параметр реагировать на невидимые = "нет"
    6. установим параметр набор = "1"
  9. Настроим объекты, которые будут прятаться. Для этого выделим картинки поисковых объектов, добавленные нами ранее, и изменим им тип на "hiddenObject". Оставляя группу этих объектов выделенной, настроим им параметры:
    1. в поле list укажем наш HiddenList
    2. параметр набор = "1"
    3. Теперь снимаем выделение и каждому объекту в поле текстID перетаскиваем мышкой соответствующий текстовый объект из текстовой базы (поле текстID должно быть активно для редактирования - по нему нужно кликнуть мышкой)
  10. сохраним проект
  11. запустим вьювер

Динамический HG

Функционал позволяет генерировать HL самостоятельно HO объекты из файла конфига.

П.С. - вся графика д.б. динамической. Данные файлы может создавать HO_Manager ( http://wiki/index.php/HO_Manager )

D485ecbbbb.jpg
  • файл уровня ( configFile) — указываем путь к файлу конфигу, где перечисляем файлы с HG.
  • список графических ресурсов — служебное, пока не используется;
  • список текстовых ресурсов — служебное, пока не используется;
  • номер уровня ( hiddenLevelNum ) — номер уровня из файла;
  • образец хиддена ( hiddenTemplate ) — obj_id HO объект, должен иметь нужные параметры (остальные возьмутся из конфига) ;
  • образец нашлёпки ( hiddenPatchTempl ) — obj_id нашлёпки на HO объект, должна иметь нужные параметры (остальные возьмутся из конфига);
  • корневой объект ( hiddenRoot ) — obj_id корневого объект в который сложим всех клонов;
  • точечный спецэффект ( hiddenEffect ) — ;
  • фоновый объект ( hiddenBG ) — obj_id объекта которому поменяем ресурс;

Требования, вся графика HO,BG отрисовывается без учёта пивоты;

Файлы конфиги имеют вид: Файл уровня имеет вид:

  {
     "levels": [
        {
           "file": "ViewerFiles/DynHid/hidden0.cfg"
        }
     ],
     "bg": [
        {
           "src": "bg.png",
           "id": 356
        }
     ]
  }
Где "levels" - линки на файлы уровней.
"file" - путь к файлу;
"bg" - данные о фонах, для каждого файла уровня
"src" - сорс графического ресурса;
"id" - id ресурса из ресурсной базы;


Файл конкретного уровня имеет вид:

  {
     "bg": {
        "src": "bg.png",
        "w": 2048,
        "h": 1151,
        "color": "#ffffff",
        "tile": ""
     },
     "hiddens": [
        {
           "id": 1022,
           "nm": "bucket_01",
           "res": 129,
           "bg": 666,
           "rect": {
              "x": 1393,
              "y": 653,
              "w": 115,
              "h": 137
           },
           "objs": [{
              "res": 1488,
              "rect": {
                 "x": 1393,
                 "y": 653,
                 "w": 115,
                 "h": 137
              }
           }],
        }, 
        {
           "x": 1537,
           "y": 409,
           "id": 1023,
           "res": 329,
           "nm": "bucket_02",
           "rect": {
              "x": 1493,
              "y": 366,
              "w": 81,
              "h": 87
           }
        }
     ]
  }
Где "bg" - настройки фона.
"src" - сорс графического файла в ресурсной базе;
"color" - цвет которым будет залито под фоном, нужное если фон имеет дырки;
"tile" - тайлинг фона;
"hiddens" - перечень HO с их настройками
"id" - TxtId;
"nm" - имя HO;
"res" - графический ресурс HO;
"bg" - графический ресурс тени;
"rect" - настройки "res";
"x" - координата x, в координатах корневого объекта;
"y" - координата y, в координатах корневого объекта;
"w" - ширина;
"h" - высота;
"objs" - перечень нашлёпок;
"res" - графический ресурс нашлёпки;
"rect" - настройки графического ресурса нашлёпки;
"x" - координата x, в координатах HO;
"y" - координата y, в координатах HO;
"w" - ширина;
"h" - высота;

Авто тест HL

Для запуска автотеста, нам нужно указать в app.icf параметры:

[GHiddenList]

HitTest - мода автотеста; (0- выкл.; 1 - разовая логика, пишется в файл раз в сессию для одного хидден листа ; 2 - при каждом init любого хидн листа дописывается статистика в файл);
HitTestDx = 5 - шаг с которым проходит автокликер по X;
HitTestDy = 5 - шаг с которым проходит автокликер по Y;

Для HitTest==2, очень помогает параметр "allow_background". Остаётся только написать скриптулину, которая ходит сама между экранами.

Пример

S:\!MOBILE\!!!EditorGames\Wiki_sample

HiddenList.rar