diff options
Diffstat (limited to 'src/core/gameconnection.cc')
-rw-r--r-- | src/core/gameconnection.cc | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/src/core/gameconnection.cc b/src/core/gameconnection.cc index 43df1be..eeb4692 100644 --- a/src/core/gameconnection.cc +++ b/src/core/gameconnection.cc @@ -9,6 +9,7 @@ #include "sys/sys.h" #include "net/net.h" +#include "core/cvar.h" #include "core/gameconnection.h" namespace core @@ -46,6 +47,7 @@ GameConnection::GameConnection(std::string const &connectionstr) return; } + connection_frametime = 0; connection_running = true; } @@ -86,7 +88,32 @@ void GameConnection::frame(float seconds) return; } - connection_network->frame(seconds); + + float f = 0; + if (core::Cvar::sv_framerate->value()) { + connection_frametime += seconds; + f = 1.0f / core::Cvar::sv_framerate->value(); + if (connection_frametime < f) + return; + } else { + connection_frametime = seconds; + } + + connection_network->frame(connection_frametime); + + if (localplayer()->control && localplayer()->control->dirty()) { + std::ostringstream netmsg; + netmsg << "cup " << localplayer()->control->id() << " "; + localplayer()->control->serialize_client_update(netmsg); + netmsg << "\n"; + + connection_network->send(netmsg.str()); + localplayer()->control->entity_dirty = false; + //con_debug << netmsg.str(); + } + + connection_frametime += f; + } } |