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 << "," <<