Как разработать свой тип данных для хранения характеристик оружия, его названия, урона, массы и т.п. Смотрел на редактор оружия для Diablo 2, но так и не понял как это реализовано. Вроде бы используется одно число, где определенные группы битов отвечают за некоторые характеристики,это так или нет?
Vavilon
ну можно например сделать юнион структур в другой структуре с хидером.
а вообще сперва лучше продумай свою систему оружия до конца и скорее всего сам поймешь дата-модель для неё.
Vavilon
Можно попытаться сделать оружие на основе стратегий:
например (для огнестрельного оружия):
(это только идея, не более того)
class IWeapon { // базовый тип // ... }; template < class damage, // тип повреждения (точечное, направленное, ударной волной, распределенное) class hitmethod, // способ достижения цели class spread, // распределения различных параметров class shell // тип боезапаса class reload // способ перезарядки > class Weapon: public IWeapon { // ... };
up
P.S. интересная же тема...
Я думаю, что сначала оформить оружие в отдельный класс (и так для всех подобных вещей в инвентаре). Класс содержит указатели на функции - перезарядка, нанесение урона врагу и т.д. Или даже дин. массив указателей, т.е. функция нанесения урона холодом, далее оглушающий урон, ... При ударе по врагу они все вызываются. И хана попавшему под удар! =)
В проекте http://tactics.indians.ru/ я использовал для оружия не один, а несколько классов:
калибр
+ имя
+ полное имя
+ массив возможных объемов магазина
объект
+ имя
+ размер спрайта
+ указатель на калибр
+ емкость магазина
+ осталось в магазине
объектом может быть и магазинное оружие, и магазин, и штык-нож, например, где параметры калибр и магазин не используются.
при применении объекта программа может запросить дополнительные параметры из класса
оружие
+ имя
+ эффективная дальность
+ звук выстрела
+ коэфф. поражения (в дальнейшем, когда будет введено разделение по типам БП, выведу в их параметры)
+ точность
+ премя прицельного выстрела (навскидку и очередью - производные)
+ рабочий цикл ствола (время наработки на отказ)
+ громоздкость (влияет на скорость передвижения с этим стволом, увеличивается от длины магазина
+ тип оружия
+ возможные режимы огня
+ основной калибр
+ калибр подствольника
+ базовая стоимость
+ вес в граммах
+ размер спрайта
+ насколько редкое оружие
+ полное название
+ страна происхождения (определяет, у продавцов в каких странах чаще встречается)
Тема в архиве.