Get the build fail to actually play and keep the building sound looping until the build is done.
This commit is contained in:
parent
2035a6dd00
commit
95cd84b09d
8 changed files with 8 additions and 9 deletions
|
@ -87,7 +87,6 @@ void Builder::BUILDING(BuildEvent ev) {
|
|||
}
|
||||
|
||||
build_out = NULL;
|
||||
game.event(GameEvent::BUILD_DONE);
|
||||
state(BuildState::DONE);
|
||||
} else {
|
||||
auto m = parse_line(line);
|
||||
|
@ -171,6 +170,7 @@ void Builder::DONE(BuildEvent ev) {
|
|||
gui.you_died();
|
||||
}
|
||||
|
||||
game.event(GameEvent::BUILD_DONE);
|
||||
listener->reset_state();
|
||||
gui.output("^^^^^^^^^^^ END ^^^^^^^^^^^");
|
||||
state(BuildState::WAITING);
|
||||
|
|
2
fsm.hpp
2
fsm.hpp
|
@ -18,7 +18,7 @@ public:
|
|||
template<typename... Types>
|
||||
void event(E event, Types... args);
|
||||
|
||||
void state(S next_state) {
|
||||
void state(S next_state)
|
||||
_state = next_state;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include <iostream>
|
||||
#include <fmt/core.h>
|
||||
#include <fmt/color.h>
|
||||
#define FSM_DEBUG 1
|
||||
#include "game_engine.hpp"
|
||||
#include <cassert>
|
||||
#include "dbc.hpp"
|
||||
|
@ -14,7 +15,7 @@ using namespace std;
|
|||
|
||||
GameEngine::GameEngine(int hp) : starting_hp(hp) {
|
||||
hit_points = max_hp();
|
||||
};
|
||||
}
|
||||
|
||||
int GameEngine::determine_damage(string &type) {
|
||||
try {
|
||||
|
|
|
@ -13,7 +13,6 @@ enum class GameState {
|
|||
START, IDLE, IN_ROUND, DEAD, SUCCESS, FAILURE
|
||||
};
|
||||
|
||||
|
||||
enum class GameEvent {
|
||||
BUILD_START, BUILD_SUCCESS,
|
||||
BUILD_DONE, BUILD_FAILED, HIT
|
||||
|
|
2
gui.cpp
2
gui.cpp
|
@ -25,7 +25,7 @@ GUI::GUI() {
|
|||
you_died_sound.load(data, "you_died");
|
||||
build_works_sound.load(data, "build_works");
|
||||
build_failed_sound.load(data, "build_failed");
|
||||
building_sound.load(data, "building");
|
||||
building_sound.load(data, "building", true);
|
||||
}
|
||||
|
||||
void GUI::output(const string msg) {
|
||||
|
|
|
@ -17,7 +17,7 @@ using namespace nlohmann;
|
|||
using namespace ImGui;
|
||||
using std::string;
|
||||
|
||||
void SoundQuip::load(json &data, const char *file_key) {
|
||||
void SoundQuip::load(json &data, const char *file_key, bool loop) {
|
||||
auto audio = data["audio"];
|
||||
json::string_t file_name = audio[file_key].template get<string>();
|
||||
|
||||
|
@ -26,6 +26,7 @@ void SoundQuip::load(json &data, const char *file_key) {
|
|||
}
|
||||
|
||||
sound.setBuffer(buffer);
|
||||
sound.setLoop(loop);
|
||||
}
|
||||
|
||||
void SoundQuip::play() {
|
||||
|
|
|
@ -25,7 +25,7 @@ public:
|
|||
|
||||
SoundQuip() {};
|
||||
|
||||
void load(nlohmann::json &data, const char *in_file);
|
||||
void load(nlohmann::json &data, const char *file_key, bool loop=false);
|
||||
void play();
|
||||
void stop();
|
||||
};
|
||||
|
|
|
@ -5,8 +5,6 @@ BUGS:
|
|||
* BUG: doesn't play you_died sound.
|
||||
|
||||
TODO:
|
||||
* Rewrite dbc.hpp to actually work.
|
||||
|
||||
* Add a timer to the game engine so you can set a kind of pomodoro timer and if you don't meet the goal it costs you.
|
||||
|
||||
* Track the deaths.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue