L9-INVERT: heal точечных перерисовок тоже зеркалится (баг чомперов)
Найдено пользователем на первом прогоне зеркального фона: чомперы анимировались неправильно. Причина — pop_heal_off: точечные перерисовки (чомпер, пики, loose, ворота, полоса потолка) чистят фон по КОМНАТНОЙ координате, и при перевороте heal стирал прямоугольник не там, где тайл рисуется. Фикс в единой точке — та же формула FLIP_TOP, что у блита. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -366,9 +366,16 @@ void pop_wall_b(uint8_t id, int x, int yb) { pop_blit_b(&pop_wall_at, id, x, yb)
|
||||
void pop_fore_b(uint8_t id, int x, int yb) { pop_blit_b(&pop_fore_at, id, x, yb); }
|
||||
void pop_pot_b(uint8_t id, int x, int yb) { pop_blit_b(&pop_pot_at, id, x, yb); }
|
||||
|
||||
/* Heal по КОМНАТНОЙ координате (её и знают точечные перерисовки: чомпер,
|
||||
* пики, loose, ворота, полоса потолка). При перевороте прямоугольник
|
||||
* обязан отразиться ровно так же, как сам тайл, — иначе heal чистит одно
|
||||
* место, а рисует в другое: именно так «ломалась анимация чомперов»
|
||||
* (найдено пользователем на первом же прогоне зеркального фона). */
|
||||
void pop_heal_off(int x, int y, int w, int h)
|
||||
{
|
||||
pop_heal_fast(x, y + POP_YOFF, w, h);
|
||||
int top = y + POP_YOFF;
|
||||
if (pop_upside) top = FLIP_TOP(top, h);
|
||||
pop_heal_fast(x, top, w, h);
|
||||
}
|
||||
|
||||
/* ---- Чтение тайла отрисованной комнаты ------------------------------ */
|
||||
|
||||
Reference in New Issue
Block a user