提交 a864426f 编写于 作者: 三月三net's avatar 三月三net

Python超人-宇宙模拟器

上级 68134ad9
文件已添加
文件已添加
文件已添加
......@@ -409,7 +409,7 @@ def create_3d_card(left=-.885, top=0.495, width=0.02, height=0.02):
return panel
def create_text_panel(width=0.35, height=.5, font=None):
def create_text_panel(width=0.35, height=.5, font=None, font_scale=1.0):
# 创建一个 Panel 组件
from ursina import Text, Panel, color, camera, Vec3, window
from simulators.ursina.ursina_config import UrsinaConfig
......@@ -428,15 +428,15 @@ def create_text_panel(width=0.35, height=.5, font=None):
)
if font is None:
font = UrsinaConfig.CN_FONT
else:
elif str(font).startswith("fonts/"):
from common.func import find_file
font = find_file(f"fonts/{font}", UrsinaConfig.CN_FONT)
font = find_file(f"{font}", UrsinaConfig.CN_FONT)
# 创建一个 Text 组件用于显示消息
text = Text(
parent=panel,
text='',
origin=(-.5, .5, -.5),
scale=(height * 5, width * 5),
scale=(height * 5 * font_scale, width * 5 * font_scale),
font=font,
# background=True,
# background_color=color.clear
......
......@@ -143,12 +143,23 @@ class HalleyCometSimBase(UniverseSimScenes):
# else:
from ursina import window
aspect_ratio = window.aspect_ratio
position, origin = (0.5 * aspect_ratio - 0.3, -0.465), (-0.5, 0.5),
ControlUI.current_ui.show_message(dt.strftime('%Y-%m-%d %H:%M:%S'),
position, origin = (0.5 * aspect_ratio - 0.25, -0.45), (-0.5, 0.5),
ControlUI.current_ui.show_message(dt.strftime(' %Y-%m-%d'),
position=position,
origin=origin,
font="verdana.ttf",
# font="verdana.ttf",
font="fonts/Digital-7Mono.TTF",
font_scale=1.35,
font_color=(0, 255, 0),
close_time=-1)
# ControlUI.current_ui.show_message(dt.strftime(' %Y-%m-%d %H:%M:%S'),
# position=position,
# origin=origin,
# # font="verdana.ttf",
# font="fonts/Digital-7Mono.TTF",
# font_scale=1.35,
# font_color=(0, 255, 0),
# close_time=-1)
def interval_run(self, total_times, interval, fun, fun_args=None):
"""
......
......@@ -136,7 +136,7 @@ class HalleyCometSim(HalleyCometSimBase):
label = create_label(trail, label=year, pos=_pos,
label_color=label_color,
font="DroidSansFallback.ttf",
font="fonts/DroidSansFallback.ttf",
scale=scale, alpha=1.0, background=background
)
label.set_light_off()
......@@ -297,11 +297,11 @@ class HalleyCometSim(HalleyCometSimBase):
@param d_sun:
@return:
"""
panel_text = "哈雷彗星:\n\n距离太阳:%.3f\tAU" % (d_sun / AU)
panel_text += "\n\n离日最远:%.3f\tAU" % (self.comet_aphel / AU)
panel_text += "\n\n离日最近:%.3f\tAU" % (self.comet_peri / AU)
panel_text = "哈雷彗星:\n\n当前日距:%s AU" % "{:.3f}".format(d_sun / AU).rjust(6, "0")
panel_text += "\n\n最大日距:%s AU" % "{:.3f}".format(self.comet_aphel / AU).rjust(6, "0")
panel_text += "\n\n最小日距:%s AU" % "{:.3f}".format(self.comet_peri / AU).rjust(6, "0")
velocity, _ = get_value_direction_vectors(self.halley_comet.velocity)
panel_text += "\n\n当前速度:%.3f\tkm/s" % velocity
panel_text += "\n\n当前速度:%s km/s" % "{:.3f}".format(velocity).rjust(6, "0")
self.text_panel.text = panel_text
......@@ -370,7 +370,7 @@ class HalleyCometSim(HalleyCometSimBase):
# 创建太阳系天体的真实轨迹(太阳和哈雷彗星除外)
self.create_orbit_lines()
# 创建信息显示面板
self.text_panel = create_text_panel(font="DroidSansFallback.ttf")
self.text_panel = create_text_panel(font="fonts/sanjixiaozhuanti.ttf", font_scale=1.5)
def on_timer_changed(self, time_data):
"""
......
......@@ -9,6 +9,8 @@
from ursina import Ursina, window, Entity, Grid, Mesh, camera, Text, application, color, mouse, Vec2, Vec3, \
load_texture, held_keys, Button, ButtonList, destroy, scene, distance, Sequence, Wait, Func
from ursina.prefabs.first_person_controller import FirstPersonController
from common.color_utils import conv_to_vec4_color
from common.consts import SECONDS_PER_HOUR, SECONDS_PER_HALF_DAY, \
SECONDS_PER_DAY, SECONDS_PER_WEEK, SECONDS_PER_MONTH, SECONDS_PER_YEAR
from common.consts import AU
......@@ -63,7 +65,8 @@ class UiPanel(WindowPanel):
"""
pass
def show_message(self, message, font=None, origin=(0, 0), position=(0, .25), close_time=3):
def show_message(self, message, font=None, origin=(0, 0), position=(0, .25), close_time=3,
font_color=None, font_scale=1):
"""
显示消息框
@param message: 消息内容
......@@ -75,10 +78,17 @@ class UiPanel(WindowPanel):
destroy(self.last_message_box)
if font is None:
font = UrsinaConfig.CN_FONT
# else:
# font = None
elif str(font).startswith("fonts/"):
from common.func import find_file
font = find_file(f"{font}", UrsinaConfig.CN_FONT)
if font_color is None:
font_color = color.white
else:
font_color = conv_to_vec4_color(font_color)
# 创建消息框
message_box = Text(text=message, font=font, background=True, origin=origin, position=position)
message_box = Text(text=message, font=font, scale=font_scale, color=font_color,
background=True, origin=origin, position=position)
self.last_message_box = message_box
......
......@@ -201,9 +201,9 @@ def create_label(parent, label, pos, label_color, scale=50, alpha=1.0, backgroun
label_color[3] = alpha
if font is None:
font = UrsinaConfig.CN_FONT
else:
elif str(font).startswith("fonts/"):
from common.func import find_file
font = find_file(f"fonts/{font}", UrsinaConfig.CN_FONT)
font = find_file(f"{font}", UrsinaConfig.CN_FONT)
text = Text(label, parent=parent, scale=scale, billboard=True, color=label_color,
position=Vec3(pos) + Vec3(1, 1, 1), alpha=alpha,
font=font, background=background)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册