All pastes #755763 Raw Edit

Meins

public text v1 · immutable
#755763 ·published 2007-10-30 21:38 UTC
rendered paste body
// /home/hannes/Dokumente/c#-Projects/DemoRename/DemoRename/ProcessDemo.cs created with MonoDevelop
// User: hannes at 04:12 30.10.2007
//
// To change standard headers go to Edit->Preferences->Coding->Standard Headers
//

using System;
using System.IO;
using System.Text;
using System.Collections;
using System.Text.RegularExpressions;

namespace DemoRename
{	
	
	public class ProcessDemo
	{
		private String demo2 ="";
		private string map = "unknown";

        bool mod1 = false;
		PlayerList players;
		ArrayList arr = new ArrayList();
		ArrayList finalTags = new ArrayList();
		
		public ProcessDemo(String _demo, double offset, PlayerList lst)
		{
			demo2 = _demo;
			players = lst;
			FileInfo demo = new FileInfo(demo2);			



                    Console.WriteLine("Processing demo: " + Path.GetFileName(demo2));

                    using (StreamReader sr = new StreamReader(demo2))

                    {

                        string rawLine = sr.ReadToEnd();

                        string[] datas = rawLine.Split('');

                        foreach (String d in datas)

                        {



                            if (d.IndexOf("si_map") > 0 && !mod1)

                            {

                                string[] map2 = d.Split('/');

                                for (int i = 0; i <= map2.Length - 1; i++)

                                {

                                    if (map2[i].IndexOf("si_map") > 0)

                                        getMap(map2[i + 1]);

                                }

                            }



                            if (d.IndexOf("ui_name") > 0)

                            {

                                string[] map2 = d.Split('\n');

                                for (int i = 0; i <= map2.Length - 1; i++)

                                {

                                    if (map2[i].IndexOf("ui_realname") > 0)

                                    {

								         string[] map3 = map2[i].Split('\0');								
								         players.Add(cleanString(map3[map3.Length-1]),new Player(cleanString(map3[map3.Length-1])));

                                    }

                                }

                                

                            }  

                        }

                        mod1 = false; 
				        analyseTags();

                    }



                    string newFile = demo.LastWriteTime.AddHours(offset).ToString()

                                    .Replace(".", "_")

                                    .Replace(" ", "_")

                                    .Replace(":", "")

                                    + "_" + map + ".ndm";



                    try

                    {

                        if (!File.Exists(newFile))

                            File.Move(demo2, newFile);

                    }

                    catch (Exception e)

                    {

                        Console.WriteLine(e.Message);

                    }

		}
		
		private void getMap(string p)

        {

            mod1 = true;

            if (p.IndexOf("salvage") >= 0)

            {

                map = "salvage";

            }

            else if (p.IndexOf("volcano") >= 0)

            {

                map = "volcano";

            }

            else if (p.IndexOf("area22") >= 0)

            {

                map = "area22";

            }

            else if (p.IndexOf("island") >= 0)

            {

                map = "island";

            }

            else if (p.IndexOf("ark") >= 0)

            {

                map = "ark";

            }

            else if (p.IndexOf("sewer") >= 0)

            {

                map = "sewer";

            }

            else if (p.IndexOf("canyon") >= 0)

            {

                map = "canyon";

            }

            else if (p.IndexOf("outskirts") >= 0)

            {

                map = "outskirts";

            }

            else if (p.IndexOf("quarry") >= 0)

            {

                map = "quarry";

            }

            else if (p.IndexOf("refinery") >= 0)

            {

                map = "refinery";

            }

            else if (p.IndexOf("slipgate") >= 0)

            {

                map = "slipgate";

            }

            else if (p.IndexOf("valley") >= 0)

            {

                map = "valley";

            }

        }
		
		/// <summary>

        /// Cleans a String from colorcodes

        /// </summary>

        public String cleanString(String name)

        {

			if (name == null)
				return null;

            Regex regex = new Regex(@"(\^\D)|(\$\D)|(\^\d)|(\$\d)");

            return regex.Replace(name, "");

        }
		 
		public void analyseTags()
		{
			int j =0;
			foreach(String i in players.Keys)
			{
				arr.Add(players[i].Name);
				j++;				
			}
			try{
				for(int k=0; k<=arr.Count-1;k++){
					
			      compare(arr[k].ToString(),arr[k+1].ToString());
				}
			}
			catch{
			};
			
			if(finalTags.Count <= 0) {
				Console.WriteLine("TeamA"); 
				Console.WriteLine("TeamB");}
			else if(finalTags.Count <= 1) {
				Console.WriteLine(finalTags[0]);
				Console.WriteLine("TeamA");
			}else{
			    Console.WriteLine(finalTags[0]);
				Console.WriteLine(finalTags[1]);
			}
			
		}
		
		public void compare(String x, String y)
		{
			int xLength = x.Length, yLength = y.Length;
			StringBuilder sb = new StringBuilder();
			int len = 0;
			if(xLength < yLength) len = xLength;
			else len = yLength;
			// von vorne
			for( int i=0; i<=len;i++)
			{
				if(x[i].Equals(y[i]))
				   {
					sb.Append(x[i]);
				   }else break;
			}
			
			if(sb.ToString().Equals("")){
			// von hinten
			for( int m=len; m<=1;m--)
			{
				if(x[m].Equals(y[m]))
				   {
					sb.Append(x[m]);
				   }else break;
			}
			}
			
			//Console.WriteLine(sb.ToString());
			if(!sb.ToString().Equals("") && !finalTags.Contains(sb.ToString()))
			finalTags.Add(sb.ToString());
		}
	}
}