package player import ( "f1-game/internal/code" "f1-game/internal/data" "f1-game/internal/enum" nameLocal "f1-game/internal/name/local" "f1-game/internal/pb" gameFacade "f1-game/nodes/game/internal/facade" ao "f1-game/nodes/game/player/asset/origin" cproto "github.com/cherry-game/cherry/net/proto" ) func (p *actorPlayer) initVip() { p.Local().Register(nameLocal.Player_VipDailyExpReward, p.vipDailyExpReward) p.Local().Register(nameLocal.Player_VipDailyBoxReward, p.vipDailyBoxReward) } // 领取每日VIP点数 func (p *actorPlayer) vipDailyExpReward(session *cproto.Session, _ *pb.None) { var ( playerTable = p.PlayerTable() rewardType = enum.VipDailyRewardType_Exp ) if !enum.IsVipDailyRewardType(rewardType) { p.ResponseCode(session, code.IllegalArgument) return } if playerTable.Vip.IsReceived(rewardType) { p.ResponseCode(session, code.VipDailyRewardReceived) return } playerTable.Vip.SetReceived(rewardType) if addExp := data.VipDailyExp.GetExpByDay(playerTable.Stats.ContinueLoginDays); addExp > 0 { gameFacade.Vip.AddExp(p.playerID, addExp) } playerTable.Save2Queue() p.ResponseCode(session, code.OK) p.Debug("[vipDailyExpReward] Received success.") } // 领取每日VIP宝箱奖励 func (p *actorPlayer) vipDailyBoxReward(session *cproto.Session, req *pb.I32) { var ( playerTable = p.PlayerTable() level = req.Value // VIP等级 rewardType = enum.VipDailyRewardType_Box ) if !enum.IsVipDailyRewardType(rewardType) { p.ResponseCode(session, code.IllegalArgument) return } if playerTable.Vip.IsReceived(rewardType) { p.ResponseCode(session, code.VipDailyRewardReceived) return } if level == 0 { level = playerTable.Vip.Level } vipRow, found := data.Vip.GetByLevel(level) if !found { p.ResponseCode(session, code.ConfigNotFound_VipLevel) return } playerTable.Vip.SetReceived(rewardType) rewardAssets, errCode := gameFacade.Asset.Adds(p.playerID, vipRow.DailyBox, ao.None, true) if code.IsFail(errCode) { p.ResponseCode(session, errCode) return } playerTable.Save2Queue() rsp := rewardAssets.ToAssetListProto() p.Response(session, &rsp) p.Debug("[vipDailyBoxReward] Received success. level = %d", level) }