Bladeren bron

Optionen zum Abfragen von Account Ids und Account Namen zum MinigameClient hinzugeügt

Kolja Strohm 6 jaren geleden
bovenliggende
commit
434a624048
3 gewijzigde bestanden met toevoegingen van 102 en 1 verwijderingen
  1. 6 1
      Include/KSGNetwork.h
  2. 91 0
      KSGNetwork/MinigameClient.cpp
  3. 5 0
      KSGNetwork/MinigameClient.h

+ 6 - 1
Include/KSGNetwork.h

@@ -992,7 +992,12 @@ namespace KSGClient
     public:
         // verbindet sich mit dem zugewiesenen Minigame Server
         //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
-        virtual bool verbinde() = 0; 
+        virtual bool verbinde() = 0;
+        // Gibt die Id des aktuell spielenden Accounts zurück
+        virtual int getAccountId() = 0;
+        // Gibt den Anzeigenamen eines bestimmten Accounts zurück
+        //  id: Die id des Accounts
+        virtual Text *getAccountName( int id ) = 0;
         // Ermittelt die liste mit allen Optionen zu einem Minigame zurück, zu denen es Welt beste Scores gibt
         //  mName: Der Name des Minigames
         //  zOptionList: Enthält nach erfolgreichem Aufruf eine Liste mit Optionen

+ 91 - 0
KSGNetwork/MinigameClient.cpp

@@ -89,6 +89,97 @@ bool MinigameClient::verbinde()
     return 1;
 }
 
+// Gibt die Id des aktuell spielenden Accounts zurück
+int MinigameClient::getAccountId()
+{
+    cs.lock();
+    if( !k )
+    {
+        if( !verbinde() )
+        {
+            err = "Der Client ist nicht verbunden.";
+            cs.unlock();
+            return 0;
+        }
+    }
+    k->sendeEncrypted( "\xB", 1 );
+    char ret = 0;
+    k->getNachrichtEncrypted( &ret, 1 );
+    if( ret == 1 )
+    {
+        int acc = 0;
+        k->getNachrichtEncrypted( (char*)&acc, 4 );
+        cs.unlock();
+        return acc;
+    }
+    if( ret == 3 )
+    {
+        char l = 0;
+        k->getNachrichtEncrypted( &l, 1 );
+        char *fehler = new char[ l + 1 ];
+        fehler[ l ] = 0;
+        k->getNachrichtEncrypted( fehler, l );
+        err = fehler;
+        delete[] fehler;
+        cs.unlock();
+        return 0;
+    }
+    err = "Unbekannter Fehler";
+    cs.unlock();
+    return 0;
+}
+
+// Gibt den Anzeigenamen eines bestimmten Accounts zurück
+//  id: Die id des Accounts
+Text *MinigameClient::getAccountName( int id )
+{
+    cs.lock();
+    if( !k )
+    {
+        if( !verbinde() )
+        {
+            err = "Der Client ist nicht verbunden.";
+            cs.unlock();
+            return 0;
+        }
+    }
+    k->sendeEncrypted( "\xC", 1 );
+    char ret = 0;
+    k->getNachrichtEncrypted( &ret, 1 );
+    if( ret == 1 )
+    {
+        k->sendeEncrypted( (char*)&id, 4 );
+        k->getNachrichtEncrypted( &ret, 1 );
+        if( ret == 1 )
+        {
+            char l;
+            k->getNachrichtEncrypted( &l, 1 );
+            char *buff = new char[ l + 1 ];
+            buff[ l ] = 0;
+            k->getNachrichtEncrypted( buff, l );
+            cs.unlock();
+            Text *ret = new Text( buff );
+            delete[] buff;
+            return ret;
+        }
+    }
+    if( ret == 3 )
+    {
+        char l = 0;
+        k->getNachrichtEncrypted( &l, 1 );
+        char *fehler = new char[ l + 1 ];
+        fehler[ l ] = 0;
+        k->getNachrichtEncrypted( fehler, l );
+        err = fehler;
+        delete[] fehler;
+        cs.unlock();
+        return 0;
+    }
+    err = "Unbekannter Fehler";
+    cs.unlock();
+    return 0;
+}
+
 // Ermittelt die liste mit allen Optionen zu einem Minigame zurück, zu denen es Welt beste Scores gibt
 //  mName: Der Name des Minigames
 //  zOptionList: Enthält nach erfolgreichem Aufruf eine Liste mit Optionen

+ 5 - 0
KSGNetwork/MinigameClient.h

@@ -28,6 +28,11 @@ namespace KSGClient
         // verbindet sich mit dem zugewiesenen Minigame Server
         //  Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst
         bool verbinde() override;
+        // Gibt die Id des aktuell spielenden Accounts zurück
+        int getAccountId() override;
+        // Gibt den Anzeigenamen eines bestimmten Accounts zurück
+        //  id: Die id des Accounts
+        Text *getAccountName( int id ) override;
         // Ermittelt die liste mit allen Optionen zu einem Minigame zurück, zu denen es Welt beste Scores gibt
         //  mName: Der Name des Minigames
         //  zOptionList: Enthält nach erfolgreichem Aufruf eine Liste mit Optionen