Перейти к содержимому

Константы контента

Предмет, жидкость, блок и юнит — такие же значения, как число: их кладут в переменные и передают инструкциям

@copper — это не число и не текст. Это сама медь: тот же предмет, что лежит в контейнере и едет по ленте. Игра заводит такую константу на каждую вещь, которая у неё есть.

Что Сколько Примеры
предметы 20 @copper, @silicon, @thorium
жидкости 11 @water, @slag, @cryofluid
блоки 262 @router, @vault, @duo, @air
типы юнитов 56 @poly, @mono, @flare

Имена пишутся так же, как называется вещь в игре, только по-английски и через дефис: @surge-alloy, @phase-fabric, @titanium-conveyor.

Нажмите «шаг» пять раз.

тик 0
Установить0
=
Установить1
=
Установить2
=
Установить3
=
Информация4
=
у
@counter0number
предметnullnull
блокnullnull
юнитnullnull
самnullnull
сколькоnullnull

В таблице у предмет, блок и юнит тип content — не число, не текст, а вещь. Никакой арифметики с ними не выходит: сложить медь с роутером нельзя, зато можно передать их туда, где ждут вещь.

Где это пригодится:

  • sensor — спросить у контейнера, сколько в нём меди;
  • control config — настроить сортировщик на нужный предмет;
  • ubind — взять под управление юнита нужного типа;
  • draw image — нарисовать иконку вещи на дисплее.

Последняя строка примера — sensor сколько container1 предмет, и в предмет лежит @copper. Ответ: 120, столько меди в контейнере.

Тут стоит остановиться. @copper в поле свойства значит «сколько меди», а @copper в поле значения значит «сама медь». Имя одно, а роль зависит от того, куда его положили, — и это не путаница, а устройство языка: sensor смотрит, что ему передали, и отвечает по-разному на вещь и на свойство вроде @health.

Для sensor нет разницы, вписано ли @copper прямо в поле или пришло из переменной. Поэтому таким же образом можно перебирать предметы: сложить их в ячейку памяти и спрашивать по очереди.

Отдельная кучка констант — про сам процессор:

Имя Что это
@this само здание процессора, тип building
@thisx, @thisy его координаты в тайлах, числа
@links сколько у него связей
@ipt сколько инструкций он делает за тик

@this — это здание, как container1: у него можно спросить свойства и передать его туда, где ждут блок. В примере оно лежит в переменной сам, и в таблице видно имя процессора.

Иногда предмет нужен не по имени, а по номеру: перебрать все двадцать, не выписывая каждый. Для этого есть отдельная инструкция — lookup, она достаёт вещь по её номеру в игре.

Неофициальный проект, с Anuke не связан. Спрайты, шрифты и переводы Mindustry © Anuke, используются по GPL-3.0; Fira Code — по OFL-1.1. Код сайта — GPL-3.0.