Пример #1
0
 def encode(self, client_id: int, hostname: str, name: str, language: Language, joindate: datetime, play_as: int):
     self.write_uint(client_id)
     self.write_str(check_length(hostname, NETWORK_HOSTNAME_LENGTH, "'hostname'"),
                    check_length(name, NETWORK_CLIENT_NAME_LENGTH, "'name'"))
     self.write_byte(Language(language))
     self.write_uint(datetime_to_gamedate(joindate))
     self.write_byte(play_as)
Пример #2
0
 def decode(
     self
 ) -> Tuple[int, str, str, Colour, bool, int, bool, int, Tuple[int, int,
                                                               int, int]]:
     company_id, = self.read_byte()
     name, manager = self.read_str(2)
     colour, = self.read_byte()
     passworded, = self.read_bool()
     startyear, = self.read_uint()
     is_ai, = self.read_bool()
     bankruptcy_counter = None
     shareholders = None
     if self.has_available_data:
         bankruptcy_counter, = self.read_byte()
         shareholders = list(self.read_byte(4))
     return self.data(
         company_id,
         check_length(name, NETWORK_COMPANY_NAME_LENGTH, "'name'"),
         check_length(manager, NETWORK_COMPANY_NAME_LENGTH, "'manager'"),
         Colour(colour),
         passworded,
         startyear,
         is_ai,
         bankruptcy_counter,
         check_tuple_length(shareholders, 4, 4, "'shareholders'"),
     )
Пример #3
0
 def decode(self) -> Tuple[str, str]:
     # The maximum length for origin and message is not known. For sanity we stick to
     #  NETWORK_GAMESCRIPT_JSON_LENGTH as that is closest to SEND_MTU
     origin, message = self.read_str(2)
     return self.data(
         check_length(origin, NETWORK_GAMESCRIPT_JSON_LENGTH, "'origin'"),
         check_length(message, NETWORK_GAMESCRIPT_JSON_LENGTH, "'message'"))
Пример #4
0
 def encode(self, company_id: int, name: str, manager: str, colour: Colour, passworded: bool,
            bankruptcy_counter: int, shareholders: Tuple[int, int, int, int]):
     self.write_byte(company_id)
     self.write_str(check_length(name, NETWORK_COMPANY_NAME_LENGTH, "'name'"),
                    check_length(manager, NETWORK_COMPANY_NAME_LENGTH, "'manager'"))
     self.write_byte(Colour(colour))
     self.write_bool(passworded)
     self.write_byte(bankruptcy_counter)
     self.write_byte(*check_tuple_length(shareholders, 4, 4, "'shareholders'"))
Пример #5
0
 def encode(self, client_id: int, hostname: str, name: str,
            language: Language, joindate: datetime, play_as: int):
     self.write_uint(client_id)
     self.write_str(
         check_length(hostname, NETWORK_HOSTNAME_LENGTH, "'hostname'"),
         check_length(name, NETWORK_CLIENT_NAME_LENGTH, "'name'"))
     self.write_byte(Language(language))
     self.write_uint(datetime_to_gamedate(joindate))
     self.write_byte(play_as)
Пример #6
0
 def encode(self, name: str, version: str, dedicated: bool, map: str, seed: int, landscape: Landscape,
            startdate: datetime, x: int, y: int):
     self.write_str(check_length(name, NETWORK_NAME_LENGTH, "'name'"),
                    check_length(version, NETWORK_REVISION_LENGTH, "'version'"))
     self.write_bool(dedicated)
     self.write_str(check_length(map, NETWORK_NAME_LENGTH, "'map'"))
     self.write_uint(seed)
     self.write_byte(Landscape(landscape))
     self.write_uint(datetime_to_gamedate(startdate))
     self.write_ushort(x, y)
Пример #7
0
 def encode(self, name: str, version: str, dedicated: bool, map: str,
            seed: int, landscape: Landscape, startdate: datetime, x: int,
            y: int):
     self.write_str(
         check_length(name, NETWORK_NAME_LENGTH, "'name'"),
         check_length(version, NETWORK_REVISION_LENGTH, "'version'"))
     self.write_bool(dedicated)
     self.write_str(check_length(map, NETWORK_NAME_LENGTH, "'map'"))
     self.write_uint(seed)
     self.write_byte(Landscape(landscape))
     self.write_uint(datetime_to_gamedate(startdate))
     self.write_ushort(x, y)
