service_use.go 897 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package item
  2. import (
  3. "f1-game/internal/enum"
  4. "f1-game/internal/pb"
  5. "f1-game/internal/types"
  6. itemUse "f1-game/nodes/game/player/item/use"
  7. )
  8. type (
  9. // useParser 道具使用解析接口
  10. useParser interface {
  11. UseType() enum.ItemUseType // 使用类型
  12. Use(playerID int64, req *pb.ItemUseRequest, poolID int32) (types.Assets, int32) // 使用返回奖励
  13. }
  14. serviceUse map[enum.ItemUseType]useParser
  15. )
  16. func newServiceUse() serviceUse {
  17. instance := serviceUse{}
  18. instance.load()
  19. return instance
  20. }
  21. func (p serviceUse) get(useType enum.ItemUseType) (useParser, bool) {
  22. parser, found := p[useType]
  23. return parser, found
  24. }
  25. func (p serviceUse) register(parser useParser) {
  26. p[parser.UseType()] = parser
  27. }
  28. func (p serviceUse) load() {
  29. p.register(&itemUse.Random{})
  30. p.register(&itemUse.GetAll{})
  31. p.register(&itemUse.SelectOne{})
  32. }