/* * guards.c — ЛОГИКА стража, собирается в БАНК (--bank 1=guards.c, окно W3). * * Правила банка (проверено пробником tests/w3bankgfx): * - состояние держим в W1/W2 (pop_guard.c): статики банка линкуются в * страницу банка и снаружи не читаются; * - звать можно W1/W2-код (pop_map, pop_kid, pop_geom, libc, примитивы * libbgi) — скобка _bgi_begin/_bgi_end возвращает страницу БАНКА; * - звать НЕЛЬЗЯ резидент W3 (pop_bg) — ни напрямую, ни транзитивно: * пока исполняется банк, резидентной страницы в адресном пространстве * нет. Поэтому фон/окклюзию за стража рисует главный цикл. * * Сейчас — каркас: тик есть, ИИ и боёвка (порт seg005 control_guard*, * seg004 fight/collision) добавляются сюда. */ #include "pop_guard.h" #include "pop_kid.h" void pop_guard_tick(void) __banked { if (Guard.charid == 0) return; /* стража в комнате нет */ /* Анимация: та же seqtbl, что у Кида, но своя таблица кадров — * выбирается по Char.charid внутри load_frame (seg006:0293). */ pop_guard_play(); /* TODO: порт control_guard/fight (seg005/seg004) — состояние в Guard. */ }