diff --git a/src/config/player_manager.cpp b/src/config/player_manager.cpp index d7c5adefd..e2d9d09d5 100644 --- a/src/config/player_manager.cpp +++ b/src/config/player_manager.cpp @@ -264,6 +264,8 @@ bool PlayerManager::checkSteamAccount(const irr::core::stringw ¤t_name) } // if steam and current name are different m_current_player = getPlayer(i); + // Update the steam name in case that the user did a rename + m_current_player->setSteamName(Steam::get()->getUserNameWchar()); return true; } // same steam user id } // for i in m_all_players @@ -279,8 +281,10 @@ bool PlayerManager::checkSteamAccount(const irr::core::stringw ¤t_name) Log::warn("PlayerManager", "Connecting '%ls' to current steam account '%ls'.", current_name.c_str(), steam_name.c_str()); - m_all_players[i].setSteamUserID(steam_id); + m_current_player = getPlayer(i); + m_current_player->setSteamUserID(steam_id); + m_current_player->setSteamName(steam_name); return true; } // if steam and current name are different } // for i in m_all_players diff --git a/src/config/player_profile.cpp b/src/config/player_profile.cpp index c90d8aa42..8d3bb47b8 100644 --- a/src/config/player_profile.cpp +++ b/src/config/player_profile.cpp @@ -40,13 +40,16 @@ PlayerProfile::PlayerProfile(const core::stringw& name, bool is_guest) m_magic_number = 0xABCD1234; #endif if(Steam::get()->isSteamAvailable() && - name == StringUtils::utf8ToWide(Steam::get()->getUserName()) ) + name == Steam::get()->getUserNameWchar() ) { - m_steam_id = Steam::get()->getSteamID(); + m_steam_id = Steam::get()->getSteamID(); + m_steam_name = Steam::get()->getUserNameWchar(); } else - m_steam_id = ""; - + { + m_steam_id = ""; + m_steam_name = ""; + } m_local_name = name; m_is_guest_account = is_guest; m_use_frequency = is_guest ? -1 : 0; @@ -78,6 +81,7 @@ PlayerProfile::PlayerProfile(const core::stringw& name, bool is_guest) PlayerProfile::PlayerProfile(const XMLNode* node) { m_steam_id = ""; + m_steam_name = ""; m_saved_session = false; m_saved_token = ""; m_saved_user_id = 0; @@ -90,6 +94,7 @@ PlayerProfile::PlayerProfile(const XMLNode* node) node->getAndDecode("name", &m_local_name ); node->get("steam-id", &m_steam_id ); + node->get("steam-name", &m_steam_name ); node->get("guest", &m_is_guest_account ); node->get("use-frequency", &m_use_frequency ); node->get("unique-id", &m_unique_id ); @@ -230,7 +235,9 @@ void PlayerProfile::save(UTFWriter &out) << L"\" guest=\"" << m_is_guest_account << L"\" use-frequency=\"" << m_use_frequency << L"\"\n"; - out << L" steam-id=\"" << m_steam_id << L"\"\n"; + out << L" steam-id=\"" << m_steam_id + << L"\" steam-name=\"" << m_steam_name << L"\"\n"; + out << L" icon-filename=\"" << m_icon_filename << L"\"\n"; out << L" unique-id=\"" << m_unique_id diff --git a/src/config/player_profile.hpp b/src/config/player_profile.hpp index 140c6f5d5..bbd0ca8d2 100644 --- a/src/config/player_profile.hpp +++ b/src/config/player_profile.hpp @@ -102,6 +102,10 @@ private: * the user is logged into steam! */ std::string m_steam_id; + /** Name of the corresponding steam account. Empty if this is + * not a steam account. */ + core::stringw m_steam_name; + /** The online user name used last (empty if not used online). */ core::stringw m_last_online_name; @@ -314,6 +318,13 @@ public: /** Sets the steam user id of this player. */ void setSteamUserID(const std::string &id) { m_steam_id = id; } // ------------------------------------------------------------------------ + /** Returns the steam name of the connected steam account (or "" if + * this account is not a steam account. */ + const core::stringw &getSteamName() const { return m_steam_name; } + // ------------------------------------------------------------------------ + /** Sets the steam name of this account. */ + void setSteamName(const core::stringw &name) { m_steam_name = name; } + // ------------------------------------------------------------------------ }; // class PlayerProfile #endif