From 705ed4e89753ac34f89cc875ccd36ad2e8c0f31e Mon Sep 17 00:00:00 2001 From: Martin Araneda Date: Sat, 27 Aug 2022 18:32:33 -0400 Subject: [PATCH] Use event bus for coins --- src/Event.cpp | 3 +++ src/coin/CoinCollected.cpp | 5 +++-- src/coin/CoinCounter.cpp | 10 +++------- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Event.cpp b/src/Event.cpp index 3e9e186..6561979 100644 --- a/src/Event.cpp +++ b/src/Event.cpp @@ -5,6 +5,9 @@ void alai::Event::_register_methods() godot::register_signal("object_created", "name", GODOT_VARIANT_TYPE_STRING, "state", GODOT_VARIANT_TYPE_STRING, "position", GODOT_VARIANT_TYPE_VECTOR2, "velocity", GODOT_VARIANT_TYPE_VECTOR2); godot::register_signal("object_updated", "name", GODOT_VARIANT_TYPE_STRING, "state", GODOT_VARIANT_TYPE_STRING, "position", GODOT_VARIANT_TYPE_VECTOR2, "velocity", GODOT_VARIANT_TYPE_VECTOR2); godot::register_signal("object_removed", "name", GODOT_VARIANT_TYPE_STRING); + godot::register_signal("coin_collected", "amount", GODOT_VARIANT_TYPE_INT); + godot::register_signal("player_died"); + } alai::Event::Event() diff --git a/src/coin/CoinCollected.cpp b/src/coin/CoinCollected.cpp index 9f3a9a4..22a65b8 100644 --- a/src/coin/CoinCollected.cpp +++ b/src/coin/CoinCollected.cpp @@ -1,5 +1,6 @@ #include "coin/CoinCollected.h" #include +#include "Event.h" using namespace godot; @@ -8,7 +9,6 @@ void CoinCollected::_register_methods() register_method("_state_enter", &CoinCollected::_state_enter); register_method("_state_exit", &CoinCollected::_state_exit); register_method("_on_animation_finished", &CoinCollected::_on_animation_finished); - register_signal("coin_collected", "amount", GODOT_VARIANT_TYPE_INT); } CoinCollected::CoinCollected() @@ -43,7 +43,8 @@ void CoinCollected::_state_exit() void CoinCollected::_on_animation_finished(String anim_name) { - emit_signal("coin_collected", 1); + auto event = get_node("/root/Event"); + event->emit_signal("coin_collected", 1); this->get_parent()->queue_free(); diff --git a/src/coin/CoinCounter.cpp b/src/coin/CoinCounter.cpp index 22fc8e4..7bcdbf0 100644 --- a/src/coin/CoinCounter.cpp +++ b/src/coin/CoinCounter.cpp @@ -1,6 +1,7 @@ #include "coin/CoinCounter.h" #include #include "coin/CoinCollected.h" +#include "Event.h" using namespace godot; void CoinCounter::_register_methods() @@ -35,13 +36,8 @@ void CoinCounter::_on_coin_collected(int amount) void CoinCounter::_ready() { set_text("0"); - auto coins_node = get_node("../../Coins"); - auto children_count = coins_node->get_child_count(); - for(int64_t i = 0; i < children_count;i++) - { - auto child = coins_node->get_child(i); - child->get_node("StateMachine/CoinCollected")->connect("coin_collected",this,"_on_coin_collected"); - } + auto event = get_node("/root/Event"); + event->connect("coin_collected", this, "_on_coin_collected"); }