Как задавать свойства предметов и передавать их персонажу?
Добавлено: 17 сен 2014, 10:27
Добрый день! Продолжаю работу над созданием инвентаря к игре. Реализовал базовый инвентарь, который состоит из слотов, в которые помещаются базовые предметы. Реализовал удаление, добавление, замену, drag-and-drop и пр.
Я реализовал класс инвентаря-сумки и инвентаря-надетых вещей. Между ними реализованы все операции. Теперь думаю над тем, как наделить каждый предмет так сказать индивидуальностью.
Есть базовый класс Item. Каждый предмет имеет свойства
При создании экземпляра класса задается только itemID
В init() каким-то образом по itemID должны задаваться остальные свойства. Наверное, из какого-нибудь внешнего файла или БД подгружать нужно. Я пока делаю тупо в классе, причем не заморачиваюсь и делаю ни для каждого itemID, а для диапазона
это временно. Потом буду думать как инициализировать по конкретному itemID.
Более важный для меня вопрос состоит в том, как предмет должен передавать свои свойства игровому персонажу при надевании.
Например, персонаж обладает рядом характеристик: жизнь, броня, урон, крит, уворот и пр.
Я надеваю на него броню, которая обладает характеристиками: жизнь, броня. При надевании как-то должны измениться характеристики персонажа. Я могу, конечно сделать что-то вроде персонаж.setHP(armorHP) и т.д. для каждой из характеристик. А если у всех предметов разные характеристики? Например, один щит повышает только здоровье, а другой повышает броню и уворот. Как это реализовывать? Я плохо представляю себе как реализовать класс персонажа и надевание на него предметов. Сами надетые предметы находятся в классе инвентаря-надетых вещей. Резюмирую:
1. Как наделить каждый предмет индивидуальностью? Нужно создавать для каждого предмета свой класс?
2. А если предметов сотни? У меня возникала идея воспользоваться декоратором. Правда, не знаю что из этого выйдет.
3. Или же каждому предмету задавать полный набор характеристик: жизнь, броня, урон, крит, уворот, и если предмет добавляет только броню, то остальные приравнять нулю.
4. Как собственно создать класс персонажа, чтобы в нем была информация пусты ли слоты инвентаря-надетых вещей, и чтобы добавлять характеристики надетых вещей.
5. Есть ли у кого-нить рабочий пример? Гуглил по-русски - не нашел ничего. А на англоязычных искать не получается. Если кто готов поделиться своими разработками (хотя бы в личку), то я буду очень признателен. Хочется просто увидеть, как это делается у грамотных людей. Хотя бы какие-то базовые вещи.
Я реализовал класс инвентаря-сумки и инвентаря-надетых вещей. Между ними реализованы все операции. Теперь думаю над тем, как наделить каждый предмет так сказать индивидуальностью.
Есть базовый класс Item. Каждый предмет имеет свойства
Код: Выделить всё
private var itemID:uint;//ID в некой таблице предметовprivate var price:uint;//ценаprivate var description:String = "Обычный предмет";//Описание private var typeItem:String;//Тип предмета, например, = "armor"private var imageName:String;//Путь к изображению для иконки предмета
Код: Выделить всё
public function Item(_itemID:uint) { itemID = _itemID; init();}
Код: Выделить всё
if (itemID >= 0 && itemID < 1999){ typeItem = "Armor"; imageName = "armor.jpg"; price = 100; description = "Хорошая броня. Стоимость: " + String(price) + ". Вес: " + weight;} else if (itemID >= 2000 && itemID < 3999) { typeItem = "Gun"; ... } else if ...
Более важный для меня вопрос состоит в том, как предмет должен передавать свои свойства игровому персонажу при надевании.
Например, персонаж обладает рядом характеристик: жизнь, броня, урон, крит, уворот и пр.
Я надеваю на него броню, которая обладает характеристиками: жизнь, броня. При надевании как-то должны измениться характеристики персонажа. Я могу, конечно сделать что-то вроде персонаж.setHP(armorHP) и т.д. для каждой из характеристик. А если у всех предметов разные характеристики? Например, один щит повышает только здоровье, а другой повышает броню и уворот. Как это реализовывать? Я плохо представляю себе как реализовать класс персонажа и надевание на него предметов. Сами надетые предметы находятся в классе инвентаря-надетых вещей. Резюмирую:
1. Как наделить каждый предмет индивидуальностью? Нужно создавать для каждого предмета свой класс?
2. А если предметов сотни? У меня возникала идея воспользоваться декоратором. Правда, не знаю что из этого выйдет.
3. Или же каждому предмету задавать полный набор характеристик: жизнь, броня, урон, крит, уворот, и если предмет добавляет только броню, то остальные приравнять нулю.
4. Как собственно создать класс персонажа, чтобы в нем была информация пусты ли слоты инвентаря-надетых вещей, и чтобы добавлять характеристики надетых вещей.
5. Есть ли у кого-нить рабочий пример? Гуглил по-русски - не нашел ничего. А на англоязычных искать не получается. Если кто готов поделиться своими разработками (хотя бы в личку), то я буду очень признателен. Хочется просто увидеть, как это делается у грамотных людей. Хотя бы какие-то базовые вещи.