GameStatistics.cpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /*
  2. * GameStatistics.cpp, part of VCMI engine
  3. *
  4. * Authors: listed in file AUTHORS in main folder
  5. *
  6. * License: GNU General Public License v2.0 or later
  7. * Full text of license available in license.txt file, in main folder
  8. *
  9. */
  10. #include "StdInc.h"
  11. #include "GameStatistics.h"
  12. #include "../CPlayerState.h"
  13. #include "../constants/StringConstants.h"
  14. #include "CGameState.h"
  15. VCMI_LIB_NAMESPACE_BEGIN
  16. void StatisticDataSet::add(StatisticDataSetEntry entry)
  17. {
  18. data.push_back(entry);
  19. }
  20. StatisticDataSetEntry StatisticDataSet::createEntry(const PlayerState * ps, const CGameState * gs)
  21. {
  22. StatisticDataSetEntry data;
  23. data.day = gs->getDate(Date::DAY);
  24. data.player = ps->color;
  25. data.team = ps->team;
  26. data.resources = ps->resources;
  27. data.heroesCount = ps->heroes.size();
  28. data.townCount = ps->towns.size();
  29. return data;
  30. }
  31. std::string StatisticDataSet::toCsv()
  32. {
  33. std::stringstream ss;
  34. auto resources = std::vector<EGameResID>{EGameResID::GOLD, EGameResID::WOOD, EGameResID::MERCURY, EGameResID::ORE, EGameResID::SULFUR, EGameResID::CRYSTAL, EGameResID::GEMS};
  35. ss << "Day" << ";" << "Player" << ";" << "Team" << ";" << "HeroesCount" << ";" << "TownCount";
  36. for(auto & resource : resources)
  37. ss << ";" << GameConstants::RESOURCE_NAMES[resource];
  38. ss << "\r\n";
  39. for(auto & entry : data)
  40. {
  41. ss << entry.day << ";" << GameConstants::PLAYER_COLOR_NAMES[entry.player] << ";" << entry.team.getNum() << ";" << entry.heroesCount << ";" << entry.townCount;
  42. for(auto & resource : resources)
  43. ss << ";" << entry.resources[resource];
  44. ss << "\r\n";
  45. }
  46. return ss.str();
  47. }
  48. VCMI_LIB_NAMESPACE_END