Make 0 member msgs look nicer

This commit is contained in:
ChillerDragon 2023-04-16 09:40:12 +02:00
parent 90b43608b9
commit e4ab0a7791
15 changed files with 122 additions and 151 deletions

View file

@ -3,7 +3,8 @@
import os
import json
from typing import TypedDict, Literal, Optional, Dict, Union
from typing import \
TypedDict, Literal, Optional, Dict, Union, TextIO
KIND = Literal[ \
'int32', \
@ -398,32 +399,13 @@ class CodeGenerator():
def __init__(self) -> None:
self.game_enums: list[GameEnumJson] = []
def generate_msg(
def write_init_method_header(
self,
out_file: TextIO,
msg: NetMessageJson,
game: Literal['game', 'system']
game: Literal['system', 'game'],
name_snake: str
) -> None:
name_snake = name_to_snake(msg['name'])
name_camel = name_to_camel(msg['name'])
dirname = os.path.dirname(__file__)
file_path= os.path.join(
dirname,
f'../twnet_parser/messages7/{game}/',
f'{name_snake}.py')
# if os.path.exists(file_path):
# print(f"Warning: file already exists! {file_path}")
# return
with open(file_path, 'w') as out_file:
print(f"Generating {file_path} ...")
out_file.write('# generated by scripts/generate_messages.py\n')
out_file.write('\n')
out_file.write('from twnet_parser.pretty_print import PrettyPrint\n')
if len(msg['members']) > 0:
out_file.write('from twnet_parser.packer import Unpacker\n')
out_file.write('from twnet_parser.chunk_header import ChunkHeader\n')
out_file.write(get_dependencies(msg))
out_file.write('\n')
out_file.write(f'class Msg{name_camel}(PrettyPrint):\n')
out_file.write(' def __init__(\n')
out_file.write(' self,\n')
args: list[str] = []
@ -518,6 +500,37 @@ class CodeGenerator():
args.append(f' {name}: {ftype} = {default}')
out_file.write(',\n'.join(args) + '\n')
out_file.write(' ) -> None:\n')
def generate_msg(
self,
msg: NetMessageJson,
game: Literal['game', 'system']
) -> None:
name_snake = name_to_snake(msg['name'])
name_camel = name_to_camel(msg['name'])
dirname = os.path.dirname(__file__)
file_path= os.path.join(
dirname,
f'../twnet_parser/messages7/{game}/',
f'{name_snake}.py')
# if os.path.exists(file_path):
# print(f"Warning: file already exists! {file_path}")
# return
with open(file_path, 'w') as out_file:
print(f"Generating {file_path} ...")
out_file.write('# generated by scripts/generate_messages.py\n')
out_file.write('\n')
out_file.write('from twnet_parser.pretty_print import PrettyPrint\n')
if len(msg['members']) > 0:
out_file.write('from twnet_parser.packer import Unpacker\n')
out_file.write('from twnet_parser.chunk_header import ChunkHeader\n')
out_file.write(get_dependencies(msg))
out_file.write('\n')
out_file.write(f'class Msg{name_camel}(PrettyPrint):\n')
if len(msg['members']) > 0:
self.write_init_method_header(out_file, msg, game, name_snake)
else:
out_file.write(' def __init__(self) -> None:\n')
out_file.write(f" self.message_name = '{name_snake}'\n")
sys: str = 'True' if game == 'system' else 'False'
out_file.write(f" self.system_message = {sys}\n")

View file

@ -4,10 +4,7 @@ from twnet_parser.pretty_print import PrettyPrint
from twnet_parser.chunk_header import ChunkHeader
class MsgClKill(PrettyPrint):
def __init__(
self,
) -> None:
def __init__(self) -> None:
self.message_name = 'cl_kill'
self.system_message = False
self.header: ChunkHeader

View file

@ -4,10 +4,7 @@ from twnet_parser.pretty_print import PrettyPrint
from twnet_parser.chunk_header import ChunkHeader
class MsgClReadyChange(PrettyPrint):
def __init__(
self,
) -> None:
def __init__(self) -> None:
self.message_name = 'cl_ready_change'
self.system_message = False
self.header: ChunkHeader

View file

@ -4,10 +4,7 @@ from twnet_parser.pretty_print import PrettyPrint
from twnet_parser.chunk_header import ChunkHeader
class MsgSvGameMsg(PrettyPrint):
def __init__(
self,
) -> None:
def __init__(self) -> None:
self.message_name = 'sv_game_msg'
self.system_message = False
self.header: ChunkHeader

View file

@ -4,10 +4,7 @@ from twnet_parser.pretty_print import PrettyPrint
from twnet_parser.chunk_header import ChunkHeader
class MsgSvReadyToEnter(PrettyPrint):
def __init__(
self,
) -> None:
def __init__(self) -> None:
self.message_name = 'sv_ready_to_enter'
self.system_message = False
self.header: ChunkHeader

View file

@ -4,10 +4,7 @@ from twnet_parser.pretty_print import PrettyPrint
from twnet_parser.chunk_header import ChunkHeader
class MsgSvVoteClearOptions(PrettyPrint):
def __init__(
self,
) -> None:
def __init__(self) -> None:
self.message_name = 'sv_vote_clear_options'
self.system_message = False
self.header: ChunkHeader

View file

@ -4,10 +4,7 @@ from twnet_parser.pretty_print import PrettyPrint
from twnet_parser.chunk_header import ChunkHeader
class MsgSvVoteOptionListAdd(PrettyPrint):
def __init__(
self,
) -> None:
def __init__(self) -> None:
self.message_name = 'sv_vote_option_list_add'
self.system_message = False
self.header: ChunkHeader

View file

@ -4,10 +4,7 @@ from twnet_parser.pretty_print import PrettyPrint
from twnet_parser.chunk_header import ChunkHeader
class MsgConReady(PrettyPrint):
def __init__(
self,
) -> None:
def __init__(self) -> None:
self.message_name = 'con_ready'
self.system_message = True
self.header: ChunkHeader

View file

@ -4,10 +4,7 @@ from twnet_parser.pretty_print import PrettyPrint
from twnet_parser.chunk_header import ChunkHeader
class MsgEnterGame(PrettyPrint):
def __init__(
self,
) -> None:
def __init__(self) -> None:
self.message_name = 'enter_game'
self.system_message = True
self.header: ChunkHeader

View file

@ -4,10 +4,7 @@ from twnet_parser.pretty_print import PrettyPrint
from twnet_parser.chunk_header import ChunkHeader
class MsgPing(PrettyPrint):
def __init__(
self,
) -> None:
def __init__(self) -> None:
self.message_name = 'ping'
self.system_message = True
self.header: ChunkHeader

View file

@ -4,10 +4,7 @@ from twnet_parser.pretty_print import PrettyPrint
from twnet_parser.chunk_header import ChunkHeader
class MsgPingReply(PrettyPrint):
def __init__(
self,
) -> None:
def __init__(self) -> None:
self.message_name = 'ping_reply'
self.system_message = True
self.header: ChunkHeader

View file

@ -4,10 +4,7 @@ from twnet_parser.pretty_print import PrettyPrint
from twnet_parser.chunk_header import ChunkHeader
class MsgRconAuthOff(PrettyPrint):
def __init__(
self,
) -> None:
def __init__(self) -> None:
self.message_name = 'rcon_auth_off'
self.system_message = True
self.header: ChunkHeader

View file

@ -4,10 +4,7 @@ from twnet_parser.pretty_print import PrettyPrint
from twnet_parser.chunk_header import ChunkHeader
class MsgRconAuthOn(PrettyPrint):
def __init__(
self,
) -> None:
def __init__(self) -> None:
self.message_name = 'rcon_auth_on'
self.system_message = True
self.header: ChunkHeader

View file

@ -4,10 +4,7 @@ from twnet_parser.pretty_print import PrettyPrint
from twnet_parser.chunk_header import ChunkHeader
class MsgReady(PrettyPrint):
def __init__(
self,
) -> None:
def __init__(self) -> None:
self.message_name = 'ready'
self.system_message = True
self.header: ChunkHeader

View file

@ -4,10 +4,7 @@ from twnet_parser.pretty_print import PrettyPrint
from twnet_parser.chunk_header import ChunkHeader
class MsgRequestMapData(PrettyPrint):
def __init__(
self,
) -> None:
def __init__(self) -> None:
self.message_name = 'request_map_data'
self.system_message = True
self.header: ChunkHeader