Add game and stylesheet version numbers to set files. Closes #39

This commit is contained in:
Twan van Laarhoven
2020-05-19 23:56:23 +02:00
parent 09139128e1
commit 641acff92a
3 changed files with 27 additions and 3 deletions
+6
View File
@@ -68,8 +68,14 @@ void mark_dependency_member(const Card& card, const String& name, const Dependen
mark_dependency_member(card.data, name, dep); mark_dependency_member(card.data, name, dep);
} }
void reflect_version_check(Reader& handler, const Char* key, intrusive_ptr<Packaged> const& package);
void reflect_version_check(Writer& handler, const Char* key, intrusive_ptr<Packaged> const& package);
void reflect_version_check(GetMember& handler, const Char* key, intrusive_ptr<Packaged> const& package);
void reflect_version_check(GetDefaultMember& handler, const Char* key, intrusive_ptr<Packaged> const& package);
IMPLEMENT_REFLECTION(Card) { IMPLEMENT_REFLECTION(Card) {
REFLECT(stylesheet); REFLECT(stylesheet);
reflect_version_check(handler, _("stylesheet_version"), stylesheet);
REFLECT(has_styling); REFLECT(has_styling);
if (has_styling) { if (has_styling) {
if (stylesheet) { if (stylesheet) {
+16
View File
@@ -166,15 +166,31 @@ void Set::validate(Version file_app_version) {
script_manager->updateAll(); script_manager->updateAll();
} }
void reflect_version_check(Reader& handler, const Char* key, intrusive_ptr<Packaged> const& package) {
if (!package) return;
Version v = package->version;
handler.handle(key, v);
if (package->version < v) {
queue_message(MESSAGE_WARNING, "This set file is made with a newer version of the '" + package->name() + "' template. Please update the template files.");
}
}
void reflect_version_check(Writer& handler, const Char* key, intrusive_ptr<Packaged> const& package) {
handler.handle(key, package->version);
}
void reflect_version_check(GetMember& handler, const Char* key, intrusive_ptr<Packaged> const& package) {}
void reflect_version_check(GetDefaultMember& handler, const Char* key, intrusive_ptr<Packaged> const& package) {}
IMPLEMENT_REFLECTION(Set) { IMPLEMENT_REFLECTION(Set) {
REFLECT(game); REFLECT(game);
if (game) { if (game) {
REFLECT_IF_READING { REFLECT_IF_READING {
data.init(game->set_fields); data.init(game->set_fields);
} }
reflect_version_check(handler, _("game_version"), game);
WITH_DYNAMIC_ARG(game_for_reading, game.get()); WITH_DYNAMIC_ARG(game_for_reading, game.get());
REFLECT(stylesheet); REFLECT(stylesheet);
REFLECT_COMPAT(<300, "style", stylesheet); REFLECT_COMPAT(<300, "style", stylesheet);
reflect_version_check(handler, _("stylesheet_version"), stylesheet);
WITH_DYNAMIC_ARG(stylesheet_for_reading, stylesheet.get()); WITH_DYNAMIC_ARG(stylesheet_for_reading, stylesheet.get());
REFLECT_N("set_info", data); REFLECT_N("set_info", data);
if (stylesheet) { if (stylesheet) {
+5 -3
View File
@@ -70,7 +70,8 @@ const Char* version_suffix = _(" (ascii build)");
* 0.3.0 : port of code to C++ * 0.3.0 : port of code to C++
* 0.3.1 : new keyword system, some new style options * 0.3.1 : new keyword system, some new style options
* 0.3.2 : package dependencies * 0.3.2 : package dependencies
* 0.3.3 : keyword separator before/after * 0.3.3 : keywor
d separator before/after
* 0.3.4 : html export; choice rendering based on scripted 'image' * 0.3.4 : html export; choice rendering based on scripted 'image'
* 0.3.5 : word lists, symbol font 'as text' * 0.3.5 : word lists, symbol font 'as text'
* 0.3.6 : free rotation, rotation behaviour changed. * 0.3.6 : free rotation, rotation behaviour changed.
@@ -82,14 +83,15 @@ const Char* version_suffix = _(" (ascii build)");
* - store time created,modified for cards -> changes set and clipboard format * - store time created,modified for cards -> changes set and clipboard format
* 0.3.9 : bugfix release mostly, a few new script functions * 0.3.9 : bugfix release mostly, a few new script functions
* 2.0.0 : bugfix release mostly, added error console * 2.0.0 : bugfix release mostly, added error console
* 2.0.2 : store game and stylesheet version numbers
*/ */
const Version file_version_locale = 20002; // 2.0.2 const Version file_version_locale = 20002; // 2.0.2
const Version file_version_set = 308; // 0.3.8 const Version file_version_set = 20002; // 2.0.2
const Version file_version_game = 308; // 0.3.8 const Version file_version_game = 308; // 0.3.8
const Version file_version_stylesheet = 308; // 0.3.8 const Version file_version_stylesheet = 308; // 0.3.8
const Version file_version_symbol_font = 306; // 0.3.6 const Version file_version_symbol_font = 306; // 0.3.6
const Version file_version_export_template = 307; // 0.3.7 const Version file_version_export_template = 307; // 0.3.7
const Version file_version_installer = 307; // 0.3.7 const Version file_version_installer = 307; // 0.3.7
const Version file_version_symbol = 305; // 0.3.5 const Version file_version_symbol = 305; // 0.3.5
const Version file_version_clipboard = 308; // 0.3.8 const Version file_version_clipboard = 20002; // 2.0.2
const Version file_version_script = 307; // 0.3.7 const Version file_version_script = 307; // 0.3.7