Skip to content

Commit f6cf6a4

Browse files
committed
Added the modpacks json file to store added packs. updates when any changes are made.
1 parent 402aa66 commit f6cf6a4

File tree

4 files changed

+43
-8
lines changed

4 files changed

+43
-8
lines changed

src/HyperMC/Data/ModpackData.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,15 @@ namespace Hypermc.Data
1010
public class ModpackData
1111
{
1212
public string Name { get; set; }
13-
public Image Thumbnail { get; }
13+
public string Thumbnail { get; }
1414
public string Path { get; }
1515

16-
public ModpackData(string name, Image thumbnail, string path)
16+
public ModpackData()
17+
{
18+
19+
}
20+
21+
public ModpackData(string name, string thumbnail, string path)
1722
{
1823
Name = name;
1924
Thumbnail = thumbnail;

src/HyperMC/HyperMcView.cs

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
using System.Threading.Tasks;
1212
using System.Windows.Forms;
1313
using Hypermc.Data;
14+
using Hypermc.Services;
15+
using Hypermc.Settings;
1416
using Hypermc.UI.Dialogs;
1517
using Hypermc.UI.UserControls;
1618
using Hypermc.UI.Views;
@@ -25,20 +27,32 @@ public partial class HyperMcView : Form, IViewHost
2527

2628
private readonly IForgeClient _forgeClient;
2729
private readonly IServiceProvider _provider;
30+
private readonly IFileUesr _fileUesr;
31+
private readonly IUserSettings _settings;
2832

29-
public HyperMcView(IForgeClient forgeClient, IServiceProvider provider)
33+
public HyperMcView(IForgeClient forgeClient, IServiceProvider provider, IFileUesr fileUesr, IUserSettings settings)
3034
{
3135
InitializeComponent();
3236

3337
_forgeClient = forgeClient;
3438
_provider = provider;
39+
_fileUesr = fileUesr;
40+
_settings = settings;
3541
_modpacks = new();
3642
_modpacks.CollectionChanged += ModpacksUpdated;
3743
}
3844

39-
private void HyperMcView_Load(object sender, EventArgs e)
45+
private async void HyperMcView_Load(object sender, EventArgs e)
4046
{
4147
SetView(new ControlView(pnl_MainArea));
48+
var mods = await _fileUesr.ReadFile<ModpackData[]>($@"{_settings.ModPacksPath}\packs.json");
49+
if (mods != null)
50+
{
51+
foreach (var mod in mods)
52+
{
53+
_modpacks.Add(mod);
54+
}
55+
}
4256
}
4357

4458
#region Default View
@@ -61,7 +75,7 @@ private void Hbtn_CreateModpack_Click(object sender, EventArgs e)
6175

6276
private ObservableCollection<ModpackData> _modpacks;
6377

64-
private void ModpacksUpdated(object? sender, NotifyCollectionChangedEventArgs e)
78+
private async void ModpacksUpdated(object? sender, NotifyCollectionChangedEventArgs e)
6579
{
6680
switch (e.Action)
6781
{
@@ -112,13 +126,24 @@ private void ModpacksUpdated(object? sender, NotifyCollectionChangedEventArgs e)
112126
}
113127

114128
SortModpacks();
129+
await _fileUesr.WriteToFile(_modpacks.ToArray(), $@"{_settings.ModPacksPath}\packs.json");
115130
}
116131

117132
private static ModpackBox CreateModpackBox(ModpackData data)
118133
{
134+
Image thumbnail;
135+
if (string.IsNullOrWhiteSpace(data.Thumbnail))
136+
{
137+
thumbnail = Properties.Resources.DefaultModpackImage;
138+
}
139+
else
140+
{
141+
thumbnail = Image.FromFile(data.Thumbnail);
142+
}
143+
119144
return new()
120145
{
121-
Thumbnail = data.Thumbnail,
146+
Thumbnail = thumbnail,
122147
SizeMode = PictureBoxSizeMode.StretchImage,
123148
Name = data.Name,
124149
Tag = data.Path

src/HyperMC/Settings/UserSettings.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ public async Task Initialize()
3636
Directory.CreateDirectory(_appPath);
3737
}
3838

39+
if (!Directory.Exists(ModPacksPath))
40+
{
41+
Directory.CreateDirectory(ModPacksPath);
42+
}
43+
3944
var settings = await _fileUesr.ReadFile<UserSettings>(_settingsFile);
4045

4146
if (settings != null)

src/HyperMC/UI/Dialogs/CreateModpackDialog.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ private void Hbtn_Ok_Click(object sender, EventArgs e)
6464
return;
6565
}
6666

67-
Data = new ModpackData(txb_Name.Text, Properties.Resources.DefaultModpackImage, null);
68-
DataForge = new ModpackData(cmbx_FmlVersion.Text, Properties.Resources.DefaultModpackImage, null);
67+
Data = new ModpackData(txb_Name.Text, "", null);
68+
DataForge = new ModpackData(cmbx_FmlVersion.Text, "", null);
6969
DialogResult = DialogResult.OK;
7070
Close();
7171
}

0 commit comments

Comments
 (0)