Exploring raycasters and possibly make a little "doom like" game based on it.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
raycaster/tests/combat.cpp

39 lines
1.0 KiB

#include <catch2/catch_test_macros.hpp>
#include <iostream>
#include "rituals.hpp"
#include "fsm.hpp"
#include "dinkyecs.hpp"
using namespace combat;
TEST_CASE("cause scared rat won't run away bug", "[combat]") {
ai::reset();
ai::init("assets/ai.json");
auto ai_start = ai::load_state("Enemy::initial_state");
auto ai_goal = ai::load_state("Enemy::final_state");
BattleEngine battle;
DinkyECS::Entity rat_id = 1;
ai::EntityAI rat("Enemy::actions", ai_start, ai_goal);
rat.set_state("tough_personality", false);
rat.set_state("health_good", true);
battle.add_enemy(rat_id, rat);
// first confirm that everyone stops fightings
bool active = battle.plan();
REQUIRE(active);
// this causes the plan to read END but if you set
// health_good to false it will run_away
rat.set_state("health_good", false);
active = battle.plan();
REQUIRE(rat.wants_to("run_away"));
battle.fight([&](const auto entity, auto& ai) {
fmt::println("\n\n======= FIGHT! {}", entity);
ai.dump();
});
}