| 123456789101112131415161718192021222324252627282930313233343536373839 |
- package item
- import (
- "f1-game/internal/enum"
- "f1-game/internal/pb"
- "f1-game/internal/types"
- itemUse "f1-game/nodes/game/player/item/use"
- )
- type (
- // useParser 道具使用解析接口
- useParser interface {
- UseType() enum.ItemUseType // 使用类型
- Use(playerID int64, req *pb.ItemUseRequest, poolID int32) (types.Assets, int32) // 使用返回奖励
- }
- serviceUse map[enum.ItemUseType]useParser
- )
- func newServiceUse() serviceUse {
- instance := serviceUse{}
- instance.load()
- return instance
- }
- func (p serviceUse) get(useType enum.ItemUseType) (useParser, bool) {
- parser, found := p[useType]
- return parser, found
- }
- func (p serviceUse) register(parser useParser) {
- p[parser.UseType()] = parser
- }
- func (p serviceUse) load() {
- p.register(&itemUse.Random{})
- p.register(&itemUse.GetAll{})
- p.register(&itemUse.SelectOne{})
- }
|