#pragma once #include namespace Framework { class Text; } namespace Network { class Klient; } namespace KSGClient { // Enthält die Daten eines Spielers zu einem vergangenen Spiel struct SpielHistorieSpielerDaten { protected: int ref; // Reference Counter public: Framework::Text *name; // Der Sichtabe Name des Spielers int punkte; // Die Punkte, die der Spieler in dem Spiel gewonnen / verloren hat Framework::Text *status; // Der Status des Spielers in dem Spiel (verloren, gewonnen, nicht anwesend, beobachter, unentschieden) int farbe; // Die Farbe des Spielers // Erhöht den Reference Counter um 1 un gibt this zurück virtual SpielHistorieSpielerDaten *getThis() = 0; // Verringert den Reference Counter um 1 und gibt 0 zurück. // Falls der Reference Counter nach dem Aufruf auf 0 ist löscht sich das Objekt selbst virtual SpielHistorieSpielerDaten *release() = 0; }; // Enthält die Datein eines Teams zu einem vergangenen Spiel struct SpielHistorieTeamDaten { protected: int ref; // Reference Counter public: Framework::Text *name; // Der Sichtabe Name des Teams int sAnzahl; // Die Anzahl der Spieler im Team Framework::Text *status; // Der Status des Teams (verloren, gewonnen, beobachter, unentschieden) int farbe; // Die Farbe des Teams Framework::RCArray< SpielHistorieSpielerDaten > *spieler; // Eine Liste mit den Spielerdaten zu den Spielern aus dem Team // Erhöht den Reference Counter um 1 un gibt this zurück virtual SpielHistorieTeamDaten *getThis() = 0; // Verringert den Reference Counter um 1 und gibt 0 zurück. // Falls der Reference Counter nach dem Aufruf auf 0 ist löscht sich das Objekt selbst virtual SpielHistorieTeamDaten *release() = 0; }; // Enthält Daten zu einem vergangenen Spiel struct SpielHistorieDaten { protected: int ref; // Reference Counter public: int id; // Die Id des vergangenen Spiels int karteId; // Die Id der Karte, welche gespielt wurde Framework::Text *spiel; // Der Name des Spiels, welches gespielt wurde Framework::Text *karte; // Der Name der Karte, welche gespielt wurde Framework::Text *datum; // Der Zeitpunkt, an dem das Spiel Statfand Framework::Text *status; // Der Status des Spielers, über welchen die Statistik angefragt wurde Framework::Text *dauer; // Die Dater des Spiels Framework::Text *spielStatus; // Der Status des Spiels (beginnt, läuft, abgebrochen, fehlerhaft, beendet, unbewertet) Framework::Text *gewinner; // Der Name des Gewinners int sAnzahl; // Die Anzahl der Spieler Framework::RCArray< SpielHistorieTeamDaten > *teams; // Die Daten der Teams des Spiels // Erhöht den Reference Counter um 1 un gibt this zurück virtual SpielHistorieDaten *getThis() = 0; // Verringert den Reference Counter um 1 und gibt 0 zurück. // Falls der Reference Counter nach dem Aufruf auf 0 ist löscht sich das Objekt selbst virtual SpielHistorieDaten *release() = 0; }; // Enthält eine Liste von Spiel Daten aus vergangenen Spielen struct SpielHistorieListe { protected: int ref; // Reference Counter public: Framework::RCArray< SpielHistorieDaten > *spiele; // Eine Liste mit den Daten zu vergangenen Spielen // Erhöht den Reference Counter um 1 un gibt this zurück virtual SpielHistorieListe *getThis() = 0; // Verringert den Reference Counter um 1 und gibt 0 zurück. // Falls der Reference Counter nach dem Aufruf auf 0 ist löscht sich das Objekt selbst virtual SpielHistorieListe *release() = 0; }; struct AccountInfo { protected: int ref; // Reference Counter public: int id; // Die Id des Accounts Framework::Text *name; // Der angezeigte Name des Accounts Framework::Text zuletztOnline; // Der Zeitpunkt, zu dem der Account zuletzt online war Framework::Text letztesSpiel; // Der Name des zuletzt gespielten online Spiels Framework::Text letzteKarte; // Der Name der zuletzt gespielten Karte Framework::Text punkte; // Die Punkte des Spielers in dem Spiel // Erhöht den Reference Counter um 1 un gibt this zurück virtual AccountInfo *getThis() = 0; // Verringert den Reference Counter um 1 und gibt 0 zurück. // Falls der Reference Counter nach dem Aufruf auf 0 ist löscht sich das Objekt selbst virtual AccountInfo *release() = 0; }; struct AccountActivityInfo { protected: int ref; // Reference Counter public: Framework::Text datum; // Das Datum für das die Werte gillt double stOnline; // Die Anzahl der Stunden, die der Account Online war double stGespielt; // Die Anzahl der Stunden, die der Account in online Spielen verbracht hat int anzSpiele; // Die Anzahl der gespielten online Spiele int anzGewonnen; // Die Anzahl der gewonnenen online Spiele // Erhöht den Reference Counter um 1 un gibt this zurück virtual AccountActivityInfo *getThis() = 0; // Verringert den Reference Counter um 1 und gibt 0 zurück. // Falls der Reference Counter nach dem Aufruf auf 0 ist löscht sich das Objekt selbst virtual AccountActivityInfo *release() = 0; }; struct ChatServerNachricht { protected: int ref; // Reference Counter public: char type; // Typ der Nachricht Framework::Text *message; // Text der Nachricht int account; // Beteiligter Account int gruppe; // Beteiligte Gruppe int chatroom; // Beteiligter Chatraum Framework::Array< int > *ids; // Liste mit Account Ids // Erhöht den Reference Counter um 1 un gibt this zurück virtual ChatServerNachricht *getThis() = 0; // Verringert den Reference Counter um 1 und gibt 0 zurück. // Falls der Reference Counter nach dem Aufruf auf 0 ist löscht sich das Objekt selbst virtual ChatServerNachricht *release() = 0; }; // Wird benutzt, um die Verbindung mit den Servern aufrecht zu erhalten. Bei einem Verbindungsabbruch wird der Client automatisch abgemeldet class ErhaltungServerClient { }; // Wird benutzt, um aktualisierte Spieldateien herunterzuladen class PatchServerClient { }; // Wird verwendet um News Oberflächen abzufragen (KSG Script Seiten) class NewsServerClient { }; // Wird benutzt, um Accounts zu erstellen zu ändern oder zu löschen class RegisterServerClient { public: // verbindet ich mit dem Register Server // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst virtual bool verbinde() = 0; // Sendet eine Anfrage auf Erstellung eines neuen Accounts. Ein neuer Account kann erst verwendet werden, wenn ein Link in der Bestätigungsemail angeklickt wurde. // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst // name: Der Login Name des Accounts // pass: Das Login Passwort des Accounts // geheim: Das Geheimnis des Accounts // eMail: Die EMail Adresse an die die bestätigungs EMail gesendet werden soll // jahr: Das Jahr des Geburtsdatums // monat: Der Monat des Geburtstages // tag: Der Tag des Geburtstages virtual bool accountErstellen( const char *name, const char *pass, const char *geheim, const char *eMail, unsigned short jahr, char monat, char tag ) = 0; // Sendet eine Anfrage auf Löschung eines neuen Accounts. Ein neuer Account kann erst gelöscht werden, wenn ein Link in der Bestätigungsemail angeklickt wurde. // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst // name: Der Login Name des Accounts // pass: Das Login Passwort des Accounts // geheim: Das Geheimnis des Accounts virtual bool accountLöschen( const char *name, const char *pass, const char *geheim ) = 0; // Ändert das Passwort eines Accounts // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst // name: Der Login Name des Accounts // pass: Das Login Passwort des Accounts // geheim: Das Geheimnis des Accounts // nPass: Das neue Passwort des Accounts virtual bool passwortÄndern( const char *name, const char *pass, const char *geheim, const char *nPass ) = 0; // Ändert die EMail Adresse eines Accounts // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst // name: Der Login Name des Accounts // pass: Das Login Passwort des Accounts // geheim: Das Geheimnis des Accounts // nEMail: Die neue EMail Adresse virtual bool eMailÄndern( const char *name, const char *pass, const char *geheim, const char *nEMail ) = 0; // Ändert das Geheimnis eines Accounts // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst // name: Der Login Name des Accounts // pass: Das Login Passwort des Accounts // geheim: Das Geheimnis des Accounts // nGeheim: Das neue Geheimnis virtual bool geheimnisÄndern( const char *name, const char *pass, const char *geheim, const char *nGeheim ) = 0; // Sendet eine Anfrage auf Name Vergessen. Der Name wird an die angegebene EMail Adresse gesendet // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst // pass: Das Login Passwort des Accounts // geheim: Das Geheimnis des Accounts virtual bool nameVergessen( const char *pass, const char *geheim ) = 0; // Sendet eine Anfrage auf Passwort Vergessen. Es wird ein Link an die angegebene Email Adresse gesendet, über den ein neues Passwort vergeben werden kann // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst // name: Der Login Name des Accounts // geheim: Das Geheimnis des Accounts virtual bool passwortVergessen( const char *name, const char *geheim ) = 0; // Sendet eine Anfrage auf Geheimnis Vergessen. Das Geheimnis wird an die angegebene EMail Adresse gesendet // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst // name: Der Login Name des Accounts // pass: Das Login Passwort des Accounts virtual bool geheimnisVergessen( const char *name, const char *pass ) = 0; // Sendet eine Anfrage auf EMail Vergessen. Die EMail Adresse wird direkt vom Server zurückgegeben // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst // name: Der Login Name des Accounts // pass: Das Login Passwort des Accounts // geheim: Das Geheimnis des Accounts // eMail: Ein Zeiger auf eine Zeichenkette. Diese wird bei einem Erfolgreichen Aufruf auf die EMail Adresse gesetzt und muss manuell mit delete[] gelöscht werden virtual bool eMailVergessen( const char *name, const char *pass, const char *geheim, char **eMail ) = 0; // Erhält die Verbindung aufrecht // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst // Sollte während einer bestehenden Verbindung etwa einmal alle 60 Sekunden aufgerufen werden, da sonst der Router die Verbindung automatisch trennt virtual bool keepAlive() = 0; // Trennt die Verbindung zum Server // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst // Sollte erst nach einem erfolgreichen Aufruf von verbinde aufgerufen werden virtual bool trenne() = 0; // Gibt 1 zurück, falls der Client verbunden ist, 0 sonst virtual bool istVerbunden() const = 0; // gibt den Letzten Fehlertext zuück // sollte erst aufgerufen werden, nachdem eine andere aufgerufene Methode fehlgeschlagen ist virtual char *getLetzterFehler() const = 0; // Erhöht den Reference Counter um 1 un gibt this zurück virtual RegisterServerClient *getThis() = 0; // Verringert den Reference Counter um 1 und gibt 0 zurück. // Falls der Reference Counter nach dem Aufruf auf 0 ist löscht sich das Objekt selbst virtual RegisterServerClient *release() = 0; }; // Wird verwendet um sich einzuloggen oder auszuloggen class LoginServerClient { public: // verbindet sich mit dem zugewiesenen Login Server // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst virtual bool verbinde() = 0; // Der Client wird beim Serversystem in einen Account eingeloggt // gibt bei Erfolg 1 zurück // Sollte erst nach einem erfolgreichen Aufruf von verbinde aufgerufen werden virtual int login( const char *name, const char *pass ) = 0; // Diese Funktion wird in der Zukunft mal implementiert werden. Mit dem Geheimnis des Accounts können so andere Clients, welche bereits in dem Account eingeloggt werden rausgeschmissen werden. virtual bool kick( const char *geheim ) = 0; // logt den Account aus // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst // sollte erst aufgerufen werden, nachdem ein erfolgreicher Aufruf von login erfolg ist virtual bool logout() = 0; // Erhält die Verbindung aufrecht // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst // Sollte während einer bestehenden Verbindung etwa einmal alle 60 Sekunden aufgerufen werden, da sonst der Router die Verbindung automatisch trennt virtual bool keepAlive() = 0; // Trennt die Verbindung zum Server // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst // Sollte erst nach einem erfolgreichen Aufruf von verbinde aufgerufen werden virtual bool trenne() = 0; // Gibt 1 zurück, falls der Client verbunden ist, 0 sonst virtual bool istVerbunden() const = 0; // Gibt die Id des Accounts zurück, in den sich der Client eingeloggt hat. // sollte erst aufgerufen werden, nachdem ein erfolgreicher Aufruf von login erfolg ist virtual int getAccountId() const = 0; // gibt den Letzten Fehlertext zuück // sollte erst aufgerufen werden, nachdem eine andere aufgerufene Methode fehlgeschlagen ist virtual char *getLetzterFehler() const = 0; // Erhöht den Reference Counter um 1 un gibt this zurück virtual LoginServerClient *getThis() = 0; // Verringert den Reference Counter um 1 und gibt 0 zurück. // Falls der Reference Counter nach dem Aufruf auf 0 ist löscht sich das Objekt selbst virtual LoginServerClient *release() = 0; }; // Wird verwendet um informationen über Accounts abzufragen // Kann nur von eingeloggten Clients verwendet werden class InformationServerClient { public: // verbindet ich mit dem zugewiesenen Informaion Server // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst virtual bool verbinde() = 0; // fragt nach dem Informationstext // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst // txt: Ein Zeiger auf ein Text Objekt, welches bei einem erfolgreichen Aufruf den Informationstext enthält // typ: ein Zeieger auf ein Integer, welches bei einem erfolgreichen Aufruf den Typ der Information enthält virtual bool getInformationText( Framework::Text *txt, int *typ ) = 0; // fragt, ob das entsprechende Spiel vom Server gesperrt wurde // spielId: Die Id des Spiels // Gibt 1 zurück, falls das Spiel gespielt werden darf, 0 sonnst virtual bool istSpielErlaubt( int spielId ) = 0; // fragt, ob die entsprechende Karte vom Server gesperrt wurde // karteId: Die Id der Karte // Gibt 1 zurück, falls die Karte gespielt werden darf, 0 sonnst virtual bool istKarteErlaubt( int karteId ) = 0; // Ermittelt die Id einer Karte // name: Der Name der Karte // Gibt bei misserfolg 0 zurück virtual int getKarteId( char *name ) = 0; // Fragt nach der Id eines Spiels // name: Der Name des Spiels // Gibt bei misserfolg 0 zurück virtual int getSpielId( char *name ) = 0; // fragt nach dem Namen eines Accounts // accountId: Die Id des Accounts // Gibt bei misserfolg 0 zurück virtual Framework::Text *getSpielerName( int accountId ) = 0; // fragt nach der Spiel Statistik eines Accounts // accountId: Die Id des Accounts // spielId: Die Id des Spiels // werte: Nach erfolgreichem Aufruf enthält die Liste die Statistik werte (gespielt, gewonnen, verloren, punkte, bw0, bw1, bw2, bw3, bw4, bw5) virtual bool getSpielStatistik( int accountId, int spielId, Framework::Array< int > *werte ) = 0; // fragt nach dem Namen einer Karte // karteId: Die id der Karte // Gibt bei misserfolg 0 zurück virtual Framework::Text *getKarteName( int karteId ) = 0; // fragt nach dem Namen eines Spiels // spielId: Die id des Spiels // Gibt bei misserfolg 0 zurück virtual Framework::Text *getSpielName( int spielId ) = 0; // fragt nach dem Namen eines Chatrooms // chatroomId: Die id des Chatrooms // Gibt bei misserfolg 0 zurück virtual Framework::Text *getChatroomName( int chatroomId ) = 0; // fragt zu welcher Spielart die Karte gehört // karteId: Die id der Karte // Gibt bei misserfolg 0 zurück virtual int getSpielId( int karteId ) = 0; // gibt die Id eines Accounts zurück // name: Der Angezeigte Name des Accounts // Gibt bei misserfolg 0 zurück virtual int getAccountId( char *name ) = 0; // gibt die Id des Chatrooms zurück // name: Der name des Chatrooms // Gibt bei misserfolg 0 zurück virtual int getChatroomId( char *name ) = 0; // gibt die karten Id zurück, zu dem eine Gruppe erstellt wurde // gruppenId: Die id der Gruppe // Gibt bei misserfolg 0 zurück virtual int getGruppenKarteId( int gruppenId ) = 0; // gibt 1 zurück, wenn zu einer Gruppe Spieler hinzugefügt werden können, 0 sonnst // gruppeId: Die id der Gruppe virtual bool getGruppeSpielerHinzufügen( int gruppeId ) = 0; // gibt die Account Id des Gruppen Administrators zurück // gruppeId: Die Id der Gruppe // Gibt bei misserfolg 0 zurück virtual int getGruppeAdminId( int gruppeId ) = 0; // gibt die Punkte eines Spielers zurück // accountId: Die Accont Id des Spielers // spielId: Die Id des Spiels // Gibt bei misserfolg 0 zurück virtual int getSpielerPunkte( int accountId, int spielId ) = 0; // gibt eine Liste mit Ids von gekauften Spielen zurück // Gibt bei misserfolg 0 zurück virtual Framework::Array< int > *getAccountSpielArtListe() = 0; // gibt die neuste Version eines Spiels zurück // spielId: Die Id des Spiels // Gibt bei misserfolg 0 zurück virtual int getSpielVersion( int spielId ) = 0; // gibt das Kupfer des Accounts zurück // Gibt bei misserfolg 0 zurück virtual int getKupfer() = 0; // Gibt die Dateigruppem Id eines Spieles zurück // spielId: Die Id des Spiels // Gibt bei misserfolg 0 zurück virtual int getDateiGruppeIdVonSpiel( int spielId ) = 0; // Gibt den Dateigruppen Pfad zurück // dgId: Die Id der Dateigruppe // Gibt bei misserfolg 0 zurück virtual Framework::Text *getDateiGruppePfad( int dgId ) = 0; // gibt eine Liste mit gekauften Karten zurück // spielId: Die Spiel Id zu der die Karten gehören sollen // Gibt bei misserfolg 0 zurück virtual Framework::Array< int > *getAccountKarteListe( int spielId ) = 0; // Gibt die Dateigruppen Id eines Pfades zurück // pfad: Der Pfad der Dateigruppe // Gibt bei misserfolg 0 zurück virtual int getDateiGruppeIdVonPfad( char *pfad ) = 0; // gibt die neuste Version einer Dateigruppe zurück // dg: Die Dateigruppen Id // Gibt bei misserfolg 0 zurück virtual int getDateiGruppeVersion( int dg ) = 0; // Gibt eine Liste Mit Accounts zurück, die einen bestimmten Text im Namen haben und bestimmt Sortiert ist // suche: Der Text, der in den Namen enthalten sein soll // seite: Die gewünschte Seite der Tabelle (enthält nach einem Erfolgreichen Aufruf die korrekte Seite) // maxSeite: Enthält nach erfolgreichem Aufruf die Maximale Seite // sortSpalte: Die Spalte, nach der Sortiert werden soll // rückwärts: 1:=Rückwärtzt Sortierung, 0:=Vorwärts Sortierung // accounts: Enthält nach erfolgreichem Aufruf die Daten der Accounts // Gibt die Anzahl der gefundenen Accounts zurück // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst virtual int getSpielerListe( char *suche, int *seite, int *maxSeite, char sortSpalte, char rückwärts, Framework::RCArray< AccountInfo > *accounts ) = 0; // ermittelt die aktivität eines Spielers // accId: Die Id des Accounts // info: Enthält nach erfolgreichem Aufruf die Aktivitätsinformationen der letzten 30 Tage virtual bool getSpielerAktivität( int accId, Framework::RCArray< AccountActivityInfo > *info ) = 0; // Gibt zurück, wie oft ein Spieler eine Karte schon gespielt hat // account: Die Id des Accounts // karte: Die Id der Karte virtual int getAccountKarteSpiele( int account, int karte ) = 0; // Gibt zurück, wie oft ein Spieler eine Karte schon gewonnen hat // account: Die Id des Accounts // karte: Die Id der Karte virtual int getAccountKarteSpieleGewonnen( int account, int karte ) = 0; // Gibt zurück, ob ein Spieler die Karte im Besitz hat // account: Die Id des Accounts // karte: Die Id der Karte virtual bool hatAccountKarte( int account, int karte ) = 0; // Gibt zurück, ob ein Spieler ein Spiel im Besitz hat // account: Die Id des Accounts // spiel: Die Id des Spiels virtual bool hatAccountSpiel( int account, int spiel ) = 0; // gibt eine Liste mit Ids von Karten zurück, die von einem Spieler bereits gespielt wurden // account: Die Id des Accounts // spiel: Die Id des Spiels // Gibt bei misserfolg 0 zurück virtual Framework::Array< int > *getAccountKarteGespieltListe( int account, int spielId ) = 0; // gibt eine Liste mit Ids von Spielen zurück, die von einem Spieler bereits gespielt wurden // account: Die Id des Accounts // Gibt bei misserfolg 0 zurück virtual Framework::Array< int > *getAccountSpielGespieltListe( int account ) = 0; // Gibt eine Liste von Spiel Partnern eines Spielers zurück // account: Die Id des Accounts // spieler: Enthält nach erfolgreichem Aufruf eine Liste mit Account Ids der Spiel Partner // karten: Enthält nach erfolgreichem Aufruf eine Liste mit den Ids der gespielten Karten // anzahl: Enthält nach erfolgreichem Aufruf eine Liste mit der Anzahl der Spiele // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst virtual bool getSpielPartnerListe( int account, Framework::Array< int > *spieler, Framework::Array< int > *karten, Framework::Array< int > *anzahl ) = 0; // Gibt eine Liste mit Spiel Statistiken zurück // account: Die Id des Accounts zu dem die Statistik ermittelt werden soll // seite: Die gewünschte Seite. Enthält nach efolgreichem Aufruf die korrekte Seite // maxSeite: Enthält nach erfolgreichem Aufruf die Macimale Seite // sortSpalte: Die Spalte, nach der Sortiert werden soll // rückwärts: 1:=Rückwärtzt Sortierung, 0:=Vorwärts Sortierung // werte: Enthält nach erfolgreichem Aufruf eine Liste mit Statistik Werten (gespielt, gewonnen, verloren, punkte, bw0, bw1, bw2, bw3, bw4, bw5) // namen: Enthält nach erfolgreichem Aufruf die Namen der Spiele // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst virtual bool getStatistikListe( int account, int *seite, int *maxSeite, char sortSpalte, char rückwärts, Framework::RCArray< Framework::Array< int > > *werte, Framework::RCArray< Framework::Text > *namen ) = 0; // Gibt eine Liste mit den Daten der letzten 20 Spiele von einem Account zurück // account: Die Id des Accounts // Gibt bei misserfolg 0 zurück virtual SpielHistorieListe *getSpielHistorieDaten( int account ) = 0; // Erzeugt einen Client zu dem Historie Server, welcher die Aufzeichnungen und Statistiken eines Bestimmten Spiels verwaltet // spielId: Die id des Spiels // Gibt bei misserfolg 0 zurück virtual HistorieServerClient *createHistorieServerClient( int spielId ) = 0; // sucht nach dem Historie Server von einem Spiel // Prüft, ob der Account bestimmte Berechtigungen besitzt // recht: Die Id der Berechtigungen virtual bool hatRecht( int recht ) = 0; // Prüft ob Berechtigung vorhanden // Gibt eine Liste mit Karten zurück, die einen bestimmten Text im Namen enthalten und bestimmt sortiert ist // filter: Die Zeichenkette, die im Namen Auftreten soll // sortSpalte: Der Index der Spalte, nach der sortiert werden soll // absteigend: 1:=absteigende sortierung,0:=aufsteigende Sortierung // kId: Eine Liste, welche nach einem erfolgreichen Aufruf die Ids der Karten enthält // kName: Eine Liste, welche nach einem erfolgreichen Aufruf die Namen der Karten enthält // sName: Eine Liste, welche nach einem erfolgreichen Aufruf die Namen der Spiele der Karten enthält // kupfer: Eine Liste, welche nach einem erfolgreichen Aufruf die Preise der Karten in Kupfer // verkauft: Eine Liste, welche nach einem erfolgreichen Aufruf die Anzahl der Verkäufe der Karten enthält // maxSpieler: Eine Liste, welche nach einem erfolgreichen Aufruf die Maximalen Spieleranzahlen der Karten enthält virtual int getKartenListe( char *filter, char sortSpalte, char absteigend, Framework::Array< int > *kId, Framework::RCArray< Framework::Text > *kName, Framework::RCArray< Framework::Text > *sName, Framework::Array< int > *kupfer, Framework::Array< int > *verkauft, Framework::Array< int > *maxSpieler ) = 0; // Erzeugt einen Client zu dem Editor Server von der Karte mit einer bestimmten Id // karteId: Die Id der Karte // Gibt bei misserfolg 0 zurück virtual EditorServerClient *createEditorServerClient( int karteId ) = 0; // Erzeugt einen Client zu dem Karten Server von der Karte mit einer bestimmten Id // karteId: Die Id der Karte // Gibt bei misserfolg 0 zurück virtual KartenServerClient *createKartenServerClient( int karteId ) = 0; // Erhält die Verbindung aufrecht // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst // Sollte während einer bestehenden Verbindung etwa einmal alle 60 Sekunden aufgerufen werden, da sonst der Router die Verbindung automatisch trennt virtual bool keepAlive() = 0; // Trennt die Verbindung zum Server // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst // Sollte erst nach einem erfolgreichen Aufruf von verbinde aufgerufen werden virtual bool trenne() = 0; // Gibt 1 zurück, falls der Client verbunden ist, 0 sonst virtual bool istVerbunden() const = 0; // gibt den Letzten Fehlertext zuück // sollte erst aufgerufen werden, nachdem eine andere aufgerufene Methode fehlgeschlagen ist virtual char *getLetzterFehler() const = 0; // Erhöht den Reference Counter um 1 un gibt this zurück virtual InformationServerClient *getThis() = 0; // Verringert den Reference Counter um 1 und gibt 0 zurück. // Falls der Reference Counter nach dem Aufruf auf 0 ist löscht sich das Objekt selbst virtual InformationServerClient *release() = 0; }; // Wird verwendet um Chat nachrichten zu senden oder zu empfangen. Das Serversystem sendet außerdem einiege Mitteilungen über den Chat (z.B. Gefundene Spiele, Gruppeneinladungen ...) // Kann nur von eingeloggten Clients verwendet werden class ChatServerClient { public: // verbindet sich mit dem zugewiesenen Chat Server // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst virtual bool verbinde() = 0; // sendet eine Chat Nachricht zu einem Account // zuAccount: Id des Ziel Accounts // nachricht: Die Nachricht // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst virtual bool chatNachricht( int zuAccount, const char *nachricht ) = 0; // ändert den angezeigten Account Namen // name: der neue Name // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst virtual bool accountNameÄndern( const char *name ) = 0; // beendet die Freundschaft mit einem Account // accountId: Die Id des Accounts // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst virtual bool freundschaftBeenden( int accountId ) = 0; // sendet eine Freundesanfragezu einem Account // accountId: Die Id des Accounts // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst virtual bool freundesAnfrage( int accountId ) = 0; // beantwortet eine Freundesanfrage // accountId: Die Id des Accounts // ja: 1:=annehmen,0:=ablehnen // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst virtual bool freundesAnfrageBeantworten( int accountId, bool ja ) = 0; // erstellt ein chatroom // name: Der Name des Chatrooms // Gibt bei erfolg die Id des Chatrooms zurück, 0 sonst virtual int chatroomErstellen( const char *name ) = 0; // Sendet eine Einladung zum Chatroom // accountId: Die Id des Accounts der eingeladen werden soll // chatroomId: Die Id des Chatrooms // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst virtual bool chatroomEinladung( int accountId, int chatroomId ) = 0; // Einladung zum Chatroom wird abgelehnt // accountId: Die Id des Accounts // chatroomId: Die Id des Chatrooms // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst virtual bool chatroomEinladungAblehnen( int accountId, int chatroomId ) = 0; // betritt ein chatroom // chatroomId: Die Id des Chatrooms // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst virtual bool chatroomBetreten( int chatroomId ) = 0; // chatroom Nachricht senden // chatroomId: Die Id des Chatrooms // nachricht: Die Nachricht die gesendet werden soll // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst virtual bool chatroomNachricht( int chatroomId, const char *nachricht ) = 0; // verlässt chatroom // chatroomId: Die Id des Chatrooms // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst virtual bool chatroomVerlassen( int chatroomId ) = 0; // kickt Account aus Chatroom (nur wenn als admin des Chatrooms eingeloggt) // chatroomId: Die Id des Chatrooms // accountId: Die Id des Accounts // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst virtual bool chatroomKick( int chatroomId, int accountId ) = 0; // fragt nach allen freunden // Die Liste der Freunde kann über getNextMessage empfangen werden // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst virtual bool freundesListeAnfragen() = 0; // fragt nach allen chatnachrichten, die gesendet wurden, während der Account in den der Client eingeloggt ist, offline war // Die einzelnen Nachrichten können über getNextMessage empfangen werden // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst virtual bool chatNachrichtAnfrage() = 0; // Erhält die Verbindung aufrecht // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst // Sollte während einer bestehenden Verbindung etwa einmal alle 60 Sekunden aufgerufen werden, da sonst der Router die Verbindung automatisch trennt virtual bool keepAlive() = 0; // Trennt die Verbindung zum Server // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst // Sollte erst nach einem erfolgreichen Aufruf von verbinde aufgerufen werden virtual bool trenne() = 0; // Wartet auf eine Nachricht vom Chatserver und gibt diese zurück. virtual ChatServerNachricht *getNextMessage() = 0; // Gibt 1 zurück, falls der Client verbunden ist, 0 sonst virtual bool istVerbunden() const = 0; // gibt den Letzten Fehlertext zuück // sollte erst aufgerufen werden, nachdem eine andere aufgerufene Methode fehlgeschlagen ist virtual char *getLetzterFehler() const = 0; // Erhöht den Reference Counter um 1 un gibt this zurück virtual ChatServerClient *getThis() = 0; // Verringert den Reference Counter um 1 und gibt 0 zurück. // Falls der Reference Counter nach dem Aufruf auf 0 ist löscht sich das Objekt selbst virtual ChatServerClient *release() = 0; }; // Wird verwendet um Spiele oder Karten zu kaufen // Kann nur von eingeloggten Clients verwendet werden class ShopServerClient { }; // Wird verwendet um sich für Spiele anzumelden // Kann nur von eingeloggten Clients verwendet werden class AnmeldungServerClient { public: // verbindet sich mit dem zugewiesenen Anmeldung Server // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool verbinde(); // erstellt eine gruppe // karteId: Die Id der Karte für die die Gruppe erstellt werden soll // Gibt bei Erfolg die Id der Gruppe zurück. Bei misserfolg wird 0 zurückgegeben int gruppeErstellen( int karteId ); // Betritt eine Gruppe // gruppeId: Die Id der Gruppe // mitglieder: Nach erfolgreichem Aufruf enthält diese Liste die Lister der Account Ids der Gruppenmitglieder // anzahl: Nach erfolgreichem Aufruf wird hier die Anzahl der Gruppenmitglieder gespeichert // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool gruppeBetreten( int gruppeId, Framework::Array< int > *mitglieder, int *anzahl ); // Verlässt eine Gruppe // gruppeId: Die Id der Gruppe // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool gruppeVerlassen( int gruppeId ); // Trägt die Gruppe in die Warteschlange für die Karte ein (nur für den Gruppen Administrator) // gruppeId: Die Id der Gruppe // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool gruppeAnmelden( int gruppeId ); // Trägt die Gruppe aus der Warteschlange für die Karte aus (nur für den Gruppen Administrator) // gruppeId: Die Id der Gruppe // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool gruppeAbmelden( int gruppeId ); // läht Spieler ein die Gruppe zu betreten (nur für den Gruppen Administrator) // accountId: Die Id des Accounts // gruppeId: Die Id der Gruppe // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool gruppeSpielerEinladen( int accountId, int gruppeId ); // Zieht die Einladung eine Gruppe zu betreten zurück (nur für den Gruppen Administrator) // accountId: Die Id des Accounts // gruppeId: Die Id der Gruppe // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool gruppeEinladungAbbrechen( int accountId, int gruppeId ); // Einladung zur Gruppe ablehnen // gruppeId: Die Id der Gruppe // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool gruppeEinladungAblehnen( int gruppeId ); // wirft Spieler aus Gruppe (nur für den Gruppen Administrator) // accountId: Die Id des Accounts // gruppeId: Die Id der Gruppe // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool kickSpielerAusGruppe( int accountId, int gruppeId ); // Legt fest, ob die Spieler in der Gruppe alleine spielen wollen, oder ob weitere Spieler aus der Warteschlange hinzugefügt werden sollen bis die Karte voll ist // gruppeId: Die Id der Gruppe // spielStarte: 1:=alleine spielen, 0:=auf volles Spiel warten // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool gruppeSpielStarten( int gruppeId, bool spielStarten ); // Sendet eine Nachricht an den Gruppen Chat // gruppeId: Die Id der Gruppe // nachricht: Die Nachricht, die gesendet werden soll // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool gruppeNachricht( int gruppeId, char *nachricht ); // Meldet den eingeloggten Account in der Warteschlange für eine Karte an // karteId: Die Id der Karte // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool anmelden( int karteId ); // Meldet den eingeloggten Account aus der Warteschlange ab // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool abmelden(); // Erhält die Verbindung aufrecht // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst // Sollte während einer bestehenden Verbindung etwa einmal alle 60 Sekunden aufgerufen werden, da sonst der Router die Verbindung automatisch trennt bool keepAlive(); // Trennt die Verbindung zum Server // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst // Sollte erst nach einem erfolgreichen Aufruf von verbinde aufgerufen werden bool trenne(); // Gibt 1 zurück, falls der Client verbunden ist, 0 sonst bool istVerbunden() const; // gibt den Letzten Fehlertext zuück // sollte erst aufgerufen werden, nachdem eine andere aufgerufene Methode fehlgeschlagen ist char *getLetzterFehler() const; // Erhöht den Reference Counter um 1 un gibt this zurück AnmeldungServerClient *getThis(); // Verringert den Reference Counter um 1 und gibt 0 zurück. // Falls der Reference Counter nach dem Aufruf auf 0 ist löscht sich das Objekt selbst AnmeldungServerClient *release(); }; // Wird verwendet um die aktuellen versionen der Karten vor dem Spiel herunterzuladen // Kann nur von eingeloggten Clients verwendet werden class KartenServerClient { }; // Wird zum Online Spielen verwendet // Kann nur von eingeloggten Clients verwendet werden class SpielServerClient { }; // Wird verwendet um Statistiken und Aufzeichnungen von vergangenen Spielen abzufragen // Kann nur von eingeloggten Clients verwendet werden class HistorieServerClient { }; // Wird verwendet um Minigame Bestscores abzufragen und Minigame Spielaufzeichnungen zu laden // Kann nur von eingeloggten Clients verwendet werden class MinigameServerClient { }; // Wird verwendet um Karten für Spiele zu erstellen // Kann nur von eingeloggten Clients verwendet werden class EditorServerClient { }; // Wird verwendet um Eine Verbindung mit dem Serversystem herzustellen class MainServerClient { public: // Meldet den neuen Client beim Serversystem an. Durch diesen Vorgang erhält der Client eine Id und den Port und die Ip Addresse des Main Servers virtual bool registerSSL( Framework::Text *ip, unsigned short port ) = 0; // Verbindet den Client mit dem Server // Wird automatisch aufgerufen, falls eine Methode aufgerufen wird, die eine Verbindung erfordert. In diesem Fall wird die Verbindung auch automatisch wieder getrennt. virtual bool connect() = 0; // Erzeugt einen Erhaltungs Server Client // Gibt bei misserfolg 0 zurück virtual ErhaltungServerClient *createErhaltungServerClient() = 0; // Erzeugt einen Patch Server Client // Gibt bei misserfolg 0 zurück virtual PatchServerClient *createPatchServerClient() = 0; // Erzeugt einen News Server Client // Gibt bei misserfolg 0 zurück virtual NewsServerClient *createNewsServerClient() = 0; // Erzeugt einen Register Server Client // Gibt bei misserfolg 0 zurück virtual RegisterServerClient *createRegisterServerClient() = 0; // Erzeugt einen Login Server Client // Gibt bei misserfolg 0 zurück virtual LoginServerClient *createLoginServerClient() = 0; // Erzeugt einen Information Server Client // Gibt bei misserfolg 0 zurück virtual InformationServerClient *createInformationServerClient() = 0; // Erzeugt einen Chat Server Client // Gibt bei misserfolg 0 zurück virtual ChatServerClient *createChatServerClient() = 0; // Erzeugt einen Shop Server Client // Gibt bei misserfolg 0 zurück virtual ShopServerClient *createShopServerClient() = 0; // Erzeugt einen Anmeldung Server Client // Gibt bei misserfolg 0 zurück virtual AnmeldungServerClient *createAnmeldungServerClient() = 0; // Erzeugt einen Minigame Server Client // Gibt bei misserfolg 0 zurück virtual MinigameServerClient *createMinigameServerClient() = 0; // Trennt die Verbindung zum Server. Muss nur aufgerufen werden, wenn vorher manuell connect aufgerufen wurde virtual bool disconnect() = 0; // Meldet den Client vom Server ab. Alle zuvor von diesem Client erzeugten Clients werden durch diesen Vorgang unbrauchbar virtual bool unregister() = 0; // Gibt die dem Client zugewiesene Id zurück. // sollte erst nach dem Aufruf von registerSSL verwendet werden. virtual int getClientId() const = 0; // Gibt die Ip Adresse des dem Client zugewiesenen Main Servers zurück. // sollte erst nach dem Aufruf von registerSSL verwendet werden. virtual Framework::Text *getServerIp() const = 0; // Gibt den Port des dem Client zugewiesenen Main Servers zurück. // sollte erst nach dem Aufruf von registerSSL verwendet werden. virtual unsigned short getServerPort() const = 0; }; extern "C" { // Einstiegspunkte in die Bibliothek // Erzeugt einen neuen Client beim Serversystem. // registerSSL Methode muss aufgerufen werden um den Client beim Serversystem anzumelden MainServerClient *createMainServerClient(); // Erzeugt einen Client, der bereits beim Serversystem angemeldet ist // ip: Die Ip des Main Servers für angemeldete Clients // port: Der Port des Main Servers für angemeldete Clients // klientId: Die Id die der Client durch das Anmelden bekommen hat MainServerClient *createMainServerClient( char *ip, unsigned short port, int klientId ); } }