diff --git a/scenes/Level.tscn b/scenes/Level.tscn index dcd53ef..756fb8f 100644 --- a/scenes/Level.tscn +++ b/scenes/Level.tscn @@ -5,7 +5,6 @@ [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://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"] @@ -277,6 +276,3 @@ mesh = SubResource("BoxMesh_ebook") [node name="CollisionShape3D" type="CollisionShape3D" parent="EnchantingTable" unique_id=352273224] 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) diff --git a/scripts/Enemy.gd b/scripts/Enemy.gd index 7a49031..9b2739e 100644 --- a/scripts/Enemy.gd +++ b/scripts/Enemy.gd @@ -46,6 +46,7 @@ var is_upgrading: bool = false @onready var mesh_node: MeshInstance3D = $BodyMesh var mat: StandardMaterial3D +var type_label: Label3D var COLOR_CHASE = Color(1.0, 0.28, 0.18) 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 mesh_node.material_override = mat 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: enemy_type = type @@ -93,6 +109,7 @@ func setup(type: String, wave: int) -> void: enemy_level = 3 kick_tier = enemy_level toughness_tier = enemy_level + _update_label() func _physics_process(delta: float) -> void: match state: @@ -290,9 +307,15 @@ func _start_merge(other: Node) -> void: tw.tween_property(other, "global_position", global_position, 0.2) 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: 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_wave: int = wave_num if is_instance_valid(merge_partner): diff --git a/scripts/Main.gd b/scripts/Main.gd index 4bb6b0a..f5297d8 100644 --- a/scripts/Main.gd +++ b/scripts/Main.gd @@ -254,6 +254,7 @@ func _spawn_upgraded_enemy(pos: Vector3, type: String, level: int, w: int) -> Ch enemy.enemy_level = level enemy.kick_tier = level enemy.toughness_tier = level + enemy.call("_update_label") enemy.global_position = pos enemy.connect("died", _on_enemy_died) enemy.connect("merged", _on_enemy_merged)