|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Appleman,
Предложенный мною способ основан на реляционной модели данных, где каждая сущность имеет свой уникальный ключ (id) для связи с другими. Effect и EffectData это разные сущности, первая описывает действующий эффект, вторая - его описание.
__________________
Дети не должны знать о своих родителях |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Кейси, прикол в том, что .hasForce у автора в виде строки "hasForce", так что Классы или Интерфейсы, тут два сапога params.
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
Ребята, давайте я чуть подробнее своё решение опишу, а вы покритикуйте.
Вот смотрите. Если у меня в классе Character есть свойство _strength, отвечающее за силу, то я, написав сразу же открываю класс IDs и вписываю туда статическую константу Всё. Теперь где бы мне ни потребовалось передать обращение (подчёркиваю, не обратиться, а именно передать необходимость обращения) к свойству силы, я знаю как это сделать. Например, я записываю таблицу условий на выполнение действия или использования предмета в вектор: В каждом из наследников есть метод проверки переданного в конструктор условия. Метод refreshActions() в Модели пробежит их все, и если хотя бы по одному получит false, кнопка действия будет неактивной. А если в результате какого-то действия нужно изменить силу на -5, то я могу добавить экземпляр класса и вызвать у Character метод При этом использование констант в общедоступной библиотеке гарантирует от того, что я назавтра забуду, как правильно называется свойство, отвечающее за силу. Это я в хелпе про события подсмотрел. Там же точно такой же принцип заложен - обращаться к константам вместо непосредственно строк. Плюс с таким подходом я могу хоть в XML какие-то конструкции передать, хоть ещё как-нибудь. Как-то так...
__________________
Не сломано - не чини! Последний раз редактировалось Appleman; 17.05.2018 в 16:59. |
|
|||||
Цитата:
Цитата:
class Item { var id:Uint; // ID Предмета var useCondition:Uint; // ID Условия, которое должно выполняться для использования предмета var useAction:Uint; // ID Выполняемого действия. } class Condition { var id:Uint; var minStrength:Number; } class Action { var id:Uint; var type:Uint; // Тип действия. (ActionType) var strength:Number; var agility:Number; } class ActionType { static const ADD:Uint = 1; // Добавить. static const MUL:Uint = 2; // Умножить. static const SET:Uint = 3; // Установить. } Или так: class Item { var id:Uint; // ID Предмета var use; // ID Использоания. } class Use { var id:Uint; // ID Применения. var condition:Uint; // ID Условия, которое должно выполняться для этого использования. var action:Uint; // ID Выполняемого действия. } пс. Больше я не буду предлагать решение для задачи, которую не знаю целиком.
__________________
Дети не должны знать о своих родителях Последний раз редактировалось Tails; 17.05.2018 в 18:00. |
|
|||||
Насколько я понял, ты говоришь о том, что у тебя в Персонаже есть вектор, в котором находятся пары "имя свойства" - "значение", и по вызову updateProps все эти штуки применяются. То есть для каждого персонажа в игре, для каждой фигулечки, с которой что-то происходит, нужно наполнять этот вектор действий.
Я бы, наверное, пошел по другому - у меня были бы сущности Действия, в которые я бы передавал тех, с кем они происходят и вытворял бы с ними там уже что хочешь. Без вот этих заморочек. Зачем это все?
__________________
while(live()) { hope(); } |
|
|||||
Цитата:
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
Мою ссылку на библиотеку решили не смотреть, ну ок
__________________
местонахождение |
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
Цитата:
Цитата:
Во-вторых, при таком подходе имеем туеву хучу плохо читаемых объектов. Как потом разбираться, что из себя представляет Condition id8 или id28? Imho, запись вроде {IDs.PLAYER, IDs.PROP_STRENGTH, 15} читается лучше. В-третьих, я не совсем понял, откуда метод, выполняющий проверку условия id8 "знает", что свойство minStrength в экземпляре Condition связано именно со свойством _strength персонажа, а не с каким-нибудь другим? СлаваRa, а я подумал, это троллинг такой с твоей стороны
__________________
Не сломано - не чини! |
|
|||||
Преимущество чисто субъективное в понятности. Что мы имеем сущности-действия, в которые закидываем нечто, производя с этим нечто некие действия. Причем действиям не в курсе, кого именно мы закидываем в них. Таким образом нам нужно лишь прописать все действия, и все субъекты. А далее их просто в разных комбинациях совмещать, расширять, как нам будет угодно, производя разнообразные манипуляции с субъектами во всевозможных позах.
__________________
while(live()) { hope(); } |
|
|||||
Цитата:
Цитата:
class Attribute { var id:Uint; var value:Number; } class AttributeData { var id:Uint; var min:Number; var max:Number; var name:String; } class ConditionAttribute { var id:Uint; // ID Записи. var condition:Uint; // ID Условия, к которому относится эта запись. var minValue:Number; var maxValue:Number; } Цитата:
Condition относится к Character, поэтому повторяет все его свойства, по которым нужно что-то проверить. ConditionItem будет иметь свойства для сравнения Item, ConditionEffect - Effect.
__________________
Дети не должны знать о своих родителях |
Часовой пояс GMT +4, время: 12:07. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|