commiting 0.6.1

This commit is contained in:
沈瑗杰 2021-10-28 06:43:35 +08:00
parent 08117406c0
commit 65a0260d91
9 changed files with 65 additions and 32 deletions

View File

@ -54,7 +54,8 @@ if __name__ == '__main__':
print(error_format['error.happen'])
error = traceback.format_exc()
if (name := type(exp).__name__) in error_format:
name = type(exp).__name__
if name in error_format:
print(error_format[name])
else:
print(error_format['error.unknown'])
@ -64,4 +65,3 @@ if __name__ == '__main__':
crash.record_thread = False
print(crash.all_thread)
print(crash.all_process)
sys.exit(1)

View File

@ -19,7 +19,6 @@ from .new_thread import new_thread
# lazy之后之前全部导入的(太多了写不动__all__了)
from .Exp import *
from .tools import *
from .command import *
from .calculation import *
from .scientific_unit import *

View File

@ -26,7 +26,7 @@ if __name__ == '__main__': # been start will not run this
sys.path.append('/bin')
# Difficult_Rocket function
from .api import command
from .command import command
from .api.translate import tr
from .fps.fps_log import FpsLogger
from .api import tools, new_thread, translate
@ -93,16 +93,13 @@ class ClientWindow(pyglet.window.Window):
pyglet.resource.reindex()
self.config_file = tools.load_file('configs/main.config')
self.game_config = tools.load_file('configs/game.config')
self.FPS = Decimal(int(self.config_file['runtime']['fps']))
self.SPF = Decimal('1') / self.FPS
# dic
self.environment = {}
self.textures = {} # all textures
self.runtime = {}
# FPS
self.max_fps = [self.FPS, time.time()]
self.min_fps = [self.FPS, time.time()]
self.fps_wait = 5
self.FPS = Decimal(int(self.config_file['runtime']['fps']))
self.SPF = Decimal('1') / self.FPS
self.fps_log = FpsLogger(stable_fps=int(self.FPS),
wait_time=5)
# batch
@ -194,16 +191,9 @@ class ClientWindow(pyglet.window.Window):
def FPS_update(self, tick: Decimal):
now_FPS = pyglet.clock.get_fps()
if now_FPS > self.max_fps[0]:
self.max_fps = [now_FPS, time.time()]
elif now_FPS < self.min_fps[0]:
self.min_fps = [now_FPS, time.time()]
else:
if (time.time() - self.max_fps[1]) > self.fps_wait:
self.max_fps = [self.FPS, time.time()]
elif (time.time() - self.min_fps[1]) > self.fps_wait:
self.min_fps = [self.FPS, time.time()]
self.fps_label.text = 'FPS: {:.1f} {:.1f} ({:.1f}/{:.1f}) | MSPF: {:.5f} '.format(now_FPS, 1 / tick, self.max_fps[0], self.min_fps[0], tick)
self.fps_log.update_tick(tick)
# self.fps_label.text = 'FPS: {:5.1f} {:.1f} ({:.1f}/{:.1f}) | MSPF: {:.5f} '.format(now_FPS, 1 / tick, self.fps_log.max_fps, self.fps_log.min_fps, tick)
self.fps_label.text = f'FPS: {now_FPS:>10.1f} {now_FPS:.1f} {self.fps_log.max_fps:>5.1f} {self.fps_log.min_fps:>5.1f}'
def on_draw(self):
self.clear()

View File

@ -0,0 +1,12 @@
# -------------------------------
# Difficult Rocket
# Copyright © 2021 by shenjackyuanjie
# All rights reserved
# -------------------------------
"""
writen by shenjackyuanjie
mail: 3695888@qq.com
github: @shenjackyuanjie
gitee: @shenjackyuanjie
"""

View File

