#region Using directives using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.Windows.Forms; using System.Xml; using System.Text; using System.Net; using System.IO; using System.Threading; #endregion namespace Launcher { partial class Form1 : Form { string serverXml = "http://www.daocportal.net/serverlistxml.php"; public Form1() { InitializeComponent(); LoadServersDelegate loadServers = new LoadServersDelegate(LoadServers); loadServers.BeginInvoke(serverXml, null, null); label5.Text = "Welcome to PwnLauncher - the premiere launcher for freeshards."; if (File.Exists("config.xml")) { XmlDocument xml = new XmlDocument(); xml.Load("config.xml"); XmlNodeList configParams = xml.GetElementsByTagName("configuration"); textBox5.Text = configParams[0].ChildNodes[0].InnerText; if (configParams[0].ChildNodes[1].InnerText == "1") { checkBox1.Checked = false; } if (configParams[0].ChildNodes[1].InnerText == "20") { checkBox1.Checked = true; } } } private void settingsToolStripMenuItem_Click(object sender, EventArgs e) { panel2.Visible = false; panel3.Visible = false; panel1.Visible = true; groupBox1.Text = "Settings"; label5.Text = "Set your DAOC directory and version here."; } private void aboutToolStripMenuItem_Click(object sender, EventArgs e) { panel1.Visible = false; panel3.Visible = false; panel2.Visible = true; groupBox1.Text = "About"; label5.Text = "Information about the launcher, and a link to donate!"; } delegate void ServerUpdateDelegate(ListViewItem serverItem); public void ServerUpdate(ListViewItem serverItem) { if (listView1.InvokeRequired == false) { listView1.Items.Add(serverItem); } else { ServerUpdateDelegate serverUpdate = new ServerUpdateDelegate(ServerUpdate); BeginInvoke(serverUpdate, new object[] { serverItem }); } } private void Form1_Load(object sender, EventArgs e) { panel1.Visible = false; panel2.Visible = false; panel3.Visible = true; groupBox1.Text = "Servers"; //LoadServersDelegate loadServers = new LoadServersDelegate(LoadServers); //loadServers.Invoke(serverXml, null, null); } private void serversToolStripMenuItem_Click(object sender, EventArgs e) { panel1.Visible = false; panel2.Visible = false; panel3.Visible = true; groupBox1.Text = "Servers"; listView1.Items.Clear(); LoadServersDelegate loadServers = new LoadServersDelegate(LoadServers); loadServers.BeginInvoke(serverXml, null, null); label5.Text = "List of servers which are currently active."; } delegate void LoadServersDelegate(string xmlUrl); public void LoadServers(string xmlUrl) { WebClient webClient = new WebClient(); Byte[] xmlByte = webClient.DownloadData(xmlUrl); string xmlString = Encoding.Default.GetString(xmlByte); StreamWriter sr = File.CreateText("server.xml"); sr.WriteLine(xmlString); sr.Close(); XmlDocument xml = new XmlDocument(); xml.Load("server.xml"); XmlNodeList serverList = xml.GetElementsByTagName("serverlist"); listView1.Items.Clear(); for (int i = 0; i < serverList[0].ChildNodes.Count; i++) { ListViewItem newServer = new ListViewItem(new string[] { serverList[0].ChildNodes[i].Attributes.GetNamedItem("name").Value, serverList[0].ChildNodes[i].ChildNodes[1].InnerText, serverList[0].ChildNodes[i].ChildNodes[5].InnerText } ); ServerUpdate(newServer); } } private void Settings_Click(object sender, EventArgs e) { panel2.Visible = false; panel3.Visible = false; panel1.Visible = true; groupBox1.Text = "Settings"; } private void button3_Click_1(object sender, EventArgs e) { gameDir.ShowDialog(); textBox5.Text = gameDir.SelectedPath; XmlTextWriter configFile = null; configFile = new XmlTextWriter("config.xml", null); try { configFile.Formatting = Formatting.Indented; configFile.Indentation = 6; configFile.Namespaces = false; configFile.WriteStartDocument(); configFile.WriteStartElement("", "configuration", ""); configFile.WriteStartElement("", "gamedir", ""); configFile.WriteString(gameDir.SelectedPath); configFile.WriteEndElement(); configFile.WriteStartElement("", "gameversion", ""); if (checkBox1.Checked) { configFile.WriteString("20"); } else { configFile.WriteString("1"); } configFile.WriteEndElement(); configFile.WriteEndElement(); configFile.Flush(); } catch { } finally { if (configFile != null) configFile.Close(); } } private void listView1_SelectedIndexChanged(object sender, EventArgs e) { panel1.Visible = false; panel2.Visible = false; panel3.Visible = true; groupBox1.Text = "Servers"; label5.Text = "List of servers which are currently active."; XmlDocument xml = new XmlDocument(); xml.Load("server.xml"); XmlNodeList serverList = xml.GetElementsByTagName("serverlist"); if (listView1.SelectedItems.Count > 0) { for (int i = 0; i < serverList[0].ChildNodes.Count; i++) { if (serverList[0].ChildNodes[i].Attributes.GetNamedItem("name").Value.Equals(listView1.SelectedItems[0].Text)) { richTextBox1.Text = ""; richTextBox1.Text = serverList[0].ChildNodes[i].ChildNodes[0].InnerText + "\n\n"; richTextBox1.Text += serverList[0].ChildNodes[i].ChildNodes[3].InnerText + "\n\n"; richTextBox1.Text += "clients: " + serverList[0].ChildNodes[i].ChildNodes[4].InnerText + " / " + serverList[0].ChildNodes[i].ChildNodes[5].InnerText.ToLower() + " mode"; } } } } private void button4_Click(object sender, EventArgs e) { if (listView1.SelectedItems.Count > 0) { XmlDocument xml = new XmlDocument(); xml.Load("server.xml"); XmlNodeList serverList = xml.GetElementsByTagName("serverlist"); for (int i = 0; i < serverList[0].ChildNodes.Count; i++) { if (serverList[0].ChildNodes[i].Attributes.GetNamedItem("name").Value.Equals(listView1.SelectedItems[0].Text)) { StringBuilder gameLoc = new StringBuilder(); gameLoc.Append(textBox5.Text); gameLoc.Replace("\\", "\\\\"); gameLoc.Append("\\\\game.dll"); string properFlag = "1"; if (checkBox1.Checked) properFlag = "20"; //MessageBox.Show(gameLoc.ToString() + " " + serverList[0].ChildNodes[i].ChildNodes[1].InnerText + " " + serverList[0].ChildNodes[i].ChildNodes[2].InnerText + " " + properFlag + " " + textBox3.Text + " " + textBox4.Text); Process.Start("DOLLoader.exe", gameLoc.ToString() + " " + serverList[0].ChildNodes[i].ChildNodes[1].InnerText + " " + serverList[0].ChildNodes[i].ChildNodes[2].InnerText + " " + properFlag + " " + textBox3.Text + " " + textBox4.Text); } } } } private void button9_Click(object sender, EventArgs e) { panel2.Visible = false; panel3.Visible = false; panel1.Visible = true; groupBox1.Text = "Settings"; label5.Text = "Set your DAOC directory and version here."; } private void checkBox1_CheckedChanged(object sender, EventArgs e) { XmlTextWriter configFile = null; configFile = new XmlTextWriter("config.xml", null); try { configFile.Formatting = Formatting.Indented; configFile.Indentation = 6; configFile.Namespaces = false; configFile.WriteStartDocument(); configFile.WriteStartElement("", "configuration", ""); configFile.WriteStartElement("", "gamedir", ""); configFile.WriteString(textBox5.Text); configFile.WriteEndElement(); configFile.WriteStartElement("", "gameversion", ""); if (checkBox1.Checked) { configFile.WriteString("20"); } else { configFile.WriteString("1"); } configFile.WriteEndElement(); configFile.WriteEndElement(); configFile.Flush(); } catch { } finally { if (configFile != null) configFile.Close(); } } } }