GameClient.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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. int viewDistance;
  26. bool first;
  27. bool online;
  28. bool backgroundFinished;
  29. bool foregroundFinished;
  30. public:
  31. GameClient(Player* zPlayer, FCKlient* client);
  32. ~GameClient();
  33. void thread() override;
  34. void reply();
  35. void logout();
  36. void addMessage(Framework::StreamReader* reader);
  37. bool isOnline() const;
  38. void sendResponse(NetworkMessage* response);
  39. Player* zEntity() const;
  40. void sendTypes();
  41. class Message
  42. {
  43. public:
  44. inline static const unsigned char TERMINATE = 1;
  45. inline static const unsigned char WORLD_UPDATE = 2;
  46. inline static const unsigned char API_MESSAGE = 3;
  47. inline static const unsigned char POSITION_UPDATE = 4;
  48. };
  49. };