random.go 729 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package itemUse
  2. import (
  3. "f1-game/internal/code"
  4. "f1-game/internal/data"
  5. "f1-game/internal/enum"
  6. "f1-game/internal/pb"
  7. "f1-game/internal/types"
  8. )
  9. // Random 使用后按随机规则添加
  10. type Random struct {
  11. }
  12. func (*Random) UseType() enum.ItemUseType {
  13. return enum.ItemUseRandom
  14. }
  15. func (*Random) Use(_ int64, req *pb.ItemUseRequest, poolID int32) (types.Assets, int32) {
  16. weighter, found := data.DropPool.GetWeighter(poolID)
  17. if !found {
  18. return types.NoneAssets, code.ItemUseFail
  19. }
  20. retAssets := types.Assets{} // return assets
  21. for range req.UseNum {
  22. // 随机取一个物品
  23. row := weighter.SelectOne()
  24. if row == nil {
  25. continue
  26. }
  27. retAssets.Add(row.ItemID, row.Num)
  28. }
  29. return retAssets, code.OK
  30. }