Skip to content

Commit cdc538e

Browse files
committedJan 30, 2017
Plantlike visual scale: Send sqrt(visual_scale) to old clients
Keep compatibility with protocol < 30 clients now that visual_scale is no longer applied twice to plantlike drawtype and mods are being updated to a new value.
1 parent e761b9f commit cdc538e

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed
 

Diff for: ‎src/network/networkprotocol.h

+2
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
146146
PROTOCOL VERSION 30:
147147
New ContentFeatures serialization version
148148
Add node and tile color and palette
149+
Fix plantlike visual_scale being applied squared and add compatibility
150+
with pre-30 clients by sending sqrt(visual_scale)
149151
*/
150152

151153
#define LATEST_PROTOCOL_VERSION 30

Diff for: ‎src/nodedef.cpp

+7-3
Original file line numberDiff line numberDiff line change
@@ -1611,6 +1611,10 @@ void ContentFeatures::serializeOld(std::ostream &os, u16 protocol_version) const
16111611
compatible_param_type_2 = CPT2_WALLMOUNTED;
16121612
}
16131613

1614+
float compatible_visual_scale = visual_scale;
1615+
if (protocol_version < 30 && drawtype == NDT_PLANTLIKE)
1616+
compatible_visual_scale = sqrt(visual_scale);
1617+
16141618
if (protocol_version == 13)
16151619
{
16161620
writeU8(os, 5); // version
@@ -1622,7 +1626,7 @@ void ContentFeatures::serializeOld(std::ostream &os, u16 protocol_version) const
16221626
writeS16(os, i->second);
16231627
}
16241628
writeU8(os, drawtype);
1625-
writeF1000(os, visual_scale);
1629+
writeF1000(os, compatible_visual_scale);
16261630
writeU8(os, 6);
16271631
for (u32 i = 0; i < 6; i++)
16281632
tiledef[i].serialize(os, protocol_version);
@@ -1670,7 +1674,7 @@ void ContentFeatures::serializeOld(std::ostream &os, u16 protocol_version) const
16701674
writeS16(os, i->second);
16711675
}
16721676
writeU8(os, drawtype);
1673-
writeF1000(os, visual_scale);
1677+
writeF1000(os, compatible_visual_scale);
16741678
writeU8(os, 6);
16751679
for (u32 i = 0; i < 6; i++)
16761680
tiledef[i].serialize(os, protocol_version);
@@ -1724,7 +1728,7 @@ void ContentFeatures::serializeOld(std::ostream &os, u16 protocol_version) const
17241728
writeS16(os, i->second);
17251729
}
17261730
writeU8(os, drawtype);
1727-
writeF1000(os, visual_scale);
1731+
writeF1000(os, compatible_visual_scale);
17281732
writeU8(os, 6);
17291733
for (u32 i = 0; i < 6; i++)
17301734
tiledef[i].serialize(os, protocol_version);

0 commit comments

Comments
 (0)