feat: rollback fix

This commit is contained in:
2026-06-10 10:48:20 +08:00
parent 5653473c12
commit 8520f9db3c
6 changed files with 81 additions and 69 deletions
+13 -58
View File
@@ -131,6 +131,7 @@ var phase_label: Label
var cleanser_label: Label
var cleanser_icon: TextureRect
var cleanser_count: int = 0
var _gauntlet_hud_scene: PackedScene = preload("res://scenes/gauntlet_hud.tscn")
# =============================================================================
# Lifecycle
@@ -899,75 +900,29 @@ func sync_slowmo_end() -> void:
# =============================================================================
func _setup_hud() -> void:
hud_layer = CanvasLayer.new()
hud_layer.layer = 5
var hud_instance = _gauntlet_hud_scene.instantiate()
hud_layer = hud_instance
hud_layer.visible = false
add_child(hud_layer)
var custom_font = load("res://assets/fonts/Nougat-ExtraBlack.ttf")
# Phase label (top-center)
var top_container = CenterContainer.new()
top_container.set_anchors_preset(Control.PRESET_CENTER_TOP)
top_container.grow_horizontal = Control.GROW_DIRECTION_BOTH
top_container.grow_vertical = Control.GROW_DIRECTION_END
top_container.offset_top = 70
hud_layer.add_child(top_container)
phase_label = Label.new()
phase_label.text = "🍬 OPEN ARENA"
phase_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
if custom_font: phase_label.add_theme_font_override("font", custom_font)
phase_label.add_theme_font_size_override("font_size", 24)
phase_label.add_theme_color_override("font_outline_color", Color.BLACK)
phase_label.add_theme_constant_override("outline_size", 6)
phase_label.add_theme_color_override("font_color", Color(1.0, 0.6, 0.8)) # Candy pink
top_container.add_child(phase_label)
# Cleanser HUD (bottom-center) with icon
var bottom_container = CenterContainer.new()
bottom_container.set_anchors_preset(Control.PRESET_CENTER_BOTTOM)
bottom_container.grow_horizontal = Control.GROW_DIRECTION_BOTH
bottom_container.grow_vertical = Control.GROW_DIRECTION_BEGIN
bottom_container.offset_bottom = -50
hud_layer.add_child(bottom_container)
var cleanser_hbox = HBoxContainer.new()
cleanser_hbox.add_theme_constant_override("separation", 6)
bottom_container.add_child(cleanser_hbox)
# Cleanser icon (colored square as visual indicator)
cleanser_icon = TextureRect.new()
cleanser_icon.custom_minimum_size = Vector2(20, 20)
cleanser_icon.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED
# Generate a simple colored texture for the cleanser icon
phase_label = hud_layer.get_node("TopContainer/PhaseLabel")
cleanser_icon = hud_layer.get_node("BottomContainer/CleanserHBox/CleanserIcon")
cleanser_label = hud_layer.get_node("BottomContainer/CleanserHBox/CleanserLabel")
_generate_cleanser_icon()
func _generate_cleanser_icon() -> void:
var icon_img = Image.create(16, 16, false, Image.FORMAT_RGBA8)
icon_img.fill(Color(0.4, 0.9, 1.0)) # Cyan/teal for cleanser
icon_img.fill(Color(0.4, 0.9, 1.0))
icon_img.blend_rect(icon_img, Rect2i(2, 2, 12, 12), Vector2i(1, 1))
# Add a darker border
for x in range(16):
icon_img.set_pixel(x, 0, Color(0.2, 0.6, 0.7))
icon_img.set_pixel(x, 15, Color(0.2, 0.6, 0.7))
for y in range(16):
icon_img.set_pixel(0, y, Color(0.2, 0.6, 0.7))
icon_img.set_pixel(15, y, Color(0.2, 0.6, 0.7))
# Add a cross/sparkle pattern for "cleansing" effect
for i in range(4, 12):
icon_img.set_pixel(i, 7, Color(1.0, 1.0, 1.0, 0.8))
icon_img.set_pixel(7, i, Color(1.0, 1.0, 1.0, 0.8))
var icon_tex = ImageTexture.create_from_image(icon_img)
cleanser_icon.texture = icon_tex
cleanser_hbox.add_child(cleanser_icon)
# Cleanser text label
cleanser_label = Label.new()
cleanser_label.text = "Cleanser: 0"
cleanser_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
if custom_font: cleanser_label.add_theme_font_override("font", custom_font)
cleanser_label.add_theme_font_size_override("font_size", 20)
cleanser_label.add_theme_color_override("font_outline_color", Color.BLACK)
cleanser_label.add_theme_constant_override("outline_size", 6)
cleanser_hbox.add_child(cleanser_label)
cleanser_icon.texture = ImageTexture.create_from_image(icon_img)
func _update_hud_phase(phase_name: String) -> void:
if phase_label:
@@ -1089,12 +1044,12 @@ func _respawn_mission_tiles() -> void:
for i in range(tiles_to_place):
var pos = empty_cells[i]
var tile_type = goal_items[randi() % goal_items.size()]
gridmap.set_cell_item(Vector3i(pos.x, 1, pos.z), tile_type)
gridmap.set_cell_item(Vector3i(pos.x, 1, pos.y), tile_type)
tiles_spawned += 1
# Sync to clients
if main_scene:
main_scene.rpc("sync_grid_item", pos.x, 1, pos.z, tile_type)
main_scene.rpc("sync_grid_item", pos.x, 1, pos.y, tile_type)
print("[Gauntlet] Respawned %d mission tiles" % tiles_spawned)