mirror of
https://github.com/vcmi/vcmi.git
synced 2025-01-26 03:52:01 +02:00
add some stats
This commit is contained in:
parent
b3b7729a6c
commit
58bfd27aad
@ -38,6 +38,8 @@ StatisticDataSetEntry StatisticDataSet::createEntry(const PlayerState * ps, cons
|
||||
scenarioHighScores.parameters.push_back(param);
|
||||
scenarioHighScores.isCampaign = false;
|
||||
|
||||
data.map = gs->map->name.toString();
|
||||
data.timestamp = std::time(0);
|
||||
data.day = gs->getDate(Date::DAY);
|
||||
data.player = ps->color;
|
||||
data.team = ps->team;
|
||||
@ -54,11 +56,13 @@ StatisticDataSetEntry StatisticDataSet::createEntry(const PlayerState * ps, cons
|
||||
data.mightMagicRatio = Statistic::getMightMagicRatio(ps);
|
||||
data.numMines = Statistic::getNumMines(gs, ps);
|
||||
data.score = scenarioHighScores.calculate().total;
|
||||
data.maxHeroLevel = Statistic::findBestHero(gs, ps->color)->level;
|
||||
data.maxHeroLevel = Statistic::findBestHero(gs, ps->color) ? Statistic::findBestHero(gs, ps->color)->level : 0;
|
||||
data.numBattlesNeutral = gs->statistic.values.numBattlesNeutral.count(ps->color) ? gs->statistic.values.numBattlesNeutral.at(ps->color) : 0;
|
||||
data.numBattlesPlayer = gs->statistic.values.numBattlesPlayer.count(ps->color) ? gs->statistic.values.numBattlesPlayer.at(ps->color) : 0;
|
||||
data.numWinBattlesNeutral = gs->statistic.values.numWinBattlesNeutral.count(ps->color) ? gs->statistic.values.numWinBattlesNeutral.at(ps->color) : 0;
|
||||
data.numWinBattlesPlayer = gs->statistic.values.numWinBattlesPlayer.count(ps->color) ? gs->statistic.values.numWinBattlesPlayer.at(ps->color) : 0;
|
||||
data.numHeroSurrendered = gs->statistic.values.numHeroSurrendered.count(ps->color) ? gs->statistic.values.numHeroSurrendered.at(ps->color) : 0;
|
||||
data.numHeroEscaped = gs->statistic.values.numHeroEscaped.count(ps->color) ? gs->statistic.values.numHeroEscaped.at(ps->color) : 0;
|
||||
|
||||
return data;
|
||||
}
|
||||
@ -69,6 +73,8 @@ std::string StatisticDataSet::toCsv()
|
||||
|
||||
auto resources = std::vector<EGameResID>{EGameResID::GOLD, EGameResID::WOOD, EGameResID::MERCURY, EGameResID::ORE, EGameResID::SULFUR, EGameResID::CRYSTAL, EGameResID::GEMS};
|
||||
|
||||
ss << "Map" << ";";
|
||||
ss << "Timestamp" << ";";
|
||||
ss << "Day" << ";";
|
||||
ss << "Player" << ";";
|
||||
ss << "Team" << ";";
|
||||
@ -87,7 +93,9 @@ std::string StatisticDataSet::toCsv()
|
||||
ss << "NumBattlesNeutral" << ";";
|
||||
ss << "NumBattlesPlayer" << ";";
|
||||
ss << "NumWinBattlesNeutral" << ";";
|
||||
ss << "NumWinBattlesPlayer";
|
||||
ss << "NumWinBattlesPlayer" << ";";
|
||||
ss << "NumHeroSurrendered" << ";";
|
||||
ss << "NumHeroEscaped";
|
||||
for(auto & resource : resources)
|
||||
ss << ";" << GameConstants::RESOURCE_NAMES[resource];
|
||||
for(auto & resource : resources)
|
||||
@ -96,6 +104,8 @@ std::string StatisticDataSet::toCsv()
|
||||
|
||||
for(auto & entry : data)
|
||||
{
|
||||
ss << entry.map << ";";
|
||||
ss << vstd::getFormattedDateTime(entry.timestamp, "%Y-%m-%dT%H-%M-%S") << ";";
|
||||
ss << entry.day << ";";
|
||||
ss << GameConstants::PLAYER_COLOR_NAMES[entry.player] << ";";
|
||||
ss << entry.team.getNum() << ";";
|
||||
@ -114,7 +124,9 @@ std::string StatisticDataSet::toCsv()
|
||||
ss << entry.numBattlesNeutral << ";";
|
||||
ss << entry.numBattlesPlayer << ";";
|
||||
ss << entry.numWinBattlesNeutral << ";";
|
||||
ss << entry.numWinBattlesPlayer;
|
||||
ss << entry.numWinBattlesPlayer << ";";
|
||||
ss << entry.numHeroSurrendered << ";";
|
||||
ss << entry.numHeroEscaped;
|
||||
for(auto & resource : resources)
|
||||
ss << ";" << entry.resources[resource];
|
||||
for(auto & resource : resources)
|
||||
|
@ -21,6 +21,8 @@ class CGMine;
|
||||
|
||||
struct DLL_LINKAGE StatisticDataSetEntry
|
||||
{
|
||||
std::string map;
|
||||
time_t timestamp;
|
||||
int day;
|
||||
PlayerColor player;
|
||||
TeamID team;
|
||||
@ -42,9 +44,13 @@ struct DLL_LINKAGE StatisticDataSetEntry
|
||||
int numBattlesPlayer;
|
||||
int numWinBattlesNeutral;
|
||||
int numWinBattlesPlayer;
|
||||
int numHeroSurrendered;
|
||||
int numHeroEscaped;
|
||||
|
||||
template <typename Handler> void serialize(Handler &h)
|
||||
{
|
||||
h & map;
|
||||
h & timestamp;
|
||||
h & day;
|
||||
h & player;
|
||||
h & team;
|
||||
@ -66,6 +72,8 @@ struct DLL_LINKAGE StatisticDataSetEntry
|
||||
h & numBattlesPlayer;
|
||||
h & numWinBattlesNeutral;
|
||||
h & numWinBattlesPlayer;
|
||||
h & numHeroSurrendered;
|
||||
h & numHeroEscaped;
|
||||
}
|
||||
};
|
||||
|
||||
@ -84,6 +92,8 @@ public:
|
||||
std::map<PlayerColor, int> numBattlesPlayer;
|
||||
std::map<PlayerColor, int> numWinBattlesNeutral;
|
||||
std::map<PlayerColor, int> numWinBattlesPlayer;
|
||||
std::map<PlayerColor, int> numHeroSurrendered;
|
||||
std::map<PlayerColor, int> numHeroEscaped;
|
||||
|
||||
template <typename Handler> void serialize(Handler &h)
|
||||
{
|
||||
@ -91,6 +101,8 @@ public:
|
||||
h & numBattlesPlayer;
|
||||
h & numWinBattlesNeutral;
|
||||
h & numWinBattlesPlayer;
|
||||
h & numHeroSurrendered;
|
||||
h & numHeroEscaped;
|
||||
}
|
||||
};
|
||||
ValueStorage values;
|
||||
|
@ -572,10 +572,16 @@ void BattleResultProcessor::battleAfterLevelUp(const BattleID & battleID, const
|
||||
gameHandler->checkVictoryLossConditions(playerColors);
|
||||
|
||||
if (result.result == EBattleResult::SURRENDER)
|
||||
{
|
||||
gameHandler->gameState()->statistic.values.numHeroSurrendered[finishingBattle->loser]++;
|
||||
gameHandler->heroPool->onHeroSurrendered(finishingBattle->loser, finishingBattle->loserHero);
|
||||
}
|
||||
|
||||
if (result.result == EBattleResult::ESCAPE)
|
||||
{
|
||||
gameHandler->gameState()->statistic.values.numHeroEscaped[finishingBattle->loser]++;
|
||||
gameHandler->heroPool->onHeroEscaped(finishingBattle->loser, finishingBattle->loserHero);
|
||||
}
|
||||
|
||||
if (result.winner != 2 && finishingBattle->winnerHero && finishingBattle->winnerHero->stacks.empty()
|
||||
&& (!finishingBattle->winnerHero->commander || !finishingBattle->winnerHero->commander->alive))
|
||||
|
Loading…
x
Reference in New Issue
Block a user