From 3a5877777343bc1e69f8eadaaa12bfba8541f4b1 Mon Sep 17 00:00:00 2001 From: Martin Araneda Date: Sat, 25 Jun 2022 20:54:47 -0400 Subject: [PATCH] coin counter method created --- godot/levels/Prototype.tscn | 38 +++++++++++++++++- src/coin/CoinCounter.cpp | 40 +++++++++++++++++++ src/coin/CoinCounter.h | 77 +++++++++++++++++++++++++++++++++++++ 3 files changed, 154 insertions(+), 1 deletion(-) diff --git a/godot/levels/Prototype.tscn b/godot/levels/Prototype.tscn index e95ba6f..b6f8afb 100644 --- a/godot/levels/Prototype.tscn +++ b/godot/levels/Prototype.tscn @@ -1,10 +1,14 @@ -[gd_scene load_steps=6 format=2] +[gd_scene load_steps=8 format=2] [ext_resource path="res://CameraLimit.gdns" type="Script" id=1] [ext_resource path="res://characters/player/Player.tscn" type="PackedScene" id=2] [ext_resource path="res://levels/Prototype.tmx" type="PackedScene" id=3] [ext_resource path="res://assets/backgrounds/mountains.png" type="Texture" id=4] [ext_resource path="res://collectables/coin/Coin.tscn" type="PackedScene" id=5] +[ext_resource path="res://assets/coin.png" type="Texture" id=6] + +[sub_resource type="StyleBoxFlat" id=1] +bg_color = Color( 0, 0, 0, 0.541176 ) [node name="Prototype" type="Node2D"] @@ -47,3 +51,35 @@ position = Vector2( 72, 450 ) [node name="coin2" parent="." instance=ExtResource( 5 )] position = Vector2( 234, 450 ) + +[node name="CoinHUD" type="CanvasLayer" parent="."] + +[node name="Panel" type="Panel" parent="CoinHUD"] +margin_left = 144.0 +margin_top = 18.0 +margin_right = 288.0 +margin_bottom = 54.0 +custom_styles/panel = SubResource( 1 ) + +[node name="TextureRect" type="TextureRect" parent="CoinHUD"] +margin_left = 144.0 +margin_top = 18.0 +margin_right = 184.0 +margin_bottom = 58.0 +texture = ExtResource( 6 ) + +[node name="Label" type="Label" parent="CoinHUD"] +margin_left = 198.0 +margin_top = 18.0 +margin_right = 238.0 +margin_bottom = 36.0 +text = "X" + +[node name="Coins" type="Label" parent="CoinHUD"] +margin_left = 216.0 +margin_top = 18.0 +margin_right = 256.0 +margin_bottom = 32.0 +text = "##" + +[connection signal="ready" from="CoinHUD/Coins" to="Player" method="_on_CoinHUD_ready"] diff --git a/src/coin/CoinCounter.cpp b/src/coin/CoinCounter.cpp index e69de29..e50810f 100644 --- a/src/coin/CoinCounter.cpp +++ b/src/coin/CoinCounter.cpp @@ -0,0 +1,40 @@ +#include "coin/CoinCounter.h" +#include + +using namespace godot; + +void CoinCounter::_register_methods() +{ + register_method("_state_enter", &CoinCounter::_state_enter); + register_method("_state_exit", &CoinCounter::_state_exit); + register_method("_on_body_entered", &CoinCounter::_on_CoinHUD_ready); +} + +CoinCounter::CoinCounter() +{ +} + +CoinCounter::~CoinCounter() +{ +} + +void CoinCounter::_init() +{ + +} + +void CoinCounter::_state_enter() +{ + +} + +void CoinCounter::_state_exit() +{ + +} + +void CoinCounter::_on_CoinHUD_ready() +{ + + +} diff --git a/src/coin/CoinCounter.h b/src/coin/CoinCounter.h index e69de29..b194fb9 100644 --- a/src/coin/CoinCounter.h +++ b/src/coin/CoinCounter.h @@ -0,0 +1,77 @@ +#ifndef ALAI_COIN_COUNTER +#define ALAI_COIN_COUNTER + +#include "state_machine/State.h" + +#include +#include +#include + +namespace godot +{ + /** + * @brief This class controls what happens when the Coin is in the collected state. + * + */ + class CoinCounter : public State + { + GODOT_CLASS(CoinCounter, State) + + private: + /** + * @brief The animated sprite of the Coin. + * + */ + AnimatedSprite *animated_sprite; + + public: + /** + * @brief This method registers classes with Godot. + * + * @details This method registers methods, properties, and signals with the Godot engine. + */ + static void _register_methods(); + + /** + * @brief Construct a new CoinCounter object. + * + */ + CoinCounter(); + + /** + * @brief Destroy the CoinCounter object. + * + */ + ~CoinCounter(); + + /** + * @brief Initialize the class from Godot. + * + * @details This method is called just once when the Godot engine connects to the instance of the class. + */ + void _init(); + + /** + * @brief Called when the collected state of the coin is entered. + * + */ + void _state_enter(); + + /** + * @brief Called when the collected state of the coin is exited. + * + */ + void _state_exit(); + + /** + * @brief Called when the animation of the collected coin has finished. + * + */ + + void _on_CoinHUD_ready(); + + }; + +} + +#endif