Merge branch 'save_ext' into improved_breakdowns-sx
This commit is contained in:
@@ -61,13 +61,9 @@ bool SlXvFeatureTest::IsFeaturePresent(uint16 savegame_version, uint16 savegame_
|
|||||||
{
|
{
|
||||||
bool savegame_version_ok = savegame_version >= savegame_version_from && savegame_version <= savegame_version_to;
|
bool savegame_version_ok = savegame_version >= savegame_version_from && savegame_version <= savegame_version_to;
|
||||||
|
|
||||||
SlXvFeatureIndex feature = static_cast<SlXvFeatureIndex>(GB(this->value, 0, 16));
|
if (this->feature == XSLFI_NULL) return savegame_version_ok;
|
||||||
if (feature == XSLFI_NULL) return savegame_version_ok;
|
|
||||||
|
|
||||||
uint16 min_version = GB(this->value, 16, 16);
|
bool feature_ok = SlXvIsFeaturePresent(this->feature, this->min_version, this->max_version);
|
||||||
uint16 max_version = GB(this->value, 32, 16);
|
|
||||||
SlXvFeatureTestOperator op = static_cast<SlXvFeatureTestOperator>(GB(this->value, 48, 16));
|
|
||||||
bool feature_ok = SlXvIsFeaturePresent(feature, min_version, max_version);
|
|
||||||
|
|
||||||
switch (op) {
|
switch (op) {
|
||||||
case XSLFTO_OR:
|
case XSLFTO_OR:
|
||||||
|
@@ -41,20 +41,17 @@ enum SlXvFeatureTestOperator {
|
|||||||
*/
|
*/
|
||||||
struct SlXvFeatureTest {
|
struct SlXvFeatureTest {
|
||||||
private:
|
private:
|
||||||
uint64 value;
|
uint16 min_version;
|
||||||
|
uint16 max_version;
|
||||||
|
SlXvFeatureIndex feature;
|
||||||
|
SlXvFeatureTestOperator op;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SlXvFeatureTest()
|
SlXvFeatureTest()
|
||||||
: value(0) { }
|
: min_version(0), max_version(0), feature(XSLFI_NULL), op(XSLFTO_OR) { }
|
||||||
|
|
||||||
SlXvFeatureTest(SlXvFeatureTestOperator op, SlXvFeatureIndex feature, uint16 min_version = 1, uint16 max_version = 0xFFFF)
|
SlXvFeatureTest(SlXvFeatureTestOperator op_, SlXvFeatureIndex feature_, uint16 min_version_ = 1, uint16 max_version_ = 0xFFFF)
|
||||||
{
|
: min_version(min_version_), max_version(max_version_), feature(feature_), op(op_) { }
|
||||||
this->value = 0;
|
|
||||||
SB(this->value, 0, 16, feature);
|
|
||||||
SB(this->value, 16, 16, min_version);
|
|
||||||
SB(this->value, 32, 16, max_version);
|
|
||||||
SB(this->value, 48, 16, op);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool IsFeaturePresent(uint16 savegame_version, uint16 savegame_version_from, uint16 savegame_version_to) const;
|
bool IsFeaturePresent(uint16 savegame_version, uint16 savegame_version_from, uint16 savegame_version_to) const;
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user