#pragma once #include "../Include/KSGNetwork.h" #include namespace KSGClient { // Wird zum Online Spielen verwendet // Kann nur von eingeloggten Clients verwendet werden class SpielClient : public SpielServerClient { 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 SpielClient(int klientId, unsigned short port, const char* ip, const char* key, unsigned char keyLen); // Destruktor ~SpielClient(); // verbindet sich mit dem zugewiesenen Karten Server // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool verbinde() override; // Betritt das Vorgeschlagene Spiel // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool spielErstelltAnnehmen() override; // Lehnt das Vorgeschlagene Spiel ab // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool spielErstelltAblehnen() override; // Wechselt zu einem bestimmten Team // team: Die Id des teams // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool spielErstelltTeamWechseln(int team) override; // Bestätigt die Teamauswahl so dass das Spiel früher beginnen kann // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool spielErstelltTeamFertig() override; // sendet eine Chat Nachricht an die mitglieder des erstellten Spiels // nachricht: Die Nachricht // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool spielErstelltChatNachricht(const char* nachricht) override; // Teilt dem Server mit, dass der Client bereit ist das Spiel zu laden // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool bereitZumLaden() override; // Teilt dem Server mit, zu wie viel Prozent der Client das Spiel geladen hat // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool setLadenProzent(int prozent) override; // Teilt dem Server mit, dass das Spiel fertig geladen wurde // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool bereitZumSpiel() override; // Sendet während des Spiels eine Nachricht an den Server // län: Die Länge der Nachricht // bytes: Ein Zeiger auf die Nachricht // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool spielNachricht(short län, const char* bytes) override; // Sendet während der Statistik eine Nachricht an den Server // län: Die Länge der Nachricht // bytes: Ein Zeiger auf die Nachricht // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool statistikNachricht(short län, const char* bytes) override; // Wartet auf eine Nachricht vom Spiel Server. // Gibt bei Erfolg 1 zurück, 0 sonnst // nachricht: Eine Referenz auf die Struktur, in der die Nachricht gespeichert werden soll bool getNextMessage(SpielServerNachricht& nachricht) 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() 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; }; }