diff --git a/RocketAnalytics-PlayerStatParser/src/Player.cpp b/RocketAnalytics-PlayerStatParser/src/Player.cpp index 584091a..184a412 100644 --- a/RocketAnalytics-PlayerStatParser/src/Player.cpp +++ b/RocketAnalytics-PlayerStatParser/src/Player.cpp @@ -30,6 +30,7 @@ namespace PlayerStatParser { platform = properties.at(1).get_value_as_string(); onlineID = properties.at(2).get_value_as_string(); team = stoi(properties.at(3).get_value_as_string()); + mvp = 0; score = stoi(properties.at(4).get_value_as_string()); goals = stoi(properties.at(5).get_value_as_string()); assists = stoi(properties.at(6).get_value_as_string()); diff --git a/RocketAnalytics-PlayerStatParser/src/RocketAnalyticsPlayerStatParser.cpp b/RocketAnalytics-PlayerStatParser/src/RocketAnalyticsPlayerStatParser.cpp index fbbe5e9..ad7760f 100644 --- a/RocketAnalytics-PlayerStatParser/src/RocketAnalyticsPlayerStatParser.cpp +++ b/RocketAnalytics-PlayerStatParser/src/RocketAnalyticsPlayerStatParser.cpp @@ -27,7 +27,8 @@ using std::stringstream; namespace filesystem = std::experimental::filesystem::v1; -vector> get_player_stats(vector properties); +vector> get_stats(vector properties); +int get_winning_team(vector properties); string create_stat_csv(map players); int main() { @@ -69,20 +70,29 @@ int main() { for (filesystem::path path : filesystem::directory_iterator(replay_dir)) { string replay_path = path.u8string(); cout << "Parsing " << replay_path << "\n"; - ReplayFile replay(replay_path); - vector replay_properties = - replay.get_header().get_properties(); - vector> player_stats = get_stats(replay_properties); + ReplayFile replay(replay_path); + vector properties = replay.get_header().get_properties(); + vector> player_stats = get_stats(properties); + int winning_team = get_winning_team(properties); + Player highest_score_player; for (auto player_info : player_stats) { Player player(player_info); + + if (player.team == winning_team && + player.score > highest_score_player.score) { + highest_score_player = player; + } + if (players.count(player.onlineID)) { players[player.onlineID] += player; } else { players[player.onlineID] = player; } } + cout << highest_score_player.name << ": " << highest_score_player.mvp << "\n"; + players[highest_score_player.onlineID].mvp += 1; } cout << endl; @@ -112,10 +122,24 @@ vector> get_stats(vector properties) { return stats; } +int get_winning_team(vector properties) { + int team_0_score = 0; + int team_1_score = 0; + for (Property prop : properties) { + if (prop.get_name() == "Team0Score") { + team_0_score = prop.get_value().property_value.int32; + } + else if (prop.get_name() == "Team1Score") { + team_1_score = prop.get_value().property_value.int32; + } + } + return team_0_score > team_1_score ? 0 : 1; +} + string create_stat_csv(map players) { stringstream csv; csv << "Player Stats generated by RocketAnalyticsPlayerStatsParser.\n" << - "Player #,Team,Name,Platform,Steam64,Games Played,MVPs,Score," << + "Unique ID,Team,Name,Platform,Online ID,Games Played,MVPs,Score," << "Goals,Assists,Saves,Shots\n"; int count = 1;