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{}) }