@@ -124,8 +124,8 @@ void ItemDefinition::reset()
124
124
125
125
void ItemDefinition::serialize (std::ostream &os, u16 protocol_version) const
126
126
{
127
-
128
- writeU8 (os, 3 ); // version (proto > 20)
127
+ u8 version = (protocol_version >= 34 ) ? 4 : 3 ;
128
+ writeU8 (os, version);
129
129
writeU8 (os, type);
130
130
os << serializeString (name);
131
131
os << serializeString (description);
@@ -156,8 +156,11 @@ void ItemDefinition::serialize(std::ostream &os, u16 protocol_version) const
156
156
writeF1000 (os, sound_place_failed.gain );
157
157
os << serializeString (palette_image);
158
158
writeU32 (os, color.color );
159
- writeF1000 (os, sound_place.pitch );
160
- writeF1000 (os, sound_place_failed.pitch );
159
+
160
+ if (version >= 4 ) {
161
+ writeF1000 (os, sound_place.pitch );
162
+ writeF1000 (os, sound_place_failed.pitch );
163
+ }
161
164
}
162
165
163
166
void ItemDefinition::deSerialize (std::istream &is)
@@ -167,7 +170,7 @@ void ItemDefinition::deSerialize(std::istream &is)
167
170
168
171
// Deserialize
169
172
int version = readU8 (is);
170
- if (version < 1 || version > 3 )
173
+ if (version < 1 || version > 4 )
171
174
throw SerializationError (" unsupported ItemDefinition version" );
172
175
type = (enum ItemType)readU8 (is);
173
176
name = deSerializeString (is);
@@ -216,8 +219,11 @@ void ItemDefinition::deSerialize(std::istream &is)
216
219
sound_place_failed.gain = readF1000 (is);
217
220
palette_image = deSerializeString (is);
218
221
color.set (readU32 (is));
219
- sound_place.pitch = readF1000 (is);
220
- sound_place_failed.pitch = readF1000 (is);
222
+
223
+ if (version >= 4 ) {
224
+ sound_place.pitch = readF1000 (is);
225
+ sound_place_failed.pitch = readF1000 (is);
226
+ }
221
227
} catch (SerializationError &e) {};
222
228
}
223
229
0 commit comments