Pipes — различия между версиями
Odyadina (обсуждение | вклад) |
Odyadina (обсуждение | вклад) (→Добавляемые параметры) |
||
Строка 48: | Строка 48: | ||
== Добавляемые параметры == | == Добавляемые параметры == | ||
+ | [[Файл:Pipes_1.jpg|200px|right]] | ||
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. | Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. | ||
Строка 76: | Строка 77: | ||
*'''объект''' - объект, которому будет меняться параметр по собиранию pipes; | *'''объект''' - объект, которому будет меняться параметр по собиранию pipes; | ||
*'''параметр''' - изменяемый параметр; | *'''параметр''' - изменяемый параметр; | ||
− | *'''значение''' - новое значение параметра. | + | *'''значение''' - новое значение параметра. |
== Состояния == | == Состояния == |
Версия 14:54, 28 мая 2013
Pipes - объект, который обладает механикой сбора трубопровода (микросхемы и т.п.) путем поворота отдельных элементов . Объект реализован в виде матрицы, каждая ячейка которой содержит вращающийся элемент. При инициализации объекта pipes все его элементы (ячейки) случайным образом поворачиваются, разрывая соединение входа и выхода. Каждый клик на элемент поворачивает его по часовой стрелке на 90 градусов. Игра считается завершенной, если между входом и выходом трубопровода образуется цепь правильно повернутых элементов.
Общие параметры (см. описание Object)
- положение - координаты левого верхнего угла игрового поля по оси x и y;
- размер - ширина и высота одной ячейка трубопровода.
Основные параметры
Группа - внешний вид:
- картинка - анимация, состоящая из элементов трубопровода начиная с пустого, перетаскивается мышкой из базы ресурсов;
- колонок - количество ячеек с элементами по горизонтали;
- строчек - количество ячеек с элементами по вертикали;
- время поворота - время поворота элемента в миллисекундах.
Все кадры анимации, указанной в поле картинка, должны быть одного размера. Последовательность кадров в анимации должна строго соответствовать приведенной на рисунке ниже:
- Нулевой кадр - пустой;
- Первый кадр - прямой элемент с двумя соединениями на верхней и нижней гранях;
- Второй кадр - изогнутый элемент с двумя соединениями на правой и нижней гранях;
- Третий кадр - тройник с соединениями на правой, нижней и левой гранях;
- Четвертый кадр - крестик с соединениями на всех четырех гранях;
- Пятый кадр - пересечение двух прямых не совмещенных элементов (верхнее и нижнее соединения относятся к одному элементу, правое и левое ко второму);
- Шестой кадр - два изогнутых не совмещенных элемента (правое и нижнее соединения относятся к одному элементу, верхнее и левое ко второму).
Группа - вход:
- 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 (начальный пустой кадр анимации).
Проверка висячих - условие сбора уровня, принимает значение 0 или 1. Если значение 0, то у собранного трубопровода могут быть свободные (оборванные) соединения, а если значение 1, то свободных соединений быть не должно, т.е. все соединения узлов цепи, проходящей от входа к выходу, должны в итоге замыкаться на цепь
Добавляемые параметры
Меню выбора Добавляемые параметры к объектам активируется по правой кнопки мыши.
Вход в трубопровод (используется, если входов больше одного):
- x - номер столбца ячейки, с которой будет начинаться трубопровод;
- y - номер строка ячейки, с которой будет начинаться трубопровод;
- грань - номер грани ячейки элемента, которая считается входом.
Выход из трубопровода (используется, если выходов больше одного):
- x - номер столбца ячейки, которой будет заканчиваться трубопровод;
- y - номер строка ячейки, которой будет заканчиваться трубопровод;
- грань - номер грани ячейки элемента, которая считается входом.
- объект - объект, который перейдет в новое состояние, если элемент трубопровода повернуть правильно;
- состояние - новое состояние объекта из предыдущего поля.
- объект - объект, который перейдет в новое состояние по собиранию pipes;
- состояние - новое состояние объекта из предыдущего поля.
Изменить параметр (свойство) объекта:
- объект - объект, которому будет меняться параметр по собиранию pipes;
- параметр - изменяемый параметр;
- значение - новое значение параметра.
Состояния
Объекту pipes можно передавать следующие состояния:
- init - элементы трубопровода поворачиваются произвольным образом, разрывая соединение входа с выходом;
- skip - каждый элемент поворачивается в положение указанное в поле расклад за время поворота, после чего pipes считается собранным, и устанавливаются добавляемые параметры, если они есть.
Примечания и дополнения
Вариантов собранного трубопровода может быть несколько, в зависимости от рисунка, но в случае скипа всегда будет рисоваться вариант, указанный в раскладе.
Трубопровод может иметь несколько входов и выходов. Линия, которая строится при этом, должна соединять в одну сеть все входы и выходы (возможность ставить в соответствие каждому входу свой выход пока не реализована).