ready for 0.9.0.0?

This commit is contained in:
shenjack 2023-12-15 12:45:46 +08:00
parent 1815464df1
commit fab2fd1d75
Signed by: shenjack
GPG Key ID: 7B1134A979775551
9 changed files with 45 additions and 16 deletions

1
.gitignore vendored
View File

@ -3,6 +3,7 @@
.vs/
DR.code-workspace
trytry/
result.json
#pdm files
__pypackages__

View File

@ -10,7 +10,7 @@ from Difficult_Rocket.api.types import Options, Version
sdk_version = Version("0.9.0.0") # SDK 版本
build_version = Version("2.2.0.0") # 编译文件版本(与游戏本体无关)
api_version = Version("0.1.1.0") # API 版本
api_version = Version("0.1.2.0") # API 版本
__version__ = sdk_version
__all__ = [

View File

@ -116,8 +116,8 @@ class BaseScreen(EventDispatcher, Options):
:event:
"""
# def on_draw(self, dt: float, window: ClientWindow): # TODO: wait for pyglet 2.1
def on_draw(self, window: ClientWindow):
def on_draw(self, dt: float, window: ClientWindow): # TODO: wait for pyglet 2.1
# def on_draw(self, window: ClientWindow):
"""The window contents must be redrawn.
The `EventLoop` will dispatch this event when the window

View File

@ -56,6 +56,8 @@ class ClientOption(Options):
resizeable: bool = True
visible: bool = True
gui_scale: float = 1.0
vsync: bool = False
background_color: List[float] = [21 / 255, 22 / 255, 23 / 255, 0.0]
caption: str = "Difficult Rocket v{DR_version}"
def load_file(self) -> None:
@ -67,6 +69,10 @@ class ClientOption(Options):
self.resizeable = tools.format_bool(file["window"]["resizable"])
self.gui_scale = float(file["window"]["gui_scale"])
self.caption = DR_status.format(file["window"]["caption"])
self.vsync = tools.format_bool(file["window"]["vsync"])
color = (i / 255 for i in file["window"]["background_color"][0:3])
alpha = file["window"]["background_color"][3]
self.background_color = [*color, alpha]
self.caption = DR_runtime.format(self.caption)
@ -98,7 +104,9 @@ class Client:
resizable=self.config.resizeable,
visible=self.config.visible,
file_drops=True,
vsync=False,
)
pyglet.gl.glClearColor(*self.config.background_color)
end_time = time.time_ns()
self.use_time = end_time - start_time
self.logger.info(
@ -118,6 +126,7 @@ class Client:
return f"<Client {self.process_name} {self.process_pid}>"
@new_thread("pyglet load fonts")
def pyglet_load_fonts_folder(folder) -> None:
"""
递归加载字体文件夹
@ -288,7 +297,6 @@ class ClientWindow(Window):
DR_runtime.client_setup_cause_ns = self.use_time
self.logger.info(tr().window.setup.use_time().format(self.use_time / 1000000000))
self.logger.debug(tr().window.setup.use_time_ns().format(self.use_time))
self.count = 0
def setup(self):
self.set_icon(pyglet.image.load("assets/textures/icon.png"))
@ -305,10 +313,11 @@ class ClientWindow(Window):
def start_game(self) -> None:
self.set_icon(pyglet.image.load("assets/textures/icon.png"))
try:
# pyglet.clock.schedule_interval(self.on_draw, float(self.SPF))
# pyglet.app.run()
pyglet.clock.schedule_interval(self.draw_call, float(self.SPF))
# pyglet.clock.schedule(self.draw_call)
pyglet.app.run(None)
# TODO: wait for pyglet 2.1
pyglet.app.run(float(self.SPF))
# pyglet.app.run(float(self.SPF))
except KeyboardInterrupt:
self.logger.warn(
"==========client stop. KeyboardInterrupt info==========", tag="starter"
@ -351,15 +360,21 @@ class ClientWindow(Window):
now_FPS = pyglet.clock.get_frequency()
self.fps_log.update_tick(now_FPS, decimal_tick)
def draw_call(self, dt: float):
self.switch_to()
# self.logger.debug(f"draw call {dt}")
self.on_draw(dt)
self.flip()
@_call_screen_after
# def on_draw(self, dt: float): # TODO: wait for pyglet 2.1
def on_draw(self):
def on_draw(self, dt: float): # TODO: wait for pyglet 2.1
# def on_draw(self):
while (command := self.game.console.get_command()) is not None:
self.on_command(line.CommandText(command))
pyglet.gl.glClearColor(21 / 255, 22 / 255, 23 / 255, 0.0)
self.clear()
# self.draw_update(dt) # TODO: wait for pyglet 2.1
self.draw_update(float(self.SPF))
self.draw_update(dt) # TODO: wait for pyglet 2.1
# self.draw_update(float(self.SPF))
self.draw_batch()
@_call_screen_after

View File

@ -14,6 +14,8 @@ gui_scale = 1
caption = "Difficult Rocket v{DR_version}"
resizable = true
full_screen = false
vsync = false
background_color = [21, 22, 23, 0]
[window.default]
width = 1024

2
docs/.gitignore vendored
View File

@ -4,4 +4,4 @@ index.html
book
#theme
README-en.html
README-en.html

View File

@ -2,10 +2,18 @@
- 最新版本号
- DR sdk: 0.8.7.3
- DR api: 0.1.1.0
- DR api: 0.1.2.0
## Draft DR sdk 0.9.0.0
### Changes
- `api.screen.BaseScreen`
- `on_draw`
- `self, window: ClientWindow` -> `self, dt: float, window: ClientWindow`
- `dt` 为上一帧到这一帧的时间间隔
- `dt` is the time interval from the last frame to this frame
### Rename
- `Api_version` -> `api_version`

View File

@ -21,3 +21,6 @@ pyglet 坐标轴原点是左上角 0, 0
[背景候选1号](../../assets/textures/runtime/background.png)
来自 @底层萌新 QQ1744251171
# gl.glClearColor(a / 255, b / 255, c / 255, d)

View File

@ -419,8 +419,8 @@ class SR1ShipRender(BaseScreen):
gl.glScissor(0, 0, self.window_pointer.width, self.window_pointer.height)
gl.glDisable(gl.GL_SCISSOR_TEST)
# def on_draw(self, dt: float, window): # TODO: wait for pyglet 2.1
def on_draw(self, window: ClientWindow):
def on_draw(self, dt: float, window): # TODO: wait for pyglet 2.1
# def on_draw(self, window: ClientWindow):
if self.status.draw_call:
self.render_ship()