1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-06-12 22:57:13 +08:00

feat(UI): 为提示框添加类型支持并改进样式

- 新增MessageType枚举定义提示类型(INFO/WARNING/ERROR)
- 根据不同类型显示不同颜色样式
- 修改所有调用showTip的地方使用新的类型参数
- 移除自动销毁时间参数,统一使用固定显示时长
This commit is contained in:
2026-01-25 21:40:26 +08:00
parent 846458060c
commit 06c2637ebb
5 changed files with 33 additions and 15 deletions
+2 -2
View File
@@ -109,7 +109,7 @@ static func next(waves: Array):
wave = instance_from_id(wave.get_instance_id())
EntityBase.generate(ComponentManager.getCharacter(wave.entity), wave.entityPosition, true, wave.isBoss)
current += 1
UIState.showTip("%d波开始!" % current, 500)
UIState.showTip("%d波开始!" % current, TipBox.MessageType.INFO)
showNextBossReminder()
static func showNextBossReminder():
var nextBossInfo = getNextBossInfo()
@@ -117,7 +117,7 @@ static func showNextBossReminder():
var bossName = nextBossInfo[0]
var wavesLeft = nextBossInfo[1]
if wavesLeft > 0:
UIState.showTip("Boss [b]%s[/b] 将在[b]%d[/b]波后到来!" % [bossName, wavesLeft], 500)
UIState.showTip("Boss [b]%s[/b] 将在[b]%d[/b]波后到来!" % [bossName, wavesLeft], TipBox.MessageType.WARNING)
static func startWith(wave: int):
return wave - 1
+2 -2
View File
@@ -369,9 +369,9 @@ func tryDie(by: BulletBase = null):
await die()
died.emit()
if isBoss:
UIState.showTip("[b]%s[/b] 已被打败!" % displayName, 500)
UIState.showTip("[b]%s[/b] 已被打败!" % displayName, TipBox.MessageType.INFO)
elif isPlayer():
UIState.showTip("[b]%s[/b] 似了😭。" % displayName, 500)
UIState.showTip("[b]%s[/b] 似了😭。" % displayName, TipBox.MessageType.ERROR)
queue_free()
func tryHeal(count: float):
playSound("heal")
+17 -1
View File
@@ -2,7 +2,19 @@
extends PanelContainer
class_name TipBox
enum MessageType {
INFO,
WARNING,
ERROR,
}
@export var text: String = "nothing"
@export var messageType: MessageType = MessageType.INFO
@export var colorMap = {
MessageType.INFO: Color.BLUE,
MessageType.WARNING: Color.ORANGE,
MessageType.ERROR: Color.RED,
}
@onready var label: RichTextLabel = $%label
@onready var animator: AnimationPlayer = $%animator
@@ -10,6 +22,9 @@ class_name TipBox
func _ready():
label.text = text
animator.play("show")
var styleBox = get_theme_stylebox("panel").duplicate() as StyleBoxFlat
styleBox.bg_color = colorMap[messageType]
add_theme_stylebox_override("panel", styleBox)
func _process(_delta):
label.text = text
@@ -18,7 +33,8 @@ func destroy():
await animator.animation_finished
queue_free()
static func create(applyText: String) -> TipBox:
static func create(applyText: String, applyMessageType: MessageType = MessageType.INFO) -> TipBox:
var box = ComponentManager.getUIComponent("TipBox").instantiate()
box.text = applyText
box.messageType = applyMessageType
return box
+4 -7
View File
@@ -74,11 +74,8 @@ static func setPanel(targetName: String = "", args: Array = []):
panel.hidePanel()
static func closeCurrentPanel():
setPanel()
static func showTip(text: String, destroyAfter: float = -1):
var box = TipBox.create(text)
static func showTip(text: String, messageType: TipBox.MessageType = TipBox.MessageType.INFO):
var box = TipBox.create(text, messageType)
tips.add_child(box)
if destroyAfter > 0:
await TickTool.millseconds(destroyAfter * len(text))
box.destroy()
else:
return box
await TickTool.millseconds(500 * len(text))
box.destroy()