GameClient.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #pragma once
  2. #include <Array.h>
  3. #include <Critical.h>
  4. #include <InMemoryBuffer.h>
  5. #include <Thread.h>
  6. class Player;
  7. class FCKlient;
  8. class NetworkMessage;
  9. class GameClient : public Framework::Thread
  10. {
  11. private:
  12. Player* zPlayer;
  13. FCKlient* client;
  14. Framework::Critical background;
  15. Framework::Critical foreground;
  16. Framework::Critical other;
  17. Framework::RCArray<Framework::InMemoryBuffer> requests;
  18. Framework::RCArray<NetworkMessage> backgroundQueue;
  19. Framework::RCArray<NetworkMessage> foregroundQueue;
  20. Framework::Synchronizer foregroundQueueSync;
  21. Framework::Synchronizer backgroundQueueSync;
  22. Framework::Critical queueCs;
  23. Framework::Synchronizer emptyForegroundQueueSync;
  24. Framework::Synchronizer emptyBackgroundQueueSync;
  25. bool first;
  26. bool online;
  27. bool backgroundFinished;
  28. bool foregroundFinished;
  29. public:
  30. GameClient(Player* zPlayer, FCKlient* client);
  31. ~GameClient();
  32. void thread() override;
  33. void reply();
  34. void logout();
  35. void addMessage(Framework::StreamReader* reader);
  36. bool isOnline() const;
  37. void sendResponse(NetworkMessage* response);
  38. Player* zEntity() const;
  39. void sendTypes();
  40. class Message
  41. {
  42. public:
  43. inline static const unsigned char TERMINATE = 1;
  44. inline static const unsigned char WORLD_UPDATE = 2;
  45. inline static const unsigned char API_MESSAGE = 3;
  46. inline static const unsigned char POSITION_UPDATE = 4;
  47. };
  48. };