summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asciifarmclient/connection.py17
-rw-r--r--asciifarmclient/gameclient.py17
2 files changed, 19 insertions, 15 deletions
diff --git a/asciifarmclient/connection.py b/asciifarmclient/connection.py
index 370ef8a..bdcc913 100644
--- a/asciifarmclient/connection.py
+++ b/asciifarmclient/connection.py
@@ -2,6 +2,8 @@
import socket
from asciifarmclient.common.tcommunicate import send, receive
+from asciifarmclient.common import messages
+import json
class Connection:
@@ -17,14 +19,23 @@ class Connection:
def connect(self, address):
self.sock.connect(address)
+ def receive(self):
+ databytes = receive(self.sock)
+ if len(databytes) == 0:
+ return None
+ datastr = databytes.decode('utf-8')
+ msg = json.loads(datastr)
+ message = messages.messages[msg[0]].from_json(msg)
+ return message
+
def listen(self, callback, onError):
while True:
try:
- data = receive(self.sock)
+ message = self.receive()
except Exception as err:
onError(err)
else:
- callback(data)
+ callback(message)
def send(self, message):
- send(self.sock, message)
+ send(self.sock, message.to_json_bytes())
diff --git a/asciifarmclient/gameclient.py b/asciifarmclient/gameclient.py
index b78a693..d705b59 100644
--- a/asciifarmclient/gameclient.py
+++ b/asciifarmclient/gameclient.py
@@ -4,10 +4,6 @@ import os
import sys
import threading
-import json
-import getpass
-import argparse
-import string
from queue import Queue
import ratuil.inputs
@@ -35,7 +31,7 @@ class Client:
def sendMessage(self, message):
- self.connection.send(message.to_json_bytes())
+ self.connection.send(message)
def sendInput(self, inp):
message = messages.InputMessage(inp)
@@ -57,8 +53,8 @@ class Client:
def listen(self):
self.connection.listen(self.pushMessage, self.onConnectionError)
- def pushMessage(self, databytes):
- self.queue.put(("message", databytes))
+ def pushMessage(self, message):
+ self.queue.put(("message", message))
def onConnectionError(self, error):
self.queue.put(("error", error))
@@ -73,13 +69,10 @@ class Client:
self.closeMessage = msg
- def update(self, databytes):
- if len(databytes) == 0:
+ def update(self, message):
+ if message is None:
self.close("Connection closed by server")
return
- datastr = databytes.decode('utf-8')
- msg = json.loads(datastr)
- message = messages.messages[msg[0]].from_json(msg)
if isinstance(message, messages.ErrorMessage):
error = message.errType
if error == "nametaken":