mirror of
https://github.com/amyinspace/MagicSetEditor2.git
synced 2026-06-12 13:37:00 -04:00
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:
@@ -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) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
|
|||||||
+9
-4
@@ -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) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
IMPLEMENT_REFLECTION(PackItem) {
|
IMPLEMENT_REFLECTION(PackItem) {
|
||||||
REFLECT(name);
|
if (!tag.isComplex()) {
|
||||||
REFLECT(amount);
|
REFLECT_NAMELESS(name);
|
||||||
REFLECT(probability);
|
} else {
|
||||||
|
REFLECT(name);
|
||||||
|
REFLECT(amount);
|
||||||
|
REFLECT(probability);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -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
|
|||||||
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 {
|
|||||||
/// 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 {
|
|||||||
/// 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*) {}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user