コード例 #1
0
ファイル: server.py プロジェクト: Xaroth/libottdadmin2
 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
ファイル: server.py プロジェクト: Xaroth/libottdadmin2
 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
ファイル: server.py プロジェクト: Xaroth/libottdadmin2
 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
ファイル: server.py プロジェクト: Xaroth/libottdadmin2
 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
ファイル: server.py プロジェクト: Xaroth/libottdadmin2
 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
ファイル: server.py プロジェクト: Xaroth/libottdadmin2
 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
ファイル: server.py プロジェクト: Xaroth/libottdadmin2
 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
ファイル: server.py プロジェクト: Xaroth/libottdadmin2
 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
ファイル: server.py プロジェクト: Xaroth/libottdadmin2
 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
ファイル: server.py プロジェクト: Xaroth/libottdadmin2
 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
ファイル: admin.py プロジェクト: Milek7/libottdadmin2
 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
ファイル: admin.py プロジェクト: Milek7/libottdadmin2
 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
ファイル: admin.py プロジェクト: Milek7/libottdadmin2
 def encode(self, command: str):
     self.write_str(
         check_length(command, NETWORK_RCONCOMMAND_LENGTH, "'command'"))
コード例 #28
0
ファイル: admin.py プロジェクト: Xaroth/libottdadmin2
 def encode(self, command: str):
     self.write_str(check_length(command, NETWORK_RCONCOMMAND_LENGTH, "'command'"))
コード例 #29
0
ファイル: admin.py プロジェクト: Xaroth/libottdadmin2
 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
ファイル: admin.py プロジェクト: Xaroth/libottdadmin2
 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
ファイル: admin.py プロジェクト: Xaroth/libottdadmin2
 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
ファイル: server.py プロジェクト: Xaroth/libottdadmin2
 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
ファイル: server.py プロジェクト: Xaroth/libottdadmin2
 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
ファイル: server.py プロジェクト: Xaroth/libottdadmin2
 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
ファイル: admin.py プロジェクト: Xaroth/libottdadmin2
 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
ファイル: server.py プロジェクト: Xaroth/libottdadmin2
 def encode(self, colour: Colour, result: str):
     self.write_ushort(Colour(colour))
     self.write_str(check_length(result, NETWORK_RCONCOMMAND_LENGTH, "'result'"))
コード例 #38
0
ファイル: admin.py プロジェクト: Xaroth/libottdadmin2
 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
ファイル: server.py プロジェクト: Xaroth/libottdadmin2
 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
ファイル: admin.py プロジェクト: Xaroth/libottdadmin2
 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
ファイル: server.py プロジェクト: Xaroth/libottdadmin2
 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
ファイル: admin.py プロジェクト: Xaroth/libottdadmin2
 def decode(self) -> Tuple[str]:
     command, = self.read_str()
     return self.data(check_length(command, NETWORK_RCONCOMMAND_LENGTH, "'command'"))
コード例 #43
0
ファイル: server.py プロジェクト: Xaroth/libottdadmin2
 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
ファイル: admin.py プロジェクト: Milek7/libottdadmin2
 def decode(self) -> Tuple[str]:
     command, = self.read_str()
     return self.data(
         check_length(command, NETWORK_RCONCOMMAND_LENGTH, "'command'"))
コード例 #45
0
ファイル: admin.py プロジェクト: Milek7/libottdadmin2
 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
ファイル: admin.py プロジェクト: Milek7/libottdadmin2
 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
ファイル: admin.py プロジェクト: Milek7/libottdadmin2
 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
ファイル: admin.py プロジェクト: Milek7/libottdadmin2
 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'"))