PlayerMessageProcessor.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. /*
  2. * CGameHandler.h, part of VCMI engine
  3. *
  4. * Authors: listed in file AUTHORS in main folder
  5. *
  6. * License: GNU General Public License v2.0 or later
  7. * Full text of license available in license.txt file, in main folder
  8. *
  9. */
  10. #pragma once
  11. #include "../../lib/GameConstants.h"
  12. #include "../../lib/serializer/GameConnectionID.h"
  13. #include "../../lib/json/JsonNode.h"
  14. VCMI_LIB_NAMESPACE_BEGIN
  15. class CGHeroInstance;
  16. class CGTownInstance;
  17. class MetaString;
  18. VCMI_LIB_NAMESPACE_END
  19. class CGameHandler;
  20. enum class ECurrentChatVote : int8_t
  21. {
  22. NONE = -1,
  23. SIMTURNS_ALLOW,
  24. SIMTURNS_FORCE,
  25. SIMTURNS_ABORT,
  26. TIMER_PROLONG,
  27. };
  28. class PlayerMessageProcessor
  29. {
  30. CGameHandler * gameHandler;
  31. ECurrentChatVote currentVote = ECurrentChatVote::NONE;
  32. int currentVoteParameter = 0;
  33. std::set<PlayerColor> awaitingPlayers;
  34. JsonNode cheatConfig;
  35. void executeCheatCode(const std::string & cheatName, PlayerColor player, ObjectInstanceID currObj, const std::vector<std::string> & arguments );
  36. bool handleCheatCode(const std::string & cheatFullCommand, PlayerColor player, ObjectInstanceID currObj);
  37. void handleCommand(PlayerColor player, const std::string & message);
  38. void cheatGiveSpells(PlayerColor player, const CGHeroInstance * hero);
  39. void cheatBuildTown(PlayerColor player, const CGTownInstance * town);
  40. void cheatGiveArmy(PlayerColor player, const CGHeroInstance * hero, std::vector<std::string> words);
  41. void cheatGiveMachines(PlayerColor player, const CGHeroInstance * hero);
  42. void cheatGiveArtifacts(PlayerColor player, const CGHeroInstance * hero, std::vector<std::string> words);
  43. void cheatGiveScrolls(PlayerColor player, const CGHeroInstance * hero);
  44. void cheatColorSchemeChange(PlayerColor player, ColorScheme scheme);
  45. void cheatLevelup(PlayerColor player, const CGHeroInstance * hero, std::vector<std::string> words);
  46. void cheatExperience(PlayerColor player, const CGHeroInstance * hero, std::vector<std::string> words);
  47. void cheatMovement(PlayerColor player, const CGHeroInstance * hero, std::vector<std::string> words);
  48. void cheatResources(PlayerColor player, std::vector<std::string> words);
  49. void cheatVictory(PlayerColor player);
  50. void cheatDefeat(PlayerColor player);
  51. void cheatMapReveal(PlayerColor player, bool reveal);
  52. void cheatPuzzleReveal(PlayerColor player);
  53. void cheatMaxLuck(PlayerColor player, const CGHeroInstance * hero);
  54. void cheatMaxMorale(PlayerColor player, const CGHeroInstance * hero);
  55. void cheatFly(PlayerColor player, const CGHeroInstance * hero);
  56. void cheatSkill(PlayerColor player, const CGHeroInstance * hero, std::vector<std::string> words);
  57. void cheatTeleport(PlayerColor player, const CGHeroInstance * hero, std::vector<std::string> words);
  58. void commandExit(PlayerColor player, const std::vector<std::string> & words);
  59. void commandKick(PlayerColor player, const std::vector<std::string> & words);
  60. void commandSave(PlayerColor player, const std::vector<std::string> & words);
  61. void commandCheaters(PlayerColor player, const std::vector<std::string> & words);
  62. void commandStatistic(PlayerColor player, const std::vector<std::string> & words);
  63. void commandHelp(PlayerColor player, const std::vector<std::string> & words);
  64. void commandVote(PlayerColor player, const std::vector<std::string> & words);
  65. void finishVoting();
  66. void abortVoting();
  67. void startVoting(PlayerColor initiator, ECurrentChatVote what, int parameter);
  68. public:
  69. PlayerMessageProcessor(CGameHandler * gameHandler);
  70. /// incoming NetPack handling
  71. void playerMessage(PlayerColor player, const std::string & message, ObjectInstanceID currObj);
  72. /// Send message to specific client with "System" as sender
  73. void sendSystemMessage(GameConnectionID connectionID, const MetaString & message);
  74. void sendSystemMessage(GameConnectionID connectionID, const std::string & message);
  75. /// Send message to all players with "System" as sender
  76. void broadcastSystemMessage(MetaString message);
  77. void broadcastSystemMessage(const std::string & message);
  78. /// Send message from specific player to all other players
  79. void broadcastMessage(PlayerColor playerSender, const std::string & message);
  80. template <typename Handler> void serialize(Handler &h)
  81. {
  82. }
  83. };