Кто управляет юнитом
Юнит слушается того, кто скомандовал последним. Узнать, кто это сейчас, можно двумя свойствами
Два процессора смотрят на одного поли. Верхний командует, нижний только спрашивает — и видит чужую власть со стороны.
sensor кто @unit @controllerop equal мой кто @this@controller отдаёт блок, который сейчас ведёт юнита. У верхнего процессора мой
становится единицей, у нижнего остаётся нулём: кто там — чужой processor1.
Два свойства вместо одного
Заголовок раздела «Два свойства вместо одного»| Свойство | Что отдаёт |
|---|---|
@controlled |
число: кто ведёт по виду — процессор, игрок, приказ |
@controller |
объект: какой именно блок, или сам юнит, если логика им не правит |
Числа у @controlled не выдуманные, у них есть имена:
| Значение | Константа | Что это значит |
|---|---|---|
0 |
— | никто: юнит живёт своим умом |
1 |
@ctrlProcessor |
им правит процессор |
2 |
@ctrlPlayer |
в нём сидит игрок |
3 |
@ctrlCommand |
ему отдан приказ игроком |
Ни одно из двух не отвечает целиком
Заголовок раздела «Ни одно из двух не отвечает целиком»Свойства выглядят как два взгляда на одно и то же, но у каждого своя слепая зона — и поэтому в настоящей проверке их берут вместе.
Отсюда обе строки разом, и в таком порядке:
sensor кем @unit @controlledjump 0 greaterThan кем 1 # занят человеком — не трогаемsensor кто @unit @controllerjump 0 notEqual кто @this # занят чужим процессором — тожеВласть отбирают молча
Заголовок раздела «Власть отбирают молча»Здесь командуют оба, и каждый тянет поли в свой угол. Смотрите на мой у обоих: единица
достаётся тому, чья команда прошла последней, а юнит болтается между двумя целями.
Десять секунд и не больше
Заголовок раздела «Десять секунд и не больше»Здесь команда отдаётся один раз, а дальше программа только спрашивает. Поли доезжает
до места — и через десять секунд кем падает с единицы до нуля, а кто начинает показывать
самого юнита. Процессор его отпустил.
Срок обновляет каждая команда: пока ucontrol зовут в цикле, власть не кончается никогда.
Как только звать перестали — шестьсот тиков, и юнит возвращается к себе.
Кого забрать нельзя
Заголовок раздела «Кого забрать нельзя»Два случая, когда ucontrol промолчит, сколько его ни зови:
- юнитом правит игрок. Тот, в ком кто-то сидит, логике не отдаётся вовсе;
- юниту отдан приказ — тот, что игрок раздаёт выделением и щелчком по карте.
В обоих случаях ubind сработает как обычно и положит юнита в @unit — а вот команды
до него не дойдут, и @controller об этом не скажет: он так и будет отдавать самого юнита.
Остаётся @controlled: двойка и тройка означают, что юнит занят человеком.
Неофициальный проект, с Anuke не связан. Спрайты, шрифты и переводы Mindustry © Anuke, используются по GPL-3.0; Fira Code — по OFL-1.1. Код сайта — GPL-3.0.