Пример #8
0
 def decode(self) -> Tuple[int, str, str, Language, datetime, int]:
     client_id, = self.read_uint()
     hostname, name = self.read_str(2)
     language, joindate, play_as = self.read_data(['byte', 'uint', 'byte'])
     return self.data(
         client_id,
         check_length(hostname, NETWORK_HOSTNAME_LENGTH, "'hostname'"),
         check_length(name, NETWORK_CLIENT_NAME_LENGTH, "'name'"),
         Language(language),
         gamedate_to_datetime(joindate),
         play_as,
     )
Пример #9
0
 def decode(self) -> Tuple[int, str, str, Language, datetime, int]:
     client_id, = self.read_uint()
     hostname, name = self.read_str(2)
     language, joindate, play_as = self.read_data(['byte', 'uint', 'byte'])
     return self.data(
         client_id,
         check_length(hostname, NETWORK_HOSTNAME_LENGTH, "'hostname'"),
         check_length(name, NETWORK_CLIENT_NAME_LENGTH, "'name'"),
         Language(language),
         gamedate_to_datetime(joindate),
         play_as,
     )
Пример #10
0
 def encode(self, company_id: int, name: str, manager: str, colour: Colour,
            passworded: bool, bankruptcy_counter: int,
            shareholders: Tuple[int, int, int, int]):
     self.write_byte(company_id)
     self.write_str(
         check_length(name, NETWORK_COMPANY_NAME_LENGTH, "'name'"),
         check_length(manager, NETWORK_COMPANY_NAME_LENGTH, "'manager'"))
     self.write_byte(Colour(colour))
     self.write_bool(passworded)
     self.write_byte(bankruptcy_counter)
     self.write_byte(
         *check_tuple_length(shareholders, 4, 4, "'shareholders'"))
Пример #11
0
 def decode(self) -> Tuple[int, str, int]:
     client_id, = self.read_uint()
     name, = self.read_str()
     play_as, = self.read_byte()
     return self.data(
         client_id, check_length(name, NETWORK_CLIENT_NAME_LENGTH,
                                 "'name'"), play_as)
Пример #12
0
 def decode(self) -> Tuple[Action, DestType, int, str, int]:
     action, _type = self.read_byte(2)
     client_id, = self.read_uint()
     message, = self.read_str()
     extra, = self.read_ulonglong()
     return self.data(Action(action), DestType(_type), client_id,
                      check_length(message, NETWORK_CHAT_LENGTH, "'message'"), extra)
Пример #13
0
 def decode(self) -> Tuple[Dict[int, str]]:
     commands = {}
     _next, = self.read_bool()
     while bool(_next):
         _id, name, _next = self.read_data(['ushort', str, bool])
         commands[_id] = check_length(name, NETWORK_NAME_LENGTH, "'name'")
     return self.data(commands)
Пример #14
0
 def encode(self, commands: Dict[int, str]):
     # Falling back to NETWORK_NAME_LENGTH as CmdNames doesn't have a max length defined
     for _id, name in sorted(commands.items()):
         self.write_bool(True)
         self.write_ushort(_id)
         self.write_str(check_length(name, NETWORK_NAME_LENGTH, "'name'"))
     self.write_bool(False)
Пример #15
0
 def decode(self) -> Tuple[Dict[int, str]]:
     commands = {}
     _next, = self.read_bool()
     while bool(_next):
         _id, name, _next = self.read_data(['ushort', str, bool])
         commands[_id] = check_length(name, NETWORK_NAME_LENGTH, "'name'")
     return self.data(commands)
Пример #16
0
 def decode(self) -> Tuple[int, str, str, Colour, bool, int, Tuple[int, int, int, int]]:
     company_id, = self.read_byte()
     name, manager = self.read_str(2)
     colour, = self.read_byte()
     passworded, = self.read_bool()
     bankruptcy_counter, = self.read_byte()
     shareholders = list(self.read_byte(4))
     return self.data(
         company_id,
         check_length(name, NETWORK_COMPANY_NAME_LENGTH, "'name'"),
         check_length(manager, NETWORK_COMPANY_NAME_LENGTH, "'manager'"),
         colour,
         passworded,
         bankruptcy_counter,
         check_tuple_length(shareholders, 4, 4, "'shareholders'"),
     )
