#pragma once #include "../Include/KSGNetwork.h" #include namespace KSGClient { // 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 ChatClient : public ChatServerClient { private: Framework::Text ip; unsigned short port; int cId; Network::Klient* senden; Network::Klient* empfangen; char* key; unsigned char keyLen; Framework::Critical cs; Framework::Text err; public: // Konstruktor ChatClient(int klientId, unsigned short port, const char* ip, const char* key, unsigned char keyLen); // Destruktor ~ChatClient(); // verbindet sich mit dem zugewiesenen Chat Server // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool verbinde() override; // 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 bool chatNachricht(int zuAccount, const char* nachricht) override; // ändert den angezeigten Account Namen // name: der neue Name // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool accountNameÄndern(const char* name) override; // beendet die Freundschaft mit einem Account // accountId: Die Id des Accounts // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool freundschaftBeenden(int accountId) override; // sendet eine Freundesanfragezu einem Account // accountId: Die Id des Accounts // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool freundesAnfrage(int accountId) override; // beantwortet eine Freundesanfrage // accountId: Die Id des Accounts // ja: 1:=annehmen,0:=ablehnen // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool freundesAnfrageBeantworten(int accountId, bool ja) override; // erstellt ein chatroom // name: Der Name des Chatrooms // Gibt bei erfolg die Id des Chatrooms zurück, 0 sonst int chatroomErstellen(const char* name) override; // 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 bool chatroomEinladung(int accountId, int chatroomId) override; // 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 bool chatroomEinladungAblehnen(int accountId, int chatroomId) override; // betritt ein chatroom // chatroomId: Die Id des Chatrooms // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool chatroomBetreten(int chatroomId) override; // 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 bool chatroomNachricht(int chatroomId, const char* nachricht) override; // verlässt chatroom // chatroomId: Die Id des Chatrooms // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool chatroomVerlassen(int chatroomId) override; // 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 bool chatroomKick(int chatroomId, int accountId) override; // fragt nach allen freunden // Die Liste der Freunde kann über getNextMessage empfangen werden // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool freundesListeAnfragen() override; // 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 bool chatNachrichtAnfrage() override; // 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() override; // 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(bool abmelden) override; // Wartet auf eine Nachricht vom Chatserver. // Gibt bei Erfolg 1 zurück, 0 sonnst // nachricht: Eine Referenz auf die Struktur, in der die Nachricht gespeichert werden soll bool getNextMessage(ChatServerNachricht& nachricht) override; // Gibt 1 zurück, falls der Client verbunden ist, 0 sonst bool istVerbunden() const override; // gibt den Letzten Fehlertext zuück // sollte erst aufgerufen werden, nachdem eine andere aufgerufene Methode fehlgeschlagen ist const char* getLetzterFehler() const override; }; }