tweaks to compact reading with tag.isComplex(): no longer requires that many hacks

git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@1312 0fc631ac-6414-0410-93d0-97cfa31319b6
This commit is contained in:
twanvl
2009-01-09 02:03:24 +00:00
parent 432cdcd583
commit 7d1bb77163
5 changed files with 18 additions and 18 deletions
+2 -12
View File
@@ -143,8 +143,8 @@ IMPLEMENT_REFLECTION_ENUM(ChoiceChoiceType) {
VALUE_N("radio", CHOICE_TYPE_RADIO);
}
IMPLEMENT_REFLECTION_NO_GET_MEMBER(ChoiceField::Choice) {
if (isGroup() || line_below || enabled.isScripted() || (tag.reading() && tag.isComplex())) {
IMPLEMENT_REFLECTION(ChoiceField::Choice) {
if (isGroup() || line_below || enabled.isScripted() || tag.isComplex()) {
// complex values are groups
REFLECT(name);
REFLECT_N("group_choice", default_name);
@@ -157,16 +157,6 @@ IMPLEMENT_REFLECTION_NO_GET_MEMBER(ChoiceField::Choice) {
}
}
template <> void GetDefaultMember::handle(const ChoiceField::Choice& c) {
if (!c.isGroup()) handle(c.name);
}
template <> void GetMember::handle(const ChoiceField::Choice& c) {
handle(_("name"), c.name);
handle(_("group choice"), c.default_name);
handle(_("choices"), c.choices);
}
// ----------------------------------------------------------------------------- : ChoiceStyle
ChoiceStyle::ChoiceStyle(const ChoiceFieldP& field)
+9 -4
View File
@@ -172,7 +172,7 @@ IMPLEMENT_REFLECTION_ENUM(PackSelectType) {
VALUE_N("replace", SELECT_REPLACE);
VALUE_N("no replace", SELECT_NO_REPLACE);
VALUE_N("cyclic", SELECT_CYCLIC);
VALUE_N("one", SELECT_PROPORTIONAL);
VALUE_N("proportional",SELECT_PROPORTIONAL);
VALUE_N("nonempty", SELECT_NONEMPTY);
VALUE_N("first", SELECT_FIRST);
}
@@ -198,9 +198,13 @@ IMPLEMENT_REFLECTION(PackType) {
}
IMPLEMENT_REFLECTION(PackItem) {
REFLECT(name);
REFLECT(amount);
REFLECT(probability);
if (!tag.isComplex()) {
REFLECT_NAMELESS(name);
} else {
REFLECT(name);
REFLECT(amount);
REFLECT(probability);
}
}
@@ -389,6 +393,7 @@ void PackInstance::generate(vector<CardP>* out) {
} else if (pack_type.select == SELECT_CYCLIC) {
size_t total = cards.size() + pack_type.items.size();
if (total <= 0) total = 1; // prevent div by 0
size_t div = requested_copies / total;
size_t rem = requested_copies % total;
for (size_t i = 0 ; i < total ; ++i) {