Guest User

Hack PowderToy coins Client.h

a guest
Apr 1st, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.96 KB | None | 0 0
  1. #ifndef CLIENT_H
  2. #define CLIENT_H
  3.  
  4. #include <queue>
  5. #include <vector>
  6. #include <list>
  7.  
  8. #include "Config.h"
  9. #include "common/Singleton.h"
  10.  
  11. #include "User.h"
  12. #include "UserInfo.h"
  13.  
  14. #include "json/json.h"
  15.  
  16. #include "requestbroker/RequestBroker.h"
  17.  
  18. class Thumbnail;
  19. class SaveInfo;
  20. class SaveFile;
  21. class SaveComment;
  22. class GameSave;
  23. class VideoBuffer;
  24.  
  25. enum LoginStatus {
  26.     LoginOkay, LoginError
  27. };
  28.  
  29. enum RequestStatus {
  30.     RequestOkay, RequestFailure
  31. };
  32.  
  33. class UpdateInfo
  34. {
  35. public:
  36.     enum BuildType { Stable, Beta, Snapshot };
  37.     std::string File;
  38.     std::string Changelog;
  39.     int Major;
  40.     int Minor;
  41.     int Build;
  42.     int Time;
  43.     BuildType Type;
  44.     UpdateInfo() : File(""), Changelog(""), Major(0), Minor(0), Build(0), Time(0), Type(Stable) {}
  45.     UpdateInfo(int major, int minor, int build, std::string file, std::string changelog, BuildType type) : File(file), Changelog(changelog), Major(major), Minor(minor), Build(build), Time(0), Type(type) {}
  46.     UpdateInfo(int time, std::string file, std::string changelog, BuildType type) : File(file), Changelog(changelog), Major(0), Minor(0), Build(0), Time(time), Type(type) {}
  47. };
  48.  
  49. class RequestListener;
  50. class ClientListener;
  51. class Client: public Singleton<Client> {
  52. private:
  53.     std::string messageOfTheDay;
  54.     std::vector<std::pair<std::string, std::string> > serverNotifications;
  55.  
  56.     void * versionCheckRequest;
  57.     void * alternateVersionCheckRequest;
  58.     bool usingAltUpdateServer;
  59.     bool updateAvailable;
  60.     UpdateInfo updateInfo;
  61.  
  62.     std::string lastError;
  63.     bool firstRun;
  64.  
  65.     std::list<std::string> stampIDs;
  66.     unsigned lastStampTime;
  67.     int lastStampName;
  68.  
  69.     //Auth session
  70.     User authUser;
  71.  
  72.     int coins = 999999999;
  73.  
  74.     //Thumbnail retreival
  75.     int thumbnailCacheNextID;
  76.     Thumbnail * thumbnailCache[THUMB_CACHE_SIZE];
  77.     void * activeThumbRequests[IMGCONNS];
  78.     int activeThumbRequestTimes[IMGCONNS];
  79.     int activeThumbRequestCompleteTimes[IMGCONNS];
  80.     std::string activeThumbRequestIDs[IMGCONNS];
  81.     void notifyUpdateAvailable();
  82.     void notifyAuthUserChanged();
  83.     void notifyMessageOfTheDay();
  84.     void notifyNewNotification(std::pair<std::string, std::string> notification);
  85.  
  86.     // internal preferences handling
  87.     Json::Value preferences;
  88.     Json::Value GetPref(Json::Value root, std::string prop, Json::Value defaultValue = Json::nullValue);
  89.     Json::Value SetPrefHelper(Json::Value root, std::string prop, Json::Value value);
  90.  
  91.     // Save stealing info
  92.     Json::Value authors;
  93.  
  94. public:
  95.  
  96.     std::vector<ClientListener*> listeners;
  97.  
  98.     // Save stealing info
  99.     void MergeStampAuthorInfo(Json::Value linksToAdd);
  100.     void MergeAuthorInfo(Json::Value linksToAdd);
  101.     void OverwriteAuthorInfo(Json::Value overwrite) { authors = overwrite; }
  102.     Json::Value GetAuthorInfo() { return authors; }
  103.     void SaveAuthorInfo(Json::Value *saveInto);
  104.     void ClearAuthorInfo() { authors.clear(); }
  105.     bool IsAuthorsEmpty() { return authors.size() == 0; }
  106.  
  107.     UpdateInfo GetUpdateInfo();
  108.  
  109.     Client();
  110.     ~Client();
  111.  
  112.     std::vector<std::string> DirectorySearch(std::string directory, std::string search, std::vector<std::string> extensions);
  113.     std::vector<std::string> DirectorySearch(std::string directory, std::string search, std::string extension);
  114.  
  115.     std::string FileOpenDialogue();
  116.     //std::string FileSaveDialogue();
  117.  
  118.     bool DoInstallation();
  119.  
  120.     std::vector<unsigned char> ReadFile(std::string filename);
  121.  
  122.     void AddServerNotification(std::pair<std::string, std::string> notification);
  123.     std::vector<std::pair<std::string, std::string> > GetServerNotifications();
  124.  
  125.     void SetMessageOfTheDay(std::string message);
  126.     std::string GetMessageOfTheDay();
  127.  
  128.     void Initialise(std::string proxyString);
  129.     void SetProxy(std::string proxy);
  130.     bool IsFirstRun();
  131.  
  132.     int MakeDirectory(const char * dirname);
  133.     bool WriteFile(std::vector<unsigned char> fileData, std::string filename);
  134.     bool WriteFile(std::vector<char> fileData, std::string filename);
  135.     bool FileExists(std::string filename);
  136.  
  137.     void AddListener(ClientListener * listener);
  138.     void RemoveListener(ClientListener * listener);
  139.  
  140.     RequestStatus ExecVote(int saveID, int direction);
  141.     RequestStatus UploadSave(SaveInfo & save);
  142.  
  143.     SaveFile * GetStamp(std::string stampID);
  144.     void DeleteStamp(std::string stampID);
  145.     std::string AddStamp(GameSave * saveData);
  146.     std::vector<std::string> GetStamps(int start, int count);
  147.     void RescanStamps();
  148.     int GetStampsCount();
  149.     SaveFile * GetFirstStamp();
  150.     void MoveStampToFront(std::string stampID);
  151.     void updateStamps();
  152.  
  153.     RequestStatus AddComment(int saveID, std::string comment);
  154.  
  155.     //Retrieves a "UserInfo" object
  156.     RequestBroker::Request * GetUserInfoAsync(std::string username);
  157.     RequestBroker::Request * SaveUserInfoAsync(UserInfo info);
  158.  
  159.     RequestBroker::Request * GetSaveDataAsync(int saveID, int saveDate);
  160.     unsigned char * GetSaveData(int saveID, int saveDate, int & dataLength);
  161.     std::vector<unsigned char> GetSaveData(int saveID, int saveDate);
  162.  
  163.     LoginStatus Login(std::string username, std::string password, User & user);
  164.     void ClearThumbnailRequests();
  165.     std::vector<SaveInfo*> * SearchSaves(int start, int count, std::string query, std::string sort, std::string category, int & resultCount);
  166.     std::vector<std::pair<std::string, int> > * GetTags(int start, int count, std::string query, int & resultCount);
  167.  
  168.     RequestBroker::Request * GetCommentsAsync(int saveID, int start, int count);
  169.  
  170.     SaveInfo * GetSave(int saveID, int saveDate);
  171.     RequestBroker::Request * GetSaveAsync(int saveID, int saveDate);
  172.  
  173.     RequestStatus DeleteSave(int saveID);
  174.     RequestStatus ReportSave(int saveID, std::string message);
  175.     RequestStatus UnpublishSave(int saveID);
  176.     RequestStatus PublishSave(int saveID);
  177.     RequestStatus FavouriteSave(int saveID, bool favourite);
  178.     void SetAuthUser(User user);
  179.     User GetAuthUser();
  180.     std::list<std::string> * RemoveTag(int saveID, std::string tag); //TODO RequestStatus
  181.     std::list<std::string> * AddTag(int saveID, std::string tag);
  182.     std::string GetLastError() {
  183.         return lastError;
  184.     }
  185.     RequestStatus ParseServerReturn(char *result, int status, bool json);
  186.     void Tick();
  187.     bool CheckUpdate(void *updateRequest, bool checkSession);
  188.     void Shutdown();
  189.  
  190.     void SetCoins(int coins) { coins = coins; }
  191.     void AddCoins(int coins) { coins += coins; }
  192.     int GetCoins() { return coins; }
  193.  
  194.     // preferences functions
  195.     void WritePrefs();
  196.  
  197.     std::string GetPrefString(std::string prop, std::string defaultValue);
  198.     double GetPrefNumber(std::string prop, double defaultValue);
  199.     int GetPrefInteger(std::string prop, int defaultValue);
  200.     unsigned int GetPrefUInteger(std::string prop, unsigned int defaultValue);
  201.     bool GetPrefBool(std::string prop, bool defaultValue);
  202.     std::vector<std::string> GetPrefStringArray(std::string prop);
  203.     std::vector<double> GetPrefNumberArray(std::string prop);
  204.     std::vector<int> GetPrefIntegerArray(std::string prop);
  205.     std::vector<unsigned int> GetPrefUIntegerArray(std::string prop);
  206.     std::vector<bool> GetPrefBoolArray(std::string prop);
  207.  
  208.     void SetPref(std::string prop, Json::Value value);
  209.     void SetPref(std::string property, std::vector<Json::Value> value);
  210. };
  211.  
  212. #endif // CLIENT_H
Add Comment
Please, Sign In to add comment