Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 35 additions & 13 deletions netorcai/message.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,27 @@
"""Parsing module of the netorcai client library."""
from netorcai.version import metaprotocol_version


class PlayerInfo:
def __init__(self, o):
self.player_id = o["player_id"]
self.nickname = o["nickname"]
self.remote_address = o["remote_address"]
self.is_connected = o["is_connected"]

def parse_players_info(array):
players_infos = list()
for element in array:
players_infos.append(PlayerInfo(element))
return players_infos
def __repr__(self):
return "<PlayerInfo:%s id=%s>" % (self.nickname, self.player_id)


class PlayerActions:
def __init__(self, o):
self.player_id = o["player_id"]
self.turn_number = o["turn_number"]
self.actions = o["actions"]

def parse_players_actions(array):
players_actions = list()
for element in array:
players_actions.append(PlayerActions(element))
return players_actions
def __repr__(self):
return "<PlayerActions:%s>" % self.__dict__


class LoginAckMessage:
def __init__(self, o):
Expand All @@ -34,6 +31,10 @@ def __init__(self, o):
print("Warning: netorcai uses version '{}' while netorcai-client-python uses '{}'".format(
self.metaprotocol_version, metaprotocol_version()))

def __repr__(self):
return "<LoginAckMessage:%s>" % self.__dict__


class GameStartsMessage:
def __init__(self, o):
self.player_id = o["player_id"]
Expand All @@ -42,26 +43,47 @@ def __init__(self, o):
self.nb_turns_max = o["nb_turns_max"]
self.ms_before_first_turn = o["milliseconds_before_first_turn"]
self.ms_between_turns = o["milliseconds_between_turns"]
self.players_info = parse_players_info(o["players_info"])
self.players_info = [PlayerInfo(info) for info in o["players_info"]]
self.initial_game_state = o["initial_game_state"]

def __repr__(self):
return "<GameStartsMessage:nb_players=%s nb_special_players=%s nb_turns_max=%s>" % (
self.nb_players, self.nb_special_players, self.nb_turns_max)


class GameEndsMessage:
def __init__(self, o):
self.winner_player_id = o["winner_player_id"]
self.game_state = o["game_state"]

def __repr__(self):
return "<GameEndsMessage:winner=%s>" % self.winner_player_id


class TurnMessage:
def __init__(self, o):
self.turn_number = o["turn_number"]
self.players_info = parse_players_info(o["players_info"])
self.players_info = [PlayerInfo(info) for info in o["players_info"]]
self.game_state = o["game_state"]

def __repr__(self):
return "<TurnMessage for turn %s>" % self.turn_number


class DoInitMessage:
def __init__(self, o):
self.nb_players = o["nb_players"]
self.nb_special_players = o["nb_special_players"]
self.nb_turns_max = o["nb_turns_max"]

def __repr__(self):
return "<DoInitMessage:nb_players=%s nb_special_players=%s nb_turns_max=%s>" % (
self.nb_players, self.nb_special_players, self.nb_turns_max)


class DoTurnMessage:
def __init__(self, o):
self.player_actions = parse_players_actions(o["player_actions"])
self.player_actions = [PlayerActions(action) for action in o["player_actions"]]

def __repr__(self):
return "<DoTurnMessage:%s>" % self.__dict__
27 changes: 0 additions & 27 deletions tests/test_message.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,33 +16,6 @@ def test_player_info():
assert pinfo.remote_address == "127.0.0.1:59840"
assert pinfo.is_connected == True

def test_parse_players_info():
s = '''[
{
"player_id": 0,
"nickname": "jugador",
"remote_address": "127.0.0.1:59840",
"is_connected": true
},
{
"player_id": 1,
"nickname": "bot",
"remote_address": "127.0.0.1:59842",
"is_connected": false
}
]'''

pinfos = parse_players_info(json.loads(s))
assert len(pinfos) == 2
assert pinfos[0].player_id == 0
assert pinfos[0].nickname == "jugador"
assert pinfos[0].remote_address == "127.0.0.1:59840"
assert pinfos[0].is_connected == True

assert pinfos[1].player_id == 1
assert pinfos[1].nickname == "bot"
assert pinfos[1].remote_address == "127.0.0.1:59842"
assert pinfos[1].is_connected == False

def test_game_starts():
s = '''{
Expand Down