the game can still read old v1.1 replays, and currently writes in that version by default, too. it should be defaulted to the new format when the first gameplay change from v1.1 is made.
74 lines
2.1 KiB
C
74 lines
2.1 KiB
C
/*
|
|
* This software is licensed under the terms of the MIT-License
|
|
* See COPYING for further information.
|
|
* ---
|
|
* Copyright (c) 2011-2017, Lukas Weber <laochailan@web.de>.
|
|
* Copyright (c) 2012-2017, Andrei Alexeyev <akari@alienslab.net>.
|
|
*/
|
|
|
|
#include <version.h>
|
|
|
|
int taisei_version_compare(TaiseiVersion *v1, TaiseiVersion *v2, TaiseiVersionCmpLevel level) {
|
|
int result = 0;
|
|
|
|
if((result = v1->major - v2->major) && level >= VCMP_MAJOR) return result;
|
|
if((result = v1->minor - v2->minor) && level >= VCMP_MINOR) return result;
|
|
if((result = v1->patch - v2->patch) && level >= VCMP_PATCH) return result;
|
|
if((result = v1->tweak - v2->tweak) && level >= VCMP_TWEAK) return result;
|
|
|
|
return result;
|
|
}
|
|
|
|
size_t taisei_version_read(SDL_RWops *rwops, TaiseiVersion *version) {
|
|
// XXX: detect errors somehow?
|
|
|
|
version->major = SDL_ReadU8(rwops);
|
|
version->minor = SDL_ReadU8(rwops);
|
|
version->patch = SDL_ReadU8(rwops);
|
|
version->tweak = SDL_ReadLE16(rwops);
|
|
|
|
return TAISEI_VERSION_SIZE;
|
|
}
|
|
|
|
size_t taisei_version_write(SDL_RWops *rwops, TaiseiVersion *version) {
|
|
size_t wrote_now = 0, wrote_total = 0;
|
|
|
|
if(!(wrote_now = SDL_WriteU8(rwops, version->major))) {
|
|
return wrote_total;
|
|
} else {
|
|
wrote_total += wrote_now;
|
|
}
|
|
|
|
if(!(wrote_now = SDL_WriteU8(rwops, version->minor))) {
|
|
return wrote_total;
|
|
} else {
|
|
wrote_total += wrote_now;
|
|
}
|
|
|
|
if(!(wrote_now = SDL_WriteU8(rwops, version->patch))) {
|
|
return wrote_total;
|
|
} else {
|
|
wrote_total += wrote_now;
|
|
}
|
|
|
|
if(!(wrote_now = 2 * SDL_WriteLE16(rwops, version->tweak))) {
|
|
return wrote_total;
|
|
} else {
|
|
wrote_total += wrote_now;
|
|
}
|
|
|
|
assert(wrote_total == TAISEI_VERSION_SIZE);
|
|
return wrote_total;
|
|
}
|
|
|
|
char* taisei_version_tostring(TaiseiVersion *version) {
|
|
if(!version->tweak) {
|
|
if(!version->patch) {
|
|
return strfmt("%u.%u", version->major, version->minor);
|
|
}
|
|
|
|
return strfmt("%u.%u.%u", version->major, version->minor, version->patch);
|
|
}
|
|
|
|
return strfmt("%u.%u.%u.%u", version->major, version->minor, version->patch, version->tweak);
|
|
}
|