1 using System;
2 using System.Collections.Generic;
3 using System.Collections;
4 using System.Text;
5 using System.Data;
6 using Microsoft.Win32;
7 using System.Windows.Forms;
8 using System.IO;
9 
10 namespace SRB2Updater
11 {
12     public class Settings
13     {
14         // Global Settings
15         public bool boolDisplayWindowed;
16         public bool boolDisplayCustomResolution;
17         public bool boolCloseOnStart;
18         public int intDisplayWidth;
19         public int intDisplayHeight;
20         public string strMSAddress;
21         public int intMSPort;
22         public Array arrWadList;
23         public string strParams;
24 
25         public string Params
26         {
27             get { return strParams; }
28             set { strParams = value; }
29         }
30 
31         public Array wadList
32         {
33             get { return arrWadList; }
34             set { arrWadList = value; }
35         }
36 
37         public bool CloseOnStart
38         {
39             get { return boolCloseOnStart; }
40             set { boolCloseOnStart = value; }
41         }
42 
43         public string msAddress
44         {
45             get { return strMSAddress; }
46             set { strMSAddress = value; }
47         }
48 
49         public int msPort
50         {
51             get { return intMSPort; }
52             set { intMSPort = value; }
53         }
54 
55         public bool displayWindowed
56         {
57             get { return boolDisplayWindowed; }
58             set { boolDisplayWindowed = value; }
59         }
60 
61         public bool displayCustom
62         {
63             get { return boolDisplayCustomResolution; }
64             set { boolDisplayCustomResolution = value; }
65         }
66 
67         public int displayWidth
68         {
69             get { return intDisplayWidth; }
70             set { intDisplayWidth = value; }
71         }
72 
73         public int displayHeight
74         {
75             get { return intDisplayHeight; }
76             set { intDisplayHeight = value; }
77         }
78 
79         bool boolShowDefaultWads;
80         public bool ShowDefaultWads
81         {
82             get { return boolShowDefaultWads; }
83             set { boolShowDefaultWads = value; }
84         }
85 
GetSettings()86         public void GetSettings()
87         {
88             RegistryKey rk = Registry.CurrentUser.CreateSubKey(@"Software\SonicTeamJunior\Launcher");
89             RegistryKey rkDisplay = Registry.CurrentUser.CreateSubKey(@"Software\SonicTeamJunior\Launcher\Display");
90             RegistryKey rkMS = Registry.CurrentUser.CreateSubKey(@"Software\SonicTeamJunior\Launcher\MasterServer");
91             RegistryKey rkBinaries = rk.CreateSubKey("Binaries");
92             rkBinaries.SetValue("2.0.4", Directory.GetCurrentDirectory() + "\\srb2win.exe");
93 
94             try { boolDisplayCustomResolution = Convert.ToInt32(rkDisplay.GetValue("CustomResolution", 0)) != 0; }
95             catch { boolDisplayCustomResolution = false; }
96             try { boolDisplayWindowed = Convert.ToInt32(rkDisplay.GetValue("Windowed", 0)) != 0; }
97             catch { boolDisplayWindowed = false; }
98             try { boolShowDefaultWads = Convert.ToInt32(rkDisplay.GetValue("ShowDefaultWads", 0)) != 0; }
99             catch { boolShowDefaultWads = false; }
100             try { boolCloseOnStart = Convert.ToInt32(rkDisplay.GetValue("CloseOnStart", 0)) != 0; }
101             catch { boolCloseOnStart = false; }
102             intDisplayHeight = Convert.ToInt32(rkDisplay.GetValue("Height", "480"));
103             intDisplayWidth = Convert.ToInt32(rkDisplay.GetValue("Width", "640"));
104             intMSPort = Convert.ToInt32(rkMS.GetValue("Port", "28900"));
105             strMSAddress = Convert.ToString(rkMS.GetValue("Address", "ms.srb2.org"));
106             strParams = Convert.ToString(rk.GetValue("Params"));
107 
108             dicBinaries.Clear();
109             foreach (string strName in rkBinaries.GetValueNames())
110                 dicBinaries[strName] = (string)rkBinaries.GetValue(strName);
111 
112 
113             rk.Close();
114             rkDisplay.Close();
115             rkMS.Close();
116             rkBinaries.Close();
117         }
118 
SaveSettings()119         public void SaveSettings()
120         {
121             RegistryKey rk = Registry.CurrentUser.CreateSubKey(@"Software\SonicTeamJunior\Launcher");
122             RegistryKey rkDisplay = rk.CreateSubKey("Display");
123             RegistryKey rkMS = rk.CreateSubKey("MasterServer");
124             rkDisplay.SetValue("CustomResolution", boolDisplayCustomResolution);
125             rkDisplay.SetValue("Windowed", boolDisplayWindowed);
126             rkDisplay.SetValue("Height", intDisplayHeight);
127             rkDisplay.SetValue("Width", intDisplayWidth);
128             rkMS.SetValue("Port", intMSPort);
129             rkMS.SetValue("Address", strMSAddress);
130             rkMS.SetValue("ShowDefaultWads", boolShowDefaultWads);
131             rk.SetValue("Params", strParams);
132             rk.SetValue("CloseOnStart", boolCloseOnStart);
133 
134             rk.DeleteSubKey("Binaries", false);
135             RegistryKey rkBinaries = rk.CreateSubKey("Binaries");
136             rkBinaries.SetValue("2.0.4", Directory.GetCurrentDirectory() + "\\srb2win.exe");
137             foreach (string strName in dicBinaries.Keys)
138                 rkBinaries.SetValue(strName, dicBinaries[strName]);
139 
140             rk.Close();
141         }
142 
143 /*        public void WriteToRegistry()
144         {
145             RegistryKey rk = Registry.CurrentUser.CreateSubKey(@"Software\SRB2MSLauncher");
146 
147             rk.SetValue("Params", strParams);
148             rk.SetValue("Masterserver", strMSAddress);
149             rk.SetValue("MSPort", unMSPort, RegistryValueKind.DWord);
150             rk.SetValue("ShowDefaultWads", Convert.ToInt32(bShowDefaultWads), RegistryValueKind.DWord);
151 
152             rk.DeleteSubKey("Binaries", false);
153             RegistryKey rkBinaries = rk.CreateSubKey("Binaries");
154             foreach (string strName in dicBinaries.Keys)
155                 rkBinaries.SetValue(strName, dicBinaries[strName]);
156 
157             rkBinaries.Close();
158             rk.Close();
159         }
160 
161         public void LoadFromRegistry()
162         {
163             RegistryKey rk = Registry.CurrentUser.CreateSubKey(@"Software\SRB2MSLauncher");
164             RegistryKey rkBinaries = rk.CreateSubKey("Binaries");
165 
166             strParams = (string)rk.GetValue("Params", "");
167             strMSAddress = (string)rk.GetValue("Masterserver", "ms.srb2.org");
168 
169             try { unMSPort = Convert.ToUInt16(rk.GetValue("MSPort", MS_DEFAULT_PORT)); }
170             catch { unMSPort = MS_DEFAULT_PORT; }
171 
172             try { bShowDefaultWads = Convert.ToInt32(rk.GetValue("ShowDefaultWads", 0)) != 0; }
173             catch { bShowDefaultWads = true; }
174 
175             dicBinaries.Clear();
176             foreach (string strName in rkBinaries.GetValueNames())
177                 dicBinaries[strName] = (string)rkBinaries.GetValue(strName);
178 
179             rkBinaries.Close();
180             rk.Close();
181         }*/
182 
183 
184         public List<string> VersionStrings
185         {
186             get { return new List<string>(dicBinaries.Keys); }
187         }
188 
HasBinaryForVersion(string strVersion)189         public bool HasBinaryForVersion(string strVersion)
190         {
191             return dicBinaries.ContainsKey(strVersion) && dicBinaries[strVersion] != "";
192         }
193 
AddBinariesToListView(ListView lv)194         public void AddBinariesToListView(ListView lv)
195         {
196             foreach (string strName in dicBinaries.Keys)
197                 lv.Items.Add(new ListViewItem(new string[] { strName, dicBinaries[strName] }));
198         }
199 
SetBinariesFromListView(ListView lv)200         public void SetBinariesFromListView(ListView lv)
201         {
202             dicBinaries.Clear();
203             foreach (ListViewItem lvi in lv.Items)
204                 dicBinaries[lvi.Text] = lvi.SubItems[1].Text;
205         }
206 
207 		Dictionary<string, string> dicBinaries = new Dictionary<string, string>();
208 
SetBinary(string strVersion, string strBinary)209 		public void SetBinary(string strVersion, string strBinary)
210 		{
211 			dicBinaries[strVersion] = strBinary;
212 		}
213 
GetBinary(string strVersion)214         public string GetBinary(string strVersion)
215         {
216             return dicBinaries[strVersion];
217         }
218     }
219 }