diff --git a/entity/coin_copper/coin_copper.tscn b/entity/coin_copper/coin_copper.tscn index 9297f4b..6546a5b 100644 --- a/entity/coin_copper/coin_copper.tscn +++ b/entity/coin_copper/coin_copper.tscn @@ -49,7 +49,4 @@ volume_db = -24.397 wait_time = 2.108 one_shot = true -[connection signal="body_entered" from="." to="." method="_on_body_entered"] -[connection signal="body_exited" from="." to="." method="_on_body_exited"] -[connection signal="sleeping_state_changed" from="." to="." method="_on_sleeping_state_changed"] [connection signal="collected" from="Collectible" to="Collectible" method="_on_done"] diff --git a/game/game.gd b/game/game.gd index 6800cf5..4824f19 100644 --- a/game/game.gd +++ b/game/game.gd @@ -71,6 +71,7 @@ func update_counter_text(): @export var upgrade_copper_texture: Texture2D @export var upgrade_silver_texture: Texture2D @export var upgrade_gold_texture: Texture2D +@export var upgrade_gem_texture: Texture2D func update_counter_icon(): if len(store_collector.collecting_types) == 0: @@ -81,6 +82,8 @@ func update_counter_icon(): store_collector_texturerect.texture = upgrade_silver_texture elif store_collector.collecting_types[0] == &"Gold": store_collector_texturerect.texture = upgrade_gold_texture + elif store_collector.collecting_types[0] == &"Gem": + store_collector_texturerect.texture = upgrade_gem_texture else: store_collector_texturerect.texture = null @@ -92,6 +95,8 @@ func _on_ghost_requested(scene: PackedScene, texture: Texture2D): func _on_ghost_materialize(): var instantiated = ghost.materialize() + if not instantiated: + return #TODO FIXME var spawner = instantiated.find_child("Spawner") if spawner != null: spawner.target = self diff --git a/game/game.tscn b/game/game.tscn index ec45876..24e122d 100644 --- a/game/game.tscn +++ b/game/game.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=23 format=3 uid="uid://c3rxmcwa5nqng"] +[gd_scene load_steps=24 format=3 uid="uid://c3rxmcwa5nqng"] [ext_resource type="Script" path="res://game/game.gd" id="1_i3ly0"] [ext_resource type="PackedScene" uid="uid://bllsprv8orpn4" path="res://bottle/bottle.tscn" id="1_y7o2l"] @@ -6,6 +6,7 @@ [ext_resource type="Texture2D" uid="uid://7b12rwclhrq0" path="res://interface/upgrade_silver.png" id="3_8wvr1"] [ext_resource type="PackedScene" uid="uid://c67lfbk4gf1ga" path="res://spawner/spawner.tscn" id="3_qwsty"] [ext_resource type="Texture2D" uid="uid://taojrwr7xrp4" path="res://interface/upgrade_gold.png" id="4_i557v"] +[ext_resource type="Texture2D" uid="uid://yx3gme4q4ote" path="res://interface/upgrade_gem.png" id="5_wbw72"] [ext_resource type="Texture2D" uid="uid://pj3ip6vlatms" path="res://converters/copper_to_silver/copper_converter.png" id="6_0jj8g"] [ext_resource type="PackedScene" uid="uid://beg758fa6o0cs" path="res://value/evaluator.tscn" id="6_my6nv"] [ext_resource type="PackedScene" uid="uid://ratkps4plkhl" path="res://converters/copper_to_silver/copper_converter.tscn" id="7_ipeok"] @@ -39,6 +40,7 @@ script = ExtResource("1_i3ly0") upgrade_copper_texture = ExtResource("11_lt33g") upgrade_silver_texture = ExtResource("3_8wvr1") upgrade_gold_texture = ExtResource("4_i557v") +upgrade_gem_texture = ExtResource("5_wbw72") [node name="GravityFromGyro" parent="." instance=ExtResource("2_h2pfr")] @@ -82,7 +84,7 @@ scene = ExtResource("13_4j8om") target = NodePath("..") buffer_cap = 1 spawn_rect = Rect2(-20, 0, 40, 0) -overlapping_body_count_limit = 128 +overlapping_body_count_limit = 16 metadata/_edit_lock_ = true [node name="NeckShape" type="CollisionShape2D" parent="DebugSpawner"] diff --git a/interface/ghost.gd b/interface/ghost.gd index 8d26a47..cb2e766 100644 --- a/interface/ghost.gd +++ b/interface/ghost.gd @@ -34,6 +34,7 @@ var can_place: bool: get: return can_place set(value): + can_place = value if value: preview_sprite.modulate = Color(1.0, 1.0, 1.0, 0.5) else: @@ -70,8 +71,9 @@ func _input(event: InputEvent): position += delta last_input_event = event +## Update the value of [can_place]. # DIRTY HACK: Relies on the placeable area being perfectly surrounded by solid bodies. -func _physics_process(_delta: float): +func update_can_place(): var no_overlapping_bodies: bool = true var overlapping_bodies = get_overlapping_bodies() for body in overlapping_bodies: @@ -87,6 +89,7 @@ func _physics_process(_delta: float): if area is PlaceableArea: is_in_placeable_area = true + print("[Ghost] No overlap: ", no_overlapping_bodies, " | In area: ", is_in_placeable_area) can_place = no_overlapping_bodies and is_in_placeable_area @@ -99,7 +102,18 @@ func _physics_process(_delta: float): ## Emitted when the [materialize] function has finished executing. signal materialized(node: Node) + +func _physics_process(_delta: float): + update_can_place() + func materialize(): + if not can_place: + return null + var overlapping_bodies = get_overlapping_bodies() + for body in overlapping_bodies: + if body is PhysicsBody2D: + if body.collision_layer & collision_mask_delete_placement: + body.queue_free() var instantiated = scene_to_instantiate.instantiate() instantiated.global_position = global_position instantiated.rotation = rotation diff --git a/entity/gem_stack.png b/interface/upgrade_gem.png similarity index 100% rename from entity/gem_stack.png rename to interface/upgrade_gem.png diff --git a/entity/gem_stack.png.import b/interface/upgrade_gem.png.import similarity index 71% rename from entity/gem_stack.png.import rename to interface/upgrade_gem.png.import index 6286741..debe2f4 100644 --- a/entity/gem_stack.png.import +++ b/interface/upgrade_gem.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://yx3gme4q4ote" -path="res://.godot/imported/gem_stack.png-48697e8b235aeec145f6f7d9b3d945cf.ctex" +path="res://.godot/imported/upgrade_gem.png-5e957de962fd10a13373014fc76b9725.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://entity/gem_stack.png" -dest_files=["res://.godot/imported/gem_stack.png-48697e8b235aeec145f6f7d9b3d945cf.ctex"] +source_file="res://interface/upgrade_gem.png" +dest_files=["res://.godot/imported/upgrade_gem.png-5e957de962fd10a13373014fc76b9725.ctex"] [params] diff --git a/main.gd b/main.gd index 21296a8..76eb5ce 100644 --- a/main.gd +++ b/main.gd @@ -54,3 +54,6 @@ func _on_shop_ui_delete_begin(): func _on_shop_ui_delete_cancel(): ui_state = UIState.GAME + +func _on_shop_ui_purchase_cancel(_what): + ui_state = UIState.GAME