All pastes #10172 Raw Edit

tobz

public text v1 · immutable
#10172 ·published 2005-04-24 03:49 UTC
rendered paste body
#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();
            }
        }
    }
}