Пример #17
0
 def decode(self) -> Tuple[str, str, bool, str, int, Landscape, datetime, int, int]:
     name, version = self.read_str(2)
     dedicated, = self.read_bool()
     _map, = self.read_str()
     seed, landscape, startdate, x, y = self.read_data(['uint', 'byte', 'uint', 'ushort', 'ushort'])
     return self.data(
         check_length(name, NETWORK_NAME_LENGTH, "'name'"),
         check_length(version, NETWORK_REVISION_LENGTH, "'version'"),
         dedicated,
         check_length(_map, NETWORK_NAME_LENGTH, "'map'"),
         seed,
         Landscape(landscape),
         gamedate_to_datetime(startdate),
         x,
         y,
     )
Пример #18
0
 def encode(self, commands: Dict[int, str]):
     # Falling back to NETWORK_NAME_LENGTH as CmdNames doesn't have a max length defined
     for _id, name in sorted(commands.items()):
         self.write_bool(True)
         self.write_ushort(_id)
         self.write_str(check_length(name, NETWORK_NAME_LENGTH, "'name'"))
     self.write_bool(False)
Пример #19
0
 def decode(self) -> Tuple[Action, DestType, int, str, int]:
     action, _type = self.read_byte(2)
     client_id, = self.read_uint()
     message, = self.read_str()
     extra, = self.read_ulonglong()
     return self.data(
         Action(action), DestType(_type), client_id,
         check_length(message, NETWORK_CHAT_LENGTH, "'message'"), extra)
Пример #20
0
 def decode(
     self
 ) -> Tuple[int, str, str, Colour, bool, int, Tuple[int, int, int, int]]:
     company_id, = self.read_byte()
     name, manager = self.read_str(2)
     colour, = self.read_byte()
     passworded, = self.read_bool()
     bankruptcy_counter, = self.read_byte()
     shareholders = list(self.read_byte(4))
     return self.data(
         company_id,
         check_length(name, NETWORK_COMPANY_NAME_LENGTH, "'name'"),
         check_length(manager, NETWORK_COMPANY_NAME_LENGTH, "'manager'"),
         colour,
         passworded,
         bankruptcy_counter,
         check_tuple_length(shareholders, 4, 4, "'shareholders'"),
     )
Пример #21
0
 def decode(
     self
 ) -> Tuple[str, str, bool, str, int, Landscape, datetime, int, int]:
     name, version = self.read_str(2)
     dedicated, = self.read_bool()
     _map, = self.read_str()
     seed, landscape, startdate, x, y = self.read_data(
         ['uint', 'byte', 'uint', 'ushort', 'ushort'])
     return self.data(
         check_length(name, NETWORK_NAME_LENGTH, "'name'"),
         check_length(version, NETWORK_REVISION_LENGTH, "'version'"),
         dedicated,
         check_length(_map, NETWORK_NAME_LENGTH, "'map'"),
         seed,
         Landscape(landscape),
         gamedate_to_datetime(startdate),
         x,
         y,
     )
Пример #22
0
 def decode(self) -> Tuple[int, str, str, Colour, bool, int, bool, int, Tuple[int, int, int, int]]:
     company_id, = self.read_byte()
     name, manager = self.read_str(2)
     colour, = self.read_byte()
     passworded, = self.read_bool()
     startyear, = self.read_uint()
     is_ai, = self.read_bool()
     bankruptcy_counter = None
     shareholders = None
     if self.has_available_data:
         bankruptcy_counter, = self.read_byte()
         shareholders = list(self.read_byte(4))
     return self.data(
         company_id,
         check_length(name, NETWORK_COMPANY_NAME_LENGTH, "'name'"),
         check_length(manager, NETWORK_COMPANY_NAME_LENGTH, "'manager'"),
         Colour(colour),
         passworded,
         startyear,
         is_ai,
         bankruptcy_counter,
         check_tuple_length(shareholders, 4, 4, "'shareholders'"),
     )
