SkinService.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <?php
  2. namespace App\Module\Game\Services;
  3. use App\Module\Game\Logics\SkinLogic;
  4. use App\Module\Game\Dto\UserSkinDto;
  5. use UCore\Dto\Res;
  6. /**
  7. * 皮肤服务类
  8. *
  9. * 提供皮肤相关的服务,对外接口
  10. */
  11. class SkinService
  12. {
  13. /**
  14. * 获取用户皮肤信息
  15. *
  16. * @param int $userId 用户ID
  17. * @return UserSkinDto|null 用户皮肤信息,不存在时返回null
  18. */
  19. public static function getUserSkinInfo(int $userId): ?UserSkinDto
  20. {
  21. $logic = new SkinLogic();
  22. return $logic->getUserSkinInfo($userId);
  23. }
  24. /**
  25. * 切换用户皮肤
  26. *
  27. * @param int $userId 用户ID
  28. * @param int $skinId 皮肤ID
  29. * @return Res 操作结果
  30. */
  31. public static function changeSkin(int $userId, int $skinId): Res
  32. {
  33. $logic = new SkinLogic();
  34. return $logic->changeSkin($userId, $skinId);
  35. }
  36. /**
  37. * 为用户添加皮肤
  38. *
  39. * @param int $userId 用户ID
  40. * @param int $skinId 皮肤ID
  41. * @return Res 操作结果
  42. */
  43. public static function addSkin(int $userId, int $skinId): Res
  44. {
  45. $logic = new SkinLogic();
  46. return $logic->addSkin($userId, $skinId);
  47. }
  48. /**
  49. * 检查用户是否拥有指定皮肤
  50. *
  51. * @param int $userId 用户ID
  52. * @param int $skinId 皮肤ID
  53. * @return bool 是否拥有
  54. */
  55. public static function hasSkin(int $userId, int $skinId): bool
  56. {
  57. $logic = new SkinLogic();
  58. return $logic->hasSkin($userId, $skinId);
  59. }
  60. /**
  61. * 获取用户当前使用的皮肤ID
  62. *
  63. * @param int $userId 用户ID
  64. * @return int 当前皮肤ID,默认为1
  65. */
  66. public static function getCurrentSkinId(int $userId): int
  67. {
  68. $skinInfo = self::getUserSkinInfo($userId);
  69. return $skinInfo ? $skinInfo->currentSkinId : 1;
  70. }
  71. /**
  72. * 获取用户拥有的皮肤列表
  73. *
  74. * @param int $userId 用户ID
  75. * @return array 拥有的皮肤ID数组
  76. */
  77. public static function getOwnedSkins(int $userId): array
  78. {
  79. $skinInfo = self::getUserSkinInfo($userId);
  80. return $skinInfo ? $skinInfo->ownedSkins : [1];
  81. }
  82. /**
  83. * 初始化用户皮肤数据
  84. *
  85. * @param int $userId 用户ID
  86. * @return Res 操作结果
  87. */
  88. public static function initUserSkin(int $userId): Res
  89. {
  90. $logic = new SkinLogic();
  91. return $logic->initUserSkin($userId);
  92. }
  93. /**
  94. * 获取所有可用皮肤
  95. *
  96. * @return array 皮肤列表
  97. */
  98. public static function getAllSkins(): array
  99. {
  100. return \App\Module\Game\Enums\SKIN::getValueDescription();
  101. }
  102. /**
  103. * 获取皮肤名称
  104. *
  105. * @param int $skinId 皮肤ID
  106. * @return string 皮肤名称
  107. */
  108. public static function getSkinName(int $skinId): string
  109. {
  110. $skins = self::getAllSkins();
  111. return $skins[$skinId] ?? '未知皮肤';
  112. }
  113. /**
  114. * 验证皮肤ID是否有效
  115. *
  116. * @param int $skinId 皮肤ID
  117. * @return bool 是否有效
  118. */
  119. public static function isValidSkinId(int $skinId): bool
  120. {
  121. return $skinId >= 1 && $skinId <= 4;
  122. }
  123. }