Pipes — различия между версиями

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск
(Параметры объекта Pipes)
(Файл уровней)
 
(не показано 39 промежуточных версий 5 участников)
Строка 1: Строка 1:
== Трубопроводы (микросхемы) ==
+
{{TOC right}}
 +
[[Файл:Sc_Bed_Times.jpg|200px|right]]
  
===Общее Описание ===
+
Pipes - [[Object|объект]], который обладает механикой сбора трубопровода (микросхемы и т.п.) путем поворота отдельных элементов . Объект реализован в виде матрицы, каждая ячейка которой содержит вращающийся элемент. При инициализации объекта pipes все его элементы (ячейки) случайным образом поворачиваются, разрывая соединение входа и выхода. Каждый клик на элемент поворачивает его по часовой стрелке на 90 градусов. Игра считается завершенной, если между входом и выходом трубопровода образуется цепь правильно повернутых элементов.
  
*На поле находится регулярная квадратная  решетка.
+
'''Общие параметры'''
В ячейках поля находятся  фишки, каждая из сторон которых имеет или не имеет вход. Входы связываются  при помощи однозначно заданных линий. При пересечении линии могут быть как связанными, так и не связанными между собой. Фишки располагаются на поле случайным образом.
+
(см. описание [[Object|Object]])
* Используются фишки с таким возможным расположением линий.
 
  
 +
*'''положение''' - координаты левого верхнего угла игрового поля по оси x и y;
 +
*'''размер''' - ширина и высота одной ячейка трубопровода.
  
[[Файл:Трубы_Fishky.jpg‎]]
+
== Основные параметры ==
  
<div class="tleft" style="clear:none">[[Файл:0.png|150px|frame|0]]</div>
+
[[Файл:Pipes_0.jpg|200px|right]]
<div class="tleft" style="clear:none">[[Файл:1.png|150px|frame|1]]</div>
+
'''Группа - внешний вид''':
<div class="tleft" style="clear:none">[[Файл:2.png|150px|frame|2]]</div>
 
<div class="tleft" style="clear:none">[[Файл:3.png|150px|frame|3]]</div>
 
<div class="tleft" style="clear:none">[[Файл:4.png|150px|frame|4]]</div>
 
<div class="tleft" style="clear:none">[[Файл:5.png|150px|frame|5]]</div>
 
<div class="tleft" style="clear:none">[[Файл:6.png|150px|frame|6]]</div>
 
  
[[Файл:Анимация2.png|500px]]
+
*'''картинка''' - анимация, состоящая из элементов трубопровода начиная с пустого, перетаскивается мышкой из базы ресурсов;
 +
*'''колонок''' - количество ячеек с элементами по горизонтали;
 +
*'''строчек''' - количество ячеек с элементами по вертикали;
 +
*'''время поворота''' - время поворота элемента в миллисекундах.
  
 +
'''Группа - 'внешний вид - эффект луча'''':
  
*Графика фишек, подгружаемых в игру, должна представлять из себя папку с пронумерованными файлами. Ресурс фишек - '''анимация, каждый кадр которой должен представлять из себя фишку с определенным количеством  входов, выходов и соединяющих их линий, а также все ресурсы фишек должны иметь абсолютно одинаковый размер.'''.
+
*'''прямая (|)''' - Графический ресурс луча проходящего через ячейку по прямой вертикально (соотв. кадру 1);
'''Важно то, что порядок кадров анимации должен быть всегда выдержан в соответствии с приведенными рисунками.'''
+
*'''угол''' - Графический ресурс луча проходящего через ячейку с зеркалом (соотв. кадру 2);
 +
*'''крест''' - Графический ресурс луча проходящего через ячейку с зеркалом (соотв. кадру 4,5);
  
*Кроме того,  на поле задаются  ячейки с началом и концом трубопровода.Поле при этом  имеет вид
 
  
 +
Все кадры анимации, указанной в поле ''картинка'', должны быть одного размера. Последовательность кадров в анимации должна строго соответствовать приведенной на рисунке ниже:
 +
[[Файл:Трубы_Fishky.jpg|300px|right‎]]
 +
* ''Нулевой кадр'' - пустой;
 +
* ''Первый кадр'' - прямой элемент с двумя соединениями на верхней и нижней гранях;
 +
* ''Второй кадр'' - изогнутый элемент с двумя соединениями на правой и нижней гранях;
 +
* ''Третий кадр'' - тройник с соединениями на правой, нижней и левой гранях;
 +
* ''Четвертый кадр'' - крестик с соединениями на всех четырех гранях;
 +
* ''Пятый кадр'' - пересечение двух прямых не совмещенных элементов (верхнее и нижнее соединения относятся к одному элементу, правое и левое ко второму);
 +
* ''Шестой кадр'' - два изогнутых не совмещенных элемента (правое и нижнее соединения относятся к одному элементу, верхнее и левое ко второму).
  
[[Файл:Sc_Bed_Times.jpg|500px]]
+
'''Группа - вход''':
 +
 
 +
