Use event bus for coins
This commit is contained in:
parent
8b53f74929
commit
705ed4e897
@ -5,6 +5,9 @@ void alai::Event::_register_methods()
|
||||
godot::register_signal<Event>("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<Event>("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<Event>("object_removed", "name", GODOT_VARIANT_TYPE_STRING);
|
||||
godot::register_signal<Event>("coin_collected", "amount", GODOT_VARIANT_TYPE_INT);
|
||||
godot::register_signal<Event>("player_died");
|
||||
|
||||
}
|
||||
|
||||
alai::Event::Event()
|
||||
|
@ -1,5 +1,6 @@
|
||||
#include "coin/CoinCollected.h"
|
||||
#include <AnimationPlayer.hpp>
|
||||
#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<CoinCollected>("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<alai::Event>("/root/Event");
|
||||
event->emit_signal("coin_collected", 1);
|
||||
this->get_parent()->queue_free();
|
||||
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
#include "coin/CoinCounter.h"
|
||||
#include <String.hpp>
|
||||
#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<alai::Event>("/root/Event");
|
||||
event->connect("coin_collected", this, "_on_coin_collected");
|
||||
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user