diff --git a/Difficult_Rocket.py b/Difficult_Rocket.py
index e472074..bb4f8fb 100644
--- a/Difficult_Rocket.py
+++ b/Difficult_Rocket.py
@@ -15,27 +15,31 @@ hi = """Difficult Rocket is writen by shenjackyuanjie
mail: 3695888@qq.com or shyj3695888@163.com
QQ: 3695888"""
+error_format = {
+ 'TestError': '游戏正在调试中,某处引发了一个 TestError,不是bug造成的原因',
+ 'AssertionError': '游戏的某处检查未通过,情报告issue',
+ 'error.unknown': '游戏报错了,现在输出报错信息,请报告issue',
+ 'error.happen': '游戏出现了一个报错!正在处理'
+}
+
if __name__ == '__main__':
- print("sys.path[0] = ", sys.path[0])
- print("sys.argv[0] = ", sys.argv[0])
- print("__file__ = ", __file__)
- print("os.path.abspath(__file__) = ", os.path.abspath(__file__))
- print("os.path.realpath(__file__) = ", os.path.realpath(__file__))
- print("os.path.dirname(os.path.realpath(__file__)) = ", os.path.dirname(os.path.realpath(__file__)))
- print("os.path.split(os.path.realpath(__file__)) = ", os.path.split(os.path.realpath(__file__)))
- print("os.path.split(os.path.realpath(__file__))[0] = ", os.path.split(os.path.realpath(__file__))[0])
- print("os.getcwd() = ", os.getcwd())
+ print(f'{__file__=}')
+ print(f'{sys.path[0]=}')
+ print(f'{sys.argv[0]=}')
+ print(f'{os.getcwd()=}')
+ print(f'{os.path.abspath(__file__)=}')
+ print(f'{os.path.realpath(__file__)=}')
# 输出一遍大部分文件位置相关信息 以后可能会加到logs里
file_path = os.path.split(os.path.realpath(__file__))[0]
os.chdir(file_path)
- sys.path.append(f'{file_path}\\Difficult_Rocket')
- sys.path.append(f'{file_path}\\libs')
+ sys.path.append(f'{file_path}/Difficult_Rocket')
+ sys.path.append(f'{file_path}/libs')
print(sys.path)
print(hi)
DEBUGGING = False
from Difficult_Rocket.api.Exp import *
- print(multiprocessing.get_start_method())
+
try:
from Difficult_Rocket import crash
from Difficult_Rocket import main
@@ -45,14 +49,15 @@ if __name__ == '__main__':
if DEBUGGING:
raise TestError('debugging')
- except TestError:
- print('the game is debugging. this crash is raise by TestError')
- error = traceback.format_exc()
- print(error)
- crash.create_crash_report(error)
- except:
- print('the game has unknown error , now outputting error message')
+ except Exception as exp:
+ from Difficult_Rocket.api.translate import tr
+
+ print(error_format['error.happen'])
error = traceback.format_exc()
+ if (name := type(exp).__name__) in error_format:
+ print(error_format[name])
+ else:
+ print(error_format['error.unknown'])
print(error)
crash.create_crash_report(error)
else:
diff --git a/Difficult_Rocket/api/calculation.py b/Difficult_Rocket/api/calculation.py
index d9dd1a5..2d02f6c 100644
--- a/Difficult_Rocket/api/calculation.py
+++ b/Difficult_Rocket/api/calculation.py
@@ -18,7 +18,6 @@ from typing import List, Optional
from decimal import Decimal
-
# linear_algebra
@@ -159,7 +158,7 @@ def distance(A, B):
formats:
A & B format: docs.basic_config:basic_poi
"""
- poi_dis = configs.basic_poi()
+ poi_dis = basic_poi()
for x in A, B:
x = decimal.Decimal(str(x))
xd = A[0] - B[0]
@@ -179,7 +178,7 @@ def _BasicNumber(int_num=0, float_num=1, unit1=None, unit2=None) -> list:
unit1 = []
if unit2 is None:
unit2 = []
- if tools.is_decimal(float_num): # is decimal class?
+ if is_decimal(float_num): # is decimal class?
return [int_num, float_num, unit1, unit2] # is just return
else:
return [int_num, decimal.Decimal(str(float_num)), unit1, unit2] # no create a decimal class
@@ -296,3 +295,6 @@ class ScientificNumber:
self.multi_unit = []
else:
self.multi_unit = multi_unit
+ self.floats = floats
+ self.integer = integer
+
diff --git a/Difficult_Rocket/api/tools.py b/Difficult_Rocket/api/tools.py
index 0669cd5..99a62a7 100644
--- a/Difficult_Rocket/api/tools.py
+++ b/Difficult_Rocket/api/tools.py
@@ -352,5 +352,3 @@ def distance(A, B):
poi_dis.append(poi_dis[0] + poi_dis[1])
poi_dis[2] **= 0.5
return poi_dis[2]
-
-# def
diff --git a/Difficult_Rocket/api/translate.py b/Difficult_Rocket/api/translate.py
index 6154ce8..6d532c0 100644
--- a/Difficult_Rocket/api/translate.py
+++ b/Difficult_Rocket/api/translate.py
@@ -83,16 +83,24 @@ class Lang:
raise LanguageError(f'there\'s no key {args} in both {self.language} and zh-CN')
-try:
- tr = Lang('zh-CN')
-except FileNotFoundError:
- import os
+tr = Lang('zh-CN')
- os.chdir('..')
- os.chdir('..')
- tr = Lang('zh-CN')
+# font's value
+HOS = 'HarmonyOS_Sans'
+HOS_S = 'HarmonyOS_Sans_SC'
+HOS_T = 'HarmonyOS_Sans_TC'
+HOS_I = 'HarmonyOS_Sans_Italic'
+HOS_C = 'HarmonyOS_Sans_Condensed'
+HOS_CI = 'HarmonyOS_Sans_Condensed_Italic'
+HOS_NA = 'HarmonyOS_Sans_Naskh_Arabic'
+HOS_NAU = 'HarmonyOS_Sans_Naskh_Arabic_UI'
-def test():
- print(tr)
- assert tr.language == 'zh-CN'
+鸿蒙字体 = HOS
+鸿蒙简体 = HOS_S
+鸿蒙繁体 = HOS_T
+鸿蒙斜体 = HOS_I
+鸿蒙窄体 = HOS_C
+鸿蒙斜窄体 = HOS_CI
+鸿蒙阿拉伯 = HOS_NA
+鸿蒙阿拉伯UI = HOS_NAU
diff --git a/Difficult_Rocket/client.py b/Difficult_Rocket/client.py
index cd6be22..9e4e8a7 100644
--- a/Difficult_Rocket/client.py
+++ b/Difficult_Rocket/client.py
@@ -33,7 +33,7 @@ if __name__ == '__main__': # been start will not run this
from Difficult_Rocket import crash
from Difficult_Rocket.api.Exp import *
from Difficult_Rocket.api.translate import tr
-from Difficult_Rocket.drag_sprite import DragSprite
+from Difficult_Rocket.graphics import widgets
from Difficult_Rocket.api import tools, load_file, new_thread, thread
# libs function
@@ -48,12 +48,11 @@ else:
class Client:
def __init__(self, net_mode='local'):
+ start_time = time.time_ns()
# logging
self.logger = logging.getLogger('client')
# config
self.config = tools.load_file('configs/main.config')
- # lang
- self.lang = tools.load_file('configs/lang/%s.json5' % self.config['runtime']['language'], 'client')
# value
self.process_id = 'Client'
self.process_name = 'Client process'
@@ -67,7 +66,11 @@ class Client:
caption=self.caption,
resizable=tools.format_bool(self.config['window']['resizable']),
visible=tools.format_bool(self.config['window']['visible']))
- self.logger.info(tr['client']['setup.done'])
+ self.logger.info(tr.lang('client', 'setup.done'))
+ end_time = time.time_ns()
+ self.use_time = end_time - start_time
+ self.logger.info(tr.lang('client', 'setup.use_time').format(Decimal(self.use_time) / 1000000000))
+ self.logger.debug(tr.lang('client', 'setup.use_time_ns').format(self.use_time))
def start(self):
self.window.start_game() # 游戏启动
@@ -77,7 +80,7 @@ class Client:
class ClientWindow(pyglet.window.Window):
def __init__(self, net_mode='local', *args, **kwargs):
- self.times = [time.time()]
+ start_time = time.time_ns()
super().__init__(*args, **kwargs)
"""
:param dev_list: 共享内存
@@ -96,8 +99,6 @@ class ClientWindow(pyglet.window.Window):
self.config_file = tools.load_file('configs/main.config')
self.FPS = Decimal(int(self.config_file['runtime']['fps']))
self.SPF = Decimal('1') / self.FPS
- # lang
- self.lang = tools.load_file('configs/lang/%s.json5' % self.config_file['runtime']['language'], 'client')
# dic
self.environment = {}
self.textures = {} # all textures
@@ -111,41 +112,40 @@ class ClientWindow(pyglet.window.Window):
self.label_batch = pyglet.graphics.Batch()
# frame
self.frame = pyglet.gui.Frame(self)
- self.M_frame = pyglet.gui.MovableFrame(self)
+ self.M_frame = pyglet.gui.MovableFrame(self, modifier=key.LCTRL)
# setup
self.setup()
self.info_label = pyglet.text.Label(x=10, y=self.height - 10,
anchor_x='left', anchor_y='top',
batch=self.label_batch)
pyglet.clock.schedule_interval(self.update, float(self.SPF))
- self.logger.info(self.lang['setup.done'])
-
- @new_thread('client_load_environment')
- def load_environment(self) -> None:
- # load parts info
- self.environment['parts'] = load_file('configs/sys_value/parts.json5')
- try:
- self.load_textures()
- except TexturesError:
- raise
-
- @new_thread('client_load_textures')
- def load_textures(self) -> None:
- # load parts
- self.textures['parts'] = {}
- for part in self.environment['parts']:
- pass
+ self.logger.info(tr.lang('window', 'setup.done'))
+ end_time = time.time_ns()
+ self.use_time = end_time - start_time
+ self.logger.info(tr.lang('window', 'setup.use_time').format(Decimal(self.use_time) / 1000000000))
+ self.logger.debug(tr.lang('window', 'setup.use_time_ns').format(self.use_time))
def setup(self):
self.logger.info(tr.lang('window', 'os.pid_is').format(os.getpid(), os.getppid()))
- image = pyglet.image.load('textures/Editor/PartButton.png')
- self.textures['test'] = DragSprite(10, 20, image, batch=self.label_batch, drag_by_all=False, drag_out_window=True)
- self.load_environment()
+ self.load_fonts()
+
+ @new_thread('client load_fonts')
+ def load_fonts(self):
+ file_path = './libs/fonts/HarmonyOS Sans/'
+ ttf_files = os.listdir(file_path)
+ self.logger.info(tr.lang('window', 'fonts.found').format(ttf_files))
+ for ttf_file in ttf_files:
+ pyglet.font.add_directory(f'{file_path}{ttf_file}')
+
+ @new_thread('client load_editor')
+ def load_Editor(self):
+ pass
def start_game(self) -> None:
self.run_input = True
- # self.input_line = threading.Thread(target=self.read_input, name='client_read_line', daemon=True)
- # self.input_line.start()
+ # self.read_thread = threading.Thread(target=self.read_input, name='client_read_input')
+ # self.read_thread.start()
+ # crash.all_thread.append(self.read_thread)
pyglet.app.run()
def read_input(self):
@@ -162,9 +162,10 @@ class ClientWindow(pyglet.window.Window):
"""
def update(self, tick: float):
- self.FPS_update(tick)
+ decimal_tick = Decimal(tick)
+ self.FPS_update(decimal_tick)
- def FPS_update(self, tick: float):
+ 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()]
@@ -199,20 +200,13 @@ class ClientWindow(pyglet.window.Window):
def on_mouse_drag(self, x, y, dx, dy, buttons, modifiers) -> None:
# self.logger.debug('按键拖拽 %s %s %s %s %s %s' % (x, y, dx, dy, buttons, modifiers))
- self.textures['test'].on_mouse_drag(x, y, dx, dy, buttons, modifiers)
pass
def on_mouse_press(self, x, y, button, modifiers) -> None:
- if button == mouse.LEFT:
- self.logger.debug(self.lang['mouse.press'].format([x, y], self.lang['mouse.left']))
- elif button == mouse.RIGHT:
- self.logger.debug(self.lang['mouse.press'].format([x, y], self.lang['mouse.right']))
- self.textures['test']._sprite.rotation = random.randint(0, 360)
- self.textures['test'].on_mouse_press(x, y, button, modifiers)
+ self.logger.debug(tr.lang('window', 'mouse.press').format([x, y], tr.lang('window', 'mouse.{}'.format(mouse.buttons_string(button)))))
def on_mouse_release(self, x, y, button, modifiers) -> None:
- self.logger.debug(tr.lang('window', 'mouse.release').format([x, y], tr.lang('window', 'mouse.right')))
- self.textures['test'].on_mouse_release(x, y, button, modifiers)
+ self.logger.debug(tr.lang('window', 'mouse.release').format([x, y], tr.lang('window', 'mouse.{}'.format(mouse.buttons_string(button)))))
def on_key_press(self, symbol, modifiers) -> None:
if symbol == key.ESCAPE and not (modifiers & ~(key.MOD_NUMLOCK |
diff --git a/Difficult_Rocket/drag_sprite.py b/Difficult_Rocket/drag_sprite.py
deleted file mode 100644
index d5ce43f..0000000
--- a/Difficult_Rocket/drag_sprite.py
+++ /dev/null
@@ -1,105 +0,0 @@
-"""
-writen by shenjackyuanjie
-mail: 3695888@qq.com
-github: @shenjackyuanjie
-gitee: @shenjackyuanjie
-"""
-
-import sys
-
-if __name__ == '__main__': # been start will not run this
- sys.path.append('/bin/libs')
- sys.path.append('/bin')
-
-import pyglet
-from pyglet.window import mouse
-from pyglet.gui.widgets import WidgetBase
-
-
-class DragSprite(WidgetBase):
- """Instance of a drag button.
-
- Triggers the event 'on_press' when it is clicked by the mouse.
- Triggers the event 'on_release' when the mouse is released.
- Triggers the event 'on_drag' when it is drag by mouse.
- """
-
- # TODO make it More standardized
- # TODO add group thing again(i don't know how to)
- # by shenjack
-
- def __init__(self,
- x: int,
- y: int,
- image: pyglet.image.AbstractImage,
- drag_by_all: bool = False,
- drag_out_window: bool = False,
- batch: pyglet.graphics.Batch = None,
- group: pyglet.graphics.Group = None):
- """Create a draggable sprite.
-
- :Parameters:
- `x` : int
- X coordinate of the push button.
- `y` : int
- Y coordinate of the push button.
- `image` : `~pyglet.image.AbstractImage`
- Image to display when the sprite is pressed.
- `drag_by_all` : bool
- If True then sprite will move whatever witch mouse button drag the sprite,
- or the sprite will only move when Left mouse button drag.
- `drag_out_window` : bool
- If True then sprite will move out of the window with the mouse dragging,
- or the sprite will only stop on the edge of the window.
- `batch` : `~pyglet.graphics.Batch`
- Optional batch to add the sprite to.
- `group` : `~pyglet.graphics.Group`
- Optional parent group of the sprite.
- """
- super().__init__(x, y, image.width, image.height)
- self._image = image
- self._batch = batch or pyglet.graphics.Batch()
- self._sprite = pyglet.sprite.Sprite(self._image, x, y, batch=batch, group=group)
- self.drag_by_all = drag_by_all
- self.drag_out_window = drag_out_window
- self.dragging = False
-
- def _check_hit(self, x, y):
- return self._x < x < self._x + self._width and self._y < y < self._y + self._height
-
- def on_mouse_press(self, x, y, buttons, modifiers):
- if (buttons == mouse.LEFT) or self.drag_by_all:
- if self._check_hit(x, y):
- self.dragging = True
- self.dispatch_event('on_press', buttons, self.dragging)
-
- def on_mouse_drag(self, x, y, dx, dy, buttons, modifiers):
- if self.dragging:
- # TODO find a way to get window height and width
- if (self._x + dx) < 0 and not self.drag_out_window:
- self._sprite.x = 0
- self._x = 0
- else:
- self._sprite.x += dx
- self._x += dx
- if (self._y + dy) < 0 and not self.drag_out_window:
- self._sprite.y = 0
- self._y = 0
- else:
- self._sprite.y += dy
- self._y += dy
- self.dispatch_event('on_drag', x, y, dx, dy, buttons, modifiers)
-
- def draw(self):
- self._sprite.draw()
- # just use self.draw can draw
-
- def on_mouse_release(self, x, y, buttons, modifiers):
- if self.dragging:
- self.dragging = not self.dragging
- self.dispatch_event('on_release', x, y, buttons, modifiers)
-
-
-DragSprite.register_event_type('on_drag')
-DragSprite.register_event_type('on_press')
-DragSprite.register_event_type('on_release')
diff --git a/Difficult_Rocket/graphics/__init__.py b/Difficult_Rocket/graphics/__init__.py
new file mode 100644
index 0000000..80dcc9a
--- /dev/null
+++ b/Difficult_Rocket/graphics/__init__.py
@@ -0,0 +1,12 @@
+# -------------------------------
+# Difficult Rocket
+# Copyright © 2021 by shenjackyuanjie
+# All rights reserved
+# -------------------------------
+
+"""
+writen by shenjackyuanjie
+mail: 3695888@qq.com
+github: @shenjackyuanjie
+gitee: @shenjackyuanjie
+"""
diff --git a/Difficult_Rocket/graphics/widgets.py b/Difficult_Rocket/graphics/widgets.py
new file mode 100644
index 0000000..6704082
--- /dev/null
+++ b/Difficult_Rocket/graphics/widgets.py
@@ -0,0 +1,35 @@
+# -------------------------------
+# Difficult Rocket
+# Copyright © 2021 by shenjackyuanjie
+# All rights reserved
+# -------------------------------
+
+"""
+writen by shenjackyuanjie
+mail: 3695888@qq.com
+github: @shenjackyuanjie
+gitee: @shenjackyuanjie
+"""
+
+from libs import pyglet
+from libs.pyglet.gui import widgets
+from libs.pyglet.sprite import Sprite
+from libs.pyglet.graphics import Batch
+from libs.pyglet.image import AbstractImage
+
+
+class Parts(widgets.WidgetBase):
+ """
+ parts
+ """
+ def __init__(self,
+ x: int,
+ y: int,
+ width: int,
+ height: int,
+ textures: AbstractImage,
+ batch: Batch,
+ parts_data: dict):
+ super().__init__(x, y, width, height)
+ self.sprite = Sprite(img=textures, x=x, y=y, batch=batch)
+ self._value = 0
diff --git a/README.md b/README.md
index da23dbb..c449742 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@
[![Generic badge](https://img.shields.io/badge/SemVer-2.0.0-blue.svg)](https://Semver.org/)
[![Generic badge](https://img.shields.io/badge/Write_with_Python-3.8.10-blue.svg)](https://Python.org)
-[![Generic badge](https://img.shields.io/badge/Python-3.6_|_3.7_|_3.8_|_3.9-blue.svg)](https://Python.org)
+[![Generic badge](https://img.shields.io/badge/Python-_3.8_|_3.9-blue.svg)](https://Python.org)
## Version
@@ -12,7 +12,7 @@
[![Generic badge](https://img.shields.io/badge/Pre_Release-0.4.6-blue.svg)](https://github.com/shenjackyuanjie/Difficult-Rocket/releases/v0.4.6)
![Generic badge](https://img.shields.io/badge/Devloping-0.5.2-blue.svg)
-## 中文README请移步 [这里](./docs/README-cn.md)
+## 中文README请移步 [这里](/docs/README-cn.md)
> It's a Simple Rocket liked game build with Python
@@ -20,9 +20,9 @@
> Lighter than Vanilla SR
-## [Plan feature list](./docs/plan_features)
+## [Plan feature list](/docs/plan_features)
-## [Update logs](./docs/update_logs.md)
+## [Update logs](/docs/update_logs.md)
## Environment (been tested / develop on)
@@ -31,9 +31,10 @@
- `Python 3.8.10`
- `Windows10 x64`
- `pyglet 2.0.dev9`
- - `Json5 0.9.5`
+ - `Json5 0.9.6`
- `pillow 8.1.0`
- `AMD R5 5600X`
+ - `AMD RX 550 4G`
-
- `Develop platform 2 - macOS Big Sur`
- `Python 3.8.7`
diff --git a/configs/lang/zh-CN.json5 b/configs/lang/zh-CN.json5
index 6d631cc..dc76258 100644
--- a/configs/lang/zh-CN.json5
+++ b/configs/lang/zh-CN.json5
@@ -16,19 +16,22 @@
},
'client': {
'setup.done': '客户端载入完成',
- 'setup.use_time': '客户端载入花费: {} 秒'
+ 'setup.use_time': '客户端载入花费: {} 秒',
+ 'setup.use_time_ns': '客户端载入花费: {} 纳秒'
},
'window': {
'setup.done': '游戏窗口载入完成',
'setup.use_time': '游戏窗口载入消耗时间: {} 秒',
+ 'setup.use_time_ns': '游戏窗口载入消耗时间: {} 纳秒',
'os.pid_is': '游戏窗口 PID: {} PPID: {}',
'button.been_press': '按钮被按下,目前状态为:',
'mouse.press': '鼠标在 {} 被按下,按键为:{}',
'mouse.release': '鼠标在 {} 释放,按键为:{}',
- 'mouse.right': '右键',
- 'mouse.left': '左键',
+ 'mouse.RIGHT': '右键',
+ 'mouse.LEFT': '左键',
'libs.local': '正在使用本地 pyglet 库 版本为: {}',
- 'libs.outer': '正在使用全局 pyglet 库 版本为: {}\n(可能会造成bug,因为本地库版本为2.0dev9)'
+ 'libs.outer': '正在使用全局 pyglet 库 版本为: {}\n(可能会造成bug,因为本地库版本为2.0dev9)',
+ 'fonts.found': '在字体列表中找到以下字体库: {}'
},
'server': {
'setup.done': '服务端载入完成',
diff --git a/configs/textures.json5 b/configs/textures.json5
index b4b9c26..23276a2 100644
--- a/configs/textures.json5
+++ b/configs/textures.json5
@@ -1,26 +1,31 @@
{
'Editor': {
'runtime': {
- 'toolbar.dark': 'Editor/ToolbarDark.png',
- 'toolbar.light': 'Editor/ToolbarLight.png',
- 'button_side.dark': 'Editor/ButtonDarkSide.png',
- 'button_side.light': 'Editor/ButtonLightSide.png'
+ 'toolbar.dark': 'ToolbarDark.png',
+ 'toolbar.light': 'ToolbarLight.png',
+ 'button_side.dark': 'ButtonDarkSide.png',
+ 'button_side.light': 'ButtonLightSide.png'
},
'toggle_button': {
- 'stage': 'Editor/ToolbarIconStaging.png',
- 'add_part': 'Editor/ToolbarIconAddPart.png',
- 'menu': 'Editor/ToolbarIconMenu.png'
+ 'stage': 'ToolbarIconStaging.png',
+ 'add_part': 'ToolbarIconAddPart.png',
+ 'menu': 'ToolbarIconMenu.png'
},
'push_button': {
- 'zoom': 'Editor/ToolbarIconZoom.png',
- 'zoom.in': 'Editor/ToolbarIconZoomIn.png',
- 'zoom.out': 'Editor/ToolbarIconZoomOut.png',
- 'play': 'Editor/ToolbarIconPlay.png',
- 'rotate': 'Editor/RotateButton.png',
- 'trash_can': 'Editor/TrashCan.png'
+ 'zoom': 'ToolbarIconZoom.png',
+ 'zoom.in': 'ToolbarIconZoomIn.png',
+ 'zoom.out': 'ToolbarIconZoomOut.png',
+ 'play': 'ToolbarIconPlay.png',
+ 'rotate': 'RotateButton.png',
+ 'trash_can': 'TrashCan.png'
}
},
'Runtime': {
-
+ },
+ 'Parts': {
+ 'battery': 'Battery.png',
+ 'beam': 'Beam.png',
+ 'cover_bottom': 'CoverBottom.png',
+ 'nose_cone': 'NoseCone.png'
}
-}
\ No newline at end of file
+}
diff --git a/docs/README-cn.md b/docs/README-cn.md
index d305130..4c0d162 100644
--- a/docs/README-cn.md
+++ b/docs/README-cn.md
@@ -5,7 +5,7 @@
[![Generic badge](https://img.shields.io/badge/SemVer-2.0.0-blue.svg)](https://Semver.org/)
[![Generic badge](https://img.shields.io/badge/编写_Python_版本-3.8.10-blue.svg)](https://Python.org)
-[![Generic badge](https://img.shields.io/badge/Python-3.6_|_3.7_|_3.8_|_3.9-blue.svg)](https://Python.org)
+[![Generic badge](https://img.shields.io/badge/Python-_3.8_|_3.9-blue.svg)](https://Python.org)
## 版本
@@ -32,9 +32,10 @@
- `Python 3.8.10`
- `Windows10 x64`
- `pyglet 2.0.dev9`
- - `Json5 0.9.5`
+ - `Json5 0.9.6`
- `pillow 8.1.0`
- `AMD R5 5600X(AMD YES!)`
+ - `AMD RX 550 4G`
-
- `开发平台2 macOS Big Sur`
- `Python 3.8.7`
diff --git a/docs/update_logs.md b/docs/update_logs.md
index 18a2fa5..733d07a 100644
--- a/docs/update_logs.md
+++ b/docs/update_logs.md
@@ -3,13 +3,27 @@
## Readme
##### most badge can be clicked and jump
[![Generic badge](https://img.shields.io/badge/SemVer-2.0.0-blue.svg)](https://Semver.org/)
-![Generic badge](https://img.shields.io/badge/Version-0.5.1-yellow.svg)
+![Generic badge](https://img.shields.io/badge/Version-0.5.3-yellow.svg)
- [![Readme-github](https://img.shields.io/badge/Readme-Github-blue.svg?style=flat-square&logo=Github)](https://github.com/shenjackyuanjie/Difficult-Rocket)
- [![Readme-gitee](https://img.shields.io/badge/Readme-Gitee-blue.svg?style=flat-square&logo=Gitee)](https://gitee.com/shenjackyuanjie/Difficult-Rocket)
- [![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
+## 202110 V 0.5.3
+
+### Change
+
+- now `Difficult Rocket` will only fit python3.8+
+ - because `:=`
+- now main crash report handler have new way to handler crash
+
+### Add
+
+- `Difficult_Rocket.graphics.widgets.Parts`
+ - have many costume value
+- `libs/fonts` now have `HarmonyOS_Sans`
+
## 20210928 V 0.5.2
### Change
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans/.DS_Store b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans/.DS_Store
new file mode 100644
index 0000000..5008ddf
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans/.DS_Store differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans/HarmonyOS_Sans_Black.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans/HarmonyOS_Sans_Black.ttf
new file mode 100644
index 0000000..855943b
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans/HarmonyOS_Sans_Black.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans/HarmonyOS_Sans_Bold.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans/HarmonyOS_Sans_Bold.ttf
new file mode 100644
index 0000000..8ea60c1
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans/HarmonyOS_Sans_Bold.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans/HarmonyOS_Sans_Light.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans/HarmonyOS_Sans_Light.ttf
new file mode 100644
index 0000000..9b67785
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans/HarmonyOS_Sans_Light.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans/HarmonyOS_Sans_Medium.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans/HarmonyOS_Sans_Medium.ttf
new file mode 100644
index 0000000..9bcfaa1
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans/HarmonyOS_Sans_Medium.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans/HarmonyOS_Sans_Regular.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans/HarmonyOS_Sans_Regular.ttf
new file mode 100644
index 0000000..d7eccac
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans/HarmonyOS_Sans_Regular.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans/HarmonyOS_Sans_Thin.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans/HarmonyOS_Sans_Thin.ttf
new file mode 100644
index 0000000..9b95ebd
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans/HarmonyOS_Sans_Thin.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans/LICENSE.txt b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans/LICENSE.txt
new file mode 100644
index 0000000..211a701
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans/LICENSE.txt differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed/.DS_Store b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed/.DS_Store
new file mode 100644
index 0000000..5008ddf
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed/.DS_Store differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed/HarmonyOS_Sans_Condensed_Black.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed/HarmonyOS_Sans_Condensed_Black.ttf
new file mode 100644
index 0000000..8557a9d
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed/HarmonyOS_Sans_Condensed_Black.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed/HarmonyOS_Sans_Condensed_Bold.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed/HarmonyOS_Sans_Condensed_Bold.ttf
new file mode 100644
index 0000000..dc4a846
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed/HarmonyOS_Sans_Condensed_Bold.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed/HarmonyOS_Sans_Condensed_Light.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed/HarmonyOS_Sans_Condensed_Light.ttf
new file mode 100644
index 0000000..80cd373
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed/HarmonyOS_Sans_Condensed_Light.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed/HarmonyOS_Sans_Condensed_Medium.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed/HarmonyOS_Sans_Condensed_Medium.ttf
new file mode 100644
index 0000000..73d2223
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed/HarmonyOS_Sans_Condensed_Medium.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed/HarmonyOS_Sans_Condensed_Regular.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed/HarmonyOS_Sans_Condensed_Regular.ttf
new file mode 100644
index 0000000..8f9f47b
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed/HarmonyOS_Sans_Condensed_Regular.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed/HarmonyOS_Sans_Condensed_Thin.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed/HarmonyOS_Sans_Condensed_Thin.ttf
new file mode 100644
index 0000000..95c8688
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed/HarmonyOS_Sans_Condensed_Thin.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed/LICENSE.txt b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed/LICENSE.txt
new file mode 100644
index 0000000..211a701
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed/LICENSE.txt differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed_Italic/.DS_Store b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed_Italic/.DS_Store
new file mode 100644
index 0000000..5008ddf
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed_Italic/.DS_Store differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed_Italic/HarmonyOS_Sans_Condensed_Black_Italic.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed_Italic/HarmonyOS_Sans_Condensed_Black_Italic.ttf
new file mode 100644
index 0000000..6d678f4
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed_Italic/HarmonyOS_Sans_Condensed_Black_Italic.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed_Italic/HarmonyOS_Sans_Condensed_Bold_Italic.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed_Italic/HarmonyOS_Sans_Condensed_Bold_Italic.ttf
new file mode 100644
index 0000000..168a4e0
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed_Italic/HarmonyOS_Sans_Condensed_Bold_Italic.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed_Italic/HarmonyOS_Sans_Condensed_Light_Italic.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed_Italic/HarmonyOS_Sans_Condensed_Light_Italic.ttf
new file mode 100644
index 0000000..f1b71cd
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed_Italic/HarmonyOS_Sans_Condensed_Light_Italic.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed_Italic/HarmonyOS_Sans_Condensed_Medium_Italic.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed_Italic/HarmonyOS_Sans_Condensed_Medium_Italic.ttf
new file mode 100644
index 0000000..51d40c0
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed_Italic/HarmonyOS_Sans_Condensed_Medium_Italic.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed_Italic/HarmonyOS_Sans_Condensed_Regular_Italic.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed_Italic/HarmonyOS_Sans_Condensed_Regular_Italic.ttf
new file mode 100644
index 0000000..223e020
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed_Italic/HarmonyOS_Sans_Condensed_Regular_Italic.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed_Italic/HarmonyOS_Sans_Condensed_Thin_Italic.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed_Italic/HarmonyOS_Sans_Condensed_Thin_Italic.ttf
new file mode 100644
index 0000000..a93bd5f
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed_Italic/HarmonyOS_Sans_Condensed_Thin_Italic.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed_Italic/LICENSE.txt b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed_Italic/LICENSE.txt
new file mode 100644
index 0000000..211a701
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Condensed_Italic/LICENSE.txt differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Italic/.DS_Store b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Italic/.DS_Store
new file mode 100644
index 0000000..5008ddf
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Italic/.DS_Store differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Italic/HarmonyOS_Sans_Black_Italic.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Italic/HarmonyOS_Sans_Black_Italic.ttf
new file mode 100644
index 0000000..2bf4653
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Italic/HarmonyOS_Sans_Black_Italic.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Italic/HarmonyOS_Sans_Bold_Italic.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Italic/HarmonyOS_Sans_Bold_Italic.ttf
new file mode 100644
index 0000000..8b4cc6f
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Italic/HarmonyOS_Sans_Bold_Italic.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Italic/HarmonyOS_Sans_Light_Italic.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Italic/HarmonyOS_Sans_Light_Italic.ttf
new file mode 100644
index 0000000..0fe624a
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Italic/HarmonyOS_Sans_Light_Italic.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Italic/HarmonyOS_Sans_Medium_Italic.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Italic/HarmonyOS_Sans_Medium_Italic.ttf
new file mode 100644
index 0000000..6a8e1e7
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Italic/HarmonyOS_Sans_Medium_Italic.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Italic/HarmonyOS_Sans_Regular_Italic.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Italic/HarmonyOS_Sans_Regular_Italic.ttf
new file mode 100644
index 0000000..fac9212
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Italic/HarmonyOS_Sans_Regular_Italic.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Italic/HarmonyOS_Sans_Thin_Italic.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Italic/HarmonyOS_Sans_Thin_Italic.ttf
new file mode 100644
index 0000000..a5c4e3e
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Italic/HarmonyOS_Sans_Thin_Italic.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Italic/LICENSE.txt b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Italic/LICENSE.txt
new file mode 100644
index 0000000..211a701
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Italic/LICENSE.txt differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic/.DS_Store b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic/.DS_Store
new file mode 100644
index 0000000..5008ddf
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic/.DS_Store differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic/HarmonyOS_Sans_Naskh_Arabic_Black.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic/HarmonyOS_Sans_Naskh_Arabic_Black.ttf
new file mode 100644
index 0000000..300fc17
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic/HarmonyOS_Sans_Naskh_Arabic_Black.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic/HarmonyOS_Sans_Naskh_Arabic_Bold.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic/HarmonyOS_Sans_Naskh_Arabic_Bold.ttf
new file mode 100644
index 0000000..da75755
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic/HarmonyOS_Sans_Naskh_Arabic_Bold.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic/HarmonyOS_Sans_Naskh_Arabic_Light.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic/HarmonyOS_Sans_Naskh_Arabic_Light.ttf
new file mode 100644
index 0000000..685eea9
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic/HarmonyOS_Sans_Naskh_Arabic_Light.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic/HarmonyOS_Sans_Naskh_Arabic_Medium.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic/HarmonyOS_Sans_Naskh_Arabic_Medium.ttf
new file mode 100644
index 0000000..8bb40f7
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic/HarmonyOS_Sans_Naskh_Arabic_Medium.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic/HarmonyOS_Sans_Naskh_Arabic_Regular.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic/HarmonyOS_Sans_Naskh_Arabic_Regular.ttf
new file mode 100644
index 0000000..01e01c5
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic/HarmonyOS_Sans_Naskh_Arabic_Regular.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic/HarmonyOS_Sans_Naskh_Arabic_Thin.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic/HarmonyOS_Sans_Naskh_Arabic_Thin.ttf
new file mode 100644
index 0000000..fc7f82d
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic/HarmonyOS_Sans_Naskh_Arabic_Thin.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic/LICENSE.txt b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic/LICENSE.txt
new file mode 100644
index 0000000..211a701
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic/LICENSE.txt differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic_UI/.DS_Store b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic_UI/.DS_Store
new file mode 100644
index 0000000..5008ddf
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic_UI/.DS_Store differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic_UI/HarmonyOS_Sans_Naskh_Arabic_UI_Black.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic_UI/HarmonyOS_Sans_Naskh_Arabic_UI_Black.ttf
new file mode 100644
index 0000000..311cb10
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic_UI/HarmonyOS_Sans_Naskh_Arabic_UI_Black.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic_UI/HarmonyOS_Sans_Naskh_Arabic_UI_Bold.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic_UI/HarmonyOS_Sans_Naskh_Arabic_UI_Bold.ttf
new file mode 100644
index 0000000..890889f
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic_UI/HarmonyOS_Sans_Naskh_Arabic_UI_Bold.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic_UI/HarmonyOS_Sans_Naskh_Arabic_UI_Light.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic_UI/HarmonyOS_Sans_Naskh_Arabic_UI_Light.ttf
new file mode 100644
index 0000000..42c7476
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic_UI/HarmonyOS_Sans_Naskh_Arabic_UI_Light.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic_UI/HarmonyOS_Sans_Naskh_Arabic_UI_Medium.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic_UI/HarmonyOS_Sans_Naskh_Arabic_UI_Medium.ttf
new file mode 100644
index 0000000..941afb1
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic_UI/HarmonyOS_Sans_Naskh_Arabic_UI_Medium.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic_UI/HarmonyOS_Sans_Naskh_Arabic_UI_Regular.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic_UI/HarmonyOS_Sans_Naskh_Arabic_UI_Regular.ttf
new file mode 100644
index 0000000..60a409e
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic_UI/HarmonyOS_Sans_Naskh_Arabic_UI_Regular.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic_UI/HarmonyOS_Sans_Naskh_Arabic_UI_Thin.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic_UI/HarmonyOS_Sans_Naskh_Arabic_UI_Thin.ttf
new file mode 100644
index 0000000..7b9dffe
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic_UI/HarmonyOS_Sans_Naskh_Arabic_UI_Thin.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic_UI/LICENSE.txt b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic_UI/LICENSE.txt
new file mode 100644
index 0000000..211a701
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_Naskh_Arabic_UI/LICENSE.txt differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_SC/.DS_Store b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_SC/.DS_Store
new file mode 100644
index 0000000..5008ddf
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_SC/.DS_Store differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_SC/HarmonyOS_Sans_SC_Black.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_SC/HarmonyOS_Sans_SC_Black.ttf
new file mode 100644
index 0000000..824b3d4
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_SC/HarmonyOS_Sans_SC_Black.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_SC/HarmonyOS_Sans_SC_Bold.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_SC/HarmonyOS_Sans_SC_Bold.ttf
new file mode 100644
index 0000000..5c925d1
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_SC/HarmonyOS_Sans_SC_Bold.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_SC/HarmonyOS_Sans_SC_Light.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_SC/HarmonyOS_Sans_SC_Light.ttf
new file mode 100644
index 0000000..8cfbc9d
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_SC/HarmonyOS_Sans_SC_Light.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_SC/HarmonyOS_Sans_SC_Medium.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_SC/HarmonyOS_Sans_SC_Medium.ttf
new file mode 100644
index 0000000..350f6a0
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_SC/HarmonyOS_Sans_SC_Medium.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_SC/HarmonyOS_Sans_SC_Regular.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_SC/HarmonyOS_Sans_SC_Regular.ttf
new file mode 100644
index 0000000..aff150a
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_SC/HarmonyOS_Sans_SC_Regular.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_SC/HarmonyOS_Sans_SC_Thin.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_SC/HarmonyOS_Sans_SC_Thin.ttf
new file mode 100644
index 0000000..6a58b15
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_SC/HarmonyOS_Sans_SC_Thin.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_SC/LICENSE.txt b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_SC/LICENSE.txt
new file mode 100644
index 0000000..211a701
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_SC/LICENSE.txt differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_TC/.DS_Store b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_TC/.DS_Store
new file mode 100644
index 0000000..5008ddf
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_TC/.DS_Store differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_TC/HarmonyOS_Sans_TC_Black.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_TC/HarmonyOS_Sans_TC_Black.ttf
new file mode 100644
index 0000000..cc28028
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_TC/HarmonyOS_Sans_TC_Black.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_TC/HarmonyOS_Sans_TC_Bold.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_TC/HarmonyOS_Sans_TC_Bold.ttf
new file mode 100644
index 0000000..e408f06
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_TC/HarmonyOS_Sans_TC_Bold.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_TC/HarmonyOS_Sans_TC_Light.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_TC/HarmonyOS_Sans_TC_Light.ttf
new file mode 100644
index 0000000..115e71d
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_TC/HarmonyOS_Sans_TC_Light.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_TC/HarmonyOS_Sans_TC_Medium.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_TC/HarmonyOS_Sans_TC_Medium.ttf
new file mode 100644
index 0000000..0268f5d
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_TC/HarmonyOS_Sans_TC_Medium.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_TC/HarmonyOS_Sans_TC_Regular.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_TC/HarmonyOS_Sans_TC_Regular.ttf
new file mode 100644
index 0000000..63f7a1b
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_TC/HarmonyOS_Sans_TC_Regular.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_TC/HarmonyOS_Sans_TC_Thin.ttf b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_TC/HarmonyOS_Sans_TC_Thin.ttf
new file mode 100644
index 0000000..0cc309c
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_TC/HarmonyOS_Sans_TC_Thin.ttf differ
diff --git a/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_TC/LICENSE.txt b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_TC/LICENSE.txt
new file mode 100644
index 0000000..211a701
Binary files /dev/null and b/libs/fonts/HarmonyOS Sans/HarmonyOS_Sans_TC/LICENSE.txt differ