Fix sending incorrect date values on world change
Yak shave: make more things use cTickTime. Fix a couple of incorrect modulo-on-millisecond-value by making them use WorldTickAge.
This commit is contained in:
@@ -1566,20 +1566,23 @@ void cProtocol_1_8_0::SendTitleTimes(int a_FadeInTicks, int a_DisplayTicks, int
|
||||
|
||||
|
||||
|
||||
void cProtocol_1_8_0::SendTimeUpdate(Int64 a_WorldAge, Int64 a_WorldDate, bool a_DoDaylightCycle)
|
||||
void cProtocol_1_8_0::SendTimeUpdate(const cTickTimeLong a_WorldAge, const cTickTimeLong a_WorldDate, const bool a_DoDaylightCycle)
|
||||
{
|
||||
ASSERT(m_State == 3); // In game mode?
|
||||
|
||||
if (!a_DoDaylightCycle)
|
||||
cPacketizer Pkt(*this, pktTimeUpdate);
|
||||
Pkt.WriteBEInt64(a_WorldAge.count());
|
||||
|
||||
if (a_DoDaylightCycle)
|
||||
{
|
||||
Pkt.WriteBEInt64(a_WorldDate.count());
|
||||
}
|
||||
else
|
||||
{
|
||||
// Negating the date stops time from advancing on the client
|
||||
// (the std::min construction is to handle the case where the date is exactly zero):
|
||||
a_WorldDate = std::min(-a_WorldDate, -1LL);
|
||||
Pkt.WriteBEInt64(std::min(-a_WorldDate.count(), -1LL));
|
||||
}
|
||||
|
||||
cPacketizer Pkt(*this, pktTimeUpdate);
|
||||
Pkt.WriteBEInt64(a_WorldAge);
|
||||
Pkt.WriteBEInt64(a_WorldDate);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user