From 2ab51e507d620c4479e07ca0ec47d22c8c66bc90 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 13 Apr 2021 15:14:34 -0400 Subject: Initial commit --- src/test.cc | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/test.cc (limited to 'src/test.cc') diff --git a/src/test.cc b/src/test.cc new file mode 100644 index 0000000..e236860 --- /dev/null +++ b/src/test.cc @@ -0,0 +1,59 @@ +#include "creature.h" +#include "feature.h" +#include +#include +#include "rules.h" +#include "utils.h" +#include "item.h" +#include "armor.h" +#include "weapon.h" + +using namespace std; + +template vector mapItems(const vector>& items) { + vector out; + for(auto i : items) { + out.push_back(i->getName()); + } + return out; +} + +int main(int argc, char *argv[]) { + creature::Creature c(utils::loadJson(argv[argc-1])); + cout << c.getCreatureName() << " " << c.getGivenName() << ", a cr " << c.getCR() << " " << c.getAlignment() << " " << c.getSize() << " " << c.getType() << ", has " << c.getHP() << " hp, ac " << creature::getAC(c) << " (" << utils::join(mapItems(creature::getItems(c)), ", ") << "), speaks " << c.getLanguages() << ", has " << utils::join(c.getSenses(), ", ") << ", speed " << c.getSpeed() << ", and wields " << utils::join(mapItems(creature::getItems(c)), ", ") << ".\n Stats:\n"; + for(auto ability : abilities) { + cout << ability << ": " << c.getScore(ability) << " (" << c.getBonus(ability) << ")\n"; + } + cout << "\nSkills:\n"; + for(auto skill : c.getSkills()) { + cout << skill.first << " (+" << skill.second << ")\n"; + } + cout << "\nSaves:\n"; + for(auto save : c.getSaves()) { + cout << save.first << " (+" << save.second << ")\n"; + } + cout << "\nFeatures:\n"; + for(auto f: c.getFeatures()) { + cout << f->getName() << " (" << f->getType() << "):\n"; + cout << f->getText() << "\n\n"; + } + cout << "\nWeapons:\n"; + for(auto w : creature::getItems(c)) { + cout << w->getName() << " (" << w->getCost() << " cp, i.e., " << utils::getCostString(w->getCost()) << ", " << w->getWeight() << "lbs): "; + cout << item::genActionText(*w, c); + } + cout << "\nArmor:\n"; + for(auto a : creature::getItems(c)) { + cout << a->getName() << " (" << a->getCost() << " cp, i.e., " << utils::getCostString(a->getCost()) << ", " << a->getWeight() << "lbs): "; + cout << "AC bonus: " << a->getACBonus() << "; type: " << a->getArmorType() << "; strReq: " << a->getStrRequirement() << "; stealthDis: " << a->stealthDisadvantage() << "\n"; + } + + cout << "We strike him with mace, dealing 5 fire damage!\n"; + c.applyDamage(5, "fire", vector()); + cout << "Now he has " << c.getHP() << " out of " << c.getHPMax() << " hp.\n"; + + cout << "Increasing str by 4...\n"; + c.setScore("str", c.getScore("str") + 4); + cout << "Saving to out.json...\n"; + utils::saveJson(c.toJson(), "out.json"); +} -- cgit v1.2.3