add tooltip on enemies, update enemy type on merge

This commit is contained in:
2026-04-23 13:46:51 +03:00
parent d7368e7fa7
commit dde4a6431e
3 changed files with 25 additions and 5 deletions
-4
View File
@@ -5,7 +5,6 @@
[ext_resource type="Texture2D" uid="uid://bjfuko7rdmax" path="res://assets/stone_big.png" id="3_klq6b"] [ext_resource type="Texture2D" uid="uid://bjfuko7rdmax" path="res://assets/stone_big.png" id="3_klq6b"]
[ext_resource type="ArrayMesh" uid="uid://b5do7gjnxif80" path="res://assets/stonewall_long.obj" id="4_b121j"] [ext_resource type="ArrayMesh" uid="uid://b5do7gjnxif80" path="res://assets/stonewall_long.obj" id="4_b121j"]
[ext_resource type="ArrayMesh" uid="uid://ul1cypdhef5a" path="res://assets/stone_big.obj" id="5_8c41q"] [ext_resource type="ArrayMesh" uid="uid://ul1cypdhef5a" path="res://assets/stone_big.obj" id="5_8c41q"]
[ext_resource type="PackedScene" uid="uid://g7iron5etp8u" path="res://scenes/Iron.tscn" id="6_dke22"]
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_ppgk2"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_ppgk2"]
@@ -277,6 +276,3 @@ mesh = SubResource("BoxMesh_ebook")
[node name="CollisionShape3D" type="CollisionShape3D" parent="EnchantingTable" unique_id=352273224] [node name="CollisionShape3D" type="CollisionShape3D" parent="EnchantingTable" unique_id=352273224]
shape = SubResource("BoxShape3D_etable") shape = SubResource("BoxShape3D_etable")
[node name="Iron" parent="." unique_id=611454609 instance=ExtResource("6_dke22")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.4976616, 0.104292765, -5.8715014)
+24 -1
View File
@@ -46,6 +46,7 @@ var is_upgrading: bool = false
@onready var mesh_node: MeshInstance3D = $BodyMesh @onready var mesh_node: MeshInstance3D = $BodyMesh
var mat: StandardMaterial3D var mat: StandardMaterial3D
var type_label: Label3D
var COLOR_CHASE = Color(1.0, 0.28, 0.18) var COLOR_CHASE = Color(1.0, 0.28, 0.18)
var COLOR_FLY = Color(1.0, 0.85, 0.1) var COLOR_FLY = Color(1.0, 0.85, 0.1)
@@ -59,6 +60,21 @@ func _ready() -> void:
mat = mesh_node.material_override.duplicate() as StandardMaterial3D mat = mesh_node.material_override.duplicate() as StandardMaterial3D
mesh_node.material_override = mat mesh_node.material_override = mat
COLOR_CHASE = mat.albedo_color COLOR_CHASE = mat.albedo_color
type_label = Label3D.new()
type_label.billboard = BaseMaterial3D.BILLBOARD_ENABLED
type_label.position = Vector3(0, 1.6, 0)
type_label.font_size = 28
type_label.outline_size = 5
type_label.modulate = Color.WHITE
add_child(type_label)
func _update_label() -> void:
if type_label == null:
return
var stars := ""
for i in range(enemy_level - 1):
stars += ""
type_label.text = enemy_type + (" " + stars if stars != "" else "")
func setup(type: String, wave: int) -> void: func setup(type: String, wave: int) -> void:
enemy_type = type enemy_type = type
@@ -93,6 +109,7 @@ func setup(type: String, wave: int) -> void:
enemy_level = 3 enemy_level = 3
kick_tier = enemy_level kick_tier = enemy_level
toughness_tier = enemy_level toughness_tier = enemy_level
_update_label()
func _physics_process(delta: float) -> void: func _physics_process(delta: float) -> void:
match state: match state:
@@ -290,9 +307,15 @@ func _start_merge(other: Node) -> void:
tw.tween_property(other, "global_position", global_position, 0.2) tw.tween_property(other, "global_position", global_position, 0.2)
tw.tween_callback(_on_merge_complete) tw.tween_callback(_on_merge_complete)
static func _next_enemy_type(current: String) -> String:
match current:
"slime": return "bat"
"bat": return "ogre"
_: return "titan"
func _on_merge_complete() -> void: func _on_merge_complete() -> void:
var merge_pos := global_position var merge_pos := global_position
var merge_type := enemy_type var merge_type := _next_enemy_type(enemy_type)
var new_level: int = enemy_level + 1 var new_level: int = enemy_level + 1
var new_wave: int = wave_num var new_wave: int = wave_num
if is_instance_valid(merge_partner): if is_instance_valid(merge_partner):
+1
View File
@@ -254,6 +254,7 @@ func _spawn_upgraded_enemy(pos: Vector3, type: String, level: int, w: int) -> Ch
enemy.enemy_level = level enemy.enemy_level = level
enemy.kick_tier = level enemy.kick_tier = level
enemy.toughness_tier = level enemy.toughness_tier = level
enemy.call("_update_label")
enemy.global_position = pos enemy.global_position = pos
enemy.connect("died", _on_enemy_died) enemy.connect("died", _on_enemy_died)
enemy.connect("merged", _on_enemy_merged) enemy.connect("merged", _on_enemy_merged)