diff --git a/RocketAnalytics-PlayerStatParser/RocketAnalytics-PlayerStatParser.vcxproj b/RocketAnalytics-PlayerStatParser/RocketAnalytics-PlayerStatParser.vcxproj index d9be811..7951e9a 100644 --- a/RocketAnalytics-PlayerStatParser/RocketAnalytics-PlayerStatParser.vcxproj +++ b/RocketAnalytics-PlayerStatParser/RocketAnalytics-PlayerStatParser.vcxproj @@ -73,6 +73,10 @@ E:\Library\Development\RocketAnalytics-PlayerStatParser\RocketAnalytics-PlayerStatParser\lib\RocketAnalyticsLib\include\properties;E:\Library\Development\RocketAnalytics-PlayerStatParser\RocketAnalytics-PlayerStatParser\lib\RocketAnalyticsLib\include;E:\Library\Development\RocketAnalytics-PlayerStatParser\RocketAnalytics-PlayerStatParser\include;$(IncludePath) E:\Library\Development\RocketAnalytics-PlayerStatParser\RocketAnalytics-PlayerStatParser\lib\RocketAnalyticsLib\src\properties;E:\Library\Development\RocketAnalytics-PlayerStatParser\RocketAnalytics-PlayerStatParser\src;E:\Library\Development\RocketAnalytics-PlayerStatParser\RocketAnalytics-PlayerStatParser\lib\RocketAnalyticsLib\src;$(SourcePath) + + E:\Library\Development\RocketAnalytics-PlayerStatParser\RocketAnalytics-PlayerStatParser\lib\RocketAnalyticsLib\include\properties;E:\Library\Development\RocketAnalytics-PlayerStatParser\RocketAnalytics-PlayerStatParser\lib\RocketAnalyticsLib\include;E:\Library\Development\RocketAnalytics-PlayerStatParser\RocketAnalytics-PlayerStatParser\include;$(IncludePath) + E:\Library\Development\RocketAnalytics-PlayerStatParser\RocketAnalytics-PlayerStatParser\lib\RocketAnalyticsLib\src\properties;E:\Library\Development\RocketAnalytics-PlayerStatParser\RocketAnalytics-PlayerStatParser\lib\RocketAnalyticsLib\src;E:\Library\Development\RocketAnalytics-PlayerStatParser\RocketAnalytics-PlayerStatParser\src;$(SourcePath) + Level3 @@ -117,6 +121,7 @@ true true true + stdcpp17 true diff --git a/RocketAnalytics-PlayerStatParser/src/RocketAnalyticsPlayerStatParser.cpp b/RocketAnalytics-PlayerStatParser/src/RocketAnalyticsPlayerStatParser.cpp index 8d76d6e..4cb0911 100644 --- a/RocketAnalytics-PlayerStatParser/src/RocketAnalyticsPlayerStatParser.cpp +++ b/RocketAnalytics-PlayerStatParser/src/RocketAnalyticsPlayerStatParser.cpp @@ -20,22 +20,23 @@ using std::cout; using std::cin; using std::clog; using std::endl; -using std::map; +using std::vector; using std::pair; using std::ofstream; using std::stringstream; namespace filesystem = std::experimental::filesystem::v1; -vector> get_stats(vector properties); -int get_winning_team(vector properties); -string create_stat_csv(map players); +void set_mvp(vector& player_records, int winning_team); +vector> get_stats(const vector& properties); +int get_winning_team(const vector& properties); +string create_stat_csv(const vector& players); int main() { - const string version = "1.1"; + const string version = "1.2"; const string default_file_name = "player_stats"; const string file_extension = ".csv"; - map players; + vector players; string replay_dir; string dest_dir; @@ -75,23 +76,18 @@ int main() { 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) { + vector player_stat_records; + for (const 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; - } + player_stat_records.push_back(player); } - players[highest_score_player.onlineID].mvp += 1; + set_mvp(player_stat_records, winning_team); + + players.insert( + players.begin(), + player_stat_records.begin(), + player_stat_records.end()); } cout << endl; @@ -100,8 +96,7 @@ int main() { cout << "Please enter the output filename (no spaces):" << endl; cin >> output_file_name; - string output_filepath = dest_dir + "\\" + output_file_name + - file_extension; + string output_filepath = dest_dir + "\\" + output_file_name + file_extension; ofstream output_file(output_filepath); output_file << create_stat_csv(players); @@ -110,7 +105,25 @@ int main() { return 0; } -vector> get_stats(vector properties) { +void set_mvp(vector& player_records, int winning_team) { + Player highest_score_player; + + for (auto& player : player_records) { + if (player.team == winning_team && + player.score > highest_score_player.score) { + highest_score_player = player; + } + } + + for (auto& player : player_records) { + if (player.onlineID == highest_score_player.onlineID) { + ++player.mvp; + return; + } + } +} + +vector> get_stats(const vector& properties) { vector> stats; for (Property prop : properties) { if (prop.get_name() == "PlayerStats") { @@ -121,7 +134,7 @@ vector> get_stats(vector properties) { return stats; } -int get_winning_team(vector properties) { +int get_winning_team(const vector& properties) { int team_0_score = 0; int team_1_score = 0; for (Property prop : properties) { @@ -135,14 +148,14 @@ int get_winning_team(vector properties) { return team_0_score > team_1_score ? 0 : 1; } -string create_stat_csv(map players) { +string create_stat_csv(const vector& players) { stringstream csv; csv << "Player Stats generated by RocketAnalyticsPlayerStatsParser.\n" << "Unique ID,Team,Name,Platform,Online ID,Games Played,MVPs,Score," << "Goals,Assists,Saves,Shots\n"; int count = 1; - for (auto const&[_, player] : players) { + for (auto const& player : players) { csv << count << ",," << player.name << "," <<