aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Orbis/Orbis_PlayerUID.h
diff options
context:
space:
mode:
authordaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
committerdaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
commitb691c43c44ff180d10e7d4a9afc83b98551ff586 (patch)
tree3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.Client/Orbis/Orbis_PlayerUID.h
parentdef8cb415354ac390b7e89052a50605285f1aca9 (diff)
Initial commit
Diffstat (limited to 'Minecraft.Client/Orbis/Orbis_PlayerUID.h')
-rw-r--r--Minecraft.Client/Orbis/Orbis_PlayerUID.h85
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; }
+};