package handler //func (this *PlayerHandler) AchievementGetReward(player *logic.Player, msg *net.Message) { // var req = new(proto.MsgAchievementGetRewardReq) // var err = msg.Read(req) // if err != nil { // this.logger.Error("Read message failed, ", err) // _ = player.TipNotice(proto.ErrParameterError) // return // } // // if req.Id == 0 { // this.logger.Error("Parameter error, req.Id == 0") // _ = player.TipNotice(proto.ErrParameterError) // return // } // // var achievementTable = this.tables.Achievement.Get(int(req.Id)) // if achievementTable == nil { // this.logger.Error("Parameter or data tables error, Table 'Achievement' was not found, Id: ", req.Id) // _ = player.TipNotice(proto.ErrDataTablesError) // return // } // // var key = util.Compose2uint32(uint32(achievementTable.AchievementType), uint32(achievementTable.ExtraNum)) // var achievement = player.Achievement[key] // if achievement == nil { // this.logger.Errorf("Achievement of player not found, AchievementType: %d, ExtraNum; %d, key: %d", achievementTable.AchievementType, achievementTable.ExtraNum, key) // _ = player.TipNotice(proto.ErrAchievementNotFound) // return // } // // var rewardStatus = achievement.Statuses[req.Id] // switch proto.RewardStatus(rewardStatus) { // case proto.RewardStatusUnable: // this.logger.Errorf("Achievement reward unable, Id: %d, status: %d", req.Id, rewardStatus) // _ = player.TipNotice(proto.ErrAchievementNotCompleted) // return // case proto.RewardStatusCanGet: // var rewardList []*proto.ItemPair // for i := range achievementTable.ItemList { // _ = player.AddItem(uint32(achievementTable.ItemList[i]), uint32(achievementTable.NumList[i]), logic.LogTypeItemObtainByAchievement) // rewardList = append(rewardList, &proto.ItemPair{ItemId: uint32(achievementTable.ItemList[i]), ItemNum: uint32(achievementTable.NumList[i])}) // } // // _ = player.Send(proto.ModIdAchievement, proto.MsgIdAchievementGetReward, &proto.MsgAchievementGetRewardAck{ // MsgRewardListAck: &proto.MsgRewardListAck{RewardList: rewardList}, // }) // // achievement.Statuses[req.Id] = uint32(proto.RewardStatusHasGot) // player.SaveField(fmt.Sprintf("achievement.%d.statuses.%d", achievement.Key, req.Id), uint32(proto.RewardStatusHasGot)) // // _ = player.Send(proto.ModIdAchievement, proto.MsgIdAchievementChange, &proto.MsgAchievementChangeListAck{ // MsgAchievementListAck: proto.MsgAchievementListAck{ // List: []*proto.Achievement{achievement.BuildMsgAchievement()}, // }, // }) // case proto.RewardStatusHasGot: // this.logger.Errorf("Achievement reward has got, Id: %d, status: %d", req.Id, rewardStatus) // _ = player.TipNotice(proto.ErrRewardHasGot) // return // default: // this.logger.Errorf("Achievement unknown reward status, Id: %d, status: %d", req.Id, rewardStatus) // _ = player.TipNotice(proto.ErrServerError) // return // } //}