Где хранить id всей одежды в игре?

64
09 апреля 2021, 07:30

Пишу игру (на Android), одной из особенностей которой является кастомизация внешнего вида игрока. Есть класс Character:

// Одежда персонажа -----------------------------------------------------------------------
// Головной убор
static byte dress_head;
// Верх
static byte dress_top;
// Низ
static byte dress_bottom;
// Обувь
static byte dress_shoes;
// Броня персонажа 
------------------------------------------------------------------------
// Шлем
static byte armor_head;
// Нагрудник
static byte armor_top;
// Поножи
static byte armor_bottom;
// Защитные сапоги
static byte armor_shoes;

У класса Character есть поля, отвечающие за хранение id предметов одежды. Всего слотов под одежду 8, 4 под броню и 4 под одежду.

Вопрос: где мне хранить id всей одежды в игре? Если в массиве, то в каком файле?

Answer 1

Не углубляясь в конкретную технологию и язык программирования, все id экипировки можно хранить несколькими способами:

  • как перечисление enum. При этом отпадает необходимость в id как таковом. Просто у вас будет объявлен enum, где будут перечислены все типы экипировки, и в нужный момент полю класса присваиваете конкретное значение enum (по мне, это самый предпочтительный вариант). Если все же важно хранить именно id, то можете для каждого значения enum определить, какое целое число соответствует конкретной экипировке.
  • как константный массив либо хеш-таблица, где индексом будет являться id вещи, а значением - сама вещь (т.е. по факту, этот массив инициализируется единожды при запуске приложения).
  • в файле, который загружается в тот же самый массив. Это может быть как xml, json, так и текстовый или бинарный файл.
  • в базе данных.
Answer 2
Пишу, исходя из тех данных, что предоставили.

Я предлагаю реализовать класс Equip_Inventory, который будет хранить все данные об экиперованном инвентаре игрока.Объект EquipInventory должен хранить Имя сохранения *string(если игра имеет сохранения более 1-го) , массив Объектов Класса Equipments(ID вещи *int(для вывода нормального инвентаря),тип занимаемой ячейки инвентаря *int , кол-во здоровье вещи max *int(),текущее здоровье вещи *int).

При создании игры создаём объект Equip_Inventory и выводи его во внешний файл(но сам Equip_Inventory храним до выхода из сохранения в меню). При загрузке игры обращаемся к имеющемуся файлу с именем сохранения.Если вдруг есть сохранение без файла с EquipInventory(вдруг удалил случайно) , то генерим пустой EquipInventory. При измении инвентаря МОМЕНТАЛЬНО(это значит не до закрытия инвентаря или выхода из игры в меню) произвести выгрузку во внешний файл.

READ ALSO
Bridge-методы java

Bridge-методы java

Прочёл в литературе, что в процессе Type Erasure (стирания типов) компилятор выполняет следующие действия:

109
Цепные и соединительные потоки

Цепные и соединительные потоки

Насколько я понимаю:

86
Подсказка в intellij idea

Подсказка в intellij idea

Подскажите пожалуйста, как настроить в intellij idea такие же подсказки как в Eclipse?

107
Как перенести настройки IntelliJ IDEA?

Как перенести настройки IntelliJ IDEA?

Как перенести настройки IntelliJ IDEA или же при переустановке системы сделать резервное сохранение настроек программы?

79