Skip to content

Commit 641acff

Browse files
committed
Add game and stylesheet version numbers to set files. Closes #39
1 parent 0913912 commit 641acff

File tree

3 files changed

+27
-3
lines changed

3 files changed

+27
-3
lines changed

src/data/card.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,14 @@ void mark_dependency_member(const Card& card, const String& name, const Dependen
6868
mark_dependency_member(card.data, name, dep);
6969
}
7070

71+
void reflect_version_check(Reader& handler, const Char* key, intrusive_ptr<Packaged> const& package);
72+
void reflect_version_check(Writer& handler, const Char* key, intrusive_ptr<Packaged> const& package);
73+
void reflect_version_check(GetMember& handler, const Char* key, intrusive_ptr<Packaged> const& package);
74+
void reflect_version_check(GetDefaultMember& handler, const Char* key, intrusive_ptr<Packaged> const& package);
75+
7176
IMPLEMENT_REFLECTION(Card) {
7277
REFLECT(stylesheet);
78+
reflect_version_check(handler, _("stylesheet_version"), stylesheet);
7379
REFLECT(has_styling);
7480
if (has_styling) {
7581
if (stylesheet) {

src/data/set.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,15 +166,31 @@ void Set::validate(Version file_app_version) {
166166
script_manager->updateAll();
167167
}
168168

169+
void reflect_version_check(Reader& handler, const Char* key, intrusive_ptr<Packaged> const& package) {
170+
if (!package) return;
171+
Version v = package->version;
172+
handler.handle(key, v);
173+
if (package->version < v) {
174+
queue_message(MESSAGE_WARNING, "This set file is made with a newer version of the '" + package->name() + "' template. Please update the template files.");
175+
}
176+
}
177+
void reflect_version_check(Writer& handler, const Char* key, intrusive_ptr<Packaged> const& package) {
178+
handler.handle(key, package->version);
179+
}
180+
void reflect_version_check(GetMember& handler, const Char* key, intrusive_ptr<Packaged> const& package) {}
181+
void reflect_version_check(GetDefaultMember& handler, const Char* key, intrusive_ptr<Packaged> const& package) {}
182+
169183
IMPLEMENT_REFLECTION(Set) {
170184
REFLECT(game);
171185
if (game) {
172186
REFLECT_IF_READING {
173187
data.init(game->set_fields);
174188
}
189+
reflect_version_check(handler, _("game_version"), game);
175190
WITH_DYNAMIC_ARG(game_for_reading, game.get());
176191
REFLECT(stylesheet);
177192
REFLECT_COMPAT(<300, "style", stylesheet);
193+
reflect_version_check(handler, _("stylesheet_version"), stylesheet);
178194
WITH_DYNAMIC_ARG(stylesheet_for_reading, stylesheet.get());
179195
REFLECT_N("set_info", data);
180196
if (stylesheet) {

src/util/version.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ const Char* version_suffix = _(" (ascii build)");
7070
* 0.3.0 : port of code to C++
7171
* 0.3.1 : new keyword system, some new style options
7272
* 0.3.2 : package dependencies
73-
* 0.3.3 : keyword separator before/after
73+
* 0.3.3 : keywor
74+
d separator before/after
7475
* 0.3.4 : html export; choice rendering based on scripted 'image'
7576
* 0.3.5 : word lists, symbol font 'as text'
7677
* 0.3.6 : free rotation, rotation behaviour changed.
@@ -82,14 +83,15 @@ const Char* version_suffix = _(" (ascii build)");
8283
* - store time created,modified for cards -> changes set and clipboard format
8384
* 0.3.9 : bugfix release mostly, a few new script functions
8485
* 2.0.0 : bugfix release mostly, added error console
86+
* 2.0.2 : store game and stylesheet version numbers
8587
*/
8688
const Version file_version_locale = 20002; // 2.0.2
87-
const Version file_version_set = 308; // 0.3.8
89+
const Version file_version_set = 20002; // 2.0.2
8890
const Version file_version_game = 308; // 0.3.8
8991
const Version file_version_stylesheet = 308; // 0.3.8
9092
const Version file_version_symbol_font = 306; // 0.3.6
9193
const Version file_version_export_template = 307; // 0.3.7
9294
const Version file_version_installer = 307; // 0.3.7
9395
const Version file_version_symbol = 305; // 0.3.5
94-
const Version file_version_clipboard = 308; // 0.3.8
96+
const Version file_version_clipboard = 20002; // 2.0.2
9597
const Version file_version_script = 307; // 0.3.7

0 commit comments

Comments
 (0)