From 21ccb752d7b3c6b0f3a9c324d126fb90df5e156b Mon Sep 17 00:00:00 2001 From: Jonathan Barrow Date: Sun, 2 Jan 2022 09:28:45 -0500 Subject: [PATCH] recently played course list now works --- get_custom_ranking_by_data_id.go | 103 +++++++++++++++++++++++++++++-- 1 file changed, 99 insertions(+), 4 deletions(-) diff --git a/get_custom_ranking_by_data_id.go b/get_custom_ranking_by_data_id.go index 826242b..62ac80c 100644 --- a/get_custom_ranking_by_data_id.go +++ b/get_custom_ranking_by_data_id.go @@ -13,11 +13,15 @@ func getCustomRankingByDataId(err error, client *nex.Client, callID uint32, para var pResults []uint32 switch param.ApplicationId { - case 0: // Starred courses - pRankingResult, pResults = getCustomRankingByDataIdStarredCourses(client.PID()) + case 0: + if len(param.DataIdList) == 0 { // Starred courses + pRankingResult, pResults = getCustomRankingByDataIdStarredCourses(client.PID()) + } else { // Played courses + pRankingResult, pResults = getCustomRankingByDataIdCourseMetadata(param) + } case 300000000: // Mii data pRankingResult, pResults = getCustomRankingByDataIdMiiData(param) - default: // Normal course data + default: // Normal metadata pRankingResult, pResults = getCustomRankingByDataIdCourseMetadata(param) } @@ -218,10 +222,101 @@ func getCustomRankingByDataIdMiiData(param *nexproto.DataStoreGetCustomRankingBy } func getCustomRankingByDataIdCourseMetadata(param *nexproto.DataStoreGetCustomRankingByDataIdParam) ([]*nexproto.DataStoreCustomRankingResult, []uint32) { - // TODO: Complete this + courseMetadatas := getCourseMetadataByDataIDs(param.DataIdList) pRankingResult := make([]*nexproto.DataStoreCustomRankingResult, 0) pResults := make([]uint32, 0) + for _, courseMetadata := range courseMetadatas { + rankingResult := nexproto.NewDataStoreCustomRankingResult() + + rankingResult.Order = 0 // unknown + rankingResult.Score = courseMetadata.Stars + rankingResult.MetaInfo = nexproto.NewDataStoreMetaInfo() + rankingResult.MetaInfo.DataID = courseMetadata.DataID + rankingResult.MetaInfo.OwnerID = courseMetadata.OwnerPID + rankingResult.MetaInfo.Size = courseMetadata.Size + rankingResult.MetaInfo.Name = courseMetadata.Name + rankingResult.MetaInfo.DataType = courseMetadata.DataType + rankingResult.MetaInfo.MetaBinary = courseMetadata.MetaBinary + rankingResult.MetaInfo.Permission = nexproto.NewDataStorePermission() + rankingResult.MetaInfo.Permission.Permission = 0 // unknown + rankingResult.MetaInfo.Permission.RecipientIds = []uint32{} + rankingResult.MetaInfo.DelPermission = nexproto.NewDataStorePermission() + rankingResult.MetaInfo.DelPermission.Permission = 3 // unknown + rankingResult.MetaInfo.DelPermission.RecipientIds = []uint32{} + rankingResult.MetaInfo.CreatedTime = courseMetadata.CreatedTime + rankingResult.MetaInfo.UpdatedTime = courseMetadata.UpdatedTime + rankingResult.MetaInfo.Period = courseMetadata.Period + rankingResult.MetaInfo.Status = 0 // unknown + rankingResult.MetaInfo.ReferredCnt = 0 // unknown + rankingResult.MetaInfo.ReferDataID = 0 // unknown + rankingResult.MetaInfo.Flag = courseMetadata.Flag + rankingResult.MetaInfo.ReferredTime = courseMetadata.CreatedTime + rankingResult.MetaInfo.ExpireTime = nex.NewDateTime(671075926016) // December 31st, year 9999 + rankingResult.MetaInfo.Tags = []string{""} // unknown + rankingResult.MetaInfo.Ratings = []*nexproto.DataStoreRatingInfoWithSlot{ + nexproto.NewDataStoreRatingInfoWithSlot(), // attempts + nexproto.NewDataStoreRatingInfoWithSlot(), // unknown + nexproto.NewDataStoreRatingInfoWithSlot(), // completions + nexproto.NewDataStoreRatingInfoWithSlot(), // failures + nexproto.NewDataStoreRatingInfoWithSlot(), // unknown + nexproto.NewDataStoreRatingInfoWithSlot(), // unknown + nexproto.NewDataStoreRatingInfoWithSlot(), // unknown + } + + // attempts + rankingResult.MetaInfo.Ratings[0].Slot = 0 + rankingResult.MetaInfo.Ratings[0].Rating = nexproto.NewDataStoreRatingInfo() + rankingResult.MetaInfo.Ratings[0].Rating.TotalValue = int64(courseMetadata.Attempts) + rankingResult.MetaInfo.Ratings[0].Rating.Count = courseMetadata.Attempts + rankingResult.MetaInfo.Ratings[0].Rating.InitialValue = 0 + + // unknown + rankingResult.MetaInfo.Ratings[1].Slot = 1 + rankingResult.MetaInfo.Ratings[1].Rating = nexproto.NewDataStoreRatingInfo() + rankingResult.MetaInfo.Ratings[1].Rating.TotalValue = 2 + rankingResult.MetaInfo.Ratings[1].Rating.Count = 2 + rankingResult.MetaInfo.Ratings[1].Rating.InitialValue = 0 + + // completions + rankingResult.MetaInfo.Ratings[2].Slot = 2 + rankingResult.MetaInfo.Ratings[2].Rating = nexproto.NewDataStoreRatingInfo() + rankingResult.MetaInfo.Ratings[2].Rating.TotalValue = int64(courseMetadata.Completions) + rankingResult.MetaInfo.Ratings[2].Rating.Count = courseMetadata.Completions + rankingResult.MetaInfo.Ratings[2].Rating.InitialValue = 0 + + // failures + rankingResult.MetaInfo.Ratings[3].Slot = 3 + rankingResult.MetaInfo.Ratings[3].Rating = nexproto.NewDataStoreRatingInfo() + rankingResult.MetaInfo.Ratings[3].Rating.TotalValue = int64(courseMetadata.Failures) + rankingResult.MetaInfo.Ratings[3].Rating.Count = courseMetadata.Failures + rankingResult.MetaInfo.Ratings[3].Rating.InitialValue = 0 + + // unknown + rankingResult.MetaInfo.Ratings[4].Slot = 4 + rankingResult.MetaInfo.Ratings[4].Rating = nexproto.NewDataStoreRatingInfo() + rankingResult.MetaInfo.Ratings[4].Rating.TotalValue = 5 + rankingResult.MetaInfo.Ratings[4].Rating.Count = 5 + rankingResult.MetaInfo.Ratings[4].Rating.InitialValue = 0 + + // unknown + rankingResult.MetaInfo.Ratings[5].Slot = 5 + rankingResult.MetaInfo.Ratings[5].Rating = nexproto.NewDataStoreRatingInfo() + rankingResult.MetaInfo.Ratings[5].Rating.TotalValue = 6 + rankingResult.MetaInfo.Ratings[5].Rating.Count = 6 + rankingResult.MetaInfo.Ratings[5].Rating.InitialValue = 0 + + // Number of new Miiverse comments + rankingResult.MetaInfo.Ratings[6].Slot = 6 + rankingResult.MetaInfo.Ratings[6].Rating = nexproto.NewDataStoreRatingInfo() + rankingResult.MetaInfo.Ratings[6].Rating.TotalValue = 0 + rankingResult.MetaInfo.Ratings[6].Rating.Count = 0 + rankingResult.MetaInfo.Ratings[6].Rating.InitialValue = 0 + + pRankingResult = append(pRankingResult, rankingResult) + pResults = append(pResults, 0x690001) + } + return pRankingResult, pResults }