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

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск
(Параметры объекта Pipes)
(Файл уровней)
 
(не показаны 42 промежуточные версии 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"?>
 
   
 
   
[[Файл:Безымянный.png|500px]]
+
<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|200 px|thumb|right]]
 +
В объект был добавлен функционал, который позволяет сделать миниигру, цель которой - провести луч с точки А в точку Б используя систему зеркал.
  
*В игре может быть как '''несколько входов''', так и '''выходов'''. Линия, которая строится при этом должна соединять в одну сеть все входы и выходы. ''В перспективе, должна быть возможность ставить в соответствие каждому входу - свой выход.''
+
Для такого вида труб тоже нужна фреймовая анимация из 7 кадров. 6 из них - пустые кадры (рационально добавить в анимацию 1 пустой кадр и его раскопировать для нужных фреймов) и кадр для отображения зеркала, которое можно вращать(2 фрейм анимации). Также для корректной работы нужно выставить параметр "вращать кресты" в "нет" - это запретит вращать ячейки с 4 и 5 фреймом анимации труб.
  
=== Параметры объекта 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"
  
Для создания объекта '''pipes'''  необходимо создать любой безресурсный объект и выбрать для него из раздела '''Game mechanic''' тип '''pipes'''.  
+
[[Файл:Pip3.png|thumb|right]]
 +
Уровень можно указать 2 способами:
 +
# в поле "расклад" объекта pipes, при этом файл уровней игнорируется
 +
# с помощью файла уровней
 +
При использовании файла уровней есть возможность принудительного задания начального положения фишки, что может быть нужно для получения корректного начального отображения.
  
[[Файл:Создание.png|500px ]]
+
Графика для отображения эффекта прохождения луча добавляется в вкладке "внешний вид - эффект луча". В ней указываем 3 графических ресурса:
 +
[[Файл:Pip2.png|thumb|right]]
 +
* ''прямая'' (|) - ресурс для отображения луча проходящего через ячейку(вертикальная прямая, как на 1 кадре анимации для обычных труб)
 +
*''угол'' - ресурс для отображения луча, который отражается зеркалом(должен быть аналогичен 2 кадру для анимации труб)
 +
*''крест'' - ресурс для отображения 2 лучей, которые пересекаются (аналогичен 5 кадру анимации для труб)
  
[[Файл:Характеристики.png|500px]]
+
При передаче объекту состояния skip, он отрабатывает следующим образом:
 +
# выключается луч
 +
# ячейки разворачиваются в правильную позицию
 +
# включается луч
  
Кроме общих для всех параметров "положение" и "размер" необходимо задать параметры непосредственно для объекта pipes.
+
Также объекту можно передать состояние hide_effect, которое выключает отображение луча. После этого луч включится или при повороте любого зеркала или при передаче объекту init.
(У объекта Pipes нет отображения его положения на экране, поэтому для определения его места и правильного расположения в игре необходимо делать его подобъектом какой то машины, размер объекта задаётся количеством его колонок и строк)
 
  
'''ВНЕШНИЙ ВИД'''
+
Пример: S:\!MOBILE\!!!EditorGames\Wiki_sample
*'''картинка''' -  в это поле из редактора ресурсов перетаскивается анимация,  кадрами которой являются изображения фишек в заданной последовательности,
 
*'''колонок''' - здесь задается число колонок поля,
 
*'''строчек''' - здесь задается число строчек поля,
 
*'''время поворота''' -  время поворота фишки вокруг центра ячейки,
 
  
Ячейки имеют нумерацию (0;0), (0;1), (0;2), (0;3),(0;4), (0;5), (0;6), (0;7).... - в строке,
+
Файл: pipes_light.zip
и (0;0), (1;0), (2;0), (3;0),(4;0), (5;0), (6;0), (7;0).... - в столбце,
 
'''ВХОД'''
 
*'''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