diff --git a/RustTools/DataList/ModListResponse.cs b/RustTools/DataList/ModListResponse.cs new file mode 100644 index 0000000..a0ed4de --- /dev/null +++ b/RustTools/DataList/ModListResponse.cs @@ -0,0 +1,87 @@ +using System; +using System.Collections.Generic; +using Newtonsoft.Json; + +public class ModData +{ + [JsonProperty("id")] + public string Id + { + get; set; + } + + [JsonProperty("name")] + public string Name + { + get; set; + } + + [JsonProperty("describe")] + public string Description + { + get; set; + } + + [JsonProperty("icon")] + public string Icon + { + get; set; + } + + [JsonProperty("developer")] + public string Developer + { + get; set; + } + + [JsonProperty("downloadNumber")] + public string DownloadNumber + { + get; set; + } + + [JsonProperty("updateTime")] + public DateTime UpdateTime + { + get; set; + } + + [JsonProperty("coinNumber")] + public string CoinNumber + { + get; set; + } + + [JsonProperty("unitNumber")] + public string UnitNumber + { + get; set; + } + + [JsonProperty("versionNumber")] + public string VersionNumber + { + get; set; + } +} + +public class ModListResponse +{ + [JsonProperty("code")] + public int Code + { + get; set; + } + + [JsonProperty("message")] + public string Message + { + get; set; + } + + [JsonProperty("data")] + public List Data + { + get; set; + } +} \ No newline at end of file diff --git a/RustTools/Helpers/UriToImageSourceConverter.cs b/RustTools/Helpers/UriToImageSourceConverter.cs new file mode 100644 index 0000000..7f051f6 --- /dev/null +++ b/RustTools/Helpers/UriToImageSourceConverter.cs @@ -0,0 +1,19 @@ +using Microsoft.UI.Xaml.Data; +using Microsoft.UI.Xaml.Media.Imaging; + +public class UriToImageSourceConverter : IValueConverter +{ + public object? Convert(object value, Type targetType, object parameter, string language) + { + if (value is string imageUrl && !string.IsNullOrEmpty(imageUrl)) + { + return new BitmapImage(new Uri(imageUrl)); + } + return null; + } + + public object ConvertBack(object value, Type targetType, object parameter, string language) + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/RustTools/ViewModels/HomePageViewModel.cs b/RustTools/ViewModels/HomePageViewModel.cs index a2e3e3c..26947c0 100644 --- a/RustTools/ViewModels/HomePageViewModel.cs +++ b/RustTools/ViewModels/HomePageViewModel.cs @@ -1,4 +1,6 @@ using CommunityToolkit.Mvvm.ComponentModel; +using Microsoft.UI.Xaml.Media.Imaging; +using Newtonsoft.Json; namespace RustTools.ViewModels; @@ -6,5 +8,7 @@ public partial class HomePageViewModel : ObservableRecipient { public HomePageViewModel() { + } + public string str = "{\r\n \"code\": 0,\r\n \"message\": \"获取成功,共6条记录\",\r\n \"data\": [\r\n {\r\n \"id\": \"csj_shi_ji\",\r\n \"name\": \"创世纪\",\r\n \"describe\": \"创世纪已经运行了3个月(发布铁锈盒子)禁止进行盗素材行为,素材均已得到绘画者许可。\",\r\n \"icon\": \"../user/lanxing/mods/csj_shi_ji/icon.png\",\r\n \"developer\": \"lanxing\",\r\n \"downloadNumber\": null,\r\n \"updateTime\": \"2024-07-19 09:03:17\",\r\n \"coinNumber\": \"0\",\r\n \"unitNumber\": \"203\",\r\n \"versionNumber\": \"1\"\r\n },\r\n {\r\n \"id\": \"tie_xiu_za_jiao_ban\",\r\n \"name\": \"铁锈杂交版\",\r\n \"describe\": \"原版单位融合 by虚谷\",\r\n \"icon\": \"\",\r\n \"developer\": \"chrwow\",\r\n \"downloadNumber\": \"1\",\r\n \"updateTime\": \"2024-07-18 14:29:36\",\r\n \"coinNumber\": \"0\",\r\n \"unitNumber\": \"5\",\r\n \"versionNumber\": \"1\"\r\n },\r\n {\r\n \"id\": \"xi_wang_an_quan\",\r\n \"name\": \"希望安全\",\r\n \"describe\": \"实验性位移系统;\\n三抗:\\n抗血量提取;抗运输槽删除;抗渗透回收;\\n复杂的全局保险机制;\\n计划重写一些铁锈的功能,来方便完成自己离谱需求,预计有:\\n位移,队伍\\n随便把之前mod没有完成的目标填坑。\\n至于BSJ倾向,则是为了告诉自己,活着,至少,还行;尽管无法与火和挺立的树相比;不要问曾经经历过什么。\",\r\n \"icon\": \"../user/Compulsory_registrat/mods/xi_wang_an_quan/icon.png\",\r\n \"developer\": \"Compulsory_registrat\",\r\n \"downloadNumber\": \"1\",\r\n \"updateTime\": \"2024-07-18 12:04:37\",\r\n \"coinNumber\": \"0\",\r\n \"unitNumber\": \"10\",\r\n \"versionNumber\": \"1\"\r\n },\r\n {\r\n \"id\": \"mod_xing\",\r\n \"name\": \"无尽星空-星海乐章(公测版0.1.3)\",\r\n \"describe\": \"\\\"星空浩瀚无比,征途永无止境.\\\"\\n-经历了十个版本内测,星海乐章公测版终于出炉啦!\\n-感谢『12rwmod』和其他小伙伴提出的各种改进建议\\n-模组背景音乐: Caught Adrift - Another Day, Strings For A Queen (Original Mix), Faster Than Light, The Remnant, Daylight. (排序不分先后)\\n-模组系列:『无尽星空』,单部:『星海乐章』\\n-作者是『幻梦星璃(星)』\\n-模组交流群『✨蓝星方舟中控部✨』(群号:757914038)\\n-建议用自定义地图里的太空玩哦.\\n-温馨提示:想玩这个模组需要用1.15的铁锈战争哦(没有的话,没关系,进群拿.)\\n-对了,人机可能会有一点点强哦,建议从低难度开始慢慢来.\\n@qqGroup{757914038}\",\r\n \"icon\": \"https://rust.coldmint.top/user/7854399/mods/mod_xing/icons/8222d5e5-b53f-5186-489d-a680b338ca5f.png\",\r\n \"developer\": \"7854399\",\r\n \"downloadNumber\": \"1226\",\r\n \"updateTime\": \"2024-07-17 19:14:02\",\r\n \"coinNumber\": \"59\",\r\n \"unitNumber\": \"228\",\r\n \"versionNumber\": \"69\"\r\n },\r\n {\r\n \"id\": \"shi_kong_jun_zhu\",\r\n \"name\": \"时空君主:魔法战争-人族1.7\",\r\n \"describe\": \"伟大永恒而无聊的时空君主,你加入了其他时空君主们的游戏,本次游戏中你们将召唤一个个来自魔法世界工业科技时代的士兵,为你们找点乐子!附注:建议标准4000开局。拒绝搬运,反对外传,禁止盗用,侵权必究!by.小小的工作室,可加群:411238064交流,当前仅在QQ群411238064正式发布,绝对免费,如有其他途径发现,不要购买,就是对作者最大的支持!\",\r\n \"icon\": \"\",\r\n \"developer\": \"18234474931\",\r\n \"downloadNumber\": \"1\",\r\n \"updateTime\": \"2024-07-16 08:06:14\",\r\n \"coinNumber\": \"0\",\r\n \"unitNumber\": \"21\",\r\n \"versionNumber\": \"1\"\r\n },\r\n {\r\n \"id\": \"yuanban_danwei_kuozhan\",\r\n \"name\": \"原版单位扩展(by:未开智物种)\",\r\n \"describe\": \"平衡小调整\",\r\n \"icon\": \"https://rust.coldmint.top/user/wls20081024/mods/yuanban_danwei_kuozhan/icon.png\",\r\n \"developer\": \"wls20081024\",\r\n \"downloadNumber\": \"24\",\r\n \"updateTime\": \"2024-07-13 15:53:21\",\r\n \"coinNumber\": \"2\",\r\n \"unitNumber\": \"26\",\r\n \"versionNumber\": \"5\"\r\n }\r\n ]\r\n}"; } diff --git a/RustTools/Views/HomePage.xaml b/RustTools/Views/HomePage.xaml index a200ce8..1011edc 100644 --- a/RustTools/Views/HomePage.xaml +++ b/RustTools/Views/HomePage.xaml @@ -17,7 +17,7 @@ ItemsSource="{x:Bind Pictures}"> - + @@ -36,22 +36,24 @@ RelativePanel.AlignRightWithPanel="True" /> - - - - - - - - + + + + + + + + + diff --git a/RustTools/Views/HomePage.xaml.cs b/RustTools/Views/HomePage.xaml.cs index 22ec822..6119857 100644 --- a/RustTools/Views/HomePage.xaml.cs +++ b/RustTools/Views/HomePage.xaml.cs @@ -3,10 +3,19 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using System.Linq; +using System.Net.NetworkInformation; using System.Runtime.InteropServices.WindowsRuntime; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; +using Newtonsoft.Json; using RustTools.ViewModels; +using System.Diagnostics; +using System.IO; +using System.Net.Http; +using System.Threading.Tasks; +using Windows.Storage.Streams; +using Windows.UI.Xaml; +using Microsoft.Extensions.Hosting; namespace RustTools.Views; public sealed partial class HomePage : Page { @@ -19,46 +28,59 @@ public sealed partial class HomePage : Page public HomePage() { ViewModel= App.GetService(); + Pictures.Add("/Assets/image/a.jpeg"); Pictures.Add("/Assets/image/b.jpeg"); StartAsync(); InitializeComponent(); } + private void StartAsync() { - var concern = new Contact("DeBug", "Debug", "DeBug"); - conns.Add(concern); - conns.Add(concern); - conns.Add(concern); - conns.Add(concern); - conns.Add(concern); - conns.Add(concern); - conns.Add(concern); - conns.Add(concern); + var modListResponse = JsonConvert.DeserializeObject(ViewModel.str); + if (modListResponse == null) + { + return; + } + foreach (var item in modListResponse.Data) + { + //https://rust.coldmint.top + if (item.Icon.Equals("")) + { + item.Icon = "/Assets/tool.png"; + } + var contact = new Contact(item.Name, item.Description, item.UpdateTime + " " + item.CoinNumber + "") + { + ImageUrl = item.Icon.Replace("..", "https://rust.coldmint.top") + }; + conns.Add(contact); + } } public class Contact { - public string FirstName + public string Title { get; private set; } - public string LastName + public string Message { get; private set; } - public string Company + public string Info { get; private set; } - public string Name => FirstName + " " + LastName; - + public string ImageUrl + { + get; set; + } public Contact(string firstName, string lastName, string company) { - FirstName = firstName; - LastName = lastName; - Company = company; + Title = firstName; + Message = lastName; + Info = company; } }