diff --git a/src/openrct2/core/DataSerialiserTraits.h b/src/openrct2/core/DataSerialiserTraits.h index bb4b638724..7cea7fe8f5 100644 --- a/src/openrct2/core/DataSerialiserTraits.h +++ b/src/openrct2/core/DataSerialiserTraits.h @@ -38,19 +38,23 @@ template struct DataSerializerTraits_t template struct DataSerializerTraits_enum { + using TUnderlying = std::underlying_type_t; + static void encode(OpenRCT2::IStream* stream, const T& val) { - stream->Write(&val); + TUnderlying temp = ByteSwapBE(static_cast(val)); + stream->Write(&temp); } static void decode(OpenRCT2::IStream* stream, T& val) { - stream->Read(&val); + TUnderlying temp; + stream->Read(&temp); + val = static_cast(ByteSwapBE(temp)); } static void log(OpenRCT2::IStream* stream, const T& val) { - using underlying = std::underlying_type_t; std::stringstream ss; - ss << std::hex << std::setw(sizeof(underlying) * 2) << std::setfill('0') << static_cast(val); + ss << std::hex << std::setw(sizeof(TUnderlying) * 2) << std::setfill('0') << static_cast(val); std::string str = ss.str(); stream->Write(str.c_str(), str.size());