Feature/get named logger #29
4
DR.py
4
DR.py
@ -52,7 +52,7 @@ def main() -> int:
|
||||
|
||||
from Difficult_Rocket.exception import TestError
|
||||
from Difficult_Rocket import crash
|
||||
from Difficult_Rocket import DR_option
|
||||
from Difficult_Rocket import DR_status
|
||||
try:
|
||||
from libs import pyglet # 导入pyglet
|
||||
pyglet.resource.path = ['/textures/']
|
||||
@ -72,7 +72,7 @@ def main() -> int:
|
||||
cProfile.run('game.start()', sort='calls') # 使用 cprofile 启动
|
||||
else:
|
||||
game.start() # 直接启动
|
||||
if DR_option.crash_report_test:
|
||||
if DR_status.crash_report_test:
|
||||
raise TestError('debugging') # debug 嘛,试试crash
|
||||
except Exception as exp: # 出毛病了
|
||||
# 解析错误信息
|
||||
|
@ -19,43 +19,21 @@ build_version = Version("2.1.0.0") # 编译文件版本(与游戏本体无关)
|
||||
Api_version = Version("0.1.1.0") # API 版本
|
||||
__version__ = game_version
|
||||
|
||||
long_version: int = 15
|
||||
"""
|
||||
long_version: 一个用于标记内部协议的整数
|
||||
15: 完全移除 DR_rust 相关内容 解耦完成
|
||||
14: BaseScreen 的每一个函数都添加了一个参数: window: "ClientWindow"
|
||||
13: 为 DR_runtime 添加 API_version
|
||||
12: 去除 DR_runtime 的 global_logger
|
||||
要 logging 自己拿去(
|
||||
11: 为 DR_option 添加 use_DR_rust
|
||||
修复了一些拼写错误
|
||||
10: 为 DR_runtime 添加 DR_Rust_get_version
|
||||
9 : 为 DR_option 添加 pyglet_macosx_dev_test
|
||||
8 : 为 DR_runtime 添加 DR_rust_version
|
||||
为 DR_option 添加 DR_rust_available
|
||||
以后就有 DR_rust 了
|
||||
7 : 为 DR_option 添加 std_font_size
|
||||
6 : 事实证明, 不如直接用int
|
||||
5 : 添加 build_version 信息,用于标记编译文件版本,
|
||||
游戏版本改为四位数,终于有一个可以让我随便刷的版本号位数了
|
||||
4 : 把 translate 的字体常量位置改了一下,顺便调换顺序
|
||||
3 : 就是试试改一下,正好 compiler 要用
|
||||
2 : 哦,对 longlong 好耶!
|
||||
1 : 我可算想起来还有这回事了 v0.6.4
|
||||
"""
|
||||
|
||||
|
||||
class _DR_option(Options):
|
||||
class _DR_status(Options):
|
||||
"""
|
||||
DR 的一般配置/状态
|
||||
DR 的特性开关 / 基本状态
|
||||
"""
|
||||
name = 'DR Option'
|
||||
# runtime options
|
||||
# run status
|
||||
client_running: bool = False
|
||||
server_running: bool = False
|
||||
|
||||
# feature switch
|
||||
InputBox_use_TextEntry: bool = True
|
||||
record_threads: bool = True
|
||||
report_translate_not_found: bool = True
|
||||
use_multiprocess: bool = False
|
||||
DR_rust_available: bool = False
|
||||
use_cProfile: bool = False
|
||||
use_local_logging: bool = False
|
||||
|
||||
@ -64,6 +42,14 @@ class _DR_option(Options):
|
||||
debugging: bool = False
|
||||
crash_report_test: bool = False
|
||||
|
||||
# game version status
|
||||
DR_version: Version = game_version # DR SDK 版本
|
||||
Build_version: Version = build_version # DR 构建 版本
|
||||
API_version: Version = Api_version # DR SDK API 版本
|
||||
|
||||
# game options
|
||||
default_language: str = 'zh-CN'
|
||||
|
||||
# window option
|
||||
gui_scale: float = 1.0 # default 1.0 2.0 -> 2x 3 -> 3x
|
||||
|
||||
@ -77,29 +63,16 @@ class _DR_runtime(Options):
|
||||
DR 的运行时配置 / 状态
|
||||
"""
|
||||
name = 'DR Runtime'
|
||||
# game version status
|
||||
DR_version: Version = game_version # DR SDK 版本
|
||||
Build_version: Version = build_version # DR 构建 版本
|
||||
|
||||
API_version: Version = Api_version # DR SDK API 版本
|
||||
DR_long_version: int = long_version # DR SDK 内部协议版本 (不要问我为什么不用 Version,我也在考虑)
|
||||
|
||||
language: str = 'zh-CN'
|
||||
mod_path: str = './mods'
|
||||
DR_Mod_List: List[Tuple[str, Version]] = [] # DR Mod 列表 (name, version)
|
||||
|
||||
# run status
|
||||
running: bool = False
|
||||
start_time_ns: Optional[int] = None
|
||||
client_setup_cause_ns: Optional[int] = None
|
||||
server_setup_cause_ns: Optional[int] = None
|
||||
|
||||
# game runtimes
|
||||
# global_logger: logging.Logger
|
||||
|
||||
# game options
|
||||
mod_path: str = './mods'
|
||||
language: str = 'zh-CN'
|
||||
default_language: str = 'zh-CN'
|
||||
|
||||
def load_file(self) -> bool:
|
||||
with contextlib.suppress(FileNotFoundError):
|
||||
with open('./configs/main.toml', 'r', encoding='utf-8') as f:
|
||||
@ -141,10 +114,10 @@ class _DR_runtime(Options):
|
||||
return mods
|
||||
|
||||
|
||||
DR_option = _DR_option()
|
||||
DR_status = _DR_status()
|
||||
DR_runtime = _DR_runtime()
|
||||
|
||||
if DR_option.playing:
|
||||
if DR_status.playing:
|
||||
from Difficult_Rocket.utils.thread import new_thread
|
||||
|
||||
def think_it(something):
|
||||
|
@ -14,4 +14,15 @@ gitee: @shenjackyuanjie
|
||||
|
||||
# from Difficult_Rocket.api import screen, mod, exception
|
||||
|
||||
__all__ = ['screen', 'mod', 'exception']
|
||||
__all__ = [
|
||||
'exception',
|
||||
# 错误类定义
|
||||
'screen',
|
||||
# screen api
|
||||
'types',
|
||||
# 类型定义
|
||||
'mod',
|
||||
# mod api
|
||||
'log'
|
||||
# log api
|
||||
]
|
||||
|
16
Difficult_Rocket/api/log.py
Normal file
16
Difficult_Rocket/api/log.py
Normal file
@ -0,0 +1,16 @@
|
||||
# -------------------------------
|
||||
# Difficult Rocket
|
||||
# Copyright © 2020-2023 by shenjackyuanjie 3695888@qq.com
|
||||
# All rights reserved
|
||||
# -------------------------------
|
||||
|
||||
from Difficult_Rocket.utils.log import (get_named_client_logger,
|
||||
get_named_server_logger,
|
||||
get_named_main_logger)
|
||||
|
||||
|
||||
__all__ = [
|
||||
'get_named_client_logger',
|
||||
'get_named_server_logger',
|
||||
'get_named_main_logger',
|
||||
]
|
@ -31,7 +31,7 @@ from pyglet.text.layout import IncrementalTextLayout
|
||||
|
||||
from Difficult_Rocket.api.types import FontData, Fonts
|
||||
# from Difficult_Rocket.client.guis.format import html
|
||||
from Difficult_Rocket import DR_option
|
||||
from Difficult_Rocket import DR_status
|
||||
|
||||
__all__ = ['InputBox']
|
||||
|
||||
@ -59,7 +59,7 @@ class TextButton(widgets.WidgetBase):
|
||||
...
|
||||
|
||||
|
||||
if not DR_option.InputBox_use_TextEntry:
|
||||
if not DR_status.InputBox_use_TextEntry:
|
||||
class InputBox(widgets.TextEntry):
|
||||
""" 自定义的输入框 """
|
||||
|
||||
@ -134,7 +134,7 @@ if not DR_option.InputBox_use_TextEntry:
|
||||
# dpi=font_dpi)
|
||||
# self.font_height = self.font.ascent - self.font.descent
|
||||
# self.out_bound = out_line
|
||||
# if DR_option.InputBox_use_TextEntry:
|
||||
# if DR_status.InputBox_use_TextEntry:
|
||||
# # 基于IncrementalTextLayout的处理系统
|
||||
# self._doc = FormattedDocument(message)
|
||||
# # self._doc.set_style()
|
||||
|
@ -99,14 +99,14 @@ def write_cache(cache_stream, crash_info):
|
||||
|
||||
def write_info_to_cache(cache_stream):
|
||||
# 运行状态信息
|
||||
from Difficult_Rocket import DR_option, DR_runtime
|
||||
from Difficult_Rocket import DR_status, DR_runtime
|
||||
cache_stream.write(Run_message)
|
||||
cache_stream.write(markdown_line_handler(f'DR Version: {Difficult_Rocket.game_version}', level=1))
|
||||
cache_stream.write(markdown_line_handler(f'DR language: {DR_runtime.language}', level=1))
|
||||
cache_stream.write(markdown_line_handler(f'Running Dir: {Path(os.curdir).resolve()}', level=1))
|
||||
cache_stream.write(f"\n{DR_runtime.as_markdown()}")
|
||||
cache_stream.write(DR_configs)
|
||||
cache_stream.write(f"\n{DR_option.as_markdown()}")
|
||||
cache_stream.write(f"\n{DR_status.as_markdown()}")
|
||||
cache_stream.write(Process_message)
|
||||
for process in all_process:
|
||||
process: multiprocessing.Process
|
||||
|
@ -37,7 +37,7 @@ from Difficult_Rocket.api.types import Options
|
||||
from Difficult_Rocket.utils.translate import tr
|
||||
from Difficult_Rocket.utils.thread import new_thread
|
||||
from Difficult_Rocket.crash import write_info_to_cache
|
||||
from Difficult_Rocket import client, server, DR_option, DR_runtime
|
||||
from Difficult_Rocket import client, server, DR_status, DR_runtime
|
||||
|
||||
|
||||
class Console(Options):
|
||||
@ -154,7 +154,7 @@ class Game(Options):
|
||||
|
||||
def start(self):
|
||||
self.server.run()
|
||||
if DR_option.use_multiprocess:
|
||||
if DR_status.use_multiprocess:
|
||||
try:
|
||||
game_process = multiprocessing.Process(target=self.client.start, name='pyglet app')
|
||||
game_process.start()
|
||||
|
@ -12,9 +12,9 @@ gitee: @shenjackyuanjie
|
||||
"""
|
||||
|
||||
# system function
|
||||
import warnings
|
||||
from typing import Tuple, List, Optional, TypeVar, TYPE_CHECKING
|
||||
|
||||
|
||||
# from DR
|
||||
if TYPE_CHECKING:
|
||||
from Difficult_Rocket.main import Game
|
||||
@ -22,7 +22,7 @@ if TYPE_CHECKING:
|
||||
else:
|
||||
Game = TypeVar("Game")
|
||||
ClientWindow = TypeVar("ClientWindow")
|
||||
from Difficult_Rocket import DR_runtime
|
||||
from Difficult_Rocket import DR_status
|
||||
from Difficult_Rocket.api.types import Options, Version
|
||||
|
||||
RequireVersion = Tuple[Version, Version]
|
||||
@ -47,8 +47,8 @@ class ModInfo(Options):
|
||||
info: str = "" # 其他信息 (可以很多很多)
|
||||
|
||||
"""版本相关信息"""
|
||||
DR_version: RequireVersion = (DR_runtime.DR_version, DR_runtime.DR_version) # DR SDK 兼容版本
|
||||
DR_Api_version: RequireVersion = (DR_runtime.API_version, DR_runtime.API_version) # DR Api版本
|
||||
DR_version: RequireVersion = (DR_status.DR_version, DR_status.DR_version) # DR SDK 兼容版本
|
||||
DR_Api_version: RequireVersion = (DR_status.API_version, DR_status.API_version) # DR Api版本
|
||||
Mod_Require_version: List[Tuple[str, ForceRequire, RequireVersion]] = [] # mod 依赖版本
|
||||
|
||||
"""mod 状态"""
|
||||
@ -59,9 +59,15 @@ class ModInfo(Options):
|
||||
config: Options = Options() # mod 配置存储
|
||||
old_mod: Optional["ModInfo"] = None # 旧的mod实例
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
if not self.DR_version[0] <= DR_status.DR_version <= self.DR_version[1]:
|
||||
warnings.warn(f"mod {self.mod_id} version {self.version} is not support by DR {DR_status.DR_version}\nDR {self.DR_version} is required")
|
||||
if not self.DR_Api_version[0] <= DR_status.API_version <= self.DR_Api_version[1]:
|
||||
warnings.warn(f"mod {self.mod_id} version {self.version} is not support by DR {DR_status.API_version}\nDR {self.DR_Api_version} is required")
|
||||
super().__init__(**kwargs)
|
||||
|
||||
def on_load(self, game: Game, old_self: Optional["ModInfo"] = None) -> bool:
|
||||
""" 加载时调用 """
|
||||
print(f'Mod {self.mod_id} loaded')
|
||||
return True
|
||||
|
||||
def on_client_start(self, game: Game, client: ClientWindow):
|
||||
|
@ -11,7 +11,7 @@ from typing import List, Dict, Optional
|
||||
from Difficult_Rocket.api.screen import BaseScreen
|
||||
from Difficult_Rocket.api.types import Options, Version
|
||||
from Difficult_Rocket.mod.api import ModInfo
|
||||
# from Difficult_Rocket import DR_option, DR_runtime
|
||||
# from Difficult_Rocket import DR_status, DR_runtime
|
||||
|
||||
|
||||
class ModManager(Options):
|
||||
|
34
Difficult_Rocket/utils/log.py
Normal file
34
Difficult_Rocket/utils/log.py
Normal file
@ -0,0 +1,34 @@
|
||||
# -------------------------------
|
||||
# Difficult Rocket
|
||||
# Copyright © 2020-2023 by shenjackyuanjie 3695888@qq.com
|
||||
# All rights reserved
|
||||
# -------------------------------
|
||||
|
||||
import logging
|
||||
|
||||
from typing import Callable
|
||||
|
||||
|
||||
__all__ = [
|
||||
'get_named_client_logger',
|
||||
'get_named_server_logger',
|
||||
'get_named_main_logger',
|
||||
]
|
||||
|
||||
|
||||
def _gen_get_named_logger(from_name: str) -> Callable[[str], logging.Logger]:
|
||||
|
||||
def get_named_logger(name: str) -> logging.Logger:
|
||||
logger = logging.getLogger(from_name)
|
||||
logger.name = f'{from_name}.{name}'
|
||||
return logger
|
||||
|
||||
return get_named_logger
|
||||
|
||||
|
||||
get_named_client_logger = _gen_get_named_logger('client')
|
||||
# 用于获取一个基于 client 配置的 logger
|
||||
get_named_server_logger = _gen_get_named_logger('server')
|
||||
# 用于获取一个基于 server 配置的 logger
|
||||
get_named_main_logger = _gen_get_named_logger('main')
|
||||
# 用于获取一个基于 main 配置的 logger
|
@ -17,7 +17,7 @@ import inspect
|
||||
from dataclasses import dataclass
|
||||
from typing import Union, Tuple, Any, List, Dict, Hashable, Optional
|
||||
|
||||
from Difficult_Rocket import DR_runtime, DR_option
|
||||
from Difficult_Rocket import DR_runtime, DR_status
|
||||
from Difficult_Rocket.utils import tools
|
||||
from Difficult_Rocket.exception.language import (LanguageNotFound,
|
||||
TranslateKeyNotFound)
|
||||
@ -82,7 +82,7 @@ class Translates:
|
||||
def _raise_no_value(self, e: Exception, item: key_type):
|
||||
if self._config.raise_error:
|
||||
raise TranslateKeyNotFound(self._value, [x[1] for x in self._get_list]) from None
|
||||
elif DR_option.report_translate_not_found:
|
||||
elif DR_status.report_translate_not_found:
|
||||
frame = inspect.currentframe()
|
||||
if frame is not None:
|
||||
frame = frame.f_back.f_back
|
||||
@ -160,7 +160,7 @@ class Tr:
|
||||
"""
|
||||
self.language_name = language if language is not None else DR_runtime.language
|
||||
self.translates: Dict[str, Union[str, Dict]] = tools.load_file(f'configs/lang/{self.language_name}.toml')
|
||||
self.default_translate: Dict = tools.load_file(f'configs/lang/{DR_runtime.default_language}.toml')
|
||||
self.default_translate: Dict = tools.load_file(f'configs/lang/{DR_status.default_language}.toml')
|
||||
self.default_config = config.set('source', self) if config is not None else TranslateConfig(source=self)
|
||||
self.translates_cache = Translates(value=self.translates, config=self.default_config.copy())
|
||||
|
||||
|
@ -1,31 +0,0 @@
|
||||
{
|
||||
'language': 'zh-cn',
|
||||
'textures': {
|
||||
'back_ground_space': 'back_ground_space.png',
|
||||
'planet': {
|
||||
'earth_ground': 'earth_ground.png'
|
||||
},
|
||||
'flame': {
|
||||
'liquid': 'liquid_engine_flame.png',
|
||||
'solid': 'solid_engine_flame.png',
|
||||
'ion': 'ion_engine_flame.png'
|
||||
}
|
||||
},
|
||||
'basic_number': {
|
||||
'G': [
|
||||
6.67,
|
||||
-11,
|
||||
[
|
||||
'N',
|
||||
'm',
|
||||
'm'
|
||||
],
|
||||
[
|
||||
'kg',
|
||||
'kg'
|
||||
]
|
||||
]
|
||||
},
|
||||
'default ship': [
|
||||
]
|
||||
}
|
@ -1,49 +0,0 @@
|
||||
{
|
||||
/*
|
||||
'part id': [
|
||||
[
|
||||
'part name', // part name can be reuse
|
||||
'description', // 描述
|
||||
], // about names and other
|
||||
[ 'float', // mass
|
||||
'bool', // hidden in part list
|
||||
'bool', // hidden in mission (even thought that is not done yet)
|
||||
'float' // buoyancy(浮力) in the water
|
||||
], // about config
|
||||
[ 'xxx.png', // texture file name
|
||||
//可以为包含文件夹的 比如:./engine/xxx.png
|
||||
[ 'float', // 贴图偏移量
|
||||
'float' ] // 指的是部件的碰撞箱左上角到贴图左上角的距离
|
||||
], // about texture
|
||||
[ 'float',
|
||||
'float' ],
|
||||
// 碰撞箱大小 (暂时只支持方形碰撞箱)
|
||||
// 坐标轴也是从左下开始
|
||||
[
|
||||
'特殊值(懒得写)'
|
||||
]
|
||||
],
|
||||
*/
|
||||
'test1': [
|
||||
[
|
||||
'test-1',
|
||||
'一个测试用部件'
|
||||
],
|
||||
[
|
||||
1.0,
|
||||
false,
|
||||
0.1
|
||||
],
|
||||
[
|
||||
'parts/Beam.png',
|
||||
[
|
||||
0.0,
|
||||
0.0
|
||||
]
|
||||
],
|
||||
[
|
||||
3.0,
|
||||
2.0
|
||||
]
|
||||
]
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
{
|
||||
'Solar System': {
|
||||
'description': '',
|
||||
'planets': {
|
||||
'earth': {
|
||||
'description': '',
|
||||
'gravity': 9.81,
|
||||
'radius': 63710000,
|
||||
'map_color': [
|
||||
103,
|
||||
157,
|
||||
255
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
[Runtime]
|
||||
|
||||
[Parts]
|
||||
battery = "Battery.png"
|
||||
beam = "Beam.png"
|
||||
cover_bottom = "CoverBottom.png"
|
||||
nose_cone = "NoseCone.png"
|
||||
|
||||
[Editor]
|
||||
[[runtime]]
|
||||
"toolbar.dark" = "ToolbarDark.png"
|
||||
"toolbar.light" = "ToolbarLight.png"
|
||||
"button_side.dark" = "ButtonDarkSide.png"
|
||||
"button_side.light" = "ButtonLightSide.png"
|
||||
|
||||
[[toggle_button]]
|
||||
stage = "ToolbarIconStaging.png"
|
||||
add_part = "ToolbarIconAddPart.png"
|
||||
menu = "ToolbarIconMenu.png"
|
||||
|
||||
[[push_button]]
|
||||
zoom = "ToolbarIconZoom.png"
|
||||
"zoom.in" = "ToolbarIconZoomIn.png"
|
||||
"zoom.out" = "ToolbarIconZoomOut.png"
|
||||
play = "ToolbarIconPlay.png"
|
||||
rotate = "RotateButton.png"
|
||||
trash_can = "TrashCan.png"
|
@ -2,9 +2,15 @@
|
||||
# DR game/DR rs 更新日志
|
||||
|
||||
- 最新版本号
|
||||
- DR game: 0.1.1.0
|
||||
- DR game: 0.2.0.0
|
||||
- DR rs: 0.2.10.1
|
||||
|
||||
## DR game 0.2.0.0
|
||||
|
||||
### 适配
|
||||
|
||||
- 适配了 `DR_sdk` `0.8.3.0` 的修改
|
||||
|
||||
## DR game 0.1.1.0
|
||||
|
||||
### 添加
|
||||
|
@ -4,6 +4,73 @@
|
||||
- 最新版本号
|
||||
- DR sdk: 0.8.2.0
|
||||
|
||||
## DR sdk 0.8.3.0
|
||||
|
||||
### 添加
|
||||
|
||||
- `DR_status`
|
||||
- 实际上就是 `DR_runtime`
|
||||
- `DR_runtime` -> `DR_status`
|
||||
- `client_running`
|
||||
- 客户端是否在运行
|
||||
- Is client running
|
||||
- `server_running`
|
||||
- 服务器是否在运行
|
||||
- Is server running
|
||||
- Mod loader
|
||||
- 添加了对支持版本号的 warnings
|
||||
- Added warnings for supporting version numbers
|
||||
- API
|
||||
- `Difficult_Rocket.api.log`
|
||||
- `get_named_client_logger`
|
||||
- `get_named_server_logger`
|
||||
- `get_named_main_logger`
|
||||
- 分别用于获取 基于 对应名称配置的 logger
|
||||
- Get the logger for the corresponding name configuration
|
||||
|
||||
### 移动
|
||||
|
||||
- `Difficult_Rocket.DR_runtime`
|
||||
- `DR_version` -> `DR_status.DR_version`
|
||||
- `API_version` -> `DR_status.API_version`
|
||||
- `Build_version` -> `DR_status.Build_version`
|
||||
- `default_language` -> `DR_status.default_language`
|
||||
|
||||
### 删除
|
||||
|
||||
- `Diffiuclt_Rocket.long_version`
|
||||
- 不再使用整数标记版本号 (反正 `Version` 有一个完整的版本号比较机制)
|
||||
- No longer use integer to mark version number (since `Version` has a complete version comparison mechanism)
|
||||
- `Difficult_Rocket.DR_rust_available`
|
||||
- 似乎我忘记删掉这个 `DR_rs` 的耦合了
|
||||
|
||||
```python
|
||||
long_version: int = 15
|
||||
"""
|
||||
long_version: 一个用于标记内部协议的整数
|
||||
15: 完全移除 DR_rust 相关内容 解耦完成
|
||||
14: BaseScreen 的每一个函数都添加了一个参数: window: "ClientWindow"
|
||||
13: 为 DR_runtime 添加 API_version
|
||||
12: 去除 DR_runtime 的 global_logger
|
||||
要 logging 自己拿去(
|
||||
11: 为 DR_option 添加 use_DR_rust
|
||||
修复了一些拼写错误
|
||||
10: 为 DR_runtime 添加 DR_Rust_get_version
|
||||
9 : 为 DR_option 添加 pyglet_macosx_dev_test
|
||||
8 : 为 DR_runtime 添加 DR_rust_version
|
||||
为 DR_option 添加 DR_rust_available
|
||||
以后就有 DR_rust 了
|
||||
7 : 为 DR_option 添加 std_font_size
|
||||
6 : 事实证明, 不如直接用int
|
||||
5 : 添加 build_version 信息,用于标记编译文件版本,
|
||||
游戏版本改为四位数,终于有一个可以让我随便刷的版本号位数了
|
||||
4 : 把 translate 的字体常量位置改了一下,顺便调换顺序
|
||||
3 : 就是试试改一下,正好 compiler 要用
|
||||
2 : 哦,对 longlong 好耶!
|
||||
1 : 我可算想起来还有这回事了 v0.6.4
|
||||
"""
|
||||
```
|
||||
|
||||
## DR sdk 0.8.2.0
|
||||
|
||||
### Fix
|
||||
|
@ -69,9 +69,9 @@ class CompilerHelper(Options):
|
||||
|
||||
def load_file(self) -> bool:
|
||||
try:
|
||||
from Difficult_Rocket import DR_runtime
|
||||
self.product_version = DR_runtime.DR_version
|
||||
self.file_version = DR_runtime.Build_version
|
||||
from Difficult_Rocket import DR_status
|
||||
self.product_version = DR_status.DR_version
|
||||
self.file_version = DR_status.Build_version
|
||||
return True
|
||||
except ImportError:
|
||||
traceback.print_exc()
|
||||
|
@ -1,3 +0,0 @@
|
||||
python3.8 setup.py build
|
||||
python3.9 setup.py build
|
||||
python3.9 post_build.py
|
@ -9,6 +9,7 @@ import traceback
|
||||
|
||||
from typing import Optional
|
||||
|
||||
from Difficult_Rocket import DR_status
|
||||
from Difficult_Rocket.main import Game
|
||||
from Difficult_Rocket.api.mod import ModInfo
|
||||
from Difficult_Rocket.api.types import Options, Version
|
||||
@ -49,7 +50,7 @@ class DR_mod(ModInfo):
|
||||
|
||||
mod_id = "difficult_rocket_mod"
|
||||
name = "Difficult Rocket mod"
|
||||
version = Version("0.1.0.0")
|
||||
version = Version("0.2.0.0")
|
||||
|
||||
writer = "shenjackyuanjie"
|
||||
link = "shenjack.top"
|
||||
@ -58,7 +59,7 @@ class DR_mod(ModInfo):
|
||||
|
||||
config = DR_mod_runtime
|
||||
|
||||
# DR_version = # DR SDK 兼容版本
|
||||
DR_version = (DR_status.DR_version, DR_status.DR_version) # DR SDK 兼容版本
|
||||
# 反正是内置 mod 跟着最新版本的 DR 走就行了
|
||||
# DR_Api_version = # DR Api版本
|
||||
# 同理 不管 API 版本 这东西要是不兼容了才是大问题
|
||||
|
@ -4,12 +4,11 @@
|
||||
# All rights reserved
|
||||
# -------------------------------
|
||||
|
||||
import math
|
||||
# import math
|
||||
import time
|
||||
import random
|
||||
import logging
|
||||
import traceback
|
||||
from xml.etree import ElementTree
|
||||
# from xml.etree import ElementTree
|
||||
from xml.etree.ElementTree import Element
|
||||
from typing import List, TYPE_CHECKING, Union, Dict, Optional, Generator
|
||||
|
||||
@ -21,17 +20,18 @@ from pyglet.math import Vec4
|
||||
from pyglet.text import Label
|
||||
from pyglet.shapes import Line, Rectangle
|
||||
from pyglet.sprite import Sprite
|
||||
from pyglet.image import Texture
|
||||
# from pyglet.image import Texture
|
||||
from pyglet.graphics import Batch, Group
|
||||
|
||||
from . import DR_mod_runtime
|
||||
|
||||
# Difficult Rocket
|
||||
from Difficult_Rocket import DR_option
|
||||
from Difficult_Rocket import DR_status
|
||||
from Difficult_Rocket.utils.translate import tr
|
||||
from Difficult_Rocket.api.types import Fonts, Options
|
||||
from Difficult_Rocket.command.line import CommandText
|
||||
from Difficult_Rocket.client.screen import BaseScreen
|
||||
from Difficult_Rocket.api.log import get_named_client_logger
|
||||
from .types import SR1Textures, SR1PartTexture, SR1PartData, SR1Rotation, xml_bool
|
||||
|
||||
if TYPE_CHECKING:
|
||||
@ -40,7 +40,7 @@ if TYPE_CHECKING:
|
||||
if DR_mod_runtime.use_DR_rust:
|
||||
from .Difficult_Rocket_rs import CenterCamera_rs, SR1PartList_rs, SR1Ship_rs
|
||||
|
||||
logger = logging.getLogger('client')
|
||||
logger = get_named_client_logger('dr_game_sr1_ship')
|
||||
|
||||
|
||||
def get_sr1_part(part_xml: Element) -> Optional[SR1PartData]:
|
||||
@ -124,7 +124,7 @@ class SR1ShipRender(BaseScreen):
|
||||
self.part_box_batch = Batch()
|
||||
self.part_batch = Batch()
|
||||
self.part_group = Group()
|
||||
self.debug_label = Label(x=20, y=main_window.height - 20, font_size=DR_option.std_font_size,
|
||||
self.debug_label = Label(x=20, y=main_window.height - 20, font_size=DR_status.std_font_size,
|
||||
text='SR1 render!', font_name=Fonts.微软等宽无线,
|
||||
width=main_window.width - 20, height=20,
|
||||
anchor_x='left', anchor_y='top')
|
||||
@ -171,7 +171,7 @@ class SR1ShipRender(BaseScreen):
|
||||
self.drawing = True
|
||||
for part_id, part in part_datas.items():
|
||||
# 下面就是调用 pyglet 去渲染的部分
|
||||
# render_scale = DR_option.gui_scale # 这个是 DR 的缩放比例 可以调节的(
|
||||
# render_scale = DR_status.gui_scale # 这个是 DR 的缩放比例 可以调节的(
|
||||
# 主要是 Windows 下有一个缩放系数嘛,我待会试试这玩意能不能获取(估计得 ctypes
|
||||
# 在不缩放的情况下,XML的1个单位长度对应60个像素
|
||||
render_x = part.x * 60
|
||||
|
Loading…
Reference in New Issue
Block a user