mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-07-02 00:02:13 +08:00
Add HarmonyOS Sans font and implement QuickUI for text handling
- Imported HarmonyOS Sans Regular font with appropriate settings for rendering and fallback. - Created QuickUI script to facilitate the creation of small text labels with optional centering. - Added new theme resources for big bold text and small text, defining font sizes for RichTextLabel and Label respectively.
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
[gd_scene load_steps=4 format=3 uid="uid://b4cwipt17nh7g"]
|
[gd_scene load_steps=4 format=3 uid="uid://bykwevnv7keeh"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://scripts/Structs/Feed.gd" id="1_2ea75"]
|
[ext_resource type="Script" path="res://scripts/Structs/Feed.gd" id="1_2ea75"]
|
||||||
[ext_resource type="Texture2D" uid="uid://b7vxserbhskol" path="res://resources/feeds/banana.svg" id="1_jonms"]
|
[ext_resource type="Texture2D" uid="uid://dwwpkn4q07ja2" path="res://icon.svg" id="2_b6x2s"]
|
||||||
|
|
||||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_n2ewr"]
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_n2ewr"]
|
||||||
content_margin_left = 30.0
|
content_margin_left = 30.0
|
||||||
@@ -39,13 +39,17 @@ custom_minimum_size = Vector2(75, 75)
|
|||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 4
|
size_flags_horizontal = 4
|
||||||
size_flags_vertical = 0
|
size_flags_vertical = 0
|
||||||
texture = ExtResource("1_jonms")
|
texture = ExtResource("2_b6x2s")
|
||||||
|
expand_mode = 1
|
||||||
|
|
||||||
[node name="name" type="Label" parent="container/info"]
|
[node name="name" type="RichTextLabel" parent="container/info"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 4
|
size_flags_horizontal = 4
|
||||||
text = "未命名饲料"
|
bbcode_enabled = true
|
||||||
|
text = "[b]未命名饲料[/b]"
|
||||||
|
fit_content = true
|
||||||
|
autowrap_mode = 0
|
||||||
|
|
||||||
[node name="fields" type="VBoxContainer" parent="container"]
|
[node name="fields" type="VBoxContainer" parent="container"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
|||||||
@@ -1,15 +1,18 @@
|
|||||||
[gd_scene load_steps=3 format=3 uid="uid://btisbc7ehj4fo"]
|
[gd_scene load_steps=3 format=3 uid="uid://btisbc7ehj4fo"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://b4cwipt17nh7g" path="res://components/Abstracts/FeedCardBase.tscn" id="1_tdrm3"]
|
[ext_resource type="PackedScene" uid="uid://bykwevnv7keeh" path="res://components/Abstracts/FeedCardBase.tscn" id="1_vapev"]
|
||||||
[ext_resource type="Texture2D" uid="uid://b7vxserbhskol" path="res://resources/feeds/banana.svg" id="2_2mlfi"]
|
[ext_resource type="Texture2D" uid="uid://b7vxserbhskol" path="res://resources/feeds/banana.svg" id="2_2mlfi"]
|
||||||
|
|
||||||
[node name="Banana" instance=ExtResource("1_tdrm3")]
|
[node name="Banana" instance=ExtResource("1_vapev")]
|
||||||
avatarTexture = ExtResource("2_2mlfi")
|
avatarTexture = ExtResource("2_2mlfi")
|
||||||
displayName = "香蕉"
|
displayName = "香蕉"
|
||||||
fields = Array[int]([0, 3, 7])
|
fields = Array[int]([0, 3])
|
||||||
fieldValues = Array[float]([10.0, 0.1])
|
fieldValues = Array[float]([10.0, 0.1])
|
||||||
costs = Array[int]([0, 1])
|
costs = Array[int]([0, 1])
|
||||||
costCounts = Array[int]([5, 10])
|
costCounts = Array[int]([10, 5])
|
||||||
|
|
||||||
|
[node name="avatar" parent="container/info" index="0"]
|
||||||
|
texture = ExtResource("2_2mlfi")
|
||||||
|
|
||||||
[node name="name" parent="container/info" index="1"]
|
[node name="name" parent="container/info" index="1"]
|
||||||
text = "香蕉"
|
text = "[b]香蕉[/b]"
|
||||||
|
|||||||
@@ -1,7 +1,22 @@
|
|||||||
[gd_scene load_steps=3 format=3 uid="uid://dfwg750a47ggx"]
|
[gd_scene load_steps=5 format=3 uid="uid://dfwg750a47ggx"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://ofpg5s3j7esv" path="res://components/UI/BossBar.tscn" id="1_2pe58"]
|
[ext_resource type="PackedScene" uid="uid://ofpg5s3j7esv" path="res://components/UI/BossBar.tscn" id="1_2pe58"]
|
||||||
[ext_resource type="Script" path="res://scripts/Statemachine/UIState.gd" id="1_f00a6"]
|
[ext_resource type="Script" path="res://scripts/Statemachine/UIState.gd" id="1_f00a6"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bbm8l3hr4ihar" path="res://components/UI/ItemShow.tscn" id="3_o2oi4"]
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_xmgs2"]
|
||||||
|
content_margin_left = 10.0
|
||||||
|
content_margin_top = 10.0
|
||||||
|
content_margin_right = 10.0
|
||||||
|
content_margin_bottom = 10.0
|
||||||
|
bg_color = Color(0, 0, 0, 0.5)
|
||||||
|
border_width_left = 3
|
||||||
|
border_width_top = 3
|
||||||
|
border_width_right = 3
|
||||||
|
border_width_bottom = 3
|
||||||
|
border_color = Color(0, 0, 0, 0.75)
|
||||||
|
corner_radius_bottom_right = 5
|
||||||
|
corner_radius_bottom_left = 5
|
||||||
|
|
||||||
[node name="UI" type="CanvasLayer"]
|
[node name="UI" type="CanvasLayer"]
|
||||||
script = ExtResource("1_f00a6")
|
script = ExtResource("1_f00a6")
|
||||||
@@ -17,3 +32,26 @@ grow_vertical = 2
|
|||||||
[node name="bossbar" parent="root" instance=ExtResource("1_2pe58")]
|
[node name="bossbar" parent="root" instance=ExtResource("1_2pe58")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
|
|
||||||
|
[node name="items" type="PanelContainer" parent="root"]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = -1
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
offset_left = -46.0
|
||||||
|
offset_top = -3.0
|
||||||
|
offset_right = 46.0
|
||||||
|
offset_bottom = 37.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
theme_override_styles/panel = SubResource("StyleBoxFlat_xmgs2")
|
||||||
|
|
||||||
|
[node name="container" type="HBoxContainer" parent="root/items"]
|
||||||
|
layout_mode = 2
|
||||||
|
alignment = 1
|
||||||
|
|
||||||
|
[node name="ItemShow" parent="root/items/container" instance=ExtResource("3_o2oi4")]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="ItemShow2" parent="root/items/container" instance=ExtResource("3_o2oi4")]
|
||||||
|
layout_mode = 2
|
||||||
|
type = 1
|
||||||
|
|||||||
@@ -1,18 +1,20 @@
|
|||||||
[gd_scene load_steps=2 format=3 uid="uid://cw5ip3rw4r3pp"]
|
[gd_scene load_steps=3 format=3 uid="uid://cw5ip3rw4r3pp"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://scripts/Statemachine/FieldShow.gd" id="1_gwocj"]
|
[ext_resource type="Script" path="res://scripts/Statemachine/FieldShow.gd" id="1_gwocj"]
|
||||||
|
[ext_resource type="Theme" uid="uid://b6nox1qqh50ub" path="res://themes/smallText.tres" id="2_x62bb"]
|
||||||
|
|
||||||
[node name="FieldShow" type="HBoxContainer"]
|
[node name="FieldShow" type="HBoxContainer"]
|
||||||
script = ExtResource("1_gwocj")
|
script = ExtResource("1_gwocj")
|
||||||
value = "0"
|
|
||||||
|
|
||||||
[node name="name" type="Label" parent="."]
|
[node name="name" type="Label" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
theme = ExtResource("2_x62bb")
|
||||||
text = "最大生命值"
|
text = "最大生命值"
|
||||||
|
|
||||||
[node name="value" type="Label" parent="."]
|
[node name="value" type="Label" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 10
|
size_flags_horizontal = 10
|
||||||
|
theme = ExtResource("2_x62bb")
|
||||||
text = "0"
|
text = "0"
|
||||||
|
|||||||
@@ -19,6 +19,10 @@ config/icon="res://icon.svg"
|
|||||||
|
|
||||||
project/assembly_name="ChickenVSBear"
|
project/assembly_name="ChickenVSBear"
|
||||||
|
|
||||||
|
[gui]
|
||||||
|
|
||||||
|
theme/custom_font="res://resources/fonts/HarmonyOS_Sans_Regular.ttf"
|
||||||
|
|
||||||
[input]
|
[input]
|
||||||
|
|
||||||
m_up={
|
m_up={
|
||||||
|
|||||||
Binary file not shown.
@@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="font_data_dynamic"
|
||||||
|
type="FontFile"
|
||||||
|
uid="uid://cptiss3xwl43e"
|
||||||
|
path="res://.godot/imported/HarmonyOS_Sans_Bold.ttf-c6465f4c2be5f8b7fe7dc626b4041be3.fontdata"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://resources/fonts/HarmonyOS_Sans_Bold.ttf"
|
||||||
|
dest_files=["res://.godot/imported/HarmonyOS_Sans_Bold.ttf-c6465f4c2be5f8b7fe7dc626b4041be3.fontdata"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
Rendering=null
|
||||||
|
antialiasing=1
|
||||||
|
generate_mipmaps=false
|
||||||
|
disable_embedded_bitmaps=true
|
||||||
|
multichannel_signed_distance_field=false
|
||||||
|
msdf_pixel_range=8
|
||||||
|
msdf_size=48
|
||||||
|
allow_system_fallback=true
|
||||||
|
force_autohinter=false
|
||||||
|
hinting=1
|
||||||
|
subpixel_positioning=1
|
||||||
|
oversampling=0.0
|
||||||
|
Fallbacks=null
|
||||||
|
fallbacks=[]
|
||||||
|
Compress=null
|
||||||
|
compress=true
|
||||||
|
preload=[]
|
||||||
|
language_support={}
|
||||||
|
script_support={}
|
||||||
|
opentype_features={}
|
||||||
Binary file not shown.
@@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="font_data_dynamic"
|
||||||
|
type="FontFile"
|
||||||
|
uid="uid://xu1n4fjlwpno"
|
||||||
|
path="res://.godot/imported/HarmonyOS_Sans_Regular.ttf-93cea29793c46dc5de31972fd2b5131f.fontdata"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://resources/fonts/HarmonyOS_Sans_Regular.ttf"
|
||||||
|
dest_files=["res://.godot/imported/HarmonyOS_Sans_Regular.ttf-93cea29793c46dc5de31972fd2b5131f.fontdata"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
Rendering=null
|
||||||
|
antialiasing=1
|
||||||
|
generate_mipmaps=false
|
||||||
|
disable_embedded_bitmaps=true
|
||||||
|
multichannel_signed_distance_field=false
|
||||||
|
msdf_pixel_range=8
|
||||||
|
msdf_size=48
|
||||||
|
allow_system_fallback=true
|
||||||
|
force_autohinter=false
|
||||||
|
hinting=1
|
||||||
|
subpixel_positioning=1
|
||||||
|
oversampling=0.0
|
||||||
|
Fallbacks=null
|
||||||
|
fallbacks=[]
|
||||||
|
Compress=null
|
||||||
|
compress=true
|
||||||
|
preload=[]
|
||||||
|
language_support={}
|
||||||
|
script_support={}
|
||||||
|
opentype_features={}
|
||||||
@@ -56,7 +56,7 @@ static func generate(
|
|||||||
var instance: BulletBase = bullet.instantiate()
|
var instance: BulletBase = bullet.instantiate()
|
||||||
instance.launcher = launchBy
|
instance.launcher = launchBy
|
||||||
instance.position = spawnPosition
|
instance.position = spawnPosition
|
||||||
instance.rotation = spawnRotation + randf_range(-launchBy.fields.get(FieldStore.Entity.OFFSET_SHOOT), launchBy.fields.get(FieldStore.Entity.OFFSET_SHOOT))
|
instance.rotation = spawnRotation + deg_to_rad(randf_range(-launchBy.fields.get(FieldStore.Entity.OFFSET_SHOOT), launchBy.fields.get(FieldStore.Entity.OFFSET_SHOOT)))
|
||||||
if addToWorld:
|
if addToWorld:
|
||||||
WorldManager.rootNode.add_child(instance)
|
WorldManager.rootNode.add_child(instance)
|
||||||
return instance
|
return instance
|
||||||
|
|||||||
@@ -16,6 +16,10 @@ var fields = {
|
|||||||
@export var isBoss: bool = false
|
@export var isBoss: bool = false
|
||||||
@export var displayName: String = "未知实体"
|
@export var displayName: String = "未知实体"
|
||||||
@export var sprintMultiplier: float = 7
|
@export var sprintMultiplier: float = 7
|
||||||
|
@export var inventory = {
|
||||||
|
ItemStore.ItemType.BASEBALL: 0,
|
||||||
|
ItemStore.ItemType.BASKETBALL: 0
|
||||||
|
}
|
||||||
|
|
||||||
@onready var animatree: AnimationTree = $"%animatree"
|
@onready var animatree: AnimationTree = $"%animatree"
|
||||||
@onready var texture: AnimatedSprite2D = $"%texture"
|
@onready var texture: AnimatedSprite2D = $"%texture"
|
||||||
|
|||||||
+25
-4
@@ -2,7 +2,7 @@
|
|||||||
extends PanelContainer
|
extends PanelContainer
|
||||||
class_name Feed
|
class_name Feed
|
||||||
|
|
||||||
@export var avatarTexture: Texture2D = null
|
@export var avatarTexture: Texture2D = preload("res://icon.svg")
|
||||||
@export var displayName: String = "未命名饲料"
|
@export var displayName: String = "未命名饲料"
|
||||||
@export var fields: Array[FieldStore.Entity] = []
|
@export var fields: Array[FieldStore.Entity] = []
|
||||||
@export var fieldValues: Array[float] = []
|
@export var fieldValues: Array[float] = []
|
||||||
@@ -10,22 +10,26 @@ class_name Feed
|
|||||||
@export var costCounts: Array[int] = []
|
@export var costCounts: Array[int] = []
|
||||||
|
|
||||||
@onready var avatarRect: TextureRect = $"%avatar"
|
@onready var avatarRect: TextureRect = $"%avatar"
|
||||||
@onready var nameLabel: Label = $"%name"
|
@onready var nameLabel: RichTextLabel = $"%name"
|
||||||
@onready var fieldsBox: VBoxContainer = $"%fields"
|
@onready var fieldsBox: VBoxContainer = $"%fields"
|
||||||
@onready var costsBox: GridContainer = $"%costs"
|
@onready var costsBox: GridContainer = $"%costs"
|
||||||
|
|
||||||
func _ready():
|
func _process(_delta):
|
||||||
avatarRect.texture = avatarTexture
|
avatarRect.texture = avatarTexture
|
||||||
nameLabel.text = displayName
|
nameLabel.text = "[b]" + displayName + "[/b]"
|
||||||
for i in fieldsBox.get_children():
|
for i in fieldsBox.get_children():
|
||||||
i.queue_free()
|
i.queue_free()
|
||||||
|
var noField = true
|
||||||
for i in range(min(fields.size(), fieldValues.size())):
|
for i in range(min(fields.size(), fieldValues.size())):
|
||||||
|
noField = false
|
||||||
var field = fields[i]
|
var field = fields[i]
|
||||||
var value = fieldValues[i]
|
var value = fieldValues[i]
|
||||||
var fieldShow: FieldShow = preload("res://components/UI/FieldShow.tscn").instantiate()
|
var fieldShow: FieldShow = preload("res://components/UI/FieldShow.tscn").instantiate()
|
||||||
fieldShow.field = field
|
fieldShow.field = field
|
||||||
fieldShow.value = value
|
fieldShow.value = value
|
||||||
fieldsBox.add_child(fieldShow)
|
fieldsBox.add_child(fieldShow)
|
||||||
|
if noField:
|
||||||
|
fieldsBox.add_child(QuickUI.smallText("无词条"))
|
||||||
for i in costsBox.get_children():
|
for i in costsBox.get_children():
|
||||||
i.queue_free()
|
i.queue_free()
|
||||||
for i in range(min(costs.size(), costCounts.size())):
|
for i in range(min(costs.size(), costCounts.size())):
|
||||||
@@ -35,3 +39,20 @@ func _ready():
|
|||||||
costShow.type = cost
|
costShow.type = cost
|
||||||
costShow.count = count
|
costShow.count = count
|
||||||
costsBox.add_child(costShow)
|
costsBox.add_child(costShow)
|
||||||
|
func apply(entity: EntityBase):
|
||||||
|
var allHave = true
|
||||||
|
for i in range(min(costs.size(), costCounts.size())):
|
||||||
|
var item = costs[i]
|
||||||
|
var count = costCounts[i]
|
||||||
|
if entity.inventory[item] < count:
|
||||||
|
allHave = false
|
||||||
|
break
|
||||||
|
if allHave:
|
||||||
|
for i in range(min(costs.size(), costCounts.size())):
|
||||||
|
var item = costs[i]
|
||||||
|
var count = costCounts[i]
|
||||||
|
entity.inventory[item] -= count
|
||||||
|
for i in range(min(fields.size(), fieldValues.size())):
|
||||||
|
var field = fields[i]
|
||||||
|
var value = fieldValues[i]
|
||||||
|
entity.fields[field] += value
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
class_name QuickUI
|
||||||
|
|
||||||
|
static func smallText(text: String, center: bool = true):
|
||||||
|
var label = Label.new()
|
||||||
|
label.text = text
|
||||||
|
label.theme = preload("res://themes/smallText.tres")
|
||||||
|
if center:
|
||||||
|
label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||||
|
return label
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="Theme" format=3 uid="uid://bje5cd08dyok7"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
RichTextLabel/font_sizes/bold_font_size = 18
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="Theme" format=3 uid="uid://b6nox1qqh50ub"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
Label/font_sizes/font_size = 13
|
||||||
Reference in New Issue
Block a user