cursor_mode.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #pragma once
  2. #include <QString>
  3. enum class CursorMode {
  4. Normal,
  5. Patrol,
  6. Attack,
  7. Guard,
  8. PlaceBuilding,
  9. Heal,
  10. Build
  11. };
  12. namespace CursorModeUtils {
  13. inline auto toString(CursorMode mode) -> QString {
  14. switch (mode) {
  15. case CursorMode::Normal:
  16. return "normal";
  17. case CursorMode::Patrol:
  18. return "patrol";
  19. case CursorMode::Attack:
  20. return "attack";
  21. case CursorMode::Guard:
  22. return "guard";
  23. case CursorMode::PlaceBuilding:
  24. return "place_building";
  25. case CursorMode::Heal:
  26. return "heal";
  27. case CursorMode::Build:
  28. return "build";
  29. }
  30. return "normal";
  31. }
  32. inline auto fromString(const QString &str) -> CursorMode {
  33. if (str == "patrol") {
  34. return CursorMode::Patrol;
  35. }
  36. if (str == "attack") {
  37. return CursorMode::Attack;
  38. }
  39. if (str == "guard") {
  40. return CursorMode::Guard;
  41. }
  42. if (str == "place_building") {
  43. return CursorMode::PlaceBuilding;
  44. }
  45. if (str == "heal") {
  46. return CursorMode::Heal;
  47. }
  48. if (str == "build") {
  49. return CursorMode::Build;
  50. }
  51. return CursorMode::Normal;
  52. }
  53. inline auto toInt(CursorMode mode) -> int { return static_cast<int>(mode); }
  54. inline auto fromInt(int value) -> CursorMode {
  55. switch (value) {
  56. case 0:
  57. return CursorMode::Normal;
  58. case 1:
  59. return CursorMode::Patrol;
  60. case 2:
  61. return CursorMode::Attack;
  62. case 3:
  63. return CursorMode::Guard;
  64. case 4:
  65. return CursorMode::PlaceBuilding;
  66. case 5:
  67. return CursorMode::Heal;
  68. case 6:
  69. return CursorMode::Build;
  70. default:
  71. return CursorMode::Normal;
  72. }
  73. }
  74. } // namespace CursorModeUtils