From 539afd73b9b32c73d2b7160982a4c5081bc6820f Mon Sep 17 00:00:00 2001 From: shenjack <3695888@qq.com> Date: Fri, 7 Jul 2023 20:01:35 +0800 Subject: [PATCH] replace static option to self attr --- configs/main.toml | 4 ++-- mods/dr_game/sr1_ship.py | 26 ++++++++++++++++---------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/configs/main.toml b/configs/main.toml index 481df95..e9a4ce7 100644 --- a/configs/main.toml +++ b/configs/main.toml @@ -7,8 +7,8 @@ fonts_folder = "libs/fonts" [window] style = "None" -width = 1047 -height = 684 +width = 1968 +height = 1363 visible = true gui_scale = 1 caption = "Difficult Rocket v{DR_version}" diff --git a/mods/dr_game/sr1_ship.py b/mods/dr_game/sr1_ship.py index c56321d..c34c6af 100644 --- a/mods/dr_game/sr1_ship.py +++ b/mods/dr_game/sr1_ship.py @@ -12,7 +12,7 @@ import traceback from pathlib import Path from xml.etree.ElementTree import Element -from typing import List, TYPE_CHECKING, Union, Dict, Optional, Generator, Type +from typing import List, TYPE_CHECKING, Union, Dict, Optional, Generator, Tuple from defusedxml.ElementTree import parse from pyglet.math import Vec4 @@ -21,6 +21,8 @@ from pyglet.sprite import Sprite # from pyglet.image import Texture from pyglet.graphics import Batch, Group from pyglet.shapes import Line, Rectangle +# pyglet OpenGL +from pyglet.gl import glViewport from . import DR_mod_runtime @@ -74,9 +76,7 @@ class _SR1ShipRender_Option(Options): debug_d_pos: bool = False debug_mouse_pos: bool = False debug_mouse_d_pos: bool = False - - -SR1ShipRender_Option = _SR1ShipRender_Option() + draw_size: Tuple[int, int] = (100, 100) class SR1ShipRender(BaseScreen): @@ -93,15 +93,16 @@ class SR1ShipRender(BaseScreen): self.drawing = False self.gen_draw: Optional[Generator] = None self.need_update_parts = False + self.render_option = _SR1ShipRender_Option() self.dx = 0 self.dy = 0 self.debug_mouse_delta_line = Line(main_window.width / 2, main_window.height / 2, main_window.width / 2, main_window.height / 2, width=2, color=(200, 200, 10, 255)) - self.debug_mouse_delta_line.visible = SR1ShipRender_Option.debug_mouse_d_pos + self.debug_mouse_delta_line.visible = self.render_option.debug_mouse_d_pos self.debug_d_pos_label = Label('debug label NODATA', font_name=Fonts.微软等宽无线, x=main_window.width / 2, y=main_window.height / 2) - self.debug_d_pos_label.visible = SR1ShipRender_Option.debug_d_pos + self.debug_d_pos_label.visible = self.render_option.debug_d_pos self.textures: Union[SR1Textures, None] = None # self.xml_name = 'configs/dock1.xml' # self.xml_doc: ElementTree = parse('configs/dock1.xml') @@ -265,7 +266,9 @@ class SR1ShipRender(BaseScreen): def draw_batch(self, window: "ClientWindow"): with self.camera: + # glViewport(int(self.camera.dx), int(self.camera.dy), window.width // 2, window.height // 2) self.main_batch.draw() + # glViewport(0, 0, window.width, window.height) def on_draw(self, window: "ClientWindow"): if self.need_draw: @@ -284,7 +287,7 @@ class SR1ShipRender(BaseScreen): self.debug_label.draw() - if SR1ShipRender_Option.debug_mouse_d_pos: + if self.render_option.debug_mouse_d_pos: self.debug_mouse_delta_line.draw() def on_resize(self, width: int, height: int, window: "ClientWindow"): @@ -293,6 +296,7 @@ class SR1ShipRender(BaseScreen): return self.debug_mouse_delta_line.y = height / 2 self.update_parts() + self.render_option.draw_size = (width, height) def on_mouse_scroll(self, x: int, y: int, scroll_x: int, scroll_y: int, window: "ClientWindow"): if not self.rendered: @@ -338,8 +342,8 @@ class SR1ShipRender(BaseScreen): elif command.find('debug'): if command.find('mouse'): self.debug_mouse_delta_line.visible = not self.debug_mouse_delta_line.visible - SR1ShipRender_Option.debug_mouse_d_pos = self.debug_mouse_delta_line.visible - logger.debug(f'sr1 mouse {SR1ShipRender_Option.debug_mouse_d_pos}') + self.render_option.debug_mouse_d_pos = self.debug_mouse_delta_line.visible + logger.debug(f'sr1 mouse {self.render_option.debug_mouse_d_pos}') elif command.find('ship'): if self.rendered: for index, sprite in self.parts_sprite.items(): @@ -400,6 +404,8 @@ class SR1ShipRender(BaseScreen): return logger.info(sr_tr().sr1.ship.save.start().format(self.rust_ship)) self.rust_ship.save('./test-save.xml') + elif command.find('render'): + glViewport(0, 0, 1000, 1000) def on_mouse_drag(self, x: int, y: int, dx: int, dy: int, buttons: int, modifiers: int, window: "ClientWindow"): if not self.focus: @@ -419,4 +425,4 @@ class SR1ShipRender(BaseScreen): if __name__ == '__main__': from objprint import op - op(SR1ShipRender_Option) + op(_SR1ShipRender_Option())