diff options
author | Robert Pösel <robyer@seznam.cz> | 2015-05-19 18:51:11 +0000 |
---|---|---|
committer | Robert Pösel <robyer@seznam.cz> | 2015-05-19 18:51:11 +0000 |
commit | 867fce85e3d993662eb07af5376e178e4c0a2e45 (patch) | |
tree | a3d7aa3c64fc7adedee7af5278bc52d57894b83c /protocols | |
parent | d04e6d87584b145046a62c660fac99bfd1acc947 (diff) |
Steam: Fix MirVer when user is connected from different clients
git-svn-id: http://svn.miranda-ng.org/main/trunk@13698 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols')
-rw-r--r-- | protocols/Steam/src/steam_contacts.cpp | 33 |
1 files changed, 14 insertions, 19 deletions
diff --git a/protocols/Steam/src/steam_contacts.cpp b/protocols/Steam/src/steam_contacts.cpp index 13bfcba0a4..8f8455b710 100644 --- a/protocols/Steam/src/steam_contacts.cpp +++ b/protocols/Steam/src/steam_contacts.cpp @@ -183,34 +183,29 @@ void CSteamProto::UpdateContact(MCONTACT hContact, JSONNODE *data) // client node = json_get(data, "personastateflags"); int stateflags = node ? json_as_int(node) : -1; - switch (stateflags) - { - case 0: - { - // nothing special, either standard client or in different status (only online, I want to play, I want to trade statuses support this flags) - WORD status = getWord(hContact, "Status", ID_STATUS_OFFLINE); - if (status == ID_STATUS_ONLINE || status == ID_STATUS_OUTTOLUNCH || status == ID_STATUS_FREECHAT) - setTString(hContact, "MirVer", _T("Steam")); - } - break; - case 256: + + if (stateflags == 0) { + // nothing special, either standard client or in different status (only online, I want to play, I want to trade statuses support this flags) + WORD status = getWord(hContact, "Status", ID_STATUS_OFFLINE); + if (status == ID_STATUS_ONLINE || status == ID_STATUS_OUTTOLUNCH || status == ID_STATUS_FREECHAT) + setTString(hContact, "MirVer", _T("Steam")); + } else if (stateflags & 2) { + // game + setTString(hContact, "MirVer", _T("Steam (in game)")); + } else if (stateflags & 256) { // on website setTString(hContact, "MirVer", _T("Steam (website)")); - break; - case 512: + } else if (stateflags & 512) { // on mobile setTString(hContact, "MirVer", _T("Steam (mobile)")); - break; - case 1024: + } else if (stateflags & 1024) { // big picture mode setTString(hContact, "MirVer", _T("Steam (Big Picture)")); - break; - default: + } else { // none/unknown (e.g. when contact is offline) delSetting(hContact, "MirVer"); - break; } - + // playing game node = json_get(data, "gameid"); DWORD gameId = node ? atol(_T2A(ptrT(json_as_string(node)))) : 0; |