ChatCommand.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #pragma once
  2. #include <ReferenceCounter.h>
  3. #include <Text.h>
  4. #include "Entity.h"
  5. class ChatCommandParameter;
  6. class ChatCommand : public Framework::ConsoleCommand
  7. {
  8. private:
  9. Framework::Text description;
  10. int securityLevel;
  11. Framework::RCArray<ChatCommandParameter> params;
  12. public:
  13. ChatCommand(
  14. Framework::Text name, Framework::Text description, int securityLevel);
  15. protected:
  16. void addParam(ChatCommandParameter* param);
  17. public:
  18. virtual bool execute(
  19. Framework::RCArray<Framework::Text>& params, Entity* zActor) const
  20. = 0;
  21. bool execute(Framework::RCArray<Framework::Text>& params) const override;
  22. void addAutocompletePossibilities(
  23. const Framework::RCArray<Framework::Text>& args,
  24. bool appendToLast,
  25. Framework::RCArray<Framework::Text>& possibilities) const override;
  26. const Framework::RCArray<ChatCommandParameter>& getParams() const;
  27. Framework::Text getHelp() const;
  28. virtual int getSecurityLevel(
  29. Framework::RCArray<Framework::Text> params) const;
  30. };
  31. class ChatCommandParameter : public virtual Framework::ReferenceCounter
  32. {
  33. private:
  34. Framework::Text name;
  35. Framework::Text description;
  36. bool optional;
  37. public:
  38. ChatCommandParameter(
  39. Framework::Text name, Framework::Text description, bool optional);
  40. virtual bool isLegalValue(Framework::Text value) const;
  41. virtual Framework::Text getDefaultValue(Entity* zActor) const;
  42. Framework::Text getName() const;
  43. Framework::Text getDescription() const;
  44. bool isOptional() const;
  45. virtual Framework::RCArray<Framework::Text> getAutocompleteValues(
  46. const Framework::Text& current) const;
  47. };
  48. class PlayerNameParameter : public ChatCommandParameter
  49. {
  50. public:
  51. PlayerNameParameter();
  52. PlayerNameParameter(bool optional);
  53. bool isLegalValue(Framework::Text value) const override;
  54. Framework::Text getDefaultValue(Entity* zActor) const override;
  55. Framework::RCArray<Framework::Text> getAutocompleteValues(
  56. const Framework::Text& current) const override;
  57. };
  58. class IntegerParameter : public ChatCommandParameter
  59. {
  60. private:
  61. std::function<int(Entity* zEntity)> calculateDefault;
  62. bool hasMin;
  63. int minValue;
  64. bool hasMax;
  65. int maxValue;
  66. public:
  67. IntegerParameter(Framework::Text name,
  68. Framework::Text description,
  69. bool optional,
  70. std::function<int(Entity* zEntity)> calculateDefault);
  71. IntegerParameter* setMin(int minValue);
  72. IntegerParameter* setMax(int maxValue);
  73. bool isLegalValue(Framework::Text value) const override;
  74. Framework::Text getDefaultValue(Entity* zActor) const override;
  75. };