Got some new sounds and camera shake came back but has a bug.
This commit is contained in:
parent
ed9d0de8e0
commit
113811bc84
10 changed files with 30 additions and 9 deletions
BIN
assets/combat_enemy_hit.mp3
Normal file
BIN
assets/combat_enemy_hit.mp3
Normal file
Binary file not shown.
BIN
assets/combat_miss.mp3
Normal file
BIN
assets/combat_miss.mp3
Normal file
Binary file not shown.
BIN
assets/combat_player_hit.mp3
Normal file
BIN
assets/combat_player_hit.mp3
Normal file
Binary file not shown.
BIN
assets/hit.wav
BIN
assets/hit.wav
Binary file not shown.
BIN
assets/loot_gold.mp3
Normal file
BIN
assets/loot_gold.mp3
Normal file
Binary file not shown.
24
gui.cpp
24
gui.cpp
|
@ -39,7 +39,11 @@ GUI::GUI(DinkyECS::World &world, Map& game_map) :
|
|||
$renderer($canvas, $map_screen, $screen)
|
||||
{
|
||||
// this needs a config file soon
|
||||
$sounds.load("hit", "hit.wav");
|
||||
$sounds.load("ambient", "ambient_sound.mp3");
|
||||
$sounds.load("loot_gold", "loot_gold.mp3");
|
||||
$sounds.load("combat_player_hit", "combat_player_hit.mp3");
|
||||
$sounds.load("combat_enemy_hit", "combat_enemy_hit.mp3");
|
||||
$sounds.load("combat_miss", "combat_miss.flac");
|
||||
resize_map(BASE_MAP_FONT_SIZE);
|
||||
}
|
||||
|
||||
|
@ -114,21 +118,24 @@ void GUI::handle_world_events() {
|
|||
if(damage.enemy_did > 0) {
|
||||
$log.log(format("Enemy HIT YOU for {} damage!", damage.enemy_did));
|
||||
$log.log(format("-- Enemy has {} HP left.", enemy_combat.hp));
|
||||
$sounds.play("hit");
|
||||
$sounds.play("combat_enemy_hit");
|
||||
shake();
|
||||
} else {
|
||||
$log.log("Enemy MISSED YOU.");
|
||||
}
|
||||
|
||||
if(damage.player_did > 0) {
|
||||
$log.log(format("You HIT enemy for {} damage!", damage.player_did));
|
||||
$sounds.play("hit");
|
||||
$sounds.play("combat_player_hit");
|
||||
} else {
|
||||
$sounds.play("combat_miss");
|
||||
$log.log("You MISSED the enemy.");
|
||||
}
|
||||
} break;
|
||||
case eGUI::LOOT: {
|
||||
auto &loot = std::any_cast<Loot&>(data);
|
||||
auto inventory = $world.get<Inventory>(player.entity);
|
||||
$sounds.play("loot_gold");
|
||||
$log.log(format("You found {} gold. You have {} now.",
|
||||
loot.amount, inventory.gold));
|
||||
}
|
||||
|
@ -185,6 +192,16 @@ void GUI::run_systems() {
|
|||
System::death($world);
|
||||
}
|
||||
|
||||
void GUI::shake() {
|
||||
for(int i = 0; i < 10; ++i) {
|
||||
int x = Random::uniform<int>(-10,10);
|
||||
int y = Random::uniform<int>(-10,10);
|
||||
// add x/y back to draw screen
|
||||
$renderer.draw_screen(true, x, y);
|
||||
std::this_thread::sleep_for(1ms);
|
||||
}
|
||||
}
|
||||
|
||||
void GUI::render_scene() {
|
||||
$screen.Clear();
|
||||
$map_screen.Clear();
|
||||
|
@ -194,6 +211,7 @@ void GUI::render_scene() {
|
|||
}
|
||||
|
||||
int GUI::main() {
|
||||
// $sounds.play("ambient");
|
||||
create_renderer();
|
||||
run_systems();
|
||||
|
||||
|
|
1
gui.hpp
1
gui.hpp
|
@ -59,6 +59,7 @@ public:
|
|||
void draw_screen(bool clear=true, float map_off_x=0.0f, float map_off_y=0.0f);
|
||||
void run_systems();
|
||||
void save_world();
|
||||
void shake();
|
||||
|
||||
int main();
|
||||
};
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
project('lcthw-utilities', 'cpp',
|
||||
project('roguish', 'cpp',
|
||||
default_options: [ 'cpp_std=c++20' ])
|
||||
|
||||
catch2 = dependency('catch2-with-main')
|
||||
|
|
|
@ -2,6 +2,8 @@ NOTES:
|
|||
|
||||
|
||||
TODO:
|
||||
* draw_screen doesn't do x axis offset render
|
||||
* Can std::any be defaulted to a noop in the events?
|
||||
* Save file isn't saving gold.
|
||||
* Inventory needs to be better, but need some kinds of "weapons" or other loot to get and not just gold.
|
||||
* Run the ansi_parser on the whole UI so I can use colors and other glyphs.
|
||||
|
|
|
@ -12,10 +12,10 @@ TEST_CASE("confirm basic functionality", "[sounds]") {
|
|||
|
||||
SoundManager sounds("./assets");
|
||||
|
||||
REQUIRE_THROWS(sounds.load("hit", "badfileDOESNOTEXIST.wav"));
|
||||
REQUIRE_THROWS(sounds.play("hit"));
|
||||
REQUIRE_THROWS(sounds.load("bad", "badfileDOESNOTEXIST.wav"));
|
||||
REQUIRE_THROWS(sounds.play("bad"));
|
||||
|
||||
sounds.load("hit", "hit.wav");
|
||||
sounds.play("hit");
|
||||
sounds.playAt("hit", 1, 1, 1);
|
||||
sounds.load("combat_miss", "combat_miss.flac");
|
||||
sounds.play("combat_miss");
|
||||
sounds.playAt("combat_miss", 1, 1, 1);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue