summaryrefslogtreecommitdiff
path: root/network_server.c
diff options
context:
space:
mode:
authorludde <ludde@openttd.org>2005-07-16 12:59:23 +0000
committerludde <ludde@openttd.org>2005-07-16 12:59:23 +0000
commit8ff1f8c5262c6804cd1a9ed57e94ddcce3fecc54 (patch)
treee17b5f56d14d21887e4a302f32c3469ab48bb91c /network_server.c
parentf12b3a0c1816dc5a8b95132b95025740f6c2b438 (diff)
downloadopenttd-8ff1f8c5262c6804cd1a9ed57e94ddcce3fecc54.tar.xz
(svn r2589) Fix: [network] Fixed static variable that wasn't initialized. Would stop the sync checking from working in some cases.
Diffstat (limited to 'network_server.c')
-rw-r--r--network_server.c42
1 files changed, 20 insertions, 22 deletions
diff --git a/network_server.c b/network_server.c
index e3c8a511c..ca8bd2e8f 100644
--- a/network_server.c
+++ b/network_server.c
@@ -1512,11 +1512,11 @@ void NetworkHandleCommandQueue(NetworkClientState *cs) {
// This is called every tick if this is a _network_server
void NetworkServer_Tick(void)
{
-#ifndef ENABLE_NETWORK_SYNC_EVERY_FRAME
- static uint32 last_sync_frame = 0;
-#endif
NetworkClientState *cs;
bool send_frame = false;
+#ifndef ENABLE_NETWORK_SYNC_EVERY_FRAME
+ bool send_sync = false;
+#endif
// Update max-frame-counter
if (_frame_counter > _frame_counter_max) {
@@ -1524,6 +1524,13 @@ void NetworkServer_Tick(void)
send_frame = true;
}
+#ifndef ENABLE_NETWORK_SYNC_EVERY_FRAME
+ if (_frame_counter >= _last_sync_frame + _network_sync_freq) {
+ _last_sync_frame = _frame_counter;
+ send_sync = true;
+ }
+#endif
+
// Now we are done with the frame, inform the clients that they can
// do their frame!
FOR_ALL_CLIENTS(cs) {
@@ -1556,30 +1563,21 @@ void NetworkServer_Tick(void)
}
}
-
- // Check if we can send command, and if we have anything in the queue
- if (cs->status > STATUS_DONE_MAP) {
+ if (cs->status >= STATUS_PRE_ACTIVE) {
+ // Check if we can send command, and if we have anything in the queue
NetworkHandleCommandQueue(cs);
- }
- // Do we need to send the new frame-packet?
- if (send_frame && (cs->status == STATUS_ACTIVE || cs->status == STATUS_PRE_ACTIVE)) {
- SEND_COMMAND(PACKET_SERVER_FRAME)(cs);
- }
-#ifndef ENABLE_NETWORK_SYNC_EVERY_FRAME
- // Is it time to send a sync-packet to all clients?
- if (last_sync_frame + _network_sync_freq < _frame_counter) {
- SEND_COMMAND(PACKET_SERVER_SYNC)(cs);
- }
-#endif
- }
+ // Send an updated _frame_counter_max to the client
+ if (send_frame)
+ SEND_COMMAND(PACKET_SERVER_FRAME)(cs);
#ifndef ENABLE_NETWORK_SYNC_EVERY_FRAME
- // Update the last_sync_frame if needed!
- if (last_sync_frame + _network_sync_freq < _frame_counter) {
- last_sync_frame = _frame_counter;
- }
+ // Send a sync-check packet
+ if (send_sync)
+ SEND_COMMAND(PACKET_SERVER_SYNC)(cs);
#endif
+ }
+ }
/* See if we need to advertise */
NetworkUDPAdvertise();