|
|
|
@ -5,83 +5,81 @@ |
|
|
|
|
#include "dinkyecs.hpp" |
|
|
|
|
#include "levelmanager.hpp" |
|
|
|
|
|
|
|
|
|
using namespace combat; |
|
|
|
|
TEST_CASE("ritual::Engine basic tests", "[rituals]") { |
|
|
|
|
ritual::Engine re("assets/rituals.json"); |
|
|
|
|
auto craft_state = re.start(); |
|
|
|
|
|
|
|
|
|
TEST_CASE("RitualEngine basic tests", "[rituals]") { |
|
|
|
|
RitualEngine re("assets/rituals.json"); |
|
|
|
|
auto blanket = re.start(); |
|
|
|
|
|
|
|
|
|
re.set_state(blanket, "has_spikes", true); |
|
|
|
|
re.plan(blanket); |
|
|
|
|
re.set_state(craft_state, "has_spikes", true); |
|
|
|
|
re.plan(craft_state); |
|
|
|
|
|
|
|
|
|
fmt::println("\n\n------------ TEST WILL DO PIERCE"); |
|
|
|
|
blanket.dump(); |
|
|
|
|
REQUIRE(blanket.will_do("pierce_type")); |
|
|
|
|
craft_state.dump(); |
|
|
|
|
REQUIRE(craft_state.will_do("pierce_type")); |
|
|
|
|
|
|
|
|
|
REQUIRE(blanket.start != blanket.original); |
|
|
|
|
re.reset(blanket); |
|
|
|
|
REQUIRE(blanket.start == blanket.original); |
|
|
|
|
REQUIRE(craft_state.start != craft_state.original); |
|
|
|
|
craft_state.reset(); |
|
|
|
|
REQUIRE(craft_state.start == craft_state.original); |
|
|
|
|
|
|
|
|
|
re.set_state(blanket, "has_magick", true); |
|
|
|
|
re.set_state(blanket, "has_spikes", true); |
|
|
|
|
re.plan(blanket); |
|
|
|
|
re.set_state(craft_state, "has_magick", true); |
|
|
|
|
re.set_state(craft_state, "has_spikes", true); |
|
|
|
|
re.plan(craft_state); |
|
|
|
|
|
|
|
|
|
fmt::println("\n\n------------ TEST WILL DO MAGICK TOO"); |
|
|
|
|
blanket.dump(); |
|
|
|
|
REQUIRE(blanket.will_do("pierce_type")); |
|
|
|
|
|
|
|
|
|
blanket.pop(); |
|
|
|
|
REQUIRE(blanket.will_do("magick_type")); |
|
|
|
|
|
|
|
|
|
re.reset(blanket); |
|
|
|
|
re.set_state(blanket, "has_magick", true); |
|
|
|
|
re.set_state(blanket, "has_spikes", true); |
|
|
|
|
re.set_state(blanket, "shiny_bauble", true); |
|
|
|
|
REQUIRE(blanket.is_combined()); |
|
|
|
|
re.plan(blanket); |
|
|
|
|
craft_state.dump(); |
|
|
|
|
REQUIRE(craft_state.will_do("pierce_type")); |
|
|
|
|
|
|
|
|
|
craft_state.pop(); |
|
|
|
|
REQUIRE(craft_state.will_do("magick_type")); |
|
|
|
|
|
|
|
|
|
craft_state.reset(); |
|
|
|
|
re.set_state(craft_state, "has_magick", true); |
|
|
|
|
re.set_state(craft_state, "has_spikes", true); |
|
|
|
|
re.set_state(craft_state, "shiny_bauble", true); |
|
|
|
|
REQUIRE(craft_state.is_combined()); |
|
|
|
|
re.plan(craft_state); |
|
|
|
|
fmt::println("\n\n------------ TEST WILL DO DAMAGE BOOST"); |
|
|
|
|
blanket.dump(); |
|
|
|
|
|
|
|
|
|
re.reset(blanket); |
|
|
|
|
re.set_state(blanket, "has_magick", true); |
|
|
|
|
re.set_state(blanket, "cursed_item", true); |
|
|
|
|
re.set_state(blanket, "shiny_bauble", true); |
|
|
|
|
REQUIRE(blanket.is_combined()); |
|
|
|
|
re.plan(blanket); |
|
|
|
|
craft_state.dump(); |
|
|
|
|
|
|
|
|
|
craft_state.reset(); |
|
|
|
|
re.set_state(craft_state, "has_magick", true); |
|
|
|
|
re.set_state(craft_state, "cursed_item", true); |
|
|
|
|
re.set_state(craft_state, "shiny_bauble", true); |
|
|
|
|
REQUIRE(craft_state.is_combined()); |
|
|
|
|
re.plan(craft_state); |
|
|
|
|
fmt::println("\n\n------------ TEST WILL DO LARGE DAMAGE BOOST"); |
|
|
|
|
blanket.dump(); |
|
|
|
|
craft_state.dump(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TEST_CASE("blanket can be finalized for the end result", "[rituals]") { |
|
|
|
|
RitualEngine re("assets/rituals.json"); |
|
|
|
|
auto blanket = re.start(); |
|
|
|
|
TEST_CASE("craft_state can be finalized for the end result", "[rituals]") { |
|
|
|
|
ritual::Engine re("assets/rituals.json"); |
|
|
|
|
auto craft_state = re.start(); |
|
|
|
|
|
|
|
|
|
re.set_state(blanket, "has_magick", true); |
|
|
|
|
re.set_state(blanket, "cursed_item", true); |
|
|
|
|
re.set_state(blanket, "shiny_bauble", true); |
|
|
|
|
re.plan(blanket); |
|
|
|
|
REQUIRE(blanket.is_combined()); |
|
|
|
|
re.set_state(craft_state, "has_magick", true); |
|
|
|
|
re.set_state(craft_state, "cursed_item", true); |
|
|
|
|
re.set_state(craft_state, "shiny_bauble", true); |
|
|
|
|
re.plan(craft_state); |
|
|
|
|
REQUIRE(craft_state.is_combined()); |
|
|
|
|
|
|
|
|
|
fmt::println("\n\n------------ CYCLES AVOIDED"); |
|
|
|
|
blanket.dump(); |
|
|
|
|
craft_state.dump(); |
|
|
|
|
|
|
|
|
|
auto ritual = re.finalize(blanket); |
|
|
|
|
auto ritual = re.finalize(craft_state); |
|
|
|
|
ritual.dump(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TEST_CASE("the ritual belt works", "[rituals-belt]") { |
|
|
|
|
RitualBelt the_belt; |
|
|
|
|
RitualEngine re; |
|
|
|
|
auto blanket = re.start(); |
|
|
|
|
TEST_CASE("the ritual belt works", "[rituals]") { |
|
|
|
|
ritual::Belt the_belt; |
|
|
|
|
ritual::Engine re; |
|
|
|
|
auto craft_state = re.start(); |
|
|
|
|
|
|
|
|
|
re.set_state(blanket, "has_magick", true); |
|
|
|
|
re.plan(blanket); |
|
|
|
|
REQUIRE(blanket.is_combined()); |
|
|
|
|
blanket.dump(); |
|
|
|
|
re.set_state(craft_state, "has_magick", true); |
|
|
|
|
re.plan(craft_state); |
|
|
|
|
REQUIRE(craft_state.is_combined()); |
|
|
|
|
craft_state.dump(); |
|
|
|
|
|
|
|
|
|
{ |
|
|
|
|
auto ritual = re.finalize(blanket); |
|
|
|
|
auto ritual = re.finalize(craft_state); |
|
|
|
|
the_belt.equip(0, ritual); |
|
|
|
|
REQUIRE(the_belt.has(0)); |
|
|
|
|
} |
|
|
|
@ -96,3 +94,15 @@ TEST_CASE("the ritual belt works", "[rituals-belt]") { |
|
|
|
|
REQUIRE(!the_belt.has(0)); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TEST_CASE("ritual blanket basic operations", "[rituals]") { |
|
|
|
|
ritual::Blanket blanket; |
|
|
|
|
|
|
|
|
|
DinkyECS::Entity ent = blanket.add("severed_finger"); |
|
|
|
|
auto& name = blanket.get(ent); |
|
|
|
|
REQUIRE(name == "severed_finger"); |
|
|
|
|
|
|
|
|
|
REQUIRE(blanket.has(ent)); |
|
|
|
|
blanket.remove(ent); |
|
|
|
|
REQUIRE(!blanket.has(ent)); |
|
|
|
|
} |
|
|
|
|