@ -17,8 +17,8 @@ from typing import Union
from decimal import Decimal
# from DR
from . import translate
from .new_thread import new_thread
from ..api import translate
from ..api.new_thread import new_thread
# from libs.pyglet
from libs import pyglet
@ -26,10 +26,7 @@ from libs.pyglet import font
from libs.pyglet.text import Label
from libs.pyglet.window import key
from libs.pyglet.gui import widgets
from libs.pyglet.text.caret import Caret
from libs.pyglet.graphics import Batch, Group
from libs.pyglet.text.layout import IncrementalTextLayout
from libs.pyglet.text.document import UnformattedDocument
class CommandLine(widgets.WidgetBase):
@ -97,6 +94,14 @@ class CommandLine(widgets.WidgetBase):
label.group = Group(order=order + 1, parent=self._user_group)
self._outline.group = Group(order=order + 2, parent=self._user_group)
"""
values
"""
@property
def value(self):
return self.text
@property
def text(self):
return self._text
@ -122,7 +127,7 @@ class CommandLine(widgets.WidgetBase):
实际上还有一个限制
"""
assert type(value) is int, 'Command View must be integer'
assert -2 < value < self.length, f'Command View must be bigger than -1 and smaller than {self.length}'
assert -self.length < value < self.length, f'Command View must be bigger than {-self.length} and smaller than {self.length}'
if value == -1: # flush command list
self._label.insert(0, self._label[-1])
self._label.pop(-1)
@ -153,12 +158,24 @@ class CommandLine(widgets.WidgetBase):
for label in self._label:
label.visible = value
@new_thread('command wait', log_thread=False)
def wait(self, wait):
@new_thread('command wait', daemon=True, log_thread=False)
def wait(self, wait: Union[float, int] = 0):
this = self._label[0]
self._label[0].visible = True
time.sleep(wait)
if self._label[0].visible and not self.editing:
self._label[0].visible = False
while (self._label[0].opacity >= 30) and self._label[0].visible and (self._label[0] is this) and not self.editing:
# (label 的透明度不是 0) and (label 还在显示) and (label 还是载入线程时候的那个label) and (现在不在输入新行)
self._label[0].opacity -= 2
time.sleep(0.01)
if self._label[0] is this: # 如果结束的时候label还是这个label
self._label[0].opacity = 255
else: # 如果不是就赶快找回来!
now = self._label.index(this)
self._label[now].opacity = 255
if not self.editing: # 如果不在编辑再隐藏
self._label[0].visible = False
print(self._label[0].opacity)
"""
events
@ -177,7 +194,7 @@ class CommandLine(widgets.WidgetBase):
if self.text:
self.command_view = -1
self.editing = False
self.wait(1)
self.wait()
else:
self.text = f'{self.text[:self._text_position]}{text}{self.text[self._text_position:]}' # 插入字符(简单粗暴)
self._text_position += 1

View File

@ -16,6 +16,8 @@ import decimal
from decimal import Decimal
from ..api.new_thread import new_thread
from libs import pyglet
"""
@ -34,6 +36,7 @@ class FpsLogger:
self.wait_time = wait_time
self.fps_list = [[stable_fps, time.time_ns()]]
# @new_thread('fps_logger update', daemon=False, log_thread=False)
def update_tick(self,
tick: Decimal):
now_time = time.time_ns()
@ -43,6 +46,12 @@ class FpsLogger:
if now_time - self.fps_list[0][1] >= self.wait_time * (10 ** 9):
self.fps_list.pop(0)
def update_list(self):
now_time = time.time_ns()
for fps_time in self.fps_list:
if now_time - fps_time[1] >= self.wait_time * (10 ** 9):
del fps_time
@property
def max_fps(self):
fps_list = [fpss[0] for fpss in self.fps_list]

View File

@ -35,7 +35,7 @@
},
'loggers': {
'client': {
'level': 'INFO',
'level': 'DEBUG',
'handlers': []
},
'server': {

View File

@ -10,6 +10,12 @@
- [![Readme-gitee](https://img.shields.io/badge/Readme-中文(点我!)-blue.svg?style=flat-square)](README-cn.md)
- Using [SemVer 2.0.0](https://semver.org/) to manage version
## 202111 V 0.6.1
### Change
- now command will fade away but not suddenly disappear
## 20211025 V 0.6.0
#### Command Line Update!

View File

@ -315,11 +315,11 @@ class DocumentLabel(layout.TextLayout):
:type: int
"""
return self.color[4]
return self.color[3]
@opacity.setter
def opacity(self, alpha):
if alpha != self.color[4]:
if alpha != self.color[3]:
self.color = list(map(int, (*self.color[:3], alpha)))
@property