| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- package mapPlayer
- import (
- "f1-game/internal/code"
- "f1-game/internal/data"
- nameRemote "f1-game/internal/name/remote"
- "f1-game/internal/pb"
- ao "f1-game/nodes/game/player/asset/origin"
- "f1-game/nodes/map/internal/db"
- mapFacade "f1-game/nodes/map/internal/facade"
- signIn "f1-game/nodes/map/player/sign_in"
- cproto "github.com/cherry-game/cherry/net/proto"
- )
- func (p *actorPlayer) initSignIn() {
- p.Local().Register(nameRemote.MapPlayer_DailySignIn, p.dailySignIn)
- p.Local().Register(nameRemote.MapPlayer_ReDailySignIn, p.reDailySignIn)
- p.Local().Register(nameRemote.MapPlayer_DailySignInReward, p.dailySignInReward)
- }
- func (p *actorPlayer) dailySignIn(session *cproto.Session, _ *pb.None) {
- var (
- playerTable = db.GetMapPlayerTable(p.playerID)
- poolID = playerTable.SignIn.PoolID
- currentDay = signIn.Service().GetCurrentDay(playerTable)
- )
- // 已签到过
- if playerTable.SignIn.HasSignedIn(currentDay) {
- p.ResponseCode(session, code.SignInAlreadySigned)
- return
- }
- // 查看配置是否存在
- signInRow, found := data.SignIn.GetByPoolIDDays(poolID, currentDay)
- if !found {
- p.ResponseCode(session, code.SignInConfigNotFound)
- return
- }
- _, errCode := mapFacade.Storage.AssetAdds(p.playerID, signInRow.Rewards, ao.SignInReward, true)
- if code.IsFail(errCode) {
- p.ResponseCode(session, errCode)
- return
- }
- // 更新签到数据
- playerTable.SignIn.AddSignInDay(currentDay)
- playerTable.Save2Queue()
- resp := &pb.I32I32{
- Key: currentDay,
- Value: playerTable.SignIn.TotalSignInDays,
- }
- p.Response(session, resp)
- }
- // 补签
- func (p *actorPlayer) reDailySignIn(session *cproto.Session, req *pb.I32) {
- var (
- playerTable = db.GetMapPlayerTable(p.playerID)
- reSignInDays = req.Value
- currentDays = signIn.Service().GetCurrentDay(playerTable)
- )
- // 判断是否等于当天签到天数
- if reSignInDays == currentDays {
- p.ResponseCode(session, code.SignInReSignNotCan)
- return
- }
- // 是否还有补签次数
- if !playerTable.SignIn.HasReSignInCount() {
- p.ResponseCode(session, code.SignInReSignCountNotEnough)
- return
- }
- // 判断补签天数是否已经签到过
- if playerTable.SignIn.HasSignedIn(reSignInDays) {
- p.ResponseCode(session, code.SignInAlreadySigned)
- return
- }
- // 找到第一个没签到的天数 然后判断是否等于当前补签天数
- missSignInDays, errCode := signIn.Service().GetFirstMissSignInDays(playerTable)
- if code.IsFail(errCode) {
- p.ResponseCode(session, errCode)
- return
- }
- if missSignInDays != reSignInDays {
- p.ResponseCode(session, code.SignInReSignNotCan)
- return
- }
- signInRow, found := data.SignIn.GetByPoolIDDays(playerTable.SignIn.PoolID, reSignInDays)
- if !found {
- p.ResponseCode(session, code.SignInConfigNotFound)
- return
- }
- _, errCode = mapFacade.Storage.AssetAdds(p.playerID, signInRow.Rewards, ao.ReSignInReward, true)
- if code.IsFail(errCode) {
- p.ResponseCode(session, errCode)
- return
- }
- playerTable.SignIn.AddSignInDay(reSignInDays)
- playerTable.SignIn.UseReSignInCount()
- playerTable.Save2Queue()
- resp := &pb.ReSignIn{
- ReSignInDays: reSignInDays,
- TotalSignInDays: playerTable.SignIn.TotalSignInDays,
- ReSignInCount: playerTable.SignIn.ReSignInCount,
- }
- p.Response(session, resp)
- }
- // 领取累计签到奖励
- func (p *actorPlayer) dailySignInReward(session *cproto.Session, req *pb.I32) {
- var (
- playerTable = db.GetMapPlayerTable(p.playerID)
- rewardID = req.GetValue()
- )
- signInRewardRow, found := data.SignInReward.GetByRewardID(rewardID)
- if !found {
- p.ResponseCode(session, code.SignInRewardConfigNotFound)
- return
- }
- if playerTable.SignIn.TotalSignInDays < signInRewardRow.NeedDays {
- p.ResponseCode(session, code.SignInDaysNotEnough)
- return
- }
- if playerTable.SignIn.HasReceivedAward(rewardID) {
- p.ResponseCode(session, code.SignInRewardAlreadyReceived)
- return
- }
- _, errCode := mapFacade.Storage.AssetAdds(p.playerID, signInRewardRow.CumRewards, ao.CumSignInReward)
- if code.IsFail(errCode) {
- p.ResponseCode(session, errCode)
- return
- }
- playerTable.SignIn.ReceiveAward(rewardID)
- playerTable.Save2Queue()
- resp := &pb.I32{
- Value: rewardID,
- }
- p.Response(session, resp)
- }
|