Lookup
Весь контент игры пронумерован. Lookup превращает номер в объект — и открывает перебор по всему списку
Предмет можно назвать константой — @copper, @graphite. Но констант двадцать, и выписывать
их по одной в программу утомительно. У игры для этого есть нумерованные списки, и lookup
достаёт из них по номеру.
Четыре списка
Заголовок раздела «Четыре списка»| Тип | Сколько в игре | Нулевой |
|---|---|---|
item |
20 | @copper |
liquid |
11 | @water |
unit |
56 | @dagger |
block |
262 | @graphite-press |
lookup item предмет 0Первое поле — какой список, второе — куда положить, третье — номер. За границей списка лежит пустота, как и везде.
Сколько чего бывает
Заголовок раздела «Сколько чего бывает»У каждого списка есть своя встроенная переменная с длиной:
set сколько @itemCount@itemCount, @liquidCount, @unitCount, @blockCount — четыре числа, и ими же
заканчивают перебор. Вписывать 20 вместо @itemCount нельзя: в следующем обновлении
предметов станет больше, и программа перестанет видеть новые.
Обратный перевод: @id
Заголовок раздела «Обратный перевод: @id»Номер по объекту спрашивают у самого объекта:
sensor номер @graphite @idОтвечает 3 — графит третий в списке предметов. Обратно lookup item обратно 3 вернёт тот же
графит. Это пригождается, когда предмет нужно сохранить числом: в ячейку памяти или во флаг
юнита объект не всякий раз положишь, а номер — обычное число.
Зачем это на самом деле
Заголовок раздела «Зачем это на самом деле»Главное применение — перебрать весь список. Программа спрашивает склад про каждый предмет
по очереди и запоминает, какого больше всех: на табло появится graphite: 60.
lookup item предмет номерsensor сколько container1 предметop add номер номер 1jump 0 lessThan номер @itemCountБез lookup пришлось бы выписать двадцать sensor подряд — и переписывать программу
после каждого обновления игры.
Тем же способом ищут, какого юнита на карте больше, чем занят завод, какой руды хватает и какого блока в схеме нет.
Неофициальный проект, с Anuke не связан. Спрайты, шрифты и переводы Mindustry © Anuke, используются по GPL-3.0; Fira Code — по OFL-1.1. Код сайта — GPL-3.0.