mirror of https://github.com/OpenTTD/OpenTTD
(svn r2755) Fix: Fix a desync issue with autoreplace
parent
3a162799fd
commit
bb1e1f2b5f
|
@ -1205,8 +1205,15 @@ void NetworkGameLoop(void)
|
||||||
if (!NetworkReceive()) return;
|
if (!NetworkReceive()) return;
|
||||||
|
|
||||||
if (_network_server) {
|
if (_network_server) {
|
||||||
|
bool send_frame = false;
|
||||||
|
|
||||||
// We first increase the _frame_counter
|
// We first increase the _frame_counter
|
||||||
_frame_counter++;
|
_frame_counter++;
|
||||||
|
// Update max-frame-counter
|
||||||
|
if (_frame_counter > _frame_counter_max) {
|
||||||
|
_frame_counter_max = _frame_counter + _network_frame_freq;
|
||||||
|
send_frame = true;
|
||||||
|
}
|
||||||
|
|
||||||
NetworkHandleLocalQueue();
|
NetworkHandleLocalQueue();
|
||||||
|
|
||||||
|
@ -1218,7 +1225,7 @@ void NetworkGameLoop(void)
|
||||||
_sync_seed_2 = _random_seeds[0][1];
|
_sync_seed_2 = _random_seeds[0][1];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
NetworkServer_Tick();
|
NetworkServer_Tick(send_frame);
|
||||||
} else {
|
} else {
|
||||||
// Client
|
// Client
|
||||||
|
|
||||||
|
|
|
@ -1499,20 +1499,13 @@ void NetworkHandleCommandQueue(NetworkClientState *cs) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// This is called every tick if this is a _network_server
|
// This is called every tick if this is a _network_server
|
||||||
void NetworkServer_Tick(void)
|
void NetworkServer_Tick(bool send_frame)
|
||||||
{
|
{
|
||||||
NetworkClientState *cs;
|
NetworkClientState *cs;
|
||||||
bool send_frame = false;
|
|
||||||
#ifndef ENABLE_NETWORK_SYNC_EVERY_FRAME
|
#ifndef ENABLE_NETWORK_SYNC_EVERY_FRAME
|
||||||
bool send_sync = false;
|
bool send_sync = false;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Update max-frame-counter
|
|
||||||
if (_frame_counter > _frame_counter_max) {
|
|
||||||
_frame_counter_max = _frame_counter + _network_frame_freq;
|
|
||||||
send_frame = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef ENABLE_NETWORK_SYNC_EVERY_FRAME
|
#ifndef ENABLE_NETWORK_SYNC_EVERY_FRAME
|
||||||
if (_frame_counter >= _last_sync_frame + _network_sync_freq) {
|
if (_frame_counter >= _last_sync_frame + _network_sync_freq) {
|
||||||
_last_sync_frame = _frame_counter;
|
_last_sync_frame = _frame_counter;
|
||||||
|
|
|
@ -16,7 +16,7 @@ bool NetworkFindName(char new_name[NETWORK_NAME_LENGTH]);
|
||||||
void NetworkServer_HandleChat(NetworkAction action, DestType desttype, int dest, const char *msg, uint16 from_index);
|
void NetworkServer_HandleChat(NetworkAction action, DestType desttype, int dest, const char *msg, uint16 from_index);
|
||||||
|
|
||||||
bool NetworkServer_ReadPackets(NetworkClientState *cs);
|
bool NetworkServer_ReadPackets(NetworkClientState *cs);
|
||||||
void NetworkServer_Tick(void);
|
void NetworkServer_Tick(bool send_frame);
|
||||||
void NetworkServerMonthlyLoop(void);
|
void NetworkServerMonthlyLoop(void);
|
||||||
void NetworkServerYearlyLoop(void);
|
void NetworkServerYearlyLoop(void);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue