Связи и getlink
Связь — не соседство: блок надо подключить, и только тогда у него появится имя
Процессор не видит блоков вокруг себя. Контейнер, приставленный вплотную, для программы не существует — ровно так же, как контейнер на другом конце базы.
Чтобы блок появился в программе, его подключают: щёлкнуть по процессору, потом по блоку. Вокруг процессора при этом рисуется круг — это его дальность, дальше подключать некуда. Повторный щелчок по подключённому блоку связь снимает.
Дальность зависит от процессора
Заголовок раздела «Дальность зависит от процессора»| Процессор | Дальность |
|---|---|
| микропроцессор | 10 тайлов |
| логический процессор | 22 тайла |
| гиперпроцессор | 42 тайла |
Расстояние меряется от середины процессора до середины блока, но к дальности добавляется половина размера блока: у большого хранилища середина дальше, а край — ближе, и игра считает по краю.
Имя даёт связь, а не блок
Заголовок раздела «Имя даёт связь, а не блок»Подключённый блок получает имя вида container1, cell1, display1. Собирается оно
из имени блока: берётся последняя часть через дефис, а номер — первый свободный, начиная
с единицы.
| Блок | Имя связи |
|---|---|
container |
container1 |
memory-cell |
cell1 |
power-node |
node1 |
titanium-conveyor |
conveyor1 |
large-logic-display |
display1 |
power-node-large |
node1 |
metal-wall-2 |
wall1 |
Последние две строки — особый случай: если имя блока кончается на large или на число,
игра берёт часть перед ним. Поэтому большой силовой узел — тоже node, а не large.
Номер — первый свободный, а не следующий: если снять связь с container1, а потом подключить
другой контейнер, он снова станет container1.
@links и getlink
Заголовок раздела «@links и getlink»Имена удобны, пока связей три. Когда их полтора десятка и они меняются, программе нужен
перебор — для этого есть @links и getlink.
@links— сколько связей у процессора прямо сейчас, число.getlink— здание по номеру, начиная с нуля. Номер вне диапазона даётnull.
Нажмите «шаг» пять раз. В примере подключены два блока — контейнер и ячейка памяти, — поэтому
сколько станет двойкой, первый окажется container1, второй — cell1, а третий
останется пустым: связи с номером 2 нет, а ошибки в mlog не бывает.
Обратите внимание на столбец типа в таблице: у первый и второй там building — это
не число и не текст, а сам блок. С таким значением работает sensor, которому всё равно,
пришло ли оно из имени связи или из getlink.
Когда связь пропадает
Заголовок раздела «Когда связь пропадает»Блок снесли — связь становится недействительной, @links уменьшается, а sensor по имени
начинает отвечать null. Программа при этом продолжает работать как ни в чём не бывало:
проверять, не пропал ли блок, — ваша забота.
Если на то же место поставить такой же блок, связь оживёт вместе с прежним именем. Если поставить другой — имя пересчитается под новый блок.
Неофициальный проект, с Anuke не связан. Спрайты, шрифты и переводы Mindustry © Anuke, используются по GPL-3.0; Fira Code — по OFL-1.1. Код сайта — GPL-3.0.