package player import ( "f1-game/internal/code" "f1-game/internal/enum" nameEvent "f1-game/internal/name/event" nameRemote "f1-game/internal/name/remote" "f1-game/internal/pb" "f1-game/internal/types" "f1-game/nodes/game/player/asset" assetOrigin "f1-game/nodes/game/player/asset/origin" "f1-game/nodes/game/player/currency" cfacade "github.com/cherry-game/cherry/facade" ) func (p *actorPlayer) initAsset() { p.Remote().Register(nameRemote.Player_AssetAdd, p.assetAdd) p.Remote().Register(nameRemote.Player_AssetSub, p.assetSub) p.Remote().Register(nameRemote.Player_AssetCheck, p.assetCheck) p.EventRegister(nameEvent.Vip_LevelUp, p.refreshItemLimit) p.EventRegister(nameEvent.Vip_Status, p.refreshItemLimit) } // assetAdd 添加资产 func (p *actorPlayer) assetAdd(req *pb.PlayerAddAssets) (*pb.AssetList, int32) { addAssets := types.Assets{} addAssets.FillProto(req.AddAssets) ao := assetOrigin.Get(req.Origin) retAssets, errCode := asset.Service().Adds(p.playerID, addAssets, ao, true) if code.IsFail(errCode) { return nil, errCode } rsp := retAssets.ToAssetListProto() return &rsp, errCode } // assetSub 扣除资产 func (p *actorPlayer) assetSub(req *pb.PlayerAddAssets) (*pb.AssetList, int32) { addAssets := types.Assets{} addAssets.FillProto(req.AddAssets) ao := assetOrigin.Get(req.Origin) retAssets, errCode := asset.Service().Subs(p.playerID, addAssets, ao) if code.IsFail(errCode) { return nil, errCode } rsp := retAssets.ToAssetListProto() return &rsp, errCode } // assetSub 检测资产 func (p *actorPlayer) assetCheck(req *pb.AssetList) int32 { assets := types.Assets{} assets.FillProto(req.List) return asset.Service().IsAllEnough(p.playerID, assets) } // 刷新货币上限 func (p *actorPlayer) refreshItemLimit(e cfacade.IEventData) { currency.Service().RefreshCurrencyMax(p.playerID, true, enum.GameItemMaxNumList...) }