Skip to content

WIP: Описания классов переменных

Nikita Prianichnikov edited this page Mar 11, 2020 · 3 revisions

Здесь какая-то часть комментариев к устройству классов внутри кода Вангеров. К сожалению не претендует на полноту и точность..


3d/3dgraph.h

Основные глобальные переменные

  • ViewX, ViewY, ViewZ - где находится камера

sqexp.h

iGameMap

Основной класс ответственный за логику отрисовки карты высот

  • Методы/переменные
    • xsize, ysize - размеры области отрисовки

    • xside, yside - половина размера области отрисовки

    • xc, yc - положение центра области отрисовки

    • x, y - лево, верх области отрисовки. Помоему используется не часто

    • draw()

    • change(int Dx,int Dy,int mode,int xcenter,int ycenter)

      Выставляет центр и границы экрана карты высот

      • Dx, Dy - половина размера области отрисовки по горизонтали/вертикали
      • mode - ... Обычно 0
      • xcenter/ycenter - положение центра области отрисовки на экране

vmap.h

vrtMap

Класс непосредственно рендерящий карту высот

road.cpp

Основная игровая логика

  • Глобальные методы/переменные
    • set_screen(int Dx,int Dy,int mode,int xcenter,int ycenter) - меняет границы экрана карты высот. Просто вызывает iGameMap::change(...)

actint.h

  • Глобальные методы/переменные
    • change_screen(int mode) - вызывается из actIntDispatcher::change_mode(). Меняет "рамку" и выставляет центр и границы экрана карты высот исходя из положения и размеров "рамки" (curIbs )

actIntDispatcher

Менеджер GUI. Занимается и интерфейсами в Эскейвах (все методы начинающиеся с i_ ), и интерфейсами на игровом экране. Не отрисовывает диалог, который появляется при нажатии на Esc (Pause screen).

  • Методы/переменные:
    • flags - флаги (см. ActIntDispatcher Flags)
    • curIbs - "Рамка" внутри которой отрисовывается мир, vMap.
    • redraw() - отрисовка на поверхности
    • flush()
    • i_redraw()- отрисовка в эскейве
    • i_flush()
    • change_mode() - вызывается после смены режима GUI: AS_INV_MODE - Открыт инвентарь, AS_INFO_MODE - основной экран.
    • change_ibs() - переключить "рамку"
    • EventQuant() - обработка эвентов GUI. см. Event Codes. Основные коды:
      • EV_CHANGE_MODE - переключить режим

      • EV_SET_MODE - установить режим event->data.

      • EV_CHANGE_SCREEN - По-моему не используется, как и многие другие флаги. Только если код эвента передается как число, а не именованая константа. Отличается от change_mode, тем что не перерисовывает GUI элементы

      • EV_FULLSCR_CHANGE - переключение на полноэкранный режим и обратно (AS_FULLSCR )

      • EV_TELEPORT - TODO

      • EV_ENTER_TEXT_MODE , ACI_SHOW_TEXT - TODO

      • EV_LEAVE_TEXT_MODE, ACI_HIDE_TEXT - TODO

      • ACI_LOCK_INTERFACE , ACI_UNLOCK_INTERFACE - TODO

      • EV_ENTER_CHAT , EV_LEAVE_CHAT - TODO

      • EV_ACTIVATE_MENU - пока не ясно где активируется

      • Остальные евенты не относятся к set_screen

    • KeyQuant() - Обработка мыши и клавиатуры
    • send_event(int cd,int dt,actintItemData* p)

aci_src.h

aciScreenDispatcher

Менеджер панелей, которые появляются при нажатии на Esc (Pause screen). Каждую панель опиcывает класс aciScreen .

iscreen.h

Логика отрисовки интерфейса с картой высот (pseudo 3d)

iScreenElement

Элемент pseudo 3d интерфейса (абстрактный класс)

iBitmapElement : iScreenElement

Элемент pseudo 3d интерфейса, карта высот загружается из .bmp файла. (Например: resource/iscreen/bitmap/.bmp)*

imap_fnc.cpp

Функции относящиеся к рендерингу pseudo 3d интерфейса

ivmap.h

ivrtMap

Карта высот в интерфейсе, отрисовка

  • Методы/переменные
    • accept() Изначальная отрисовка карты, расстановка высот