| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- package mapPlayer
- import (
- actorRemote "f1-game/internal/actor_remote"
- "f1-game/internal/code"
- "f1-game/internal/data"
- nameActor "f1-game/internal/name/actor"
- nameLocal "f1-game/internal/name/local"
- nameRemote "f1-game/internal/name/remote"
- "f1-game/internal/pb"
- ao "f1-game/nodes/game/player/asset/origin"
- "f1-game/nodes/map/internal/db"
- "f1-game/nodes/map/player/season"
- cfacade "github.com/cherry-game/cherry/facade"
- cproto "github.com/cherry-game/cherry/net/proto"
- )
- func (p *actorPlayer) initSeason() {
- p.Local().Register(nameLocal.MapPlayer_SeasonQuestInfo, p.seasonQuestInfo)
- p.Local().Register(nameLocal.MapPlayer_SeasonQuestReward, p.seasonQuestReward)
- }
- // 获取赛季霸业任务信息
- func (p *actorPlayer) seasonQuestInfo(session *cproto.Session, _ *pb.None) {
- var (
- playerTable = db.GetMapPlayerTable(p.playerID)
- rsp = &pb.SeasonQuestInfo{}
- )
- req := season.Service().GetSeasonQuestLeagueIDMap(playerTable)
- errCode := p.CallWait(cfacade.NewPath("", nameActor.Map_Season), nameRemote.MapSeason_QuestInfo, req, rsp)
- if code.IsFail(errCode) {
- p.ResponseCode(session, code.SeasonQuestInfoError)
- return
- }
- // 标记已领取的任务
- for id, quest := range rsp.Quests {
- if playerTable.Season.RewardedQuests.Contains(id) {
- quest.IsRewarded = true
- }
- }
- p.Response(session, rsp)
- }
- // 领取赛季霸业任务奖励
- func (p *actorPlayer) seasonQuestReward(session *cproto.Session, req *pb.I32) {
- if req.Value < 1 {
- p.ResponseCode(session, code.IllegalArgument)
- return
- }
- seasonQuestRow, ok := data.SeasonQuest.GetByID(req.Value)
- if !ok {
- p.ResponseCode(session, code.ConfigNotFound_SeasonQuest)
- return
- }
- var (
- questID = req.Value
- playerTable = db.GetMapPlayerTable(p.playerID)
- )
- if playerTable.Season.RewardedQuests.Contains(questID) {
- p.ResponseCode(session, code.SeasonQuestRewardRepeat)
- return
- }
- checkReq := &pb.I32I64{
- Key: questID,
- Value: season.Service().GetSeasonQuestLeagueID(playerTable, questID),
- }
- errCode := p.CallWait(cfacade.NewPath("", nameActor.Map_Season), nameRemote.MapSeason_QuestCheck, checkReq, nil)
- if code.IsFail(errCode) {
- p.ResponseCode(session, errCode)
- return
- }
- // 标记任务为已领取
- playerTable.Season.RewardedQuests.Add(req.Value)
- playerTable.Save2Queue()
- // 发放奖励
- actorRemote.GamePlayer.AssetAddAsync(playerTable.GameNodeID, p.playerID, seasonQuestRow.Rewards, ao.None)
- p.ResponseCode(session, code.OK)
- }
|