diff --git a/Difficult_Rocket/__init__.py b/Difficult_Rocket/__init__.py index 79ec0a5..5ed1849 100644 --- a/Difficult_Rocket/__init__.py +++ b/Difficult_Rocket/__init__.py @@ -20,10 +20,11 @@ from libs.MCDR.version import Version game_version = Version("0.6.4") __version__ = game_version -long_version: int = 1 +long_version: ctypes.c_longlong = ctypes.c_longlong(2) """ long_version: 一个用于标记内部协议的整数 1: 我可算想起来还有这回事了 v0.6.4 +2: 哦,对 longlong 好耶! """ @@ -92,7 +93,7 @@ class _DR_runtime(Options): _DR_runtime.add_option('language', _DR_runtime.language) -dDR_option = DR_option() +DR_option = DR_option() DR_runtime = _DR_runtime() if DR_option.playing: diff --git a/Difficult_Rocket/api/types/SR1/__init__.py b/Difficult_Rocket/api/types/SR1/__init__.py index fe50832..ffdd8ca 100644 --- a/Difficult_Rocket/api/types/SR1/__init__.py +++ b/Difficult_Rocket/api/types/SR1/__init__.py @@ -4,8 +4,10 @@ # All rights reserved # ------------------------------- +from typing import Dict, Union + # pyglet -import pyglet +# import pyglet from pyglet.image import load, AbstractImage # Difficult Rocket @@ -13,12 +15,14 @@ from Difficult_Rocket.utils.typings import Options class SR1Textures(Options): + """ 存储 sr1 的材质 img """ def __init__(self, **kwargs): super().__init__(**kwargs) self.flush_option() for image_name in self.cached_options: setattr(self, image_name, load(f'textures/parts/{image_name}.png')) self.flush_option() + Battery: AbstractImage = None Beam: AbstractImage = None CoverBottom: AbstractImage = None @@ -57,5 +61,57 @@ class SR1Textures(Options): Wing: AbstractImage = None +class SR1PartTexture: + part_type_sprite: Dict[str, str] = {'pod-1 ': 'Pod', + 'detacher-1 ': 'DetacherVertical', + 'detacher-2 ': 'DetacherRadial', + 'wheel-1 ': 'Wheel', + 'wheel-2 ': 'Wheel', + 'fuselage-1 ': 'Fuselage', + 'strut-1 ': 'Beam', + 'fueltank-0 ': 'TankTiny', + 'fueltank-1 ': 'TankSmall', + 'fueltank-2 ': 'TankMedium', + 'fueltank-3 ': 'TankLarge', + 'fueltank-4 ': 'Puffy750', + 'fueltank-5 ': 'SideTank', + 'engine-0 ': 'EngineTiny', + 'engine-1 ': 'EngineSmall', + 'engine-2 ': 'EngineMedium', + 'engine-3 ': 'EngineLarge', + 'engine-4 ': 'SolidRocketBooster', + 'ion-0 ': 'EngineIon', + 'parachute-1': 'ParachuteCanister', + 'nosecone-1 ': 'NoseCone', + 'rcs-1 ': 'RcsBlock', + 'solar-1 ': 'SolarPanelBase', + 'battery-0 ': 'Battery', + 'dock-1 ': 'DockingConnector', + 'port-1 ': 'DockingPort', + 'lander-1 ': 'LanderLegPreview'} + @classmethod + def get_sprite_from_type(cls, name: str) -> Union[None, str]: + if name not in cls.part_type_sprite: + return None + return cls.part_type_sprite[name] +# +# +# from xml.etree.ElementTree import Element, ElementTree +# from defusedxml.ElementTree import parse +# +# part_list = parse("../../../../textures/PartList.xml") +# part_list_root: Element = part_list.getroot() +# print(part_list_root.tag, part_list_root.attrib) +# +# part_types = part_list_root.find('PartTypes') +# +# for x in list(part_list_root): +# print(f'tag: {x.tag} attr: {x.attrib}') +# +# for part_type in list(part_list_root): +# part_type: Element +# print(f'\'{part_type.attrib.get("id"):<11}\': \'{part_type.attrib.get("sprite")}\'') +# +# diff --git a/Difficult_Rocket/client/__init__.py b/Difficult_Rocket/client/__init__.py index 1a4e740..bd9a5a7 100644 --- a/Difficult_Rocket/client/__init__.py +++ b/Difficult_Rocket/client/__init__.py @@ -25,7 +25,7 @@ from decimal import Decimal import tomlkit import pyglet # from pyglet import gl -from pyglet.gl import * +from pyglet.gl import glClearColor # from pyglet.libs.win32 import _user32 from pyglet.window import Window from pyglet.window import key, mouse diff --git a/Difficult_Rocket/client/render/sr1_ship.py b/Difficult_Rocket/client/render/sr1_ship.py index dae902c..dbce862 100644 --- a/Difficult_Rocket/client/render/sr1_ship.py +++ b/Difficult_Rocket/client/render/sr1_ship.py @@ -16,7 +16,7 @@ from pyglet.resource import texture # Difficult Rocket from Difficult_Rocket import DR_option -from Difficult_Rocket.api.types.SR1 import SR1Textures +from Difficult_Rocket.api.types.SR1 import SR1Textures, SR1PartTexture from Difficult_Rocket.command.line import CommandText from Difficult_Rocket.client.screen import BaseScreen @@ -59,11 +59,12 @@ class SR1ShipRender(BaseScreen): part_flip_x = part.attrib.get('flippedX') or 0 part_flip_y = part.attrib.get('flippedY') or 0 part_explode = part.attrib.get('exploded') or 0 - if part_id not in self.textures.cached_options: + if part_type not in SR1PartTexture.part_type_sprite: print('Textures None found!') print(f'id: {part_id:<4} type: {part_type:<10} x: {part_x} y: {part_y} activated: {part_activate} ' f'angle: {part_angle} angle_v: {part_angle_v} editor_angle: {part_editor_angle} ' - f'flip_x: {part_flip_x} flip_y: {part_flip_y} explode: {part_explode}') + f'flip_x: {part_flip_x} flip_y: {part_flip_y} explode: {part_explode} ' + f'textures: {SR1PartTexture.get_sprite_from_type(part_type)}') def on_draw(self): ...