コード例 #1
0
    def update(self, timeDelta):
        self.timePassed += timeDelta

        if self.state == self.STATE_DISCONNECTED:
            print "NM: ERROR: No connection to Server. need to call start()."

        if self.state == self.STATE_CON_REQUEST:
            msg = cli_recv(self.sock)
            if msg is None:
                if self.timePassed > self.REQ_TIMEOUT_MS:
                    if self.conn_retries == 0:
                        raise Exception('CRITICAL: Server not responding.')
                    print "NM: retrying connection."
                    cli_connect_req(self.sock, self.srvAddr)
                    self.timePassed = 0
                    self.conn_retries -= 1
            elif msg['type'] == MSGT_CONNECTACPT:
                self.timePassed = 0
                self.state = self.STATE_CONNECTED
                connectedEvent = EventClassNetwork(
                    EventClassNetwork.TYPE_CONNECTED, None
                )
                self.eMngr.publishEvent(connectedEvent)
            else:
                print "NM: ERROR: unexpected message."

        elif self.state == self.STATE_CONNECTED:
            msg = cli_recv(self.sock)
            if msg is None:
                self.timePassed += timeDelta
            elif msg['type'] == MSGT_GAMESTATE:
                # TODO: umpack world state and events
                if msg['id'] > self.msgCounter:
                    # Not the message we were expecting
                    # TODO: use logging
                    print "NM: WANING: package loss: %s" % (msg['id'] - self.msgCounter)
                # update message counter
                self.msgCounter = msg['id'] + 1
                self.timePassed = 0
                print msg
コード例 #2
0
 def start(self, srvHost, srvPort):
     self.srvAddr = (srvAddr, srvPort)
     cli_connect_req(self.sock, self.srvAddr)
     self.msgCounter = 1
     self.state = self.STATE_CON_REQUEST