From: Christian Heller <c.heller@plomlompom.de>
Date: Thu, 3 Dec 2020 00:47:13 +0000 (+0100)
Subject: Only send out new gamestate every 1/25 second.
X-Git-Url: https://plomlompom.com/repos/%22https:/validator.w3.org/%7B%7Bprefix%7D%7D/index.html?a=commitdiff_plain;h=0329d62bfc40ef8d54d9df8f5d9119515a871cf6;p=plomrogue2

Only send out new gamestate every 1/25 second.
---

diff --git a/plomrogue/game.py b/plomrogue/game.py
index dd9c50a..3c927db 100755
--- a/plomrogue/game.py
+++ b/plomrogue/game.py
@@ -3,6 +3,7 @@ from plomrogue.io import GameIO
 from plomrogue.misc import quote
 from plomrogue.mapping import YX, MapGeometrySquare, MapGeometryHex, Map
 import string
+import datetime
 
 
 
@@ -129,6 +130,9 @@ class Game(GameBase):
         self.player_chars = string.digits + string.ascii_letters
         self.player_char_i = -1
         self.admin_passwords = []
+        self.send_gamestate_interval = datetime.timedelta(seconds=0.04)
+        self.last_send_gamestate = datetime.datetime.now() -\
+            self.send_gamestate_interval
         self.terrains = {
             '.': 'floor',
             'X': 'wall',
@@ -261,9 +265,12 @@ class Game(GameBase):
                         self.io.send('PLAY_ERROR ' + quote(str(e)), connection_id)
         if self.changed:
             self.turn += 1
-            self.send_gamestate()
-            self.changed = False
-            self.save()
+            if self.last_send_gamestate < \
+               datetime.datetime.now() -self.send_gamestate_interval:
+                self.send_gamestate()
+                self.changed = False
+                self.save()
+                self.last_send_gamestate = datetime.datetime.now()
 
     def get_command(self, command_name):