Pipes

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

Pipes - объект, который обладает механикой сбора трубопровода (микросхемы и т.п.) путем поворота отдельных элементов . Объект реализован в виде матрицы, каждая ячейка которой содержит вращающийся элемент. При инициализации объекта pipes все его элементы (ячейки) случайным образом поворачиваются, разрывая соединение входа и выхода. Каждый клик на элемент поворачивает его по часовой стрелке на 90 градусов. Игра считается завершенной, если между входом и выходом трубопровода образуется цепь правильно повернутых элементов.

Общие параметры (см. описание Object)

  • положение - координаты левого верхнего угла игрового поля по оси x и y;
  • размер - ширина и высота одной ячейка трубопровода.

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

Pipes 0.jpg

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

  • картинка - анимация, состоящая из элементов трубопровода начиная с пустого, перетаскивается мышкой из базы ресурсов;
  • колонок - количество ячеек с элементами по горизонтали;
  • строчек - количество ячеек с элементами по вертикали;
  • время поворота - время поворота элемента в миллисекундах.

Группа - 'внешний вид - эффект луча':

  • прямая (|) - Графический ресурс луча проходящего через ячейку по прямой вертикально (соотв. кадру 1);
  • угол - Графический ресурс луча проходящего через ячейку с зеркалом (соотв. кадру 2);
  • крест - Графический ресурс луча проходящего через ячейку с зеркалом (соотв. кадру 4,5);


Все кадры анимации, указанной в поле картинка, должны быть одного размера. Последовательность кадров в анимации должна строго соответствовать приведенной на рисунке ниже: right‎

  • Нулевой кадр - пустой;
  • Первый кадр - прямой элемент с двумя соединениями на верхней и нижней гранях;
  • Второй кадр - изогнутый элемент с двумя соединениями на правой и нижней гранях;
  • Третий кадр - тройник с соединениями на правой, нижней и левой гранях;
  • Четвертый кадр - крестик с соединениями на всех четырех гранях;
  • Пятый кадр - пересечение двух прямых не совмещенных элементов (верхнее и нижнее соединения относятся к одному элементу, правое и левое ко второму);
  • Шестой кадр - два изогнутых не совмещенных элемента (правое и нижнее соединения относятся к одному элементу, верхнее и левое ко второму).

Группа - вход:

  • x - номер столбца ячейки, с которой будет начинаться трубопровод, нумерация начинается с 0 и следует слева направо;
  • y - номер строка ячейки, с которой будет начинаться трубопровод, нумерация начинается с 0 и следует сверху вниз;
  • грань - номер грани ячейки элемента, которая считается входом (если отправной точкой является верхняя грань, то значение поля 0, правая грань - 1, нижняя - 2, левая - 3).

Группа - выход:

  • x - номер столбца ячейки, которой будет заканчиваться трубопровод, нумерация начинается с 0 и следует слева направо;
  • y - номер строка ячейки, которой будет заканчиваться трубопровод, нумерация начинается с 0 и следует сверху вниз;
  • грань - номер грани ячейки элемента, которая считается выходом (верхняя грань - значение 0, правая - 1, нижняя - 2, левая - 3).

Группа - настройки уровня:

  • Расклад - "рисунок" собранного уровня в виде массива пар чисел через запятую, например, 1,0,0,0,2,3,.. и т.д. Каждая пара чисел описывает один элемент (ячейку), первое число в паре - номер кадра анимации, который будет рисоваться в ячейке, второе число - угол поворота этого кадра (0 - без поворота, 1 - поворот на 90 по часовой стрелке, 2 - поворот на 180 по часовой, 3 - поворот на 270 по часовой). Элементы описываются построчно, начиная с левого верхнего. Для пустых ячеек первое число в паре - 0 (начальный пустой кадр анимации).
  • файл уровней - Путь к файлу с описанием уровней;
  • номер уровня - Номер уровня.

Проверка висячих - 1- не считать уровень пройденным, если у присоединенного ко вхожу узла есть свободные соединения нет=0, да=1";

вращать кресты - условие сбора уровня, принимает значение 0 или 1. 1-крестообразные ячейки будут вращаться, 0-не будут (речь идет о кадрах 4 и 5, эффекта такое вращение в любом случае не дает нет=0, да=1".

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

Pipes 1.jpg

Меню выбора Добавляемые параметры к объектам активируется по правой кнопки мыши.

+.png Вход в трубопровод (используется, если входов больше одного):

  • x - номер столбца ячейки, с которой будет начинаться трубопровод;
  • y - номер строка ячейки, с которой будет начинаться трубопровод;
  • грань - номер грани ячейки элемента, которая считается входом.

+.png Выход из трубопровода (используется, если выходов больше одного):

  • x - номер столбца ячейки, которой будет заканчиваться трубопровод;
  • y - номер строка ячейки, которой будет заканчиваться трубопровод;
  • грань - номер грани ячейки элемента, которая считается входом.

+.png Фишка повернута правильно:

  • объект - объект, который перейдет в новое состояние, если элемент трубопровода повернуть правильно;
  • состояние - новое состояние объекта из предыдущего поля.

+.png Изменить состояние объекта:

  • объект - объект, который перейдет в новое состояние по собиранию pipes;
  • состояние - новое состояние объекта из предыдущего поля.

+.png Изменить параметр (свойство) объекта:

  • объект - объект, которому будет меняться параметр по собиранию pipes;
  • параметр - изменяемый параметр;
  • значение - новое значение параметра.

Состояния

Объекту pipes можно передавать следующие состояния:

  • init - элементы трубопровода поворачиваются произвольным образом, разрывая соединение входа с выходом;
  • skip - каждый элемент поворачивается в положение указанное в поле расклад за время поворота, после чего pipes считается собранным, и устанавливаются добавляемые параметры, если они есть.
  • hide_effect - выключает отображение луча, для включения нужно или переинитить объект или нажать на любую ячейку(кроме ячеек с 4 и 5 фреймом).

Файл уровней

Важно! После экспорта файл уровней нужно поместить в папку к layout.xml. Иначе он не попадет в сборку и на устройстве игра работать не будет!

Для объекта можно задать несколько уровней, с помощью xml-файла. При этом поле "расклад" в самом объекте должно быть пустым, иначе будет грузиться уровень, прописанный в этом поле.

Пример файла уровней:

<?xml version="1.0" encoding="UTF-8"?>

<levels>

<level id="0"  field="2,0,5,0,2,1,5,0,5,0,2,0,5,0,2,0,5,0,5,0,2,1,5,0,2,2,2,3,5,0,5,0,5,0,
5,0,5,0,2,0,5,0,2,0,5,0,2,0,2,0,5,0,2,3,5,0,2,2,5,0,5,0,2,0,2,0,5,0,2,0,5,0" 
fixed="12,0" />

<level id="1"  field="2,0,5,0,2,0,5,0,5,0,2,1,5,0,2,0,5,0,5,0,2,1,5,0,5,0,2,2,5,0,5,0,5,0,
2,3,5,0,2,1,5,0,2,1,5,0,2,0,2,2,5,0,2,3,5,0,2,2,5,0,5,0,2,1,2,1,5,0,2,0,5,0"
fixed="13,0" />

<level id="2"
field="5,0,5,0,2,0,5,0,5,0,2,1,5,0,2,0,5,0,5,0,5,0,2,2,5,0,2,2,5,0,5,0,2,0,5,0,5,0,5,0,5,0,
2,2,5,0,2,2,2,0,5,0,2,3,5,0,2,2,5,0,5,0,5,0,2,1,5,0,2,1,5,0"
fixed="13,0" />
</levels>
  • level id - номер уровня
  • field - описание игрового поля
  • fixed - ячейки с заданным начальным положением

В параметре field описываем конфигурацию собранного расклада игры. Отдельная ячейка описывается 2 числами: 1 - тип фишки(номер фрейма в анимации); 2 - угол поворота по часовой стрелке(возможные значения: 0, 1, 2, 3).

В параметре fixed описываем ячейки с заданным начальным углом. Ячейка описывается 2 числами: 1 - номер ячейки на поле(нумерация идет с левого верхнего угла, начинается с 0); 2 - начальный угол поворота по часовой стрелке(возможные значения: 0, 1, 2, 3).

Для смены уровня в объекта нужно изменить параметр level_id и вызвать состояние init.

Вариант игры: прохождение луча

Pip1.png

В объект был добавлен функционал, который позволяет сделать миниигру, цель которой - провести луч с точки А в точку Б используя систему зеркал.

Для такого вида труб тоже нужна фреймовая анимация из 7 кадров. 6 из них - пустые кадры (рационально добавить в анимацию 1 пустой кадр и его раскопировать для нужных фреймов) и кадр для отображения зеркала, которое можно вращать(2 фрейм анимации). Также для корректной работы нужно выставить параметр "вращать кресты" в "нет" - это запретит вращать ячейки с 4 и 5 фреймом анимации труб.

Игровое поле набирается только ячейками с 2 и 5 фреймом: 2 фрейм - ячейка с зеркалом, 5 фрейм - через которую проходит луч. Пример уровня:

 "2,0,5,0,2,1,5,0,5,0,2,0,5,0,2,0,5,0,5,0,2,1,5,0,2,2,2,3,5,0,5,0,5,0,5,0,
 5,0,2,0,5,0,2,0,5,0,2,0,2,0,5,0,2,3,5,0,2,2,5,0,5,0,2,0,2,0,5,0,2,0,5,0" 
Pip3.png

Уровень можно указать 2 способами:

  1. в поле "расклад" объекта pipes, при этом файл уровней игнорируется
  2. с помощью файла уровней

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

Графика для отображения эффекта прохождения луча добавляется в вкладке "внешний вид - эффект луча". В ней указываем 3 графических ресурса:

Pip2.png
  • прямая (|) - ресурс для отображения луча проходящего через ячейку(вертикальная прямая, как на 1 кадре анимации для обычных труб)
  • угол - ресурс для отображения луча, который отражается зеркалом(должен быть аналогичен 2 кадру для анимации труб)
  • крест - ресурс для отображения 2 лучей, которые пересекаются (аналогичен 5 кадру анимации для труб)

При передаче объекту состояния skip, он отрабатывает следующим образом:

  1. выключается луч
  2. ячейки разворачиваются в правильную позицию
  3. включается луч

Также объекту можно передать состояние hide_effect, которое выключает отображение луча. После этого луч включится или при повороте любого зеркала или при передаче объекту init.

Пример: S:\!MOBILE\!!!EditorGames\Wiki_sample

Файл: pipes_light.zip

Примечания и дополнения

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

Трубопровод может иметь несколько входов и выходов. Линия, которая строится при этом, должна соединять в одну сеть все входы и выходы (возможность ставить в соответствие каждому входу свой выход пока не реализована).

Пример

Download