REWARD_MODE.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. namespace App\Module\Game\Enums;
  3. use UCore\Enum\EnumCore;
  4. use UCore\Enum\EnumToInt;
  5. /**
  6. * 奖励模式枚举
  7. *
  8. * 定义了奖励组的发放模式
  9. */
  10. enum REWARD_MODE: int
  11. {
  12. use EnumCore, EnumToInt;
  13. /**
  14. * 权重选择模式
  15. * 传统的权重选择机制,从N个奖励中按权重选择M个
  16. */
  17. case WEIGHT_SELECTION = 1;
  18. /**
  19. * 独立概率模式
  20. * 每个奖励项独立判断是否获得,基于概率
  21. */
  22. case INDEPENDENT_PROBABILITY = 2;
  23. /**
  24. * 获取所有奖励模式
  25. *
  26. * @return array
  27. */
  28. public static function getAll(): array
  29. {
  30. return [
  31. self::WEIGHT_SELECTION->value => '权重选择模式',
  32. self::INDEPENDENT_PROBABILITY->value => '独立概率模式',
  33. ];
  34. }
  35. /**
  36. * 获取奖励模式名称
  37. *
  38. * @param int $mode
  39. * @return string
  40. */
  41. public static function getName(int $mode): string
  42. {
  43. return self::getAll()[$mode] ?? '未知';
  44. }
  45. /**
  46. * 检查奖励模式是否有效
  47. *
  48. * @param int $mode
  49. * @return bool
  50. */
  51. public static function isValid(int $mode): bool
  52. {
  53. return isset(self::getAll()[$mode]);
  54. }
  55. }