diff --git a/ClanServer/Controllers/L44/Demodata.cs b/ClanServer/Controllers/L44/Demodata.cs index 7ead366..2c9e350 100644 --- a/ClanServer/Controllers/L44/Demodata.cs +++ b/ClanServer/Controllers/L44/Demodata.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -8,6 +8,7 @@ using Microsoft.AspNetCore.Mvc; using eAmuseCore.KBinXML; using ClanServer.Routing; +using ClanServer.Data.L44; namespace ClanServer.Controllers.L44 { @@ -43,25 +44,15 @@ namespace ClanServer.Controllers.L44 } [HttpPost, Route("8"), XrpcCall("demodata.get_hitchart")] - public ActionResult GetHitchart([FromBody] EamuseXrpcData data) + public async Task> GetHitchart([FromBody] EamuseXrpcData data) { - int[] hitChart = new int[] - { - 70000110, - 80000016, - 60000080, - 50000071, - 60000115, - 30000004, - 70000079, - 50000113, - 80000086, - 70000033 - }; + ClanMusicInfo mInfo = await ClanMusicInfo.Instance; - XElement orgElem = new XElement("hitchart_org", new XAttribute("count", hitChart.Length)); + List hitChart = mInfo.GetRandomSongs(10); - for (short i = 0; i < hitChart.Length; ++i) + XElement orgElem = new XElement("hitchart_org", new XAttribute("count", hitChart.Count)); + + for (short i = 0; i < hitChart.Count; ++i) { orgElem.Add(new XElement("rankdata", new KS32("music_id", hitChart[i]), diff --git a/ClanServer/Controllers/L44/Gametop.cs b/ClanServer/Controllers/L44/Gametop.cs index 49e30f0..50cbe60 100644 --- a/ClanServer/Controllers/L44/Gametop.cs +++ b/ClanServer/Controllers/L44/Gametop.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -11,6 +11,7 @@ using eAmuseCore.KBinXML; using ClanServer.Routing; using ClanServer.Helpers; using ClanServer.Models; +using ClanServer.Data.L44; namespace ClanServer.Controllers.L44 { @@ -350,22 +351,31 @@ namespace ClanServer.Controllers.L44 GenClanCourseList(), new XElement("server"), new XElement("rivallist"), - new XElement("fc_challenge", - new XElement("today", - new KS32("music_id", 40000057), - new KU8("state", 0) - ), - new XElement("whim", - new KS32("music_id", 30000041), - new KU8("state", 80) - ) - ), + await GenFcChallenge(), new XElement("navi", new KU64("flag", freshProfile ? 0UL : 122UL) ) ); } + private async Task GenFcChallenge() + { + ClanMusicInfo mInfo = await ClanMusicInfo.Instance; + + List songs = mInfo.GetRandomSongs(2); + + return new XElement("fc_challenge", + new XElement("today", + new KS32("music_id", songs[0]), + new KU8("state", 0) + ), + new XElement("whim", + new KS32("music_id", songs[1]), + new KU8("state", 80) + ) + ); + } + private XElement GenJubilityTargetMusicList(JubeatProfile profile) { XElement res = new XElement("target_music_list"); diff --git a/ClanServer/Controllers/L44/Recommend.cs b/ClanServer/Controllers/L44/Recommend.cs index 6eeb95c..33d9738 100644 --- a/ClanServer/Controllers/L44/Recommend.cs +++ b/ClanServer/Controllers/L44/Recommend.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -8,6 +8,7 @@ using Microsoft.AspNetCore.Mvc; using eAmuseCore.KBinXML; using ClanServer.Routing; +using ClanServer.Data.L44; namespace ClanServer.Controllers.L44 { @@ -15,33 +16,24 @@ namespace ClanServer.Controllers.L44 public class RecommendController : ControllerBase { [HttpPost, Route("8"), XrpcCall("recommend.get_recommend")] - public ActionResult GetRecommend([FromBody] EamuseXrpcData data) + public async Task> GetRecommend([FromBody] EamuseXrpcData data) { XElement recommend = data.Document.Element("call").Element("recommend"); XElement player = recommend.Element("data").Element("player"); _ = int.Parse(player.Element("jid").Value); - int[] recommendedMusic = new int[] - { - 80000016, - 60000080, - 50000113, - 70000110, - 80000126, - 60000115, - 80000050, - 80000086, - 30000048, - 70000079 - }; + ClanMusicInfo mInfo = await ClanMusicInfo.Instance; + + List recommendedMusic = mInfo.GetRandomSongs(10); + Random rng = new Random(); XElement musicList = new XElement("music_list"); - for (int i = 0; i < recommendedMusic.Length; ++i) + for (int i = 0; i < recommendedMusic.Count; ++i) { musicList.Add(new XElement("music", new XAttribute("order", i), new KS32("music_id", recommendedMusic[i]), - new KS8("seq", 0) + new KS8("seq", (sbyte)rng.Next(3)) )); } diff --git a/ClanServer/Data/L44/ClanMusicInfo.cs b/ClanServer/Data/L44/ClanMusicInfo.cs index 9d7e198..7f61bd6 100644 --- a/ClanServer/Data/L44/ClanMusicInfo.cs +++ b/ClanServer/Data/L44/ClanMusicInfo.cs @@ -73,10 +73,9 @@ namespace ClanServer.Data.L44 { HashSet candidateIndexes = new HashSet(); while (candidateIndexes.Count < num) - candidateIndexes.Add(rng.Next(0, musicIdList.Count)); + candidateIndexes.Add(rng.Next(musicIdList.Count)); - List result = new List(num); - result.AddRange(candidateIndexes.Select(i => musicIdList[i])); + List result = candidateIndexes.Select(i => musicIdList[i]).ToList(); for (int i = result.Count - 1; i > 0; --i) {