Мысли об организации карты

Большинство позаимствовал из способов организации карты и предметов в LaserSquad.

В движке есть три типа “сущностей” - cell(ячейка карты), item(предмет) и hero(персонаж).

Карта представляет собой однобайтовый массив, поэтому ячеек карты может быть максимум 256, включая различные предметы, так как для их описания тоже используются спрайты.

Таблица описания спрайтов

[указатель на описание][указатель на скрипт обработки]

Действие совершаемое над предметом анализируется в скрипте обработки. Не стал делать таблицу соответствия [предмет][действие][скрипт] так как в целом это получается избыточно ( например “стенку” нельзя ни поднять ни бросить, итп..)

Таблица описания типов item

[байт спрайта][.. неизменяемые характеристики типа предмета.. ]

Таблица хранения item

[itemId][pos_y][pox_x][ground][owner][ ..характеристики предмета которые могут меняться в предметах одного типа.. ]

itemId - тип предмета, номер записи в таблице описания типов

pos_y,pox_x - позиция предмета на карте

ground - что на земле в момент бросания предмета

owner - номер героя у которого этот предмет в инвентаре, если #ff то лежит на карте

Прикидываю схему бросания и поднятия предметов.

scheme

[указатель на скрипт обработки]:

Written on June 3, 2018