|
|
|
@ -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(); |
|
|
|
|
|
|
|
|
|