]> git.localhorst.tv Git - blank.git/blobdiff - src/client/client.cpp
fixed transmission control
[blank.git] / src / client / client.cpp
index ac682bb8d8909eb37bfd876541d20f7ad3c58eb0..49ea4007d6a63524c392ad9953fc67812ef0dfb0 100644 (file)
@@ -120,7 +120,8 @@ MasterState::MasterState(
 , client_conf(cc)
 , state()
 , client(cc)
-, init_state(*this) {
+, init_state(*this)
+, login_packet(-1) {
        client.GetConnection().SetHandler(this);
 }
 
@@ -130,7 +131,7 @@ void MasterState::Quit() {
 
 
 void MasterState::OnEnter() {
-       client.SendLogin(intf_conf.player_name);
+       login_packet = client.SendLogin(intf_conf.player_name);
        env.state.Push(&init_state);
 }
 
@@ -143,10 +144,6 @@ void MasterState::Handle(const SDL_Event &event) {
 void MasterState::Update(int dt) {
        client.Handle();
        client.Update(dt);
-       if (client.GetConnection().Closed()) {
-               Quit();
-               // TODO: push disconnected message
-       }
 }
 
 
@@ -155,6 +152,19 @@ void MasterState::Render(Viewport &) {
 }
 
 
+void MasterState::OnPacketLost(std::uint16_t id) {
+       if (id == login_packet) {
+               login_packet = client.SendLogin(intf_conf.player_name);
+       }
+}
+
+void MasterState::OnTimeout() {
+       if (client.GetConnection().Closed()) {
+               Quit();
+               // TODO: push disconnected message
+       }
+}
+
 void MasterState::On(const Packet::Join &pack) {
        pack.ReadWorldName(world_conf.name);