ServerSelection.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #pragma once
  2. #include <AsynchronCall.h>
  3. #include <Button.h>
  4. #include <HashMap.h>
  5. #include <List.h>
  6. #include <TextField.h>
  7. #include "Menu.h"
  8. class ServerStatus : public DrawableBackground
  9. {
  10. private:
  11. Framework::Text name;
  12. Framework::Text ip;
  13. unsigned short sslPort;
  14. unsigned short port;
  15. Framework::Text playerName;
  16. int ping;
  17. Framework::Text status;
  18. int statusId;
  19. int requestId;
  20. Framework::HashMap<Framework::Text, Framework::Text>* secrets;
  21. Framework::Button* removeButton;
  22. Framework::Button* join;
  23. ReadWriteLock requestIdLock;
  24. Framework::Array<int> currentRequestIds;
  25. Framework::Array<AsynchronCall*> currentRequests;
  26. public:
  27. ServerStatus(Framework::Text name,
  28. Framework::Text ip,
  29. unsigned short sslPort,
  30. unsigned short port,
  31. Framework::HashMap<Framework::Text, Framework::Text>* secrets);
  32. ~ServerStatus();
  33. virtual void updatePlayerName(Framework::Text playerName);
  34. virtual void doMouseEvent(Framework::MouseEvent& me, bool userRet) override;
  35. virtual bool tick(double time) override;
  36. virtual void render(Framework::Image& rObj) override;
  37. Framework::Text getName() const;
  38. Framework::Text getIp() const;
  39. unsigned short getSSLPort() const;
  40. unsigned short getPort() const;
  41. Framework::HashMap<Framework::Text, Framework::Text>* zSecrets() const;
  42. bool canConnect() const;
  43. };
  44. class ServerSelectionMenu : public Menu
  45. {
  46. private:
  47. Framework::TextField* playerName;
  48. Framework::TextField* playerNameLabel;
  49. Framework::TextField* serverLabel;
  50. Framework::DrawableList* serverList;
  51. Framework::Button* add;
  52. Framework::Button* refresh;
  53. Framework::Button* exit;
  54. public:
  55. ServerSelectionMenu(Framework::Screen* zScreen);
  56. void addServer(Framework::Text name,
  57. Framework::Text ip,
  58. unsigned short sslPort,
  59. unsigned short port);
  60. bool hasServer(Framework::Text name) const;
  61. void removeServer(Framework::Text name) const;
  62. void saveServers() const;
  63. };