race.cpp 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include "race.h"
  2. #include "units/unit.h"
  3. #include "units/warrior.h"
  4. #include "units/mage.h"
  5. #include <QFile>
  6. #include <QTextStream>
  7. #include <QString>
  8. #include <cassert>
  9. #include <vector>
  10. #include <algorithm>
  11. Race::Race(QString race_name, QObject *parent) : QObject(parent)
  12. {
  13. race_name_ = race_name;
  14. QFile file(":/assets/units/" + race_name + "/units.txt");
  15. QTextStream in(&file);
  16. QString unit_name = in.readLine();
  17. units_factory_.addClass<Warrior, QString>("Warrior");
  18. units_factory_.addClass<Warrior, QString>("Mage");
  19. while (!in.atEnd()) {
  20. available_units_list_.push_back(unit_name);
  21. race_name = in.readLine();
  22. }
  23. }
  24. Unit* Race::createUnit(QString unit_name) {
  25. assert(std::count(available_units_list_.begin(), available_units_list_.end(), unit_name) != 0);
  26. QFile file(":/asserts/units/" + race_name_ + "/" + unit_name + "/baseclass.txt");
  27. QTextStream in(&file);
  28. QString class_id = in.readLine();
  29. return units_factory_.createObject<QString>(class_id, race_name_ + "|" + unit_name);
  30. }
  31. const std::vector<QString>& Race::getAvailableUnitsList() {
  32. return available_units_list_;
  33. }