diff options
Diffstat (limited to 'Minecraft.Client/Orbis/Orbis_PlayerUID.h')
| -rw-r--r-- | Minecraft.Client/Orbis/Orbis_PlayerUID.h | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/Minecraft.Client/Orbis/Orbis_PlayerUID.h b/Minecraft.Client/Orbis/Orbis_PlayerUID.h new file mode 100644 index 00000000..422a2334 --- /dev/null +++ b/Minecraft.Client/Orbis/Orbis_PlayerUID.h @@ -0,0 +1,85 @@ + + + +#pragma once + + +// Note - there are now 3 types of PlayerUID +// (1) A full online ID - either the primary login, or a sub-signin through to PSN. This has m_onlineID set up as a normal SceNpOnlineId, with dummy[0] set to 0 +// (2) An offline ID, where there is also a primary login on the system. This has m_onlineID set up to copy the primary SceNpOnlineId, except with dummy[0] set to the controller ID of this other player +// (3) An offline ID, where there isn't a primary PSN login on the system. This has SceNpOnlineId fully zeroed. + + +class PlayerUID +{ + char m_onlineID[SCE_NP_ONLINEID_MAX_LENGTH]; + char term; + bool m_bSignedIntoPSN : 1; + unsigned char m_quadrant : 2; + uint8_t m_macAddress[SCE_NET_ETHER_ADDR_LEN]; + SceUserServiceUserId m_userID; + +public: + + class Hash + { + public: + std::size_t operator()(const PlayerUID& k) const; + }; + + PlayerUID(); + PlayerUID(SceUserServiceUserId userID, SceNpOnlineId& onlineID, bool bSignedInPSN, int quadrant); + PlayerUID(std::wstring fromString); + + bool operator==(const PlayerUID& rhs) const; + bool operator!=(const PlayerUID& rhs); + void setCurrentMacAddress(); + std::wstring macAddressStr() const; + std::wstring userIDStr() const; + std::wstring toString() const; + void setOnlineID(SceNpOnlineId& id, bool bSignedIntoPSN); + void setUserID(unsigned int id); + + + const char* getOnlineID() const { return m_onlineID; } + SceUserServiceUserId getUserID() const { return m_userID; } + int getQuadrant() const { return m_quadrant; } + bool isPrimaryUser() const; // only true if we're on the local machine and signed into the first quadrant; + bool isSignedIntoPSN() const { return m_bSignedIntoPSN; } +private: +}; + +namespace std +{ + template <> + struct hash<PlayerUID> + { + size_t operator()(const PlayerUID& v) const + { + return PlayerUID::Hash()(v);///* my hash algorithm */; + + } + }; +} + + + + +class GameSessionUID +{ + char m_onlineID[SCE_NP_ONLINEID_MAX_LENGTH]; + char term; + bool m_bSignedIntoPSN : 1; + unsigned char m_quadrant : 2; +public: + GameSessionUID(); + GameSessionUID(int nullVal); + + bool operator==(const GameSessionUID& rhs) const; + bool operator!=(const GameSessionUID& rhs); + GameSessionUID& operator=(const PlayerUID& rhs); + + const char* getOnlineID() const { return m_onlineID; } + int getQuadrant() const { return m_quadrant; } + bool isSignedIntoPSN() const { return m_bSignedIntoPSN; } +}; |
