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" assetOrigin "f1-game/nodes/game/player/asset/origin" cproto "github.com/cherry-game/cherry/net/proto" ) func (p *actorPlayer) initVip() { p.Local().Register(nameLocal.Player_VipDailyReward, p.vipDailyReward) } // 领取每日VIP奖励 func (p *actorPlayer) vipDailyReward(session *cproto.Session, req *pb.I32) { var ( playerTable = p.PlayerTable() rewardType = enum.VipDailyRewardType(req.Value) ) 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) switch rewardType { case enum.VipDailyRewardType_Exp: if addExp := data.VipDailyExp.GetExpByDay(playerTable.Stats.ContinueLoginDays); addExp > 0 { gameFacade.Vip.AddExp(p.playerID, addExp) } case enum.VipDailyRewardType_Box: if vipRow, found := data.Vip.GetByLevel(playerTable.Vip.Level); found { gameFacade.Asset.Adds(p.playerID, vipRow.DailyBox, assetOrigin.None, true) } } playerTable.Save2Queue() p.ResponseCode(session, code.OK) }