Мысли об организации карты
Большинство позаимствовал из способов организации карты и предметов в LaserSquad.
В движке есть три типа “сущностей” - cell(ячейка карты), item(предмет) и hero(персонаж).
Карта представляет собой однобайтовый массив, поэтому ячеек карты может быть максимум 256, включая различные предметы, так как для их описания тоже используются спрайты.
Таблица описания спрайтов
[указатель на описание][указатель на скрипт обработки]
Действие совершаемое над предметом анализируется в скрипте обработки. Не стал делать таблицу соответствия [предмет][действие][скрипт] так как в целом это получается избыточно ( например “стенку” нельзя ни поднять ни бросить, итп..)
Таблица описания типов item
[байт спрайта][.. неизменяемые характеристики типа предмета.. ]
Таблица хранения item
[itemId][pos_y][pox_x][ground][owner][ ..характеристики предмета которые могут меняться в предметах одного типа.. ]
itemId - тип предмета, номер записи в таблице описания типов
pos_y,pox_x - позиция предмета на карте
ground - что на земле в момент бросания предмета
owner - номер героя у которого этот предмет в инвентаре, если #ff то лежит на карте
Прикидываю схему бросания и поднятия предметов.
[указатель на скрипт обработки]: