2021-09-08 23:38:34 +08:00
|
|
|
|
# -------------------------------
|
|
|
|
|
# Difficult Rocket
|
2023-01-20 14:08:12 +08:00
|
|
|
|
# Copyright © 2020-2023 by shenjackyuanjie 3695888@qq.com
|
2021-09-08 23:38:34 +08:00
|
|
|
|
# All rights reserved
|
|
|
|
|
# -------------------------------
|
|
|
|
|
|
2021-04-02 23:31:54 +08:00
|
|
|
|
"""
|
2021-01-24 18:26:56 +08:00
|
|
|
|
writen by shenjackyuanjie
|
2021-09-02 22:47:10 +08:00
|
|
|
|
mail: 3695888@qq.com
|
2021-08-13 12:25:29 +08:00
|
|
|
|
github: @shenjackyuanjie
|
2021-09-02 22:47:10 +08:00
|
|
|
|
gitee: @shenjackyuanjie
|
2021-04-02 23:31:54 +08:00
|
|
|
|
"""
|
2023-01-19 16:32:36 +08:00
|
|
|
|
# import ctypes
|
2023-01-21 23:05:34 +08:00
|
|
|
|
import sys
|
2022-12-08 09:53:22 +08:00
|
|
|
|
import logging
|
2023-01-24 12:25:23 +08:00
|
|
|
|
import warnings
|
2023-01-22 17:21:21 +08:00
|
|
|
|
import traceback
|
2023-01-19 16:32:36 +08:00
|
|
|
|
from typing import List, Dict, Union, Optional
|
2022-11-08 20:18:01 +08:00
|
|
|
|
|
2023-01-01 21:54:59 +08:00
|
|
|
|
from Difficult_Rocket.api.types import Options
|
2022-08-03 20:22:36 +08:00
|
|
|
|
|
2022-04-08 23:07:41 +08:00
|
|
|
|
from libs.MCDR.version import Version
|
2022-02-16 13:36:26 +08:00
|
|
|
|
|
2023-01-20 13:52:58 +08:00
|
|
|
|
game_version = Version("0.6.5.0") # 游戏版本
|
2023-01-24 12:25:23 +08:00
|
|
|
|
build_version = Version("1.1.0.0") # 编译文件版本(与游戏本体无关)
|
|
|
|
|
DR_rust_version = Version("0.0.5.0") # DR 的 Rust 编写部分的版本
|
2022-02-08 17:15:09 +08:00
|
|
|
|
__version__ = game_version
|
2021-01-24 18:26:56 +08:00
|
|
|
|
|
2023-01-24 12:25:23 +08:00
|
|
|
|
long_version: int = 10
|
2022-11-26 21:48:55 +08:00
|
|
|
|
"""
|
|
|
|
|
long_version: 一个用于标记内部协议的整数
|
2023-01-24 12:25:23 +08:00
|
|
|
|
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
|
2023-01-20 20:20:35 +08:00
|
|
|
|
以后就有 DR_rust 了
|
2023-01-24 12:25:23 +08:00
|
|
|
|
7 : 为 DR_option 添加 std_font_size
|
|
|
|
|
6 : 事实证明, 不如直接用int
|
|
|
|
|
5 : 添加 build_version 信息,用于标记编译文件版本,
|
|
|
|
|
游戏版本改为四位数,终于有一个可以让我随便刷的版本号位数了
|
|
|
|
|
4 : 把 translate 的字体常量位置改了一下,顺便调换顺序
|
|
|
|
|
3 : 就是试试改一下,正好 compiler 要用
|
|
|
|
|
2 : 哦,对 longlong 好耶!
|
|
|
|
|
1 : 我可算想起来还有这回事了 v0.6.4
|
2022-11-26 21:48:55 +08:00
|
|
|
|
"""
|
2021-11-06 19:07:32 +08:00
|
|
|
|
|
2022-08-03 20:22:36 +08:00
|
|
|
|
|
2022-12-29 17:45:47 +08:00
|
|
|
|
class _DR_option(Options):
|
2022-08-12 21:07:36 +08:00
|
|
|
|
"""
|
2023-01-21 12:20:50 +08:00
|
|
|
|
DR 的一般配置/状态
|
2022-08-12 21:07:36 +08:00
|
|
|
|
"""
|
2022-11-20 17:46:02 +08:00
|
|
|
|
name = 'DR Option'
|
2022-08-12 21:07:36 +08:00
|
|
|
|
# runtime options
|
2023-01-02 17:19:57 +08:00
|
|
|
|
InputBox_use_TextEntry: bool = True
|
2022-12-22 10:54:46 +08:00
|
|
|
|
record_threads: bool = True
|
|
|
|
|
use_cProfile: bool = False
|
|
|
|
|
use_local_logging: bool = False
|
2022-11-26 21:48:55 +08:00
|
|
|
|
report_translate_no_found: bool = True
|
2022-12-25 23:15:49 +08:00
|
|
|
|
use_muitprocess: bool = False
|
2023-01-20 20:20:35 +08:00
|
|
|
|
DR_rust_available: bool = False
|
2022-08-12 21:07:36 +08:00
|
|
|
|
|
|
|
|
|
# tests
|
2023-01-21 12:20:50 +08:00
|
|
|
|
playing: bool = False
|
|
|
|
|
debugging: bool = False
|
|
|
|
|
crash_report_test: bool = True
|
|
|
|
|
pyglet_macosx_dev_test: bool = True
|
2022-08-12 21:07:36 +08:00
|
|
|
|
|
2022-12-22 10:54:46 +08:00
|
|
|
|
# window option
|
2023-01-19 22:29:43 +08:00
|
|
|
|
gui_scale: float = 1.0 # default 1.0 2.0 -> 2x 3 -> 3x
|
|
|
|
|
|
2023-01-20 20:20:35 +08:00
|
|
|
|
def init(self, **kwargs):
|
2023-01-21 23:05:34 +08:00
|
|
|
|
if not sys.platform == 'darwin': # MacOS 的测试只能在 Macos 上跑
|
2023-01-21 12:20:50 +08:00
|
|
|
|
self.pyglet_macosx_dev_test = False
|
2023-01-20 20:20:35 +08:00
|
|
|
|
try:
|
2023-01-24 12:25:23 +08:00
|
|
|
|
from libs.Difficult_Rocket_rs import test_call, get_version_str
|
2023-01-23 00:01:01 +08:00
|
|
|
|
test_call(self)
|
2023-01-24 12:25:23 +08:00
|
|
|
|
print(f'DR_rust available: {get_version_str()}')
|
2023-01-20 20:20:35 +08:00
|
|
|
|
except ImportError:
|
2023-01-24 09:59:38 +08:00
|
|
|
|
if not __name__ == '__main__':
|
2023-01-24 08:29:22 +08:00
|
|
|
|
traceback.print_exc()
|
2023-01-20 20:20:35 +08:00
|
|
|
|
self.DR_rust_available = False
|
|
|
|
|
self.flush_option()
|
|
|
|
|
|
2023-01-23 00:01:01 +08:00
|
|
|
|
def draw(self):
|
|
|
|
|
self.DR_rust_available = True
|
|
|
|
|
|
2023-01-19 22:29:43 +08:00
|
|
|
|
@property
|
|
|
|
|
def std_font_size(self) -> int:
|
2023-01-20 20:20:35 +08:00
|
|
|
|
return round(12 * self.gui_scale)
|
2022-12-22 10:54:46 +08:00
|
|
|
|
|
2022-08-12 21:07:36 +08:00
|
|
|
|
|
|
|
|
|
class _DR_runtime(Options):
|
|
|
|
|
"""
|
2023-01-21 12:20:50 +08:00
|
|
|
|
DR 的运行时配置/状态
|
2022-08-12 21:07:36 +08:00
|
|
|
|
"""
|
2022-11-20 17:46:02 +08:00
|
|
|
|
name = 'DR Runtime'
|
2023-01-19 16:32:36 +08:00
|
|
|
|
# game status
|
2022-08-21 14:59:35 +08:00
|
|
|
|
DR_version: Version = game_version
|
2023-01-03 15:34:22 +08:00
|
|
|
|
Build_version: Version = build_version
|
2023-01-20 20:20:35 +08:00
|
|
|
|
DR_Rust_version: Version = DR_rust_version
|
2023-01-24 12:25:23 +08:00
|
|
|
|
DR_Rust_get_version: Optional[Version] = None
|
2023-01-06 21:43:18 +08:00
|
|
|
|
DR_long_version: int = long_version
|
2022-08-21 14:59:35 +08:00
|
|
|
|
|
2022-08-12 21:07:36 +08:00
|
|
|
|
# run status
|
2022-12-25 23:15:49 +08:00
|
|
|
|
running: bool = False
|
|
|
|
|
start_time_ns: int = None
|
2022-11-26 21:48:55 +08:00
|
|
|
|
client_setup_cause_ns: int = None
|
|
|
|
|
server_setup_cause_ns: int = None
|
2022-08-12 21:07:36 +08:00
|
|
|
|
|
2022-12-08 09:53:22 +08:00
|
|
|
|
# game runtimes
|
|
|
|
|
global_logger: logging.Logger
|
|
|
|
|
|
2022-08-12 21:07:36 +08:00
|
|
|
|
# game options
|
|
|
|
|
_language = 'zh-CN'
|
2022-11-26 21:48:55 +08:00
|
|
|
|
default_language: str = 'zh-CN'
|
2022-08-12 21:07:36 +08:00
|
|
|
|
|
2023-01-24 12:25:23 +08:00
|
|
|
|
def init(self, **kwargs) -> None:
|
|
|
|
|
try:
|
|
|
|
|
from libs.Difficult_Rocket_rs import get_version_str
|
|
|
|
|
self.DR_Rust_get_version = Version(get_version_str())
|
|
|
|
|
if self.DR_Rust_get_version != self.DR_Rust_version:
|
|
|
|
|
relationship = 'larger' if self.DR_Rust_version > self.DR_Rust_get_version else 'smaller'
|
|
|
|
|
warnings.warn(f'DR_rust builtin version is {self.DR_Rust_version} but true version is {get_version_str()}.\n'
|
|
|
|
|
f'Builtin version {relationship} than true version')
|
|
|
|
|
except ImportError:
|
|
|
|
|
pass
|
|
|
|
|
|
2022-10-15 17:38:35 +08:00
|
|
|
|
def __init__(self, **kwargs):
|
2022-10-02 22:24:38 +08:00
|
|
|
|
self.__options = {'language': self.language}
|
2023-01-21 14:50:30 +08:00
|
|
|
|
super().__init__(**kwargs)
|
2022-08-21 14:59:35 +08:00
|
|
|
|
|
2022-08-12 21:07:36 +08:00
|
|
|
|
@property
|
|
|
|
|
def language(self):
|
|
|
|
|
return self._language
|
|
|
|
|
|
|
|
|
|
@language.setter
|
|
|
|
|
def language(self, value: str):
|
|
|
|
|
if value == self._language:
|
|
|
|
|
return
|
|
|
|
|
assert isinstance(value, str), "DR language MUST be string"
|
|
|
|
|
self._language = value
|
|
|
|
|
from Difficult_Rocket.utils import translate
|
|
|
|
|
translate.tr._update_lang()
|
|
|
|
|
|
|
|
|
|
|
2022-11-11 09:33:34 +08:00
|
|
|
|
_DR_runtime.add_option('language', _DR_runtime.language)
|
2022-08-12 21:07:36 +08:00
|
|
|
|
|
|
|
|
|
|
2022-12-29 17:45:47 +08:00
|
|
|
|
DR_option = _DR_option()
|
2022-08-12 21:07:36 +08:00
|
|
|
|
DR_runtime = _DR_runtime()
|
|
|
|
|
|
|
|
|
|
if DR_option.playing:
|
2022-11-08 20:18:01 +08:00
|
|
|
|
from Difficult_Rocket.utils import new_thread
|
2021-08-13 12:25:29 +08:00
|
|
|
|
|
2022-06-21 20:15:36 +08:00
|
|
|
|
|
2022-06-21 10:17:13 +08:00
|
|
|
|
def think_it(something):
|
|
|
|
|
return something
|
|
|
|
|
|
|
|
|
|
|
2021-10-31 23:26:32 +08:00
|
|
|
|
@new_thread('think')
|
|
|
|
|
def think(some_thing_to_think):
|
2022-06-21 10:17:13 +08:00
|
|
|
|
gotcha = think_it(some_thing_to_think)
|
2021-10-31 23:26:32 +08:00
|
|
|
|
return gotcha
|