Pack Color
Цвет из четырёх чисел неудобно носить с собой. packcolor складывает его в одно — и цвет становится обычным значением
draw color берёт цвет четырьмя числами, и пока цвет в программе один — этого хватает.
Как только цветов становится несколько и их надо выбирать, четыре числа превращаются
в четыре переменные, которые всюду таскают вместе. packcolor складывает их в одну.
packcolor красный 1 0 0 1draw col красный| Поле | Что в нём |
|---|---|
| первое | куда положить готовый цвет |
| остальные четыре | красный, зелёный, синий и прозрачность |
Цвет становится обычным значением
Заголовок раздела «Цвет становится обычным значением»Вот ради чего всё: цвет теперь одно число, а с одним числом можно делать то же, что
с любым другим. Положить в ячейку памяти. Выбрать через select. Передать в соседний
процессор. Здесь программа выбирает между тревожным и спокойным цветом одной строкой:
select цвет lessThan запас 50 тревога покойdraw col цветЧерез draw color то же самое потребовало бы ветвления и четырёх присваиваний в каждой ветке.
Число, которое не надо читать
Заголовок раздела «Число, которое не надо читать»Загляните в таблицу переменных: у красный там не круглое значение, а что-то вроде
2.1e-314. Так и должно быть.
Упакованный цвет — это байты цвета, положенные внутрь числа, а не число в привычном смысле. Для игры это просто способ провезти четыре байта в одном значении.
Откуда ещё берутся такие числа
Заголовок раздела «Откуда ещё берутся такие числа»Свой цвет есть у предметов, жидкостей, блоков и команд, и sensor отдаёт его в том же
упакованном виде:
sensor цвет @copper @colordraw col цветТак на дисплее рисуют предмет его собственным цветом — не выписывая руками, что медь рыжая.
Неофициальный проект, с Anuke не связан. Спрайты, шрифты и переводы Mindustry © Anuke, используются по GPL-3.0; Fira Code — по OFL-1.1. Код сайта — GPL-3.0.