Merge branch 'develop' into feature/Prototype_R_LEVEL
# Conflicts: # godot/Main.tscn # godot/gui/GameOver.tscn # src/gui/game_over/GameOverScreen.cpp
This commit is contained in:
@@ -1,22 +1,22 @@
|
||||
#include "gui/game_over/GameOverScreen.h"
|
||||
|
||||
#include "Event.h"
|
||||
|
||||
#include <Node.hpp>
|
||||
#include <AudioStreamPlayer.hpp>
|
||||
#include <PackedScene.hpp>
|
||||
#include <Ref.hpp>
|
||||
#include <Resource.hpp>
|
||||
#include <SceneTree.hpp>
|
||||
#include <Viewport.hpp>
|
||||
#include <AudioStreamPlayer.hpp>
|
||||
#include <VisibilityNotifier.hpp>
|
||||
|
||||
void alai::GameOverScreen::_register_methods()
|
||||
{
|
||||
register_method("_on_restart_button_pressed", &GameOverScreen::_on_restart_button_pressed);
|
||||
register_method("_ready", &GameOverScreen::_ready);
|
||||
register_method("connect_signal", &GameOverScreen::connect_signal);
|
||||
register_method("_on_player_died", &GameOverScreen::_on_player_died);
|
||||
register_method("_play music", &GameOverScreen::_play_music);
|
||||
{
|
||||
godot::register_method("_on_restart_button_pressed", &GameOverScreen::_on_restart_button_pressed);
|
||||
godot::register_method("_ready", &GameOverScreen::_ready);
|
||||
godot::register_method("restart_game", &GameOverScreen::restart_game);
|
||||
godot::register_method("connect_signal", &GameOverScreen::connect_signal);
|
||||
godot::register_method("_on_player_died", &GameOverScreen::_on_player_died);
|
||||
godot::register_method("_play music", &GameOverScreen::_play_music);
|
||||
}
|
||||
|
||||
alai::GameOverScreen::GameOverScreen()
|
||||
@@ -32,16 +32,13 @@ void alai::GameOverScreen::_init()
|
||||
_resource_loader = godot::ResourceLoader::get_singleton();
|
||||
}
|
||||
|
||||
|
||||
void alai::GameOverScreen::_ready()
|
||||
{
|
||||
connect_signal();
|
||||
|
||||
}
|
||||
|
||||
void alai::GameOverScreen::_on_restart_button_pressed()
|
||||
{
|
||||
/*_r*/
|
||||
if (_resource_loader->exists("res://levels/PrototypeR.tscn"))
|
||||
{
|
||||
godot::Ref<godot::PackedScene> level_scene = _resource_loader->load("res://levels/PrototypeR.tscn");
|
||||
@@ -52,7 +49,7 @@ void alai::GameOverScreen::_on_restart_button_pressed()
|
||||
{
|
||||
level_node->add_child(level);
|
||||
set_visible(false);
|
||||
call_deferred("connect_signal");
|
||||
call_deferred("restart_game");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -86,6 +83,13 @@ void alai::GameOverScreen::_on_player_died()
|
||||
}
|
||||
}
|
||||
|
||||
void alai::GameOverScreen::restart_game()
|
||||
{
|
||||
auto event = get_node<alai::Event>("/root/Event");
|
||||
event->emit_signal("game_started");
|
||||
connect_signal();
|
||||
}
|
||||
|
||||
void alai::GameOverScreen::connect_signal()
|
||||
{
|
||||
auto event = get_node<alai::Event>("/root/Event");
|
||||
@@ -94,17 +98,4 @@ void alai::GameOverScreen::connect_signal()
|
||||
|
||||
void alai::GameOverScreen::_play_music()
|
||||
{
|
||||
if (this->is_on_screen() == true)
|
||||
{
|
||||
auto game_over_sound = get_node<godot::AudioStreamPlayer>("GameOverMusic");
|
||||
game_over_sound->play();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
auto game_over_sound = get_node<godot::AudioStreamPlayer>("GameOverMusic");
|
||||
game_over_sound->stop();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#ifndef ALAI_GAME_OVER_SCREEN_H
|
||||
#define ALAI_GAME_OVER_SCREEN_H
|
||||
#ifndef ALAI_GAME_OVER_GAME_OVER_SCREEN_H
|
||||
#define ALAI_GAME_OVER_GAME_OVER_SCREEN_H
|
||||
|
||||
#include <CanvasLayer.hpp>
|
||||
#include <Godot.hpp>
|
||||
@@ -53,6 +53,7 @@ namespace alai
|
||||
void _ready();
|
||||
void _on_player_died();
|
||||
void _on_restart_button_pressed();
|
||||
void restart_game();
|
||||
void connect_signal();
|
||||
void _play_music();
|
||||
};
|
||||
|
||||
66
src/gui/game_won/GameWonScreen.cpp
Normal file
66
src/gui/game_won/GameWonScreen.cpp
Normal file
@@ -0,0 +1,66 @@
|
||||
#include "gui/game_won/GameWonScreen.h"
|
||||
|
||||
#include "Event.h"
|
||||
|
||||
#include <SceneTree.hpp>
|
||||
#include <Viewport.hpp>
|
||||
|
||||
void alai::GameWonScreen::_register_methods()
|
||||
{
|
||||
godot::register_method("_ready", &GameWonScreen::_ready);
|
||||
godot::register_method("connect_signal", &GameWonScreen::connect_signal);
|
||||
godot::register_method("_on_player_won", &GameWonScreen::_on_player_won);
|
||||
godot::register_method("_on_quit_button_pressed", &GameWonScreen::_on_quit_button_pressed);
|
||||
}
|
||||
|
||||
alai::GameWonScreen::GameWonScreen()
|
||||
{
|
||||
}
|
||||
|
||||
alai::GameWonScreen::~GameWonScreen()
|
||||
{
|
||||
}
|
||||
|
||||
void alai::GameWonScreen::_init()
|
||||
{
|
||||
}
|
||||
|
||||
void alai::GameWonScreen::_ready()
|
||||
{
|
||||
connect_signal();
|
||||
}
|
||||
|
||||
void alai::GameWonScreen::_on_quit_button_pressed()
|
||||
{
|
||||
get_tree()->quit();
|
||||
}
|
||||
|
||||
void alai::GameWonScreen::_on_player_won()
|
||||
{
|
||||
auto event = get_node<alai::Event>("/root/Event");
|
||||
event->disconnect("player_won", this, "_on_player_won");
|
||||
set_visible(true);
|
||||
auto level_node = get_tree()->get_root()->get_node("Main")->find_node("Level");
|
||||
if (level_node != nullptr)
|
||||
{
|
||||
auto child = level_node->get_child(0);
|
||||
if (child != nullptr)
|
||||
{
|
||||
child->queue_free();
|
||||
}
|
||||
else
|
||||
{
|
||||
WARN_PRINT("Child not found!");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
WARN_PRINT("Node level not found!");
|
||||
}
|
||||
}
|
||||
|
||||
void alai::GameWonScreen::connect_signal()
|
||||
{
|
||||
auto event = get_node<alai::Event>("/root/Event");
|
||||
event->connect("player_won", this, "_on_player_won");
|
||||
}
|
||||
51
src/gui/game_won/GameWonScreen.h
Normal file
51
src/gui/game_won/GameWonScreen.h
Normal file
@@ -0,0 +1,51 @@
|
||||
#ifndef ALAI_GAME_WON_GAME_WON_SCREEN_H
|
||||
#define ALAI_GAME_WON_GAME_WON_SCREEN_H
|
||||
|
||||
#include <CanvasLayer.hpp>
|
||||
#include <Godot.hpp>
|
||||
|
||||
namespace alai
|
||||
{
|
||||
/**
|
||||
* @brief This class controls what happens when the game is won.
|
||||
*
|
||||
*/
|
||||
class GameWonScreen : public godot::CanvasLayer
|
||||
{
|
||||
GODOT_CLASS(GameWonScreen, godot::CanvasLayer)
|
||||
|
||||
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 GameWonScreen object.
|
||||
*
|
||||
*/
|
||||
GameWonScreen();
|
||||
|
||||
/**
|
||||
* @brief Destroy the GameWonScreen object.
|
||||
*
|
||||
*/
|
||||
~GameWonScreen();
|
||||
|
||||
/**
|
||||
* @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();
|
||||
|
||||
void _ready();
|
||||
void _on_player_won();
|
||||
void _on_quit_button_pressed();
|
||||
void connect_signal();
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user