using System; using System.Collections.Generic; using System.Linq; using System.Text; using Ion.Storage; using Holo.Virtual.Users; using Holo.Source.GameConnectionSystem; using Holo.Managers; namespace Holo.Source.Socket_servers.Game_Socketsystem { public class messageHandler { private virtualUser EndUser; private string LastReceivedPacket; private delegate void Packet(); private Packet[] mPacket; private gameConnection Connector; public messageHandler(gameConnection _A) { mPacket = new Packet[99999]; //Dont know final value have to do obviously over Connector = _A; } ~messageHandler() { GC.Collect(); } internal void Clear() { EndUser = null; LastReceivedPacket = null; mPacket = null; Connector = null; } internal void SetUser(virtualUser User) { this.EndUser = User; RegisterStandardPackets(); } internal void ProcessPacket(string Packet) //Then the packet appears here { if (mPacket[Encoding.decodeB64(Packet.Substring(0, 2))] == null) //Unknown packet { //Out.WriteLine("Unknown packet: [" + Packet + "]"); } else { //Out.WriteLine("Packet received: [" + Packet + "]"); EndUser.currentPacket = Packet; LastReceivedPacket = Packet; mPacket[Encoding.decodeB64(Packet.Substring(0, 2))].Invoke(); } } internal string currentPacket { get { return LastReceivedPacket; } } private void UnknownPacket() { return; } #region Login Packet Registry internal void RegisterStandardPackets() { mPacket[Encoding.decodeB64("CD")] = new Packet(EndUser.ProcessPacketCD21); mPacket[Encoding.decodeB64("CN")] = new Packet(EndUser.ProcessPacketCN); //mPacket[Encoding.decodeB64("_R")] = new Packet(EndUser.ProcessPacket_R); //mPacket[Encoding.decodeB64("CL")] = new Packet(EndUser.ProcessPacketCL); mPacket[Encoding.decodeB64("F_")] = new Packet(EndUser.ProcessPacketF_); } private void DestroyStandardPackets() { mPacket[Encoding.decodeB64("CN")] = null; //mPacket[Encoding.decodeB64("_R")] = null; mPacket[Encoding.decodeB64("F_")] = null; } #endregion #region Packet registry internal void RegisterLoggedInPackets() { DestroyStandardPackets(); mPacket[Encoding.decodeB64("@q")] = new Packet(EndUser.ProcessPacketAGq); mPacket[Encoding.decodeB64("BA")] = new Packet(EndUser.ProcessPacketBA); mPacket[Encoding.decodeB64("@L")] = new Packet(EndUser.ProcessPacketAGL); mPacket[Encoding.decodeB64("@Z")] = new Packet(EndUser.ProcessPacketAGZ); mPacket[Encoding.decodeB64("@G")] = new Packet(EndUser.ProcessPacketAGG); mPacket[Encoding.decodeB64("@H")] = new Packet(EndUser.ProcessPacketAGH); mPacket[Encoding.decodeB64("B]")] = new Packet(EndUser.ProcessPacketBS9); mPacket[Encoding.decodeB64("Cd")] = new Packet(EndUser.ProcessPacketCd); mPacket[Encoding.decodeB64("Er")] = new Packet(EndUser.ProcessPacketEr); mPacket[Encoding.decodeB64("Dm")] = new Packet(EndUser.ProcessPacketDm); mPacket[Encoding.decodeB64("F^")] = new Packet(EndUser.ProcessPacketF893); mPacket[Encoding.decodeB64("F]")] = new Packet(EndUser.ProcessPacketF464); mPacket[Encoding.decodeB64(@"F\")] = new Packet(EndUser.ProcessPacketF873); mPacket[Encoding.decodeB64("@g")] = new Packet(EndUser.ProcessPacketAGg); mPacket[Encoding.decodeB64("@i")] = new Packet(EndUser.ProcessPacketAGi); mPacket[Encoding.decodeB64("@e")] = new Packet(EndUser.ProcessPacketAGe); mPacket[Encoding.decodeB64("@f")] = new Packet(EndUser.ProcessPacketAGf); mPacket[Encoding.decodeB64("@h")] = new Packet(EndUser.ProcessPacketAGh); mPacket[Encoding.decodeB64("@a")] = new Packet(EndUser.ProcessPacketAGa); mPacket[Encoding.decodeB64("@O")] = new Packet(EndUser.ProcessPacketAGO); mPacket[Encoding.decodeB64("DF")] = new Packet(EndUser.ProcessPacketDF); mPacket[Encoding.decodeB64("@b")] = new Packet(EndUser.ProcessPacketAGb); mPacket[Encoding.decodeB64("BV")] = new Packet(EndUser.ProcessPacketBV); mPacket[Encoding.decodeB64("BW")] = new Packet(EndUser.ProcessPacketBW); mPacket[Encoding.decodeB64("DH")] = new Packet(EndUser.ProcessPacketDH); mPacket[Encoding.decodeB64("Fr")] = new Packet(EndUser.ProcessPacketFr); mPacket[Encoding.decodeB64("E~")] = new Packet(EndUser.ProcessPacketAGQ); mPacket[Encoding.decodeB64("@U")] = new Packet(EndUser.ProcessPacketAGU); mPacket[Encoding.decodeB64("Fs")] = new Packet(EndUser.ProcessPacketFs); mPacket[Encoding.decodeB64("@S")] = new Packet(EndUser.ProcessPacketAGS); mPacket[Encoding.decodeB64("@T")] = new Packet(EndUser.ProcessPacketAGT); mPacket[Encoding.decodeB64("EA")] = new Packet(EndUser.ProcessPacketEA); mPacket[Encoding.decodeB64("EY")] = new Packet(EndUser.ProcessPacketEY); mPacket[Encoding.decodeB64("D~")] = new Packet(EndUser.ProcessPacketDCA); mPacket[Encoding.decodeB64("D}")] = new Packet(EndUser.ProcessPacketDBL21); mPacket[Encoding.decodeB64("E^")] = new Packet(EndUser.ProcessPacketEUT); mPacket[Encoding.decodeB64("EZ")] = new Packet(EndUser.ProcessPacketEZ); mPacket[Encoding.decodeB64("E/")] = new Packet(EndUser.ProcessPacketESL); mPacket[Encoding.decodeB64("E[")] = new Packet(EndUser.ProcessPacketEPAR); mPacket[Encoding.decodeB64("FC")] = new Packet(EndUser.ProcessPacketFC); mPacket[Encoding.decodeB64("@]")] = new Packet(EndUser.ProcessPacketAGY); mPacket[Encoding.decodeB64("FP")] = new Packet(EndUser.ProcessPacketAFP); mPacket[Encoding.decodeB64("BX")] = new Packet(EndUser.ProcessPacketBX); mPacket[Encoding.decodeB64("BY")] = new Packet(EndUser.ProcessPacketBY); mPacket[Encoding.decodeB64("@W")] = new Packet(EndUser.ProcessPacketAGW); mPacket[Encoding.decodeB64("BZ")] = new Packet(EndUser.ProcessPacketBZ); //enter/leave room mPacket[Encoding.decodeB64("@u")] = new Packet(EndUser.ProcessPacketAGu); mPacket[Encoding.decodeB64("Bv")] = new Packet(EndUser.ProcessPacketBv); mPacket[Encoding.decodeB64("@B")] = new Packet(EndUser.ProcessPacketAGB); mPacket[Encoding.decodeB64("@v")] = new Packet(EndUser.ProcessPacketAGv); mPacket[Encoding.decodeB64("@y")] = new Packet(EndUser.ProcessPacketAGy); mPacket[Encoding.decodeB64("Ab")] = new Packet(EndUser.ProcessPacketAb); mPacket[Encoding.decodeB64("A~")] = new Packet(EndUser.ProcessPacketACA); mPacket[Encoding.decodeB64("CW")] = new Packet(EndUser.ProcessPacketCW); mPacket[Encoding.decodeB64("Cf")] = new Packet(EndUser.ProcessPacketCf); mPacket[Encoding.decodeB64("FG")] = new Packet(EndUser.ProcessPacketFG); mPacket[Encoding.decodeB64("FF")] = new Packet(EndUser.ProcessPacketFF); //Mod-Tool //mPacket[Encoding.decodeB64("HS")] = new Packet(EndUser.ProcessPacketHS); mPacket[Encoding.decodeB64("Oj")] = new Packet(EndUser.ProcessPacketOj); mPacket[Encoding.decodeB64("GF")] = new Packet(EndUser.ProcessPacketGF); mPacket[Encoding.decodeB64("Cm")] = new Packet(EndUser.ProcessPacketCm); mPacket[Encoding.decodeB64("Cn")] = new Packet(EndUser.ProcessPacketCn); mPacket[Encoding.decodeB64("AV")] = new Packet(EndUser.ProcessPacketAV); mPacket[Encoding.decodeB64("CG")] = new Packet(EndUser.ProcessPacketCG); mPacket[Encoding.decodeB64("CF")] = new Packet(EndUser.ProcessPacketCF); mPacket[Encoding.decodeB64("@p")] = new Packet(EndUser.ProcessPacketAGp); mPacket[Encoding.decodeB64("EC")] = new Packet(EndUser.ProcessPacketEC); mPacket[Encoding.decodeB64("AO")] = new Packet(EndUser.ProcessPacketAO); mPacket[Encoding.decodeB64("AK")] = new Packet(EndUser.ProcessPacketAK); mPacket[Encoding.decodeB64("As")] = new Packet(EndUser.ProcessPacketAs); mPacket[Encoding.decodeB64("At")] = new Packet(EndUser.ProcessPacketAt); mPacket[Encoding.decodeB64("B^")] = new Packet(EndUser.ProcessPacketBUL); //mPacket[Encoding.decodeB64("B_")] = new Packet(EndUser.ProcessPacketB_); mPacket[Encoding.decodeB64("DG")] = new Packet(EndUser.ProcessPacketDG); mPacket[Encoding.decodeB64("Cg")] = new Packet(EndUser.ProcessPacketCg); mPacket[Encoding.decodeB64("A^")] = new Packet(EndUser.ProcessPacketAUL); mPacket[Encoding.decodeB64("A]")] = new Packet(EndUser.ProcessPacketAPAR); mPacket[Encoding.decodeB64("AP")] = new Packet(EndUser.ProcessPacketAP); mPacket[Encoding.decodeB64("Ah")] = new Packet(EndUser.ProcessPacketAh); mPacket[Encoding.decodeB64("@t")] = new Packet(EndUser.ProcessPacketAGw); mPacket[Encoding.decodeB64("@w")] = new Packet(EndUser.ProcessPacketAGw); mPacket[Encoding.decodeB64("@x")] = new Packet(EndUser.ProcessPacketAGx); mPacket[Encoding.decodeB64("D{")] = new Packet(EndUser.ProcessPacketDBL); mPacket[Encoding.decodeB64("A`")] = new Packet(EndUser.ProcessPacketATNG); mPacket[Encoding.decodeB64("Aa")] = new Packet(EndUser.ProcessPacketAa); mPacket[Encoding.decodeB64("Fy")] = new Packet(EndUser.ProcessPacketFy); mPacket[Encoding.decodeB64("E@")] = new Packet(EndUser.ProcessPacketEAT); mPacket[Encoding.decodeB64("DE")] = new Packet(EndUser.ProcessPacketDE); mPacket[Encoding.decodeB64("Ae")] = new Packet(EndUser.ProcessPacketAe); mPacket[Encoding.decodeB64("Af")] = new Packet(EndUser.ProcessPacketAf); mPacket[Encoding.decodeB64("Ad")] = new Packet(EndUser.ProcessPacketAd); mPacket[Encoding.decodeB64("FT")] = new Packet(EndUser.ProcessPacketFT); mPacket[Encoding.decodeB64("LB")] = new Packet(EndUser.ProcessPacketLB); mPacket[Encoding.decodeB64("AB")] = new Packet(EndUser.ProcessPacketAB); mPacket[Encoding.decodeB64("AZ")] = new Packet(EndUser.ProcessPacketAZ); mPacket[Encoding.decodeB64("AC")] = new Packet(EndUser.ProcessPacketAC); mPacket[Encoding.decodeB64("AI")] = new Packet(EndUser.ProcessPacketAI); mPacket[Encoding.decodeB64("FH")] = new Packet(EndUser.ProcessPacketFH); mPacket[Encoding.decodeB64("AN")] = new Packet(EndUser.ProcessPacketAN); mPacket[Encoding.decodeB64("Bw")] = new Packet(EndUser.ProcessPacketBw); mPacket[Encoding.decodeB64("AM")] = new Packet(EndUser.ProcessPacketAM); mPacket[Encoding.decodeB64("AL")] = new Packet(EndUser.ProcessPacketAL); mPacket[Encoding.decodeB64("Cw")] = new Packet(EndUser.ProcessPacketCw); mPacket[Encoding.decodeB64("Dz")] = new Packet(EndUser.ProcessPacketDz); mPacket[Encoding.decodeB64("AS")] = new Packet(EndUser.ProcessPacketAS); mPacket[Encoding.decodeB64("AT")] = new Packet(EndUser.ProcessPacketAT); mPacket[Encoding.decodeB64("AU")] = new Packet(EndUser.ProcessPacketAU); mPacket[Encoding.decodeB64("Ct")] = new Packet(EndUser.ProcessPacketCt); mPacket[Encoding.decodeB64("Cu")] = new Packet(EndUser.ProcessPacketCu); mPacket[Encoding.decodeB64("C]")] = new Packet(EndUser.ProcessPacketCPAR); mPacket[Encoding.decodeB64("Cs")] = new Packet(EndUser.ProcessPacketCs); mPacket[Encoding.decodeB64("C~")] = new Packet(EndUser.ProcessPacketCCA); mPacket[Encoding.decodeB64("Cx")] = new Packet(EndUser.ProcessPacketCx); mPacket[Encoding.decodeB64("Co")] = new Packet(EndUser.ProcessPacketCo); mPacket[Encoding.decodeB64("C[")] = new Packet(EndUser.ProcessPacketCPAR21); mPacket[Encoding.decodeB64(@"C\")] = new Packet(EndUser.ProcessPacketCSL); mPacket[Encoding.decodeB64("Cp")] = new Packet(EndUser.ProcessPacketCp); mPacket[Encoding.decodeB64("Cq")] = new Packet(EndUser.ProcessPacketCq); mPacket[Encoding.decodeB64("Cr")] = new Packet(EndUser.ProcessPacketCr); mPacket[Encoding.decodeB64("AG")] = new Packet(EndUser.ProcessPacketAG); mPacket[Encoding.decodeB64("AH")] = new Packet(EndUser.ProcessPacketAH); mPacket[Encoding.decodeB64("AD")] = new Packet(EndUser.ProcessPacketAD); mPacket[Encoding.decodeB64("AE")] = new Packet(EndUser.ProcessPacketAE); mPacket[Encoding.decodeB64("AF")] = new Packet(EndUser.ProcessPacketAF); mPacket[Encoding.decodeB64("B_")] = new Packet(EndUser.ProcessPacketB__); mPacket[Encoding.decodeB64("B`")] = new Packet(EndUser.ProcessPacketBUT); mPacket[Encoding.decodeB64("Bb")] = new Packet(EndUser.ProcessPacketBb); mPacket[Encoding.decodeB64("Bc")] = new Packet(EndUser.ProcessPacketBc); mPacket[Encoding.decodeB64("Be")] = new Packet(EndUser.ProcessPacketBe); mPacket[Encoding.decodeB64("Bg")] = new Packet(EndUser.ProcessPacketBg); mPacket[Encoding.decodeB64("Bh")] = new Packet(EndUser.ProcessPacketBh); mPacket[Encoding.decodeB64("Bj")] = new Packet(EndUser.ProcessPacketBj); mPacket[Encoding.decodeB64("Bk")] = new Packet(EndUser.ProcessPacketBk); mPacket[Encoding.decodeB64("Bl")] = new Packet(EndUser.ProcessPacketBl); mPacket[Encoding.decodeB64("EW")] = new Packet(EndUser.ProcessPacketEW); mPacket[Encoding.decodeB64("EU")] = new Packet(EndUser.ProcessPacketEU); mPacket[Encoding.decodeB64("EV")] = new Packet(EndUser.ProcessPacketEV); mPacket[Encoding.decodeB64("AW")] = new Packet(EndUser.ProcessPacketAW); mPacket[Encoding.decodeB64("Ed")] = new Packet(EndUser.ProcessPacketEd); mPacket[Encoding.decodeB64("Eg")] = new Packet(EndUser.ProcessPacketEg); mPacket[Encoding.decodeB64("Ee")] = new Packet(EndUser.ProcessPacketEe); mPacket[Encoding.decodeB64("Dy")] = new Packet(EndUser.ProcessPacketDy); mPacket[Encoding.decodeB64("Ej")] = new Packet(EndUser.ProcessPacketEj); mPacket[Encoding.decodeB64("Ek")] = new Packet(EndUser.ProcessPacketEk); mPacket[Encoding.decodeB64("Aj")] = new Packet(EndUser.ProcessPacketAj); mPacket[Encoding.decodeB64("Ak")] = new Packet(EndUser.ProcessPacketAk); mPacket[Encoding.decodeB64("Eu")] = new Packet(EndUser.ProcessPacketEu); mPacket[Encoding.decodeB64("Ev")] = new Packet(EndUser.ProcessPacketEv); mPacket[Encoding.decodeB64("Et")] = new Packet(EndUser.ProcessPacketEt); mPacket[Encoding.decodeB64("_B")] = new Packet(EndUser.ProcessPacket_B); mPacket[Encoding.decodeB64("_`")] = new Packet(EndUser.ProcessPacket_TH); mPacket[Encoding.decodeB64("_b")] = new Packet(EndUser.ProcessPacket_b); mPacket[Encoding.decodeB64("_c")] = new Packet(EndUser.ProcessPacket_c); mPacket[Encoding.decodeB64("_e")] = new Packet(EndUser.ProcessPacket_e); mPacket[Encoding.decodeB64("_g")] = new Packet(EndUser.ProcessPacket_g); mPacket[Encoding.decodeB64("_h")] = new Packet(EndUser.ProcessPacket_h); mPacket[Encoding.decodeB64("_j")] = new Packet(EndUser.ProcessPacket_j); mPacket[Encoding.decodeB64("_k")] = new Packet(EndUser.ProcessPacket_k); mPacket[Encoding.decodeB64("_l")] = new Packet(EndUser.ProcessPacket_l); mPacket[Encoding.decodeB64("_V")] = new Packet(EndUser.ProcessPacket_V); mPacket[Encoding.decodeB64("Dn")] = new Packet(EndUser.ProcessPacketDn); mPacket[Encoding.decodeB64("Dc")] = new Packet(EndUser.ProcessPacketDc); mPacket[Encoding.decodeB64("Da")] = new Packet(EndUser.ProcessPacketDa); mPacket[Encoding.decodeB64("Dl")] = new Packet(EndUser.ProcessPacketDl); mPacket[Encoding.decodeB64("Dw")] = new Packet(EndUser.ProcessPacketDw); mPacket[Encoding.decodeB64("Dr")] = new Packet(EndUser.ProcessPacketDr); mPacket[Encoding.decodeB64("Du")] = new Packet(EndUser.ProcessPacketDu); mPacket[Encoding.decodeB64("Dv")] = new Packet(EndUser.ProcessPacketDv); mPacket[Encoding.decodeB64("Dx")] = new Packet(EndUser.ProcessPacketDx); mPacket[Encoding.decodeB64("@o")] = new Packet(EndUser.ProcessPacketApeo); mPacket[Encoding.decodeB64("D")] = new Packet(EndUser.ProcessPacketDThingy); mPacket[Encoding.decodeB64("EB")] = new Packet(EndUser.ProcessPacketEB); mPacket[Encoding.decodeB64("FI")] = new Packet(EndUser.ProcessPacketFI); mPacket[Encoding.decodeB64("Ch")] = new Packet(EndUser.ProcessPacketFI); mPacket[Encoding.decodeB64("FS")] = new Packet(EndUser.ProcessPacketFS); mPacket[Encoding.decodeB64("FR")] = new Packet(EndUser.ProcessPacketFR); mPacket[Encoding.decodeB64("Es")] = new Packet(EndUser.ProcessPacketEs); mPacket[Encoding.decodeB64("Cl")] = new Packet(EndUser.ProcessPacketCl); mPacket[Encoding.decodeB64("Cj")] = new Packet(EndUser.ProcessPacketCj); mPacket[Encoding.decodeB64("Ch")] = new Packet(EndUser.ProcessPacketCh); mPacket[Encoding.decodeB64("@j")] = new Packet(EndUser.ProcessPacketApeJ); mPacket[Encoding.decodeB64("E|")] = new Packet(EndUser.ProcessPacketChrispl0x); mPacket[Encoding.decodeB64("Fo")] = new Packet(EndUser.ProcessPacketFo); mPacket[Encoding.decodeB64("Fn")] = new Packet(EndUser.ProcessPacketFn); mPacket[Encoding.decodeB64("Fw")] = new Packet(EndUser.ProcessPacketFw); mPacket[Encoding.decodeB64("DJ")] = new Packet(EndUser.ProcessPacketDJ); mPacket[Encoding.decodeB64("@u")] = new Packet(EndUser.ProcessPacketapeU); mPacket[Encoding.decodeB64("Fx")] = new Packet(EndUser.ProcessPacketFx); mPacket[Encoding.decodeB64("F'")] = new Packet(EndUser.ProcessPacketFx2); mPacket[Encoding.decodeB64("FD")] = new Packet(EndUser.ProcessPacketFD); } #endregion #region Disiabled Packets //mPacket[Encoding.decodeB64("Aq")] = new Packet(EndUser.ProcessPacketAq); //mPacket[Encoding.decodeB64("Ao")] = new Packet(EndUser.ProcessPacketAo); #endregion } }