Цитата:
Сообщение от Appleman
Я с тобой тут поспорю. Во-первых, условия могут отличаться как количественно, так и качественно. В твоём варианте получается, что любое количественное изменение (сила не 5, а 10) - это появление нового экземпляра
|
Да, всё верно, это будет
новое условие. (Новая запись в таблице)
Цитата:
Сообщение от Appleman
Или ты предлагаешь воссоздавать в Condition все свойства проверяемого объекта и устанавливать значения для тех, которые должны быть проверены? Там ещё экипированные предметы, статус-эффекты и хрен знает что ещё.
|
Да. У тебя же характеристики персонажа не являются отдельными сущностями, они у тебя - свойства Character. Вот если-бы у тебя характеристики были отдельными сущностями, как например:
Код:
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 может содержать в себе несколько ConditionAttribute, ConditionItem и т.п.
Цитата:
Сообщение от Appleman
Во-вторых, при таком подходе имеем туеву хучу плохо читаемых объектов. Как потом разбираться, что из себя представляет Condition id8 или id28? Imho, запись вроде {IDs.PLAYER, IDs.PROP_STRENGTH, 15} читается лучше.
|
Если заполнение в блокноте становится слишком сложным - пишется админка.
Цитата:
Сообщение от Appleman
В-третьих, я не совсем понял, откуда метод, выполняющий проверку условия id8 "знает", что свойство minStrength в экземпляре Condition связано именно со свойством _strength персонажа, а не с каким-нибудь другим?
|
Condition относится к Character, поэтому повторяет все его свойства, по которым нужно что-то проверить. ConditionItem будет иметь свойства для сравнения Item, ConditionEffect - Effect.