*'''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|200px|right]]
 +
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши.
 +
 
 +
[[Файл:+.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" />
 
   
 
   
[[Файл:Безымянный.png|500px]]
+
<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|200 px|thumb|right]]
 +
В объект был добавлен функционал, который позволяет сделать миниигру, цель которой - провести луч с точки А в точку Б используя систему зеркал.
  
=== Параметры объекта Pipes ===
+
Для такого вида труб тоже нужна фреймовая анимация из 7 кадров. 6 из них - пустые кадры (рационально добавить в анимацию 1 пустой кадр и его раскопировать для нужных фреймов) и кадр для отображения зеркала, которое можно вращать(2 фрейм анимации). Также для корректной работы нужно выставить параметр "вращать кресты" в "нет" - это запретит вращать ячейки с 4 и 5 фреймом анимации труб.
  
Для создания объекта '''pipes'''  необходимо создать любой безресурсный объект и выбрать для него из раздела '''Game mechanic''' тип '''pipes'''.  
+
Игровое поле набирается только ячейками с 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"
  
[[Файл:Создание.png|250px]] [[Файл:Характеристики.png|250px]]
+
[[Файл:Pip3.png|thumb|right]]
 +
Уровень можно указать 2 способами:
 +
# в поле "расклад" объекта pipes, при этом файл уровней игнорируется
 +
# с помощью файла уровней
 +
При использовании файла уровней есть возможность принудительного задания начального положения фишки, что может быть нужно для получения корректного начального отображения.
  
Кроме общих для всех параметров "положение" и "размер" необходимо задать параметры непосредственно для объекта pipes.
+
Графика для отображения эффекта прохождения луча добавляется в вкладке "внешний вид - эффект луча". В ней указываем 3 графических ресурса:
(У объекта Pipes нет отображения его положения на экране, поэтому для определения его места и правильного расположения в игре необходимо делать его подобъектом какой то машины, размер объекта задаётся количеством его колонок и строк)
+
[[Файл:Pip2.png|thumb|right]]
Память должна стоять "1" если надо что-бы игра не переигрывалась после каждого разбора.
+
* ''прямая'' (|) - ресурс для отображения луча проходящего через ячейку(вертикальная прямая, как на 1 кадре анимации для обычных труб)
 +
*''угол'' - ресурс для отображения луча, который отражается зеркалом(должен быть аналогичен 2 кадру для анимации труб)
 +
*''крест'' - ресурс для отображения 2 лучей, которые пересекаются (аналогичен 5 кадру анимации для труб)
  
'''ВНЕШНИЙ ВИД'''
+
При передаче объекту состояния skip, он отрабатывает следующим образом:
*'''картинка''' -  в это поле из редактора ресурсов перетаскивается анимация,  кадрами которой являются изображения фишек в заданной последовательности,
+
# выключается луч
*'''колонок''' - здесь задается число колонок поля,  
+
# ячейки разворачиваются в правильную позицию
*'''строчек''' - здесь задается число строчек поля,
+
# включается луч
*'''время поворота''' -  время поворота фишки вокруг центра ячейки,
 
  
Ячейки имеют нумерацию (0;0), (0;1), (0;2), (0;3),(0;4), (0;5), (0;6), (0;7).... - в строке,
+
Также объекту можно передать состояние hide_effect, которое выключает отображение луча. После этого луч включится или при повороте любого зеркала или при передаче объекту init.
и (0;0), (1;0), (2;0), (3;0),(4;0), (5;0), (6;0), (7;0).... - в столбце,
 
  
[[Файл:Ячейки2.png|250px]]
+
Пример: S:\!MOBILE\!!!EditorGames\Wiki_sample
  
'''ВХОД'''
+
Файл: pipes_light.zip
*'''x''' - задается номер ячейки по х
 
*'''y''' - задается номер ячейки по y,
 
*'''грань''' - здесь задается номер грани, с которой начинается линия.К постановке этого параметра нужно отнестись осмысленно. Нумерация граней идет по часовой стрелке, начиная сверху - 0,1,2,3
 
  
Аналогично задаются параметры выхода
+
== Примечания и дополнения ==
  
'''ВЫХОД'''
+
Вариантов собранного трубопровода может быть несколько, в зависимости от рисунка, но в случае скипа всегда будет рисоваться вариант, указанный в раскладе.
*'''x''' - задается номер ячейки по х
 
*'''y''' - задается номер ячейки по y,  
 
*'''грань''' - здесь задается номер грани, на которой заканчивается лини
 
  
В строке '''РАСКЛАД''' в строчку задается расположение конкретных фишек в ячейках поля.
+
Трубопровод может иметь несколько входов и выходов. Линия, которая строится при этом, должна соединять в одну сеть все входы и выходы (возможность ставить в соответствие каждому входу свой выход пока не реализована).
*Рисунок уровня в виде последовательности чисел через запятую. Чисел должно быть четное количество. Первое число каждой пары - тип ячейки от 0 до 6 включительно, Второе - начальный поворот от 0 до 3. Если в этом параметре пустая строка - уровень генерируется.
 
  
по правой кнопке мыши добавляются команды, по которым можно изменять состояние или параметр объекта при выгрыше
+
== Пример ==
  
'''ИЗМЕНИТЬ СОСТОЯНИЕ'''
+
[http://fs5.absolutist.com/files/wikisample/Pipes.rar Download]
*'''объект''' - выбирается доступный в этом экране объект
 
*'''состояние''' - задается состояние этого объекта
 
  
'''ИЗМЕНИТЬ ПАРАМЕТР'''
+
[[Category:Game mechanic]]
*'''объект''' - выбирается доступный в этом экране объект
 
*'''параметр''' - задается новое значение параметра для этого объекта
 

Текущая версия на 05:08, 3 апреля 2015

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