#pragma once #include "../Include/KSGNetwork.h" #include namespace KSGClient { // Wird verwendet um Spiele oder Karten zu kaufen // Kann nur von eingeloggten Clients verwendet werden class ShopClient : public ShopServerClient { private: Framework::Text ip; unsigned short port; int cId; Network::Klient* k; char* key; unsigned char keyLen; Framework::Critical cs; Framework::Text err; public: // Konstruktor ShopClient(int klientId, unsigned short port, const char* ip, const char* key, unsigned char keyLen); // Destruktor ~ShopClient(); // verbindet sich mit dem zugewiesenen Shop Server // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool verbinde() override; // Gibt eine Liste mit Spiel Ids zurück, mit Spielen, die einen Bestimten Text im Namen haben // suche: Der Text, der im Namen der Spiele vorkommen soll // Gibt bei misserfolg 0 zurück Framework::Array< int >* suchSpiele(const char* suche) override; // läd Titelbild des Spieles herunter und speichert es unter data/tmp/shop/kazfen/spiele/{id}/titelbg.ltdb // id: Die Id des Spiels // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool ladeSpielTitel(int id) override; // läd Shop Seite des Spieles herunter und speichert es unter data/tmp/shop/kazfen/spiele/{id}/seite.ksgs // id: Die Id des Spiels // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool ladeSpielSeite(int id) override; // Gibt den Besitz Status eines Spiels zurück (0 = nicht im Besitz, 1 = Testversion, 2 = gekauft) // id: Die Id des Spiels int getSpielBesitzStatus(int id) override; // gibt die Anzahl der verbleibenden Spiele der Testversion zurück // id: Die Id des Spiels int getSpielTestversion(int id) override; // Gibt den Erwerbbarkeits Status eines Spiels zurück (0 = nichts, 1 = nur Testversion, 2 = nur Vollversion, 3 = beides) // id: Die Id des Spiels int istSpielErwerbbar(int id) override; // Gibt den Preis eines Spiels in Kupfer zurück // id: Die Id des Spiels // testVersion: 1:=Es wird der Preis der Testversion zurückgegeben, 0:=Es wird der Preis der Vollversion zurückgegeben int getSpielPreis(int id, bool testVersion) override; // Kauft ein Spiel // id: Die Id des Spiels // testVersion: 1:=Es wird die Testversion erworben, 0:=Es wird die Vollversion erworben bool spielErwerben(int spielId, bool testVersion) override; // sucht nach Karten mit zu einem bestimmten Spiel // suche: Ein Text, der im Namen der Karte vorkommen soll // spielId: Die Id des Spiels // Gibt eine Liste Mit den Ids der gefundenen Karten zurück Framework::Array< int >* suchKarten(const char* suche, int spielId) override; // lädt das Titelbild der Karte herunter und speichert es unter data/tmp/shop/kaufen/karten/{id}/titelbg.ltdb // id: Die Id der Karte // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool ladeKarteTitel(int id) override; // lädt die Shop Seite der Karte herunter und speichert es unter data/tmp/shop/kaufen/karten/{id}/seite.ksgs // id: Die Id der Karte // Gibt 1 zurück, falls der Vorgang erfolgreich ist, 0 sonnst bool ladeKarteSeite(int id) override; // Gibt den Besitz Status einer Karte zurück (0 = nicht im Besitz, 1 = Testversion, 2 = gekauft) // id: Die Id der Karte int getKarteBesitzStatus(int id) override; // gibt die Anzahl der verbleibenden Spiele der Testversion zurück // id: Die Id der Karte int getKarteTestversion(int id) override; // Gibt den Erwerbbarkeits Status einer Karte zurück (0 = nichts, 1 = nur Testversion, 2 = nur Vollversion, 3 = beides) // id: Die Id der Karte int istKarteErwerbbar(int id) override; // Gibt den Preis einer Karte in Kupfer zurück // id: Die Id der Karte // testVersion: 1:=Es wird der Preis der Testversion zurückgegeben, 0:=Es wird der Preis der Vollversion zurückgegeben int getKartePreis(int id, bool testVersion) override; // Kauft eine Karte // id: Die Id der Karte // testVersion: 1:=Es wird die Testversion erworben, 0:=Es wird die Vollversion erworben bool karteErwerben(int karteId, bool testVersion) 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; // 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; }; }