player_asset.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package player
  2. import (
  3. "f1-game/internal/code"
  4. "f1-game/internal/enum"
  5. nameEvent "f1-game/internal/name/event"
  6. nameRemote "f1-game/internal/name/remote"
  7. "f1-game/internal/pb"
  8. "f1-game/internal/types"
  9. "f1-game/nodes/game/player/asset"
  10. assetOrigin "f1-game/nodes/game/player/asset/origin"
  11. "f1-game/nodes/game/player/currency"
  12. cfacade "github.com/cherry-game/cherry/facade"
  13. )
  14. func (p *actorPlayer) initAsset() {
  15. p.Remote().Register(nameRemote.Player_AssetAdd, p.assetAdd)
  16. p.Remote().Register(nameRemote.Player_AssetSub, p.assetSub)
  17. p.Remote().Register(nameRemote.Player_AssetCheck, p.assetCheck)
  18. p.EventRegister(nameEvent.Vip_LevelUp, p.refreshItemLimit)
  19. p.EventRegister(nameEvent.Vip_Status, p.refreshItemLimit)
  20. }
  21. // assetAdd 添加资产
  22. func (p *actorPlayer) assetAdd(req *pb.PlayerAddAssets) (*pb.AssetList, int32) {
  23. addAssets := types.Assets{}
  24. addAssets.FillProto(req.AddAssets)
  25. ao := assetOrigin.Get(req.Origin)
  26. retAssets, errCode := asset.Service().Adds(p.playerID, addAssets, ao, true)
  27. if code.IsFail(errCode) {
  28. return nil, errCode
  29. }
  30. rsp := retAssets.ToAssetListProto()
  31. return &rsp, errCode
  32. }
  33. // assetSub 扣除资产
  34. func (p *actorPlayer) assetSub(req *pb.PlayerAddAssets) (*pb.AssetList, int32) {
  35. addAssets := types.Assets{}
  36. addAssets.FillProto(req.AddAssets)
  37. ao := assetOrigin.Get(req.Origin)
  38. retAssets, errCode := asset.Service().Subs(p.playerID, addAssets, ao)
  39. if code.IsFail(errCode) {
  40. return nil, errCode
  41. }
  42. rsp := retAssets.ToAssetListProto()
  43. return &rsp, errCode
  44. }
  45. // assetSub 检测资产
  46. func (p *actorPlayer) assetCheck(req *pb.AssetList) int32 {
  47. assets := types.Assets{}
  48. assets.FillProto(req.List)
  49. return asset.Service().IsAllEnough(p.playerID, assets)
  50. }
  51. // 刷新货币上限
  52. func (p *actorPlayer) refreshItemLimit(e cfacade.IEventData) {
  53. currency.Service().RefreshCurrencyMax(p.playerID, true, enum.GameItemMaxNumList...)
  54. }