Source code for network.connection
# -*- coding: utf-8 -*-
import logging
from PyQt5.QtCore import QObject, pyqtSignal
[docs]class Connection(QObject):
got_connection = pyqtSignal()
connection_error = pyqtSignal(str)
new_move = pyqtSignal(list)
special_action = pyqtSignal(str)
close = pyqtSignal()
def __init__(self):
super().__init__()
self.networkThread = None
self.passwd = None
[docs] def start(self, ip_address, port, passwd):
self.passwd = passwd
self.networkThread.got_connection.connect(self.got_connection)
self.networkThread.connection_error.connect(self.connection_error)
self.networkThread.new_msg.connect(self._new_msg)
def __bool__(self):
if self.networkThread is None:
return False
if not self.networkThread.isRunning():
return False
return True
def _new_msg(self, msg):
msg_type, msg = msg.split(chr(30))
logging.debug("new message [" + msg_type + "] " + msg)
if msg_type == "move":
self.new_move.emit(_move_decode(msg))
elif msg_type == "action":
self.special_action.emit(msg)
[docs] def send_move(self, piece_cords, dest_cords, *destroyed_pieces):
piece_cords_str = "%i,%i"%piece_cords
dest_cords_str = "%i,%i"%dest_cords
msg = "move" + chr(30) + piece_cords_str+" "+dest_cords_str
for destroyed_piece in destroyed_pieces:
msg += " "+"%i,%i"%destroyed_piece
self.networkThread.send_raw(msg)
[docs] def send_special_action(self, string):
msg = "action" + chr(30) + string
self.networkThread.send_raw(msg)
[docs] def close(self):
logging.debug("NetworkThread close signal")
self.networkThread.running = False
def _move_decode(msg):
list_of_cords = msg.split(' ')
ret_list = list()
for cord in list_of_cords:
x, y = cord.split(",")
x = int(x)
y = int(y)
ret_list.append((x, y))
return ret_list