Skip to content

Commit 1d7bf7f

Browse files
committed
Mod parameters saving prototype
1 parent a91bc1d commit 1d7bf7f

File tree

6 files changed

+188
-36
lines changed

6 files changed

+188
-36
lines changed

MainForm.cs

Lines changed: 84 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ protected override CreateParams CreateParams
4040

4141
List<Mod> mods = new List<Mod>();
4242
bool bFullyLoaded = false;
43+
Settings settings = new Settings();
4344

4445
public MainForm()
4546
{
@@ -68,18 +69,19 @@ private void move_MouseDown(object sender, MouseEventArgs e)
6869

6970
public static bool isModDirectory(string path)
7071
{
71-
string[] ignoredirs = {
72-
"3dsmax2.5",
73-
"3dsmax3",
74-
"bin",
75-
"logos",
76-
"media",
77-
"pak",
78-
"Photoshop 5.5",
79-
"platform",
80-
"src_main",
81-
"XSI",
82-
};
72+
string[] ignoredirs =
73+
{
74+
"3dsmax2.5",
75+
"3dsmax3",
76+
"bin",
77+
"logos",
78+
"media",
79+
"pak",
80+
"Photoshop 5.5",
81+
"platform",
82+
"src_main",
83+
"XSI",
84+
};
8385
string shortDir = path.Substring(path.LastIndexOf('\\') + 1);
8486
foreach (string dir in ignoredirs)
8587
{
@@ -93,17 +95,24 @@ public static bool isModDirectory(string path)
9395
// return false;
9496
// }
9597

96-
string[] possibleDirs = {
97-
"cfg",
98-
"maps",
99-
"materials",
100-
"models",
101-
"resource",
102-
"SAVE",
103-
"scenes",
104-
"scripts",
105-
"sound",
106-
};
98+
string[] possibleDirs =
99+
{
100+
"bin",
101+
"cfg",
102+
"maps",
103+
"mapsrc",
104+
"materials",
105+
"materialsrc",
106+
"models",
107+
"modelsrc",
108+
"resource",
109+
"SAVE",
110+
"scenes",
111+
"screenshots",
112+
"scripts",
113+
"sound",
114+
"testscripts",
115+
};
107116

108117
int count = 0;
109118
foreach(string dir in possibleDirs)
@@ -244,10 +253,23 @@ public void RefreshModList()
244253

245254
Console.WriteLine("Game: " + gamename);
246255

247-
Mod mod = new Mod {
248-
Dir = ddir,
249-
Name = ((gamename != "") ? gamename : ddir)
250-
};
256+
Mod mod = new Mod
257+
{
258+
Dir = ddir,
259+
Name = ((gamename != "") ? gamename : ddir)
260+
};
261+
262+
List<Mod> test = settings.GetMods();
263+
foreach (Mod storedMod in test)
264+
{
265+
if (storedMod.Dir == ddir) // Restoring parameters for mod
266+
{
267+
mod.Parameters = storedMod.Parameters;
268+
mod.ServerParameters = storedMod.ServerParameters;
269+
}
270+
}
271+
272+
Console.WriteLine(string.Format("{0}, {1}, {2}", mod.Dir, mod.Name, mod.Parameters));
251273
mods.Add(mod);
252274
}
253275
}
@@ -293,17 +315,31 @@ private void MainForm_Load(object sender, EventArgs e)
293315

294316
private void SaveAdditionalParameters()
295317
{
296-
setRegistryValue("GameParameters", gameParametersText.Text); // TODO: Do a separate parameters for every mod
297-
setRegistryValue("ServerParameters", srvParametersText.Text);
318+
// setRegistryValue("GameParameters", gameParametersText.Text); // TODO: Do a separate parameters for every mod
319+
// setRegistryValue("ServerParameters", srvParametersText.Text);
320+
321+
// mods[modList.SelectedIndex].Parameters = gameParametersText.Text;
322+
// mods[modList.SelectedIndex].ServerParameters = srvParametersText.Text;
323+
324+
// Write to file
325+
bool successfulSave = settings.WriteSettings(mods);
326+
if (!successfulSave)
327+
MessageBox.Show("Mod parameters cannot be saved!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
328+
329+
// gameParametersText.Text = mods[modList.SelectedIndex].Parameters;
330+
// srvParametersText.Text = mods[modList.SelectedIndex].ServerParameters;
298331
}
299332

300333
// private bool isExtended = false;
301334
private void MainForm_Shown(object sender, EventArgs e)
302335
{
303336
// this.Height = 140;
304337

305-
gameParametersText.Text = getRegistryValue(getRegistryMainPath(), "GameParameters");
306-
srvParametersText.Text = getRegistryValue(getRegistryMainPath(), "ServerParameters");
338+
// gameParametersText.Text = getRegistryValue(getRegistryMainPath(), "GameParameters");
339+
// srvParametersText.Text = getRegistryValue(getRegistryMainPath(), "ServerParameters");
340+
341+
gameParametersText.Text = mods[modList.SelectedIndex].Parameters;
342+
srvParametersText.Text = mods[modList.SelectedIndex].ServerParameters;
307343
}
308344

309345
/*
@@ -334,12 +370,14 @@ private void additionalParamsBut_Click(object sender, EventArgs e)
334370

335371
private void parametersText_Leave(object sender, EventArgs e)
336372
{
373+
// mods[modList.SelectedIndex].Parameters = gameParametersText.Text;
337374
// Saving parameters into registry
338375
SaveAdditionalParameters();
339376
}
340377

341378
private void srvParametersText_Leave(object sender, EventArgs e)
342379
{
380+
// mods[modList.SelectedIndex].ServerParameters = srvParametersText.Text;
343381
// Saving parameters into registry
344382
SaveAdditionalParameters();
345383
}
@@ -464,7 +502,7 @@ private void btnRefresh_Click(object sender, EventArgs e)
464502
RefreshModList();
465503
}
466504

467-
private void modList_TextChanged(object sender, EventArgs e)
505+
private void modList_SelectedIndexChanged(object sender, EventArgs e)
468506
{
469507
if (!bFullyLoaded)
470508
return;
@@ -474,7 +512,20 @@ private void modList_TextChanged(object sender, EventArgs e)
474512
setRegistryValue("LNGameMod", choosedMod);
475513

476514
// Saving parameters into registry
477-
SaveAdditionalParameters();
515+
// SaveAdditionalParameters();
516+
517+
gameParametersText.Text = mods[modList.SelectedIndex].Parameters;
518+
srvParametersText.Text = mods[modList.SelectedIndex].ServerParameters;
519+
}
520+
521+
private void gameParametersText_TextChanged(object sender, EventArgs e)
522+
{
523+
mods[modList.SelectedIndex].Parameters = gameParametersText.Text;
524+
}
525+
526+
private void srvParametersText_TextChanged(object sender, EventArgs e)
527+
{
528+
mods[modList.SelectedIndex].ServerParameters = srvParametersText.Text;
478529
}
479530
}
480531
}

MainForm.designer.cs

Lines changed: 3 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Mod.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@
44

55
namespace ModLauncher
66
{
7+
[Serializable]
78
class Mod
89
{
910
public string Dir { get; set; }
1011
public string Name { get; set; }
12+
public string Parameters { get; set; }
13+
public string ServerParameters { get; set; }
1114
}
1215
}

ModLauncher.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
<DefineConstants>DEBUG;TRACE</DefineConstants>
3838
<ErrorReport>prompt</ErrorReport>
3939
<WarningLevel>4</WarningLevel>
40+
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
4041
</PropertyGroup>
4142
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
4243
<PlatformTarget>x86</PlatformTarget>
@@ -69,6 +70,7 @@
6970
<Compile Include="Mod.cs" />
7071
<Compile Include="Program.cs" />
7172
<Compile Include="Properties\AssemblyInfo.cs" />
73+
<Compile Include="Settings.cs" />
7274
<EmbeddedResource Include="MainForm.resx">
7375
<DependentUpon>MainForm.cs</DependentUpon>
7476
</EmbeddedResource>

Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,6 @@
3333
// You can specify all the values or you can default the Build and Revision Numbers
3434
// by using the '*' as shown below:
3535
// [assembly: AssemblyVersion("1.0.*")]
36-
[assembly: AssemblyVersion("1.0.0.0")]
37-
[assembly: AssemblyFileVersion("1.0.0.0")]
36+
[assembly: AssemblyVersion("0.9.2.0")]
37+
[assembly: AssemblyFileVersion("0.9.2.0")]
3838
[assembly: NeutralResourcesLanguageAttribute("en")]

Settings.cs

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
5+
using System.IO;
6+
using System.Runtime.Serialization.Formatters.Binary;
7+
8+
namespace ModLauncher
9+
{
10+
11+
class Settings
12+
{
13+
public Settings()
14+
{
15+
// Writing
16+
/*
17+
List<Mod> mods = new List<Mod>();
18+
mods.Add(new Mod { Dir = "testmod", Parameters = "+map crg" });
19+
mods.Add(new Mod { Dir = "hl2", Parameters = "+map d1_trainstation_01" });
20+
21+
FileStream fstream = new FileStream("ModLauncher.dat", FileMode.Create);
22+
BinaryFormatter bf = new BinaryFormatter();
23+
bf.Serialize(fstream, mods);
24+
fstream.Close();
25+
26+
27+
// Reading
28+
fstream = new FileStream("ModLauncher.dat", FileMode.Open);
29+
bf = new BinaryFormatter();
30+
List<Mod> modsR = (List<Mod>)bf.Deserialize(fstream);
31+
fstream.Close();
32+
33+
foreach (Mod mod in modsR)
34+
{
35+
Console.WriteLine(string.Format("{0}, {1}, {2}", mod.Dir, mod.Name, mod.Parameters));
36+
}
37+
*/
38+
}
39+
40+
public List<Mod> GetMods()
41+
{
42+
try
43+
{
44+
FileStream fstream = new FileStream("ModLauncher.dat", FileMode.OpenOrCreate);
45+
if (fstream == null || fstream.Length <= 0)
46+
{
47+
fstream.Close();
48+
return new List<Mod>();
49+
}
50+
51+
BinaryFormatter bf = new BinaryFormatter();
52+
List<Mod> modsR = (List<Mod>)bf.Deserialize(fstream);
53+
54+
fstream.Close();
55+
56+
return modsR;
57+
}
58+
catch (Exception ex)
59+
{
60+
Console.WriteLine(ex.Message);
61+
return new List<Mod>();
62+
}
63+
}
64+
65+
public bool WriteSettings( List<Mod> mods )
66+
{
67+
if (mods.Count <= 0)
68+
return false;
69+
70+
try
71+
{
72+
// FileStream fstream = new FileStream("ModLauncher.dat", FileMode.OpenOrCreate);
73+
FileStream fstream = new FileStream("ModLauncher.dat", FileMode.Create);
74+
if (fstream == null)
75+
{
76+
fstream.Close();
77+
return false;
78+
}
79+
80+
BinaryFormatter bf = new BinaryFormatter();
81+
bf.Serialize(fstream, mods);
82+
83+
fstream.Close();
84+
85+
return true;
86+
}
87+
catch (Exception ex)
88+
{
89+
Console.WriteLine(ex.Message);
90+
return false;
91+
}
92+
}
93+
}
94+
}

0 commit comments

Comments
 (0)