player_vip.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package player
  2. import (
  3. "f1-game/internal/code"
  4. "f1-game/internal/data"
  5. "f1-game/internal/enum"
  6. nameLocal "f1-game/internal/name/local"
  7. "f1-game/internal/pb"
  8. gameFacade "f1-game/nodes/game/internal/facade"
  9. ao "f1-game/nodes/game/player/asset/origin"
  10. cproto "github.com/cherry-game/cherry/net/proto"
  11. )
  12. func (p *actorPlayer) initVip() {
  13. p.Local().Register(nameLocal.Player_VipDailyExpReward, p.vipDailyExpReward)
  14. p.Local().Register(nameLocal.Player_VipDailyBoxReward, p.vipDailyBoxReward)
  15. }
  16. // 领取每日VIP点数
  17. func (p *actorPlayer) vipDailyExpReward(session *cproto.Session, _ *pb.None) {
  18. var (
  19. playerTable = p.PlayerTable()
  20. rewardType = enum.VipDailyRewardType_Exp
  21. )
  22. if !enum.IsVipDailyRewardType(rewardType) {
  23. p.ResponseCode(session, code.IllegalArgument)
  24. return
  25. }
  26. if playerTable.Vip.IsReceived(rewardType) {
  27. p.ResponseCode(session, code.VipDailyRewardReceived)
  28. return
  29. }
  30. playerTable.Vip.SetReceived(rewardType)
  31. if addExp := data.VipDailyExp.GetExpByDay(playerTable.Stats.ContinueLoginDays); addExp > 0 {
  32. gameFacade.Vip.AddExp(p.playerID, addExp)
  33. }
  34. playerTable.Save2Queue()
  35. p.ResponseCode(session, code.OK)
  36. p.Debug("[vipDailyExpReward] Received success.")
  37. }
  38. // 领取每日VIP宝箱奖励
  39. func (p *actorPlayer) vipDailyBoxReward(session *cproto.Session, req *pb.I32) {
  40. var (
  41. playerTable = p.PlayerTable()
  42. level = req.Value // VIP等级
  43. rewardType = enum.VipDailyRewardType_Box
  44. )
  45. if !enum.IsVipDailyRewardType(rewardType) {
  46. p.ResponseCode(session, code.IllegalArgument)
  47. return
  48. }
  49. if playerTable.Vip.IsReceived(rewardType) {
  50. p.ResponseCode(session, code.VipDailyRewardReceived)
  51. return
  52. }
  53. if level == 0 {
  54. level = playerTable.Vip.Level
  55. }
  56. vipRow, found := data.Vip.GetByLevel(level)
  57. if !found {
  58. p.ResponseCode(session, code.ConfigNotFound_VipLevel)
  59. return
  60. }
  61. playerTable.Vip.SetReceived(rewardType)
  62. rewardAssets, errCode := gameFacade.Asset.Adds(p.playerID, vipRow.DailyBox, ao.None, true)
  63. if code.IsFail(errCode) {
  64. p.ResponseCode(session, errCode)
  65. return
  66. }
  67. playerTable.Save2Queue()
  68. rsp := rewardAssets.ToAssetListProto()
  69. p.Response(session, &rsp)
  70. p.Debug("[vipDailyBoxReward] Received success. level = %d", level)
  71. }