Решили: пряча место, снимаем и серость, а не только тайлы. HideArena теперь возвращает
SetGrey(false) вместе с пустым обликом.
Грабли: вход на площадку идемпотентен — он сравнивает «просят серую» с «сейчас серая» и при совпадении не делает НИЧЕГО. Я сбросила половину состояния места (тайлы), а флаг серости оставила поднятым. На втором заходе вход увидел «уже серо» и вышел молча; тайлов при этом не было, и собирать их стало некому. На экране остались декор и зоны расстановки — пол исчез.
Как поймали: опросом ЖИВОЙ игры, а не рассуждением: мероприятие ProvingGrounds, облик
__empty, серая True. Три числа сразу показали, что сборка была пропущена, а не сломана.
Правило на будущее: у идемпотентного входа есть условие, по которому он решает «делать нечего». Сбрасывая состояние частично, ты не «оставляешь мелочь на потом» — ты подсовываешь этому условию ложное «всё уже так, как просят». Состояние места сбрасывается целиком или не сбрасывается вовсе.
Владелец правды: Presentation/Arena/ArenaStagePresenter.HideArena.