Skip to content

Commit 485d56b

Browse files
committed
ModManager progress
1 parent b5a471f commit 485d56b

File tree

5 files changed

+277
-226
lines changed

5 files changed

+277
-226
lines changed

CodeWalker.ModManager/Mod.cs

Lines changed: 54 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Drawing;
34
using System.IO;
45
using System.Linq;
56
using System.Text;
@@ -36,6 +37,16 @@ public static Mod Load(string localDir)
3637
file?.UpdateLocalPath(localDir);
3738
}
3839

40+
if ((mod.IconObject == null) && (string.IsNullOrEmpty(mod.IconFile) == false))
41+
{
42+
try
43+
{
44+
mod.IconObject = Image.FromFile(mod.IconFile);
45+
}
46+
catch
47+
{ }
48+
}
49+
3950
return mod;
4051
}
4152

@@ -116,6 +127,7 @@ public void CompleteInstall(string localDir)
116127
var fe = Path.GetExtension(oivfile)?.ToLowerInvariant();
117128
if (fe == ".cwmm") continue;
118129
var file = new ModFile(oivfile);
130+
file.LocalPath = file.SourcePath;
119131
Files.Add(file);
120132
}
121133
}
@@ -154,6 +166,7 @@ public void CompleteInstall(string localDir)
154166

155167
Log($"CompleteInstall: {DateTime.Now}");
156168

169+
SaveLogFile();
157170
}
158171

159172
public static ModType GetModType(string file)
@@ -213,64 +226,73 @@ private void AddModFilesFromDir(string sourceDir)
213226

214227

215228

229+
216230
private void LoadCWMMFile()
217231
{
232+
Files.Clear();
218233
var fp = GetCWMMFilePath();
219234
if (string.IsNullOrEmpty(fp)) return;
220235
if (File.Exists(fp) == false) return;
221236
Log($"LoadCWMMFile: {fp}");
222-
try
237+
var f = new SimpleKvpFile(fp, true);
238+
if (f.FileError != null)
223239
{
224-
var lines = File.ReadAllLines(fp);
225-
if (lines.Length < 6) return;
226-
Name = lines[0];
227-
IconFile = lines[1];
228-
SourcePath = lines[2];
229-
Enum.TryParse(lines[3], out Type);
230-
Enum.TryParse(lines[4], out Status);
231-
int.TryParse(lines[5], out LoadOrder);
232-
Files.Clear();
233-
for (int i = 6; i < lines.Length; i++)
234-
{
235-
AddModFile(lines[i]);
236-
}
240+
Log($"Error: {f.FileError}");
237241
}
238-
catch (Exception ex)
242+
Name = f.GetItem("Name");
243+
IconFile = f.GetItem("Icon");
244+
SourcePath = f.GetItem("Source");
245+
Enum.TryParse(f.GetItem("Type"), out Type);
246+
Enum.TryParse(f.GetItem("Status"), out Status);
247+
int.TryParse(f.GetItem("Order"), out LoadOrder);
248+
int.TryParse(f.GetItem("Files"), out var count);
249+
for (var i = 0; i < count; i++)
239250
{
240-
Log($"Error: {ex}");
251+
var mf = f.GetItem($"File{i}");
252+
AddModFile(mf);
241253
}
242254
}
243255
private void SaveCWMMFile()
244256
{
245257
var fp = GetCWMMFilePath();
246258
if (string.IsNullOrEmpty(fp)) return;
247259
Log($"SaveCWMMFile: {fp}");
248-
try
260+
var f = new SimpleKvpFile(fp);
261+
f.SetItem("Name", Name);
262+
f.SetItem("Icon", IconFile);
263+
f.SetItem("Source", SourcePath);
264+
f.SetItem("Type", Type.ToString());
265+
f.SetItem("Status", Status.ToString());
266+
f.SetItem("Order", LoadOrder.ToString());
267+
f.SetItem("Files", Files.Count.ToString());
268+
for (var i = 0; i < Files.Count; i++)
249269
{
250-
var sb = new StringBuilder();
251-
sb.AppendLine(Name);
252-
sb.AppendLine(IconFile);
253-
sb.AppendLine(SourcePath);
254-
sb.AppendLine(Type.ToString());
255-
sb.AppendLine(Status.ToString());
256-
sb.AppendLine(LoadOrder.ToString());
257-
foreach (var file in Files)
258-
{
259-
sb.AppendLine(file.SourcePath);
260-
}
261-
var str = sb.ToString();
262-
File.WriteAllText(fp, str);
270+
f.SetItem($"File{i}", Files[i].SourcePath);
271+
}
272+
f.Save();
273+
if (f.FileError != null)
274+
{
275+
Log($"Error: {f.FileError}");
263276
}
264-
catch (Exception ex)
277+
}
278+
private void SaveLogFile()
279+
{
280+
try
265281
{
266-
Log($"Error: {ex}");
282+
var fp = GetLogFilePath();
283+
File.AppendAllLines(fp, LogItems);
267284
}
285+
catch { }
268286
}
269287

270288
private string GetCWMMFilePath()
271289
{
272290
return $"{LocalPath}\\mod.cwmm";
273291
}
292+
private string GetLogFilePath()
293+
{
294+
return $"{LocalPath}\\log.cwmm";
295+
}
274296

275297

276298
private void Log(string s)

CodeWalker.ModManager/ModManagerForm.Designer.cs

Lines changed: 87 additions & 73 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)