Пример #23
0
 def decode(self) -> Tuple[str, str, str]:
     password, name, version = self.read_str(3)
     return self.data(
         check_length(password, NETWORK_PASSWORD_LENGTH, "'password'"),
         check_length(name, NETWORK_CLIENT_NAME_LENGTH, "'name'"),
         check_length(version, NETWORK_REVISION_LENGTH, "'version'"))
Пример #24
0
 def encode(self, colour: Colour, result: str):
     self.write_ushort(Colour(colour))
     self.write_str(
         check_length(result, NETWORK_RCONCOMMAND_LENGTH, "'result'"))
Пример #25
0
 def encode(self, name: str, version: str):
     self.write_str(
         check_length(name, NETWORK_CLIENT_NAME_LENGTH, "'name'"),
         check_length(version, NETWORK_REVISION_LENGTH, "'version'"))
Пример #26
0
 def encode(self, json_data: Union[dict, list, str]):
     json_string = json.dumps(json_data)
     self.write_str(
         check_length(json_string, NETWORK_GAMESCRIPT_JSON_LENGTH,
                      "'json_data'"))
Пример #27
0
 def encode(self, command: str):
     self.write_str(
         check_length(command, NETWORK_RCONCOMMAND_LENGTH, "'command'"))
Пример #28
0
 def encode(self, command: str):
     self.write_str(check_length(command, NETWORK_RCONCOMMAND_LENGTH, "'command'"))
Пример #29
0
 def encode(self, action: ChatAction, type: DestType, client_id: int, message: str):
     self.write_byte(ChatAction(action))
     self.write_byte(DestType(type))
     self.write_uint(client_id)
     self.write_str(check_length(message, NETWORK_CHAT_LENGTH, "'message'"))
Пример #30
0
 def encode(self, password: str, name: str, version: str):
     self.write_str(check_length(password, NETWORK_PASSWORD_LENGTH, "'password'"),
                    check_length(name, NETWORK_CLIENT_NAME_LENGTH, "'name'"),
                    check_length(version, NETWORK_REVISION_LENGTH, "'version'"))
Пример #31
0
 def encode(self, json_data: Union[dict, list, str]):
     json_string = json.dumps(json_data)
     self.write_str(check_length(json_string, NETWORK_GAMESCRIPT_JSON_LENGTH, "'json_data'"))
Пример #32
0
 def encode(self, action: Action, type: DestType, client_id: int, message: str, extra: int):
     self.write_byte(action, type)
     self.write_uint(client_id)
     self.write_str(check_length(message, NETWORK_CHAT_LENGTH, "'message'"))
     self.write_ulonglong(extra)
Пример #33
0
 def encode(self, client_id: int, name: str, play_as: int):
     self.write_uint(client_id)
     self.write_str(check_length(name, NETWORK_CLIENT_NAME_LENGTH, "'name'"))
     self.write_byte(play_as)
Пример #34
0
 def encode(self, action: Action, type: DestType, client_id: int,
            message: str, extra: int):
     self.write_byte(action, type)
     self.write_uint(client_id)
     self.write_str(check_length(message, NETWORK_CHAT_LENGTH, "'message'"))
     self.write_ulonglong(extra)
Пример #35
0
 def decode(self) -> Tuple[int, str, int]:
     client_id, = self.read_uint()
     name, = self.read_str()
     play_as, = self.read_byte()
     return self.data(client_id, check_length(name, NETWORK_CLIENT_NAME_LENGTH, "'name'"), play_as)
Пример #36
0
 def decode(self) -> Tuple[Union[list, dict, str]]:
     json_string, = self.read_str()
     json_data = json.loads(check_length(json_string, NETWORK_GAMESCRIPT_JSON_LENGTH, "'json_data'"))
     return self.data(json_data)
Пример #37
0
 def encode(self, colour: Colour, result: str):
     self.write_ushort(Colour(colour))
     self.write_str(check_length(result, NETWORK_RCONCOMMAND_LENGTH, "'result'"))
Пример #38
0
 def decode(self) -> Tuple[str, str, str]:
     password, name, version = self.read_str(3)
     return self.data(check_length(password, NETWORK_PASSWORD_LENGTH, "'password'"),
                      check_length(name, NETWORK_CLIENT_NAME_LENGTH, "'name'"),
                      check_length(version, NETWORK_REVISION_LENGTH, "'version'"))
Пример #39
0
 def decode(self) -> Tuple[Colour, str]:
     colour, = self.read_ushort()
     result, = self.read_str()
     return self.data(colour, check_length(result, NETWORK_RCONCOMMAND_LENGTH, "'result'"))
Пример #40
0
 def decode(self) -> Tuple[ChatAction, DestType, int, str]:
     action, _type, client_id = self.read_data(['byte', 'byte', 'uint'])
     message, = self.read_str()
     return self.data(ChatAction(action), DestType(_type), client_id,
                      check_length(message, NETWORK_CHAT_LENGTH, "'message'"))
Пример #41
0
 def encode(self, origin: str, message: str):
     # The maximum length for origin and message is not known. For sanity we stick to
     #  NETWORK_GAMESCRIPT_JSON_LENGTH as that is closest to SEND_MTU
     self.write_str(check_length(origin, NETWORK_GAMESCRIPT_JSON_LENGTH, "'origin'"),
                    check_length(message, NETWORK_GAMESCRIPT_JSON_LENGTH, "'message'"))
Пример #42
0
 def decode(self) -> Tuple[str]:
     command, = self.read_str()
     return self.data(check_length(command, NETWORK_RCONCOMMAND_LENGTH, "'command'"))
Пример #43
0
 def decode(self) -> Tuple[str, str]:
     # The maximum length for origin and message is not known. For sanity we stick to
     #  NETWORK_GAMESCRIPT_JSON_LENGTH as that is closest to SEND_MTU
     origin, message = self.read_str(2)
     return self.data(check_length(origin, NETWORK_GAMESCRIPT_JSON_LENGTH, "'origin'"),
                      check_length(message, NETWORK_GAMESCRIPT_JSON_LENGTH, "'message'"))
Пример #44
0
 def decode(self) -> Tuple[str]:
     command, = self.read_str()
     return self.data(
         check_length(command, NETWORK_RCONCOMMAND_LENGTH, "'command'"))
Пример #45
0
 def encode(self, action: ChatAction, type: DestType, client_id: int,
            message: str):
     self.write_byte(ChatAction(action))
     self.write_byte(DestType(type))
     self.write_uint(client_id)
     self.write_str(check_length(message, NETWORK_CHAT_LENGTH, "'message'"))
Пример #46
0
 def decode(self) -> Tuple[Union[list, dict, str]]:
     json_string, = self.read_str()
     json_data = json.loads(
         check_length(json_string, NETWORK_GAMESCRIPT_JSON_LENGTH,
                      "'json_data'"))
     return self.data(json_data)
Пример #47
0
 def encode(self, client_id: int, name: str, play_as: int):
     self.write_uint(client_id)
     self.write_str(check_length(name, NETWORK_CLIENT_NAME_LENGTH,
                                 "'name'"))
     self.write_byte(play_as)
Пример #48
0
 def decode(self) -> Tuple[str, str]:
     name, version = self.read_str(2)
     return self.data(
         check_length(name, NETWORK_CLIENT_NAME_LENGTH, "'name'"),
         check_length(version, NETWORK_REVISION_LENGTH, "'version'"))
Пример #49
0
 def decode(self) -> Tuple[Colour, str]:
     colour, = self.read_ushort()
     result, = self.read_str()
     return self.data(
         colour, check_length(result, NETWORK_RCONCOMMAND_LENGTH,
                              "'result'"))
Пример #50
0
 def decode(self) -> Tuple[ChatAction, DestType, int, str]:
     action, _type, client_id = self.read_data(['byte', 'byte', 'uint'])
     message, = self.read_str()
     return self.data(
         ChatAction(action), DestType(_type), client_id,
         check_length(message, NETWORK_CHAT_LENGTH, "'message'"))
Пример #51
0
 def encode(self, origin: str, message: str):
     # The maximum length for origin and message is not known. For sanity we stick to
     #  NETWORK_GAMESCRIPT_JSON_LENGTH as that is closest to SEND_MTU
     self.write_str(
         check_length(origin, NETWORK_GAMESCRIPT_JSON_LENGTH, "'origin'"),
         check_length(message, NETWORK_GAMESCRIPT_JSON_LENGTH, "'message'"))