Commit a8029630 authored by twanvl's avatar twanvl

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

parent 0fc9a78e
...@@ -143,8 +143,8 @@ IMPLEMENT_REFLECTION_ENUM(ChoiceChoiceType) { ...@@ -143,8 +143,8 @@ IMPLEMENT_REFLECTION_ENUM(ChoiceChoiceType) {
VALUE_N("radio", CHOICE_TYPE_RADIO); VALUE_N("radio", CHOICE_TYPE_RADIO);
} }
IMPLEMENT_REFLECTION_NO_GET_MEMBER(ChoiceField::Choice) { IMPLEMENT_REFLECTION(ChoiceField::Choice) {
if (isGroup() || line_below || enabled.isScripted() || (tag.reading() && tag.isComplex())) { if (isGroup() || line_below || enabled.isScripted() || tag.isComplex()) {
// complex values are groups // complex values are groups
REFLECT(name); REFLECT(name);
REFLECT_N("group_choice", default_name); REFLECT_N("group_choice", default_name);
...@@ -157,16 +157,6 @@ IMPLEMENT_REFLECTION_NO_GET_MEMBER(ChoiceField::Choice) { ...@@ -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::ChoiceStyle(const ChoiceFieldP& field) ChoiceStyle::ChoiceStyle(const ChoiceFieldP& field)
......
...@@ -172,7 +172,7 @@ IMPLEMENT_REFLECTION_ENUM(PackSelectType) { ...@@ -172,7 +172,7 @@ IMPLEMENT_REFLECTION_ENUM(PackSelectType) {
VALUE_N("replace", SELECT_REPLACE); VALUE_N("replace", SELECT_REPLACE);
VALUE_N("no replace", SELECT_NO_REPLACE); VALUE_N("no replace", SELECT_NO_REPLACE);
VALUE_N("cyclic", SELECT_CYCLIC); VALUE_N("cyclic", SELECT_CYCLIC);
VALUE_N("one", SELECT_PROPORTIONAL); VALUE_N("proportional",SELECT_PROPORTIONAL);
VALUE_N("nonempty", SELECT_NONEMPTY); VALUE_N("nonempty", SELECT_NONEMPTY);
VALUE_N("first", SELECT_FIRST); VALUE_N("first", SELECT_FIRST);
} }
...@@ -198,9 +198,13 @@ IMPLEMENT_REFLECTION(PackType) { ...@@ -198,9 +198,13 @@ IMPLEMENT_REFLECTION(PackType) {
} }
IMPLEMENT_REFLECTION(PackItem) { IMPLEMENT_REFLECTION(PackItem) {
if (!tag.isComplex()) {
REFLECT_NAMELESS(name);
} else {
REFLECT(name); REFLECT(name);
REFLECT(amount); REFLECT(amount);
REFLECT(probability); REFLECT(probability);
}
} }
...@@ -389,6 +393,7 @@ void PackInstance::generate(vector<CardP>* out) { ...@@ -389,6 +393,7 @@ void PackInstance::generate(vector<CardP>* out) {
} else if (pack_type.select == SELECT_CYCLIC) { } else if (pack_type.select == SELECT_CYCLIC) {
size_t total = cards.size() + pack_type.items.size(); 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 div = requested_copies / total;
size_t rem = requested_copies % total; size_t rem = requested_copies % total;
for (size_t i = 0 ; i < total ; ++i) { for (size_t i = 0 ; i < total ; ++i) {
......
...@@ -33,3 +33,8 @@ template <> void GetDefaultMember::handle(const Color& v) { value = to_sc ...@@ -33,3 +33,8 @@ template <> void GetDefaultMember::handle(const Color& v) { value = to_sc
GetMember::GetMember(const String& name) GetMember::GetMember(const String& name)
: target_name(name) : target_name(name)
{} {}
// caused by the pattern: if (!tag.isComplex()) { REFLECT_NAMELESS(stuff) }
template <> void GetMember::handle(const String& v) {
throw InternalError(_("GetDefaultMember::handle"));
}
...@@ -74,7 +74,7 @@ class GetMember : private GetDefaultMember { ...@@ -74,7 +74,7 @@ class GetMember : private GetDefaultMember {
/// Tell the reflection code we are not reading /// Tell the reflection code we are not reading
inline bool reading() const { return false; } inline bool reading() const { return false; }
inline bool scripting() const { return true; } inline bool scripting() const { return true; }
inline bool isComplex() const { return false; } inline bool isComplex() const { return true; }
inline void addAlias(int, const Char*, const Char*) {} inline void addAlias(int, const Char*, const Char*) {}
inline void handleIgnore(int, const Char*) {} inline void handleIgnore(int, const Char*) {}
......
...@@ -31,7 +31,7 @@ class Writer { ...@@ -31,7 +31,7 @@ class Writer {
/// Tell the reflection code we are not reading /// Tell the reflection code we are not reading
inline bool reading() const { return false; } inline bool reading() const { return false; }
inline bool scripting() const { return false; } inline bool scripting() const { return false; }
inline bool isComplex() const { return false; } inline bool isComplex() const { return true; }
inline void addAlias(int, const Char*, const Char*) {} inline void addAlias(int, const Char*, const Char*) {}
inline void handleIgnore(int, const Char*) {} inline void handleIgnore(int, const Char*) {}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment