Example #1
0
            public CatSelGump(string sys, ACCGumpParams subParams, PGLocation loc)
                : base(0, 0)
            {
                if (sys == null || subParams == null || loc == null || m_CategoryList == null)
                {
                    return;
                }

                Sys = sys;
                if (subParams is PGGumpParams)
                {
                    Params = subParams as PGGumpParams;
                }
                Loc = loc;

                AddPage(0);
                AddBackground(640, 0, 160, 400, 5120);

                for (int i = 0; i < PGSystem.CategoryList.Count; i++)
                {
                    PGCategory PGC = m_CategoryList[i];
                    if (PGC != null)
                    {
                        AddButton(650, 10 + i * 30, 2501, 2501, 1 + i, GumpButtonType.Reply, 0);
                        AddLabel(675, 10 + i * 30, 1153, PGC.Name);
                    }
                }
            }
Example #2
0
 public SysChoiceGump(string sys, ACCGumpParams subParams, List <PGCategory> list)
     : base(0, 0)
 {
     Sys = sys;
     if (subParams is PGGumpParams)
     {
         Params = subParams as PGGumpParams;
     }
     List = list;
     AddPage(0);
     AddBackground(250, 245, 300, 90, 5120);
     AddLabel(282, 260, 1153, "Overwrite or Add To current system?");
     AddButton(280, 290, 2445, 2445, 1, GumpButtonType.Reply, 0);
     AddButton(410, 290, 2445, 2445, 2, GumpButtonType.Reply, 0);
     AddLabel(300, 291, 1153, "Overwrite");
     AddLabel(442, 291, 1153, "Add To");
 }
Example #3
0
        /* ID's
         * 101   = Button	List Mobiles
         * 102   = Button	List Items
         * 103   = Button	List Types
         * 104   = Button	Previous
         * 105   = Button	Next
         * 106   = Button	Back to List
         * 1000+ = Button	Selections
         */
        public override void OnResponse(NetState state, RelayInfo info, ACCGumpParams subParams)
        {
            if (!Running || info.ButtonID == 0)
            {
                return;
            }

            if (subParams is CMGumpParams)
            {
                Params = subParams as CMGumpParams;
            }

            CMGumpParams newParams = new CMGumpParams();

            //Switch to List Mobiles
            if (info.ButtonID == 101)
            {
                newParams.PageName = Pages.ListMobiles;
            }

            //Switch to List Items
            else if (info.ButtonID == 102)
            {
                newParams.PageName = Pages.ListItems;
            }

            //Previous Page
            else if (info.ButtonID == 104)
            {
                newParams.PageIndex = Params.PageIndex - 1;
            }

            //Next Page
            else if (info.ButtonID == 105)
            {
                newParams.PageIndex = Params.PageIndex + 1;
            }

            //Back to List
            else if (info.ButtonID == 106)
            {
                newParams.PageName = Pages.Home;
            }

            //Select Item from List
            else if (info.ButtonID >= 1000)
            {
                int selectedID = info.ButtonID - 1000;

                if (selectedID < 0 || selectedID >= m_DictionaryOfModuleLists.Count)
                {
                    return;
                }

                switch ((int)Params.PageName)
                {
                //Change page to List Modules with serial of selected item
                case (int)Pages.ListItems:
                {
                    if (selectedID < 0 || selectedID >= m_ItemList.Count)
                    {
                        return;
                    }

                    newParams.PageName       = Pages.ListModulesFor;
                    newParams.SelectedSerial = m_ItemList[selectedID].Serial;
                    newParams.PageIndex      = 0;

                    break;
                }

                //Change page to List Modules with serial of selected mobile
                case (int)Pages.ListMobiles:
                {
                    if (selectedID < 0 || selectedID >= m_MobileList.Count)
                    {
                        return;
                    }

                    newParams.PageName       = Pages.ListModulesFor;
                    newParams.SelectedSerial = m_MobileList[selectedID].Serial;
                    newParams.PageIndex      = 0;
                    break;
                }

                //Open the Edit Module Gump
                //Not implemented yet
                case (int)Pages.ListModulesFor:
                {
                    if (selectedID < 0 || selectedID >= m_ModuleList.Count)
                    {
                        return;
                    }

                    if (m_ModuleList[selectedID] == null)
                    {
                        return;
                    }

                    Timer.DelayCall(TimeSpan.FromSeconds(1.0), new TimerStateCallback(SendEMG), state.Mobile);
                    break;
                }
                }
            }

            state.Mobile.SendGump(new ACCGump(state.Mobile, this.ToString(), newParams));
        }
Example #4
0
        public override void Gump(Mobile from, Gump gump, ACCGumpParams subParams)
        {
            gump.AddButton(190, 40, 2445, 2445, 101, GumpButtonType.Reply, 0);
            gump.AddLabel(204, 42, 1153, "List Mobiles");
            gump.AddButton(310, 40, 2445, 2445, 102, GumpButtonType.Reply, 0);
            gump.AddLabel(331, 42, 1153, "List Items");
            gump.AddButton(430, 40, 2445, 2445, 103, GumpButtonType.Reply, 0);
            gump.AddLabel(450, 42, 1153, "List Types");
            //			gump.AddButton( 190, 70, 2445, 2445, 104, GumpButtonType.Reply, 0 );
            //			gump.AddLabel(  208, 72, 1153, "Add Module" );
            //			gump.AddButton( 310, 70, 2445, 2445, 105, GumpButtonType.Reply, 0 );
            //			gump.AddLabel(  326, 72, 1153, "Edit Module" );
            //			gump.AddButton( 430, 70, 2445, 2445, 106, GumpButtonType.Reply, 0 );
            //			gump.AddLabel(  439, 72, 1153, "Delete Module" );

            if (subParams == null || !(subParams is CMGumpParams))
            {
                gump.AddHtml(215, 15, 300, 25, "<basefont size=7 color=white><center>Central Memory</center></font>", false, false);
                gump.AddHtml(140, 95, 450, 250, "<basefont color=white><center>Welcome to the Central Memory Admin Gump!</center><br>With this gump, you can see a list of all entries that the CM contains.  You can add new Modules or modify or delete existing Modules.<br><br>Make your selection from the top buttons, either List Mobiles or Items.  This will bring up a list of all Mobiles or Items that the CM is keeping track of.<br><br>You may then select one of the entries to list the Modules that are stored to that entry.  You can then add, modify or remove modules to that entry.</font>", false, false);
                return;
            }

            Params = subParams as CMGumpParams;

            switch ((int)Params.PageName)
            {
                #region ListMobiles
            case (int)Pages.ListMobiles:
                gump.AddLabel(120, 95, 1153, "Listing all Mobiles:");

                m_MobileList = GetMobiles();
                if (m_MobileList == null || m_MobileList.Count == 0)
                {
                    return;
                }

                if (Params.PageIndex < 0)
                {
                    Params.PageIndex = 0;
                }


                if (Params.PageIndex > 0)
                {
                    gump.AddButton(120, 332, 4014, 4015, 104, GumpButtonType.Reply, 0);
                }
                if ((Params.PageIndex + 1) * 21 <= m_MobileList.Count)
                {
                    gump.AddButton(540, 332, 4005, 4006, 105, GumpButtonType.Reply, 0);
                }

                for (int i = Params.PageIndex * 21, r = 0, c = 0; i < m_MobileList.Count; i++)
                {
                    if (m_MobileList[i] == null)
                    {
                        continue;
                    }
                    gump.AddButton(120 + c * 155, 125 + r * 30, 2501, 2501, 1000 + i, GumpButtonType.Reply, 0);
                    gump.AddLabel(130 + c * 155, 126 + r * 30, 1153, (m_MobileList[i].Name == null ? m_MobileList[i].Serial.ToString() : m_MobileList[i].Name));
                }

                break;
                #endregion //ListMobiles

                #region ListItems
            case (int)Pages.ListItems:
                gump.AddLabel(120, 95, 1153, "Listing all Items:");

                m_ItemList = GetItems();
                if (m_ItemList == null || m_ItemList.Count == 0)
                {
                    return;
                }

                if (Params.PageIndex < 0)
                {
                    Params.PageIndex = 0;
                }

                if (Params.PageIndex > 0)
                {
                    gump.AddButton(120, 332, 4014, 4015, 104, GumpButtonType.Reply, 0);
                }
                if ((Params.PageIndex + 1) * 21 <= m_ItemList.Count)
                {
                    gump.AddButton(540, 332, 4005, 4006, 105, GumpButtonType.Reply, 0);
                }

                for (int i = Params.PageIndex * 21, r = 0, c = 0; i < m_ItemList.Count; i++)
                {
                    if (m_ItemList[i] == null)
                    {
                        continue;
                    }
                    gump.AddButton(120 + c * 155, 125 + r * 30, 2501, 2501, 1000 + i, GumpButtonType.Reply, 0);
                    gump.AddLabel(130 + c * 155, 126 + r * 30, 1153, (m_ItemList[i].Name == null ? m_ItemList[i].Serial.ToString() : m_ItemList[i].Name));
                }

                break;
                #endregion //ListItems

                #region ListModulesFor
            case (int)Pages.ListModulesFor:
                if (!m_DictionaryOfModuleLists.ContainsKey(Params.SelectedSerial))
                {
                    gump.AddLabel(120, 95, 1153, "This entity no longer exists in the Central Memory!");
                    return;
                }

                if (m_DictionaryOfModuleLists[Params.SelectedSerial] == null || m_DictionaryOfModuleLists[Params.SelectedSerial].Count == 0)
                {
                    gump.AddLabel(120, 95, 1153, "This entity has no Modules!");
                    Remove(Params.SelectedSerial);
                    return;
                }

                string name = "";
                if (Params.SelectedSerial.IsMobile)
                {
                    name = World.FindMobile(Params.SelectedSerial).Name;
                }
                else if (Params.SelectedSerial.IsItem)
                {
                    name = World.FindItem(Params.SelectedSerial).Name;
                }

                if (name == null || name.Length == 0)
                {
                    name = Params.SelectedSerial.ToString();
                }

                gump.AddLabel(120, 95, 1153, String.Format("Listing all Modules for {0}:", name));

                m_ModuleList = m_DictionaryOfModuleLists[Params.SelectedSerial].GetListOfModules();

                if (m_ModuleList == null || m_ModuleList.Count == 0)
                {
                    return;
                }

                if (Params.PageIndex < 0)
                {
                    Params.PageIndex = 0;
                }
                if (Params.PageIndex * 21 >= m_ModuleList.Count)
                {
                    Params.PageIndex = m_ModuleList.Count - 21;
                }

                if (Params.PageIndex > 0)
                {
                    gump.AddButton(120, 332, 4014, 4015, 104, GumpButtonType.Reply, 0);
                }
                if ((Params.PageIndex + 1) * 21 <= m_ModuleList.Count)
                {
                    gump.AddButton(540, 332, 4005, 4006, 105, GumpButtonType.Reply, 0);
                }

                gump.AddButton(331, 332, 4008, 4009, 106, GumpButtonType.Reply, 0);

                for (int i = Params.PageIndex * 21, r = 0, c = 0; i < m_ModuleList.Count; i++)
                {
                    if (m_ModuleList[i] == null)
                    {
                        continue;
                    }

                    gump.AddButton(120 + c * 155, 125 + r * 30, 2501, 2501, 1000 + i, GumpButtonType.Reply, 0);
                    gump.AddLabel(130 + c * 155, 126 + r * 30, 1153, (m_ModuleList[i].Name().Length == 0 ? m_ModuleList[i].Owner.ToString() : m_ModuleList[i].Name()));
                }

                break;
                #endregion //ListModulesFor
            }
        }
Example #5
0
        /* ID's:
         * 101 = Button Manage System
         * 102 = Button Import Page
         * 103 = Button Apply Location
         * 104 = Button Apply Category
         * 105 = Text   Name
         * 106 = Text   X
         * 107 = Text   Y
         * 108 = Text   Z
         * 109 = Text   Hue
         * 110 = Text   Cost
         * 111 = Radio  Trammel
         * 112 = Radio  Malas
         * 113 = Radio  Felucca
         * 114 = Radio  Ilshenar
         * 115 = Radio  Tokuno
         * 116 = Check  Generate
         * 117 = Check  StaffOnly
         * 118 = Check  Reds
         * 119 = Check  Charge
         * 120 = Check  Young
         * 121 = Button Add Category
         * 122 = Button Add Location
         * 123 = Button Export
         * 124 = Button Import Systems
         * 125 = Button Import Categories
         * 126 = Button Import Locations
         * 300+ = Imports
         */
        public override void OnResponse(NetState state, RelayInfo info, ACCGumpParams subParams)
        {
            if (info.ButtonID == 0 || state.Mobile.AccessLevel < ACC.GlobalMinimumAccessLevel)
            {
                return;
            }

            if (subParams is PGGumpParams)
            {
                Params = subParams as PGGumpParams;
            }

            PGGumpParams newParams = new PGGumpParams();

            if (info.ButtonID == 101)
            {
                newParams.Page = Pages.Manage;
            }

            else if (info.ButtonID == 102)
            {
                newParams.Page = Pages.Import;
            }

            #region Add/Remove
            else if (info.ButtonID == 103 || info.ButtonID == 104 || info.ButtonID == 121 || info.ButtonID == 122)
            {
                SetFlag(EntryFlag.Generate, info.IsSwitched(116));
                SetFlag(EntryFlag.StaffOnly, info.IsSwitched(117));
                SetFlag(EntryFlag.Reds, info.IsSwitched(118));
                SetFlag(EntryFlag.Charge, info.IsSwitched(119));

                Map Map = info.IsSwitched(111) ? Map.Trammel : info.IsSwitched(112) ? Map.Malas : info.IsSwitched(113) ? Map.Felucca : info.IsSwitched(114) ? Map.Ilshenar : info.IsSwitched(115) ? Map.Tokuno : Map.Trammel;

                string Name = GetString(info, 105);
                string X    = GetString(info, 106);
                string Y    = GetString(info, 107);
                string Z    = GetString(info, 108);
                string H    = GetString(info, 109);
                string C    = GetString(info, 110);

                if (Name == null || Name.Length == 0)
                {
                    try
                    {
                        state.Mobile.SendMessage("Removed the entry");
                        if (info.ButtonID == 103)
                        {
                            Params.SelectedCategory.Key.Locations.Remove(Params.SelectedLocation.Key);
                        }
                        else
                        {
                            m_CategoryList.Remove(Params.SelectedCategory.Key);
                        }
                    }
                    catch
                    {
                        Console.WriteLine("Exception caught removing entry");
                    }
                }

                else
                {
                    if (info.ButtonID == 103 || info.ButtonID == 122)
                    {
                        int        x, y, z, h, c = 0;
                        Point3D    Loc;
                        int        Hue;
                        int        Cost;
                        PGLocation PGL;

                        if (X == null || X.Length == 0 ||
                            Y == null || Y.Length == 0 ||
                            Z == null || Z.Length == 0 ||
                            H == null || H.Length == 0 ||
                            C == null || C.Length == 0)
                        {
                            if (info.ButtonID == 122)
                            {
                                Hue  = 0;
                                Loc  = new Point3D(0, 0, 0);
                                Cost = 0;

                                PGL = new PGLocation(Name, Flags, Loc, Map, Hue, Cost);
                                if (PGL == null)
                                {
                                    state.Mobile.SendMessage("Error adding Location.");
                                    return;
                                }

                                m_CategoryList[Params.SelectedCategory.Value].Locations.Add(PGL);
                            }

                            state.Mobile.SendMessage("Please fill in each field.");
                            state.Mobile.SendGump(new ACCGump(state.Mobile, this.ToString(), Params));
                            return;
                        }

                        try
                        {
                            x    = Int32.Parse(X);
                            y    = Int32.Parse(Y);
                            z    = Int32.Parse(Z);
                            h    = Int32.Parse(H);
                            c    = Int32.Parse(C);
                            Loc  = new Point3D(x, y, z);
                            Hue  = h;
                            Cost = c;
                        }
                        catch
                        {
                            state.Mobile.SendMessage("Please enter an integer in each of the info fields. (X, Y, Z, H, Cost)");
                            state.Mobile.SendGump(new ACCGump(state.Mobile, this.ToString(), Params));
                            return;
                        }

                        PGL = new PGLocation(Name, Flags, Loc, Map, Hue, Cost);
                        if (PGL == null)
                        {
                            state.Mobile.SendMessage("Bad Location information, can't add!");
                        }
                        else
                        {
                            try
                            {
                                if (info.ButtonID == 122)
                                {
                                    m_CategoryList[Params.SelectedCategory.Value].Locations.Add(PGL);
                                    state.Mobile.SendMessage("Added the Location.");
                                }
                                else
                                {
                                    state.Mobile.SendMessage("Changed the Location.");
                                    m_CategoryList[Params.SelectedCategory.Value].Locations[Params.SelectedLocation.Value] = PGL;
                                }
                            }
                            catch
                            {
                                Console.WriteLine("Problem adding/changing Location!");
                            }
                        }
                    }

                    else
                    {
                        if (C == null || C.Length == 0)
                        {
                            state.Mobile.SendMessage("Please fill in each field.");
                            state.Mobile.SendGump(new ACCGump(state.Mobile, this.ToString(), Params));
                            return;
                        }

                        int c = 0;
                        int Cost;
                        try
                        {
                            c    = Int32.Parse(C);
                            Cost = c;
                        }
                        catch
                        {
                            state.Mobile.SendMessage("Please enter an integer for the Cost");
                            state.Mobile.SendGump(new ACCGump(state.Mobile, this.ToString(), Params));
                            return;
                        }

                        try
                        {
                            if (info.ButtonID == 121)
                            {
                                m_CategoryList.Add(new PGCategory(Name, Flags, Cost));
                                state.Mobile.SendMessage("Added the Category.");
                            }
                            else
                            {
                                m_CategoryList[Params.SelectedCategory.Value].Name  = Name;
                                m_CategoryList[Params.SelectedCategory.Value].Flags = Flags;
                                m_CategoryList[Params.SelectedCategory.Value].Cost  = Cost;
                                state.Mobile.SendMessage("Changed the Category.");
                            }
                        }
                        catch
                        {
                            Console.WriteLine("Problems adding/changing Category!");
                        }
                    }
                }
            }
            #endregion //Add/Remove

            #region Imports/Exports
            #region Exports
            else if (info.ButtonID == 123)
            {
                if (!Directory.Exists("ACC Exports"))
                {
                    Directory.CreateDirectory("ACC Exports");
                }

                string fileName;
                string Path = "ACC Exports/";

                if (Params.SelectedLocation.Key != null)
                {
                    fileName = String.Format("Location - {0}.pgl", Params.SelectedLocation.Key.Name);
                }
                else if (Params.SelectedCategory.Key != null)
                {
                    fileName = String.Format("Category - {0}.pgc", Params.SelectedCategory.Key.Name);
                }
                else
                {
                    fileName = String.Format("System - {0:yyMMdd-HHmmss}.pgs", DateTime.Now);
                }

                try
                {
                    using (FileStream m_FileStream = new FileStream(Path + fileName, FileMode.Create, FileAccess.Write))
                    {
                        GenericWriter writer = new BinaryFileWriter(m_FileStream, true);

                        if (Params.SelectedLocation.Key != null)
                        {
                            Params.SelectedLocation.Key.Serialize(writer);
                            state.Mobile.SendMessage("Exported the Location to {0}{1}", Path, fileName);
                        }
                        else if (Params.SelectedCategory.Key != null)
                        {
                            Params.SelectedCategory.Key.Serialize(writer);
                            state.Mobile.SendMessage("Exported the Category (and all Locations contained within) to {0}{1}", Path, fileName);
                        }
                        else
                        {
                            writer.Write((int)0); //version

                            writer.Write(m_CategoryList.Count);
                            for (int i = 0; i < m_CategoryList.Count; i++)
                            {
                                m_CategoryList[i].Serialize(writer);
                            }
                            state.Mobile.SendMessage("Exported the entire Public Gates System to {0}{1}", Path, fileName);
                        }

                        writer.Close();
                        m_FileStream.Close();
                    }
                }
                catch (Exception e)
                {
                    state.Mobile.SendMessage("Problem exporting the selection.  Please contact the admin.");
                    Console.WriteLine("Error exporting PGSystem : {0}", e);
                }
            }
            #endregion //Exports
            #region Imports
            //Switch between import types
            else if (info.ButtonID == 124 || info.ButtonID == 125 || info.ButtonID == 126)
            {
                newParams.Page = Pages.Import;
                switch (info.ButtonID)
                {
                case 124: newParams.ImportSelection = ImportSelections.Systems; break;

                case 125: newParams.ImportSelection = ImportSelections.Categories; break;

                case 126: newParams.ImportSelection = ImportSelections.Locations; break;
                }
            }
            //Perform the import
            else if (info.ButtonID >= 300 && Dirs != null && Dirs.Length > 0)
            {
                if (!Directory.Exists("ACC Exports"))
                {
                    Directory.CreateDirectory("ACC Exports");
                }

                string Path = null;
                try
                {
                    Path = Dirs[info.ButtonID - 300];

                    if (File.Exists(Path))
                    {
                        using (FileStream m_FileStream = new FileStream(Path, FileMode.Open, FileAccess.Read, FileShare.Read))
                        {
                            BinaryFileReader reader = new BinaryFileReader(new BinaryReader(m_FileStream));

                            switch ((int)Params.ImportSelection)
                            {
                            case (int)ImportSelections.Systems:
                            {        //Systems
                                int version            = reader.ReadInt();
                                int count              = reader.ReadInt();
                                List <PGCategory> list = new List <PGCategory>();
                                for (int i = 0; i < count; i++)
                                {
                                    list.Add(new PGCategory(reader));
                                }

                                state.Mobile.CloseGump(typeof(SysChoiceGump));
                                state.Mobile.SendGump(new SysChoiceGump(this.ToString(), Params, list));
                                reader.Close();
                                return;
                            }

                            case (int)ImportSelections.Categories:
                            {        //Categories
                                if (m_CategoryList == null)
                                {
                                    m_CategoryList = new List <PGCategory>();
                                }

                                m_CategoryList.Add(new PGCategory(reader));
                                state.Mobile.SendMessage("Added the Category.");
                                break;
                            }

                            case (int)ImportSelections.Locations:
                            {        //Locations
                                state.Mobile.CloseGump(typeof(CatSelGump));
                                state.Mobile.SendMessage("Please choose a Category to put this Location in.");
                                state.Mobile.SendGump(new CatSelGump(this.ToString(), Params, new PGLocation(reader)));
                                reader.Close();
                                return;
                            }
                            }

                            reader.Close();
                        }
                    }
                }
                catch
                {
                }
            }
            #endregion //Imports
            #endregion //Imports/Exports

            else if (info.ButtonID >= 150 && info.ButtonID < m_CategoryList.Count + 150)
            {
                newParams.SelectedCategory = new KeyValuePair <PGCategory, int>(m_CategoryList[info.ButtonID - 150], info.ButtonID - 150);
            }

            else if (info.ButtonID >= 200 && info.ButtonID < 200 + Params.SelectedCategory.Key.Locations.Count)
            {
                newParams.SelectedCategory = Params.SelectedCategory;
                newParams.SelectedLocation = new KeyValuePair <PGLocation, int>(Params.SelectedCategory.Key.Locations[info.ButtonID - 200], info.ButtonID - 200);
            }

            state.Mobile.SendGump(new ACCGump(state.Mobile, this.ToString(), newParams));
        }
Example #6
0
 public override void OnResponse(NetState state, RelayInfo info, ACCGumpParams subParams)
 {
 }
Example #7
0
        public override void Gump(Mobile from, Gump gump, ACCGumpParams subParams)
        {
            gump.AddButton(195, 40, 2445, 2445, 101, GumpButtonType.Reply, 0);
            gump.AddLabel(200, 41, 1153, "Manage System");
            gump.AddButton(310, 40, 2445, 2445, 102, GumpButtonType.Reply, 0);
            gump.AddLabel(342, 41, 1153, "Import");

            if (subParams == null || !(subParams is PGGumpParams))
            {
                gump.AddHtml(215, 65, 300, 25, "<basefont size=7 color=white><center>Public Gates</center></font>", false, false);
                gump.AddHtml(140, 95, 450, 250, "<basefont color=white><center>Welcome to the Public Gate Admin Gump!</center><br>With this gump, you can manage the entire system and import and export locations or full categories.  Please choose an option from the top bar.<br><br>Manage System allows you to add/change/delete locations and categories from anywhere in the world.<br><br>Im/Ex port allows you to import or export categories and locations to files that you can distribute to other servers that use this system.</font>", false, false);
                return;
            }

            Params = subParams as PGGumpParams;

            switch ((int)Params.Page)
            {
                #region Manage Gump Code
            case (int)Pages.Manage:
            {
                gump.AddBackground(640, 0, 160, 400, 5120);
                gump.AddButton(425, 40, 2445, 2445, 123, GumpButtonType.Reply, 0);
                gump.AddLabel(456, 41, 1153, "Export");

                for (int i = 0; i < m_CategoryList.Count && i < 50; i++)
                {
                    PGCategory PGC = m_CategoryList[i];
                    if (PGC != null)
                    {
                        gump.AddButton(650, 10 + i * 30, 2501, 2501, 150 + i, GumpButtonType.Reply, 0);
                        gump.AddButton(655, 12 + i * 30, (Params.SelectedCategory.Key == PGC ? 5401 : 5402), (Params.SelectedCategory.Key == PGC ? 5402 : 5401), 150 + i, GumpButtonType.Reply, 0);
                        gump.AddLabel(675, 10 + i * 30, 1153, PGC.Name);
                    }
                }

                if (Params.SelectedCategory.Key != null)
                {
                    gump.AddBackground(425, 75, 170, 285, 5120);
                    gump.AddButton(195, 65, 2445, 2445, 121, GumpButtonType.Reply, 0);
                    gump.AddLabel(206, 66, 1153, "Add Category");
                    gump.AddButton(310, 65, 2445, 2445, 122, GumpButtonType.Reply, 0);
                    gump.AddLabel(322, 66, 1153, "Add Location");

                    for (int i = 0, c = 0, r = 0; i < Params.SelectedCategory.Key.Locations.Count; i++)
                    {
                        PGLocation PGL = Params.SelectedCategory.Key.Locations[i];
                        if (PGL != null)
                        {
                            gump.AddButton(120 + c * 150, 100 + r * 30, 2501, 2501, 200 + i, GumpButtonType.Reply, 0);
                            gump.AddButton(125 + c * 150, 102 + r * 30, (Params.SelectedLocation.Key == PGL ? 5401 : 5402), (Params.SelectedLocation.Key == PGL ? 5402 : 5401), 200 + i, GumpButtonType.Reply, 0);
                            gump.AddLabel(145 + c * 150, 100 + r * 30, 1153, PGL.Name);
                            r += (c == 1 ? 1 : 0);
                            c += (c == 1 ? -1 : 1);
                        }
                    }

                    if (Params.SelectedLocation.Key != null)
                    {
                        gump.AddButton(550, 265, 2642, 2643, 103, GumpButtonType.Reply, 0);         //Apply Location

                        gump.AddImage(440, 85, 2501);
                        gump.AddTextEntry(446, 85, 130, 20, 0, 105, Params.SelectedLocation.Key.Name);

                        gump.AddImage(445, 110, 2443);
                        gump.AddImage(513, 110, 2443);
                        gump.AddImage(445, 135, 2443);
                        gump.AddImage(513, 135, 2443);
                        gump.AddImage(445, 160, 2443);

                        gump.AddTextEntry(450, 110, 53, 20, 0, 106, Params.SelectedLocation.Key.Location.X.ToString());
                        gump.AddTextEntry(518, 110, 53, 20, 0, 107, Params.SelectedLocation.Key.Location.Y.ToString());
                        gump.AddTextEntry(450, 135, 53, 20, 0, 108, Params.SelectedLocation.Key.Location.Z.ToString());
                        gump.AddTextEntry(518, 135, 53, 20, 0, 109, Params.SelectedLocation.Key.Hue.ToString());
                        gump.AddTextEntry(450, 160, 53, 20, 0, 110, Params.SelectedLocation.Key.Cost.ToString());

                        gump.AddLabel(435, 112, 1153, "X");
                        gump.AddLabel(578, 112, 1153, "Y");
                        gump.AddLabel(435, 137, 1153, "Z");
                        gump.AddLabel(578, 137, 1153, "H");
                        gump.AddLabel(435, 162, 1153, "C");

                        gump.AddRadio(435, 190, 208, 209, (Params.SelectedLocation.Key.Map == Map.Trammel), 111);
                        gump.AddRadio(570, 190, 208, 209, (Params.SelectedLocation.Key.Map == Map.Malas), 112);
                        gump.AddRadio(435, 215, 208, 209, (Params.SelectedLocation.Key.Map == Map.Felucca), 113);
                        gump.AddRadio(570, 215, 208, 209, (Params.SelectedLocation.Key.Map == Map.Ilshenar), 114);
                        gump.AddRadio(435, 240, 208, 209, (Params.SelectedLocation.Key.Map == Map.Tokuno), 115);

                        gump.AddLabel(460, 192, 1153, "Tram");
                        gump.AddLabel(530, 192, 1153, "Malas");
                        gump.AddLabel(460, 217, 1153, "Fel");
                        gump.AddLabel(542, 217, 1153, "Ilsh");
                        gump.AddLabel(460, 242, 1153, "Tokuno");

                        gump.AddLabel(465, 282, 1153, "Young?");
                        gump.AddCheck(440, 280, 210, 211, Params.SelectedLocation.Key.GetFlag(EntryFlag.Young), 120);
                        gump.AddLabel(465, 307, 1153, "Gen?");
                        gump.AddCheck(440, 305, 210, 211, Params.SelectedLocation.Key.GetFlag(EntryFlag.Generate), 116);
                        gump.AddLabel(515, 307, 1153, "Staff?");
                        gump.AddCheck(565, 305, 210, 211, Params.SelectedLocation.Key.GetFlag(EntryFlag.StaffOnly), 117);
                        gump.AddLabel(465, 332, 1153, "Reds?");
                        gump.AddCheck(440, 330, 210, 211, Params.SelectedLocation.Key.GetFlag(EntryFlag.Reds), 118);
                        gump.AddLabel(522, 332, 1153, "Chrg?");
                        gump.AddCheck(565, 330, 210, 211, Params.SelectedLocation.Key.GetFlag(EntryFlag.Charge), 119);
                    }

                    else
                    {
                        gump.AddButton(550, 265, 2642, 2643, 104, GumpButtonType.Reply, 0);         //Apply Category

                        gump.AddImage(440, 110, 2501);
                        gump.AddTextEntry(446, 110, 130, 20, 0, 105, Params.SelectedCategory.Key.Name);

                        gump.AddImage(445, 160, 2443);
                        gump.AddTextEntry(450, 160, 53, 20, 0, 110, Params.SelectedCategory.Key.Cost.ToString());
                        gump.AddLabel(435, 162, 1153, "C");

                        gump.AddLabel(465, 282, 1153, "Young?");
                        gump.AddCheck(440, 280, 210, 211, Params.SelectedCategory.Key.GetFlag(EntryFlag.Young), 120);
                        gump.AddLabel(465, 307, 1153, "Gen?");
                        gump.AddCheck(440, 305, 210, 211, Params.SelectedCategory.Key.GetFlag(EntryFlag.Generate), 116);
                        gump.AddLabel(515, 307, 1153, "Staff?");
                        gump.AddCheck(565, 305, 210, 211, Params.SelectedCategory.Key.GetFlag(EntryFlag.StaffOnly), 117);
                        gump.AddLabel(465, 332, 1153, "Reds?");
                        gump.AddCheck(440, 330, 210, 211, Params.SelectedCategory.Key.GetFlag(EntryFlag.Reds), 118);
                        gump.AddLabel(522, 332, 1153, "Chrg?");
                        gump.AddCheck(565, 330, 210, 211, Params.SelectedCategory.Key.GetFlag(EntryFlag.Charge), 119);
                    }
                }
                break;
            }
                #endregion //Manage Gump Code

                #region Import Gump Code
            case (int)Pages.Import:
            {        //Import
                if (!Directory.Exists("Data/ACC Exports"))
                {
                    from.SendMessage("There are no files to import!");
                    return;
                }

                gump.AddButton(195, 65, 2445, 2445, 124, GumpButtonType.Reply, 0);         //Switch to Systems
                gump.AddLabel(220, 66, 1153, "Systems");

                gump.AddButton(310, 65, 2445, 2445, 125, GumpButtonType.Reply, 0);         //Switch to Categories
                gump.AddLabel(328, 66, 1153, "Categories");

                gump.AddButton(425, 65, 2445, 2445, 126, GumpButtonType.Reply, 0);         //Switch to Locations
                gump.AddLabel(447, 66, 1153, "Locations");
                switch ((int)Params.ImportSelection)
                {
                case (int)ImportSelections.Systems: { Dirs = Directory.GetFiles("Data/ACC Exports/", "*.pgs"); break; }

                case (int)ImportSelections.Categories: { Dirs = Directory.GetFiles("Data/ACC Exports/", "*.pgc"); break; }

                case (int)ImportSelections.Locations: { Dirs = Directory.GetFiles("Data/ACC Exports/", "*.pgl"); break; }

                default: { return; }
                }
                if (Dirs == null || Dirs.Length == 0)
                {
                    from.SendMessage("There are no files of that type!");
                    return;
                }
                for (int i = 0, r = 0, c = 0; i < Dirs.Length && c < 3; i++)
                {
                    string s = Dirs[i];
                    s = s.Remove(0, 12);
                    s = s.Remove(s.Length - 4, 4);
                    if (Params.ImportSelection == ImportSelections.Systems)
                    {
                        s = s.Remove(0, 9);
                    }

                    gump.AddButton(120 + c * 150, 100 + r * 30, 2501, 2501, 300 + i, GumpButtonType.Reply, 0);
                    gump.AddLabelCropped(125 + c * 150, 101 + r * 30, 140, 30, 1153, s);

                    c += (r == 7 ? 1 : 0);
                    r += (r == 7 ? -7 : 1);
                }
                break;
            }
                #endregion //Import Gump Code
            }
        }
Example #8
0
 public override void Gump(Mobile from, Gump gump, ACCGumpParams subParams)
 {
 }
Example #9
0
 public override void Gump(Mobile from, Gump gump, ACCGumpParams subParams)
 {
 }
Example #10
0
 public override void OnResponse(NetState state, RelayInfo info, ACCGumpParams subParams)
 {
 }
Example #11
0
            public CatSelGump(string sys, ACCGumpParams subParams, PGLocation loc)
                : base(0, 0)
            {
                if (sys == null || subParams == null || loc == null || m_CategoryList == null)
                    return;

                Sys = sys;
                if (subParams is PGGumpParams)
                    Params = subParams as PGGumpParams;
                Loc = loc;

                AddPage(0);
                AddBackground(640, 0, 160, 400, 5120);

                for (int i = 0; i < PGSystem.CategoryList.Count; i++)
                {
                    PGCategory PGC = m_CategoryList[i];
                    if (PGC != null)
                    {
                        AddButton(650, 10 + i * 30, 2501, 2501, 1 + i, GumpButtonType.Reply, 0);
                        AddLabel(675, 10 + i * 30, 1153, PGC.Name);
                    }
                }
            }
Example #12
0
 public SysChoiceGump(string sys, ACCGumpParams subParams, List<PGCategory> list)
     : base(0, 0)
 {
     Sys = sys;
     if (subParams is PGGumpParams)
         Params = subParams as PGGumpParams;
     List = list;
     AddPage(0);
     AddBackground(250, 245, 300, 90, 5120);
     AddLabel(282, 260, 1153, "Overwrite or Add To current system?");
     AddButton(280, 290, 2445, 2445, 1, GumpButtonType.Reply, 0);
     AddButton(410, 290, 2445, 2445, 2, GumpButtonType.Reply, 0);
     AddLabel(300, 291, 1153, "Overwrite");
     AddLabel(442, 291, 1153, "Add To");
 }
Example #13
0
        /* ID's:
         101 = Button Manage System
         102 = Button Import Page
         103 = Button Apply Location
         104 = Button Apply Category
         105 = Text   Name
         106 = Text   X
         107 = Text   Y
         108 = Text   Z
         109 = Text   Hue
         110 = Text   Cost
         111 = Radio  Trammel
         112 = Radio  Malas
         113 = Radio  Felucca
         114 = Radio  Ilshenar
         115 = Radio  Tokuno
         116 = Check  Generate
         117 = Check  StaffOnly
         118 = Check  Reds
         119 = Check  Charge
         120 = Check  Young
         121 = Button Add Category
         122 = Button Add Location
         123 = Button Export
         124 = Button Import Systems
         125 = Button Import Categories
         126 = Button Import Locations
         300+ = Imports 
          */
        public override void OnResponse(NetState state, RelayInfo info, ACCGumpParams subParams)
        {
            if (info.ButtonID == 0 || state.Mobile.AccessLevel < ACC.GlobalMinimumAccessLevel)
                return;

            if (subParams is PGGumpParams)
                Params = subParams as PGGumpParams;

            PGGumpParams newParams = new PGGumpParams();

            if (info.ButtonID == 101)
                newParams.Page = Pages.Manage;

            else if (info.ButtonID == 102)
                newParams.Page = Pages.Import;

            #region Add/Remove
            else if (info.ButtonID == 103 || info.ButtonID == 104 || info.ButtonID == 121 || info.ButtonID == 122)
            {
                SetFlag(EntryFlag.Generate, info.IsSwitched(116));
                SetFlag(EntryFlag.StaffOnly, info.IsSwitched(117));
                SetFlag(EntryFlag.Reds, info.IsSwitched(118));
                SetFlag(EntryFlag.Charge, info.IsSwitched(119));

                Map Map = info.IsSwitched(111) ? Map.Trammel : info.IsSwitched(112) ? Map.Malas : info.IsSwitched(113) ? Map.Felucca : info.IsSwitched(114) ? Map.Ilshenar : info.IsSwitched(115) ? Map.Tokuno : Map.Trammel;

                string Name = GetString(info, 105);
                string X = GetString(info, 106);
                string Y = GetString(info, 107);
                string Z = GetString(info, 108);
                string H = GetString(info, 109);
                string C = GetString(info, 110);

                if (Name == null || Name.Length == 0)
                {
                    try
                    {
                        state.Mobile.SendMessage("Removed the entry");
                        if (info.ButtonID == 103)
                            Params.SelectedCategory.Key.Locations.Remove(Params.SelectedLocation.Key);
                        else
                            m_CategoryList.Remove(Params.SelectedCategory.Key);
                    }
                    catch
                    {
                        Console.WriteLine("Exception caught removing entry");
                    }
                }

                else
                {
                    if (info.ButtonID == 103 || info.ButtonID == 122)
                    {
                        int x, y, z, h, c = 0;
                        Point3D Loc;
                        int Hue;
                        int Cost;
                        PGLocation PGL;

                        if (X == null || X.Length == 0 ||
                            Y == null || Y.Length == 0 ||
                            Z == null || Z.Length == 0 ||
                            H == null || H.Length == 0 ||
                            C == null || C.Length == 0)
                        {
                            if (info.ButtonID == 122)
                            {
                                Hue = 0;
                                Loc = new Point3D(0, 0, 0);
                                Cost = 0;

                                PGL = new PGLocation(Name, Flags, Loc, Map, Hue, Cost);
                                if (PGL == null)
                                {
                                    state.Mobile.SendMessage("Error adding Location.");
                                    return;
                                }

                                m_CategoryList[Params.SelectedCategory.Value].Locations.Add(PGL);
                            }

                            state.Mobile.SendMessage("Please fill in each field.");
                            state.Mobile.SendGump(new ACCGump(state.Mobile, this.ToString(), Params));
                            return;
                        }

                        try
                        {
                            x = Int32.Parse(X);
                            y = Int32.Parse(Y);
                            z = Int32.Parse(Z);
                            h = Int32.Parse(H);
                            c = Int32.Parse(C);
                            Loc = new Point3D(x, y, z);
                            Hue = h;
                            Cost = c;
                        }
                        catch
                        {
                            state.Mobile.SendMessage("Please enter an integer in each of the info fields. (X, Y, Z, H, Cost)");
                            state.Mobile.SendGump(new ACCGump(state.Mobile, this.ToString(), Params));
                            return;
                        }

                        PGL = new PGLocation(Name, Flags, Loc, Map, Hue, Cost);
                        if (PGL == null)
                        {
                            state.Mobile.SendMessage("Bad Location information, can't add!");
                        }
                        else
                        {
                            try
                            {
                                if (info.ButtonID == 122)
                                {
                                    m_CategoryList[Params.SelectedCategory.Value].Locations.Add(PGL);
                                    state.Mobile.SendMessage("Added the Location.");
                                }
                                else
                                {
                                    state.Mobile.SendMessage("Changed the Location.");
                                    m_CategoryList[Params.SelectedCategory.Value].Locations[Params.SelectedLocation.Value] = PGL;
                                }
                            }
                            catch
                            {
                                Console.WriteLine("Problem adding/changing Location!");
                            }
                        }
                    }

                    else
                    {
                        if (C == null || C.Length == 0)
                        {
                            state.Mobile.SendMessage("Please fill in each field.");
                            state.Mobile.SendGump(new ACCGump(state.Mobile, this.ToString(), Params));
                            return;
                        }

                        int c = 0;
                        int Cost;
                        try
                        {
                            c = Int32.Parse(C);
                            Cost = c;
                        }
                        catch
                        {
                            state.Mobile.SendMessage("Please enter an integer for the Cost");
                            state.Mobile.SendGump(new ACCGump(state.Mobile, this.ToString(), Params));
                            return;
                        }

                        try
                        {
                            if (info.ButtonID == 121)
                            {
                                m_CategoryList.Add(new PGCategory(Name, Flags, Cost));
                                state.Mobile.SendMessage("Added the Category.");
                            }
                            else
                            {
                                m_CategoryList[Params.SelectedCategory.Value].Name = Name;
                                m_CategoryList[Params.SelectedCategory.Value].Flags = Flags;
                                m_CategoryList[Params.SelectedCategory.Value].Cost = Cost;
                                state.Mobile.SendMessage("Changed the Category.");
                            }
                        }
                        catch
                        {
                            Console.WriteLine("Problems adding/changing Category!");
                        }
                    }
                }
            }
            #endregion //Add/Remove

            #region Imports/Exports
            #region Exports
            else if (info.ButtonID == 123)
            {
                if (!Directory.Exists("ACC Exports"))
                    Directory.CreateDirectory("ACC Exports");

                string fileName;
                string Path = "ACC Exports/";

                if (Params.SelectedLocation.Key != null)
                    fileName = String.Format("Location - {0}.pgl", Params.SelectedLocation.Key.Name);
                else if (Params.SelectedCategory.Key != null)
                    fileName = String.Format("Category - {0}.pgc", Params.SelectedCategory.Key.Name);
                else
                    fileName = String.Format("System - {0:yyMMdd-HHmmss}.pgs", DateTime.Now);

                try
                {
                    using (FileStream m_FileStream = new FileStream(Path + fileName, FileMode.Create, FileAccess.Write))
                    {
                        GenericWriter writer = new BinaryFileWriter(m_FileStream, true);

                        if (Params.SelectedLocation.Key != null)
                        {
                            Params.SelectedLocation.Key.Serialize(writer);
                            state.Mobile.SendMessage("Exported the Location to {0}{1}", Path, fileName);
                        }
                        else if (Params.SelectedCategory.Key != null)
                        {
                            Params.SelectedCategory.Key.Serialize(writer);
                            state.Mobile.SendMessage("Exported the Category (and all Locations contained within) to {0}{1}", Path, fileName);
                        }
                        else
                        {
                            writer.Write((int)0); //version

                            writer.Write(m_CategoryList.Count);
                            for (int i = 0; i < m_CategoryList.Count; i++)
                            {
                                m_CategoryList[i].Serialize(writer);
                            }
                            state.Mobile.SendMessage("Exported the entire Public Gates System to {0}{1}", Path, fileName);
                        }

                        writer.Close();
                        m_FileStream.Close();
                    }
                }
                catch (Exception e)
                {
                    state.Mobile.SendMessage("Problem exporting the selection.  Please contact the admin.");
                    Console.WriteLine("Error exporting PGSystem : {0}", e);
                }
            }
            #endregion //Exports
            #region Imports
            //Switch between import types
            else if (info.ButtonID == 124 || info.ButtonID == 125 || info.ButtonID == 126)
            {
                newParams.Page = Pages.Import;
                switch (info.ButtonID)
                {
                    case 124: newParams.ImportSelection = ImportSelections.Systems; break;
                    case 125: newParams.ImportSelection = ImportSelections.Categories; break;
                    case 126: newParams.ImportSelection = ImportSelections.Locations; break;
                }
            }
            //Perform the import
            else if (info.ButtonID >= 300 && Dirs != null && Dirs.Length > 0)
            {
                if (!Directory.Exists("ACC Exports"))
                    Directory.CreateDirectory("ACC Exports");

                string Path = null;
                try
                {
                    Path = Dirs[info.ButtonID - 300];

                    if (File.Exists(Path))
                    {
                        using (FileStream m_FileStream = new FileStream(Path, FileMode.Open, FileAccess.Read, FileShare.Read))
                        {
                            BinaryFileReader reader = new BinaryFileReader(new BinaryReader(m_FileStream));

                            switch ((int)Params.ImportSelection)
                            {
                                case (int)ImportSelections.Systems:
                                    {//Systems
                                        int version = reader.ReadInt();
                                        int count = reader.ReadInt();
                                        List<PGCategory> list = new List<PGCategory>();
                                        for (int i = 0; i < count; i++)
                                            list.Add(new PGCategory(reader));

                                        state.Mobile.CloseGump(typeof(SysChoiceGump));
                                        state.Mobile.SendGump(new SysChoiceGump(this.ToString(), Params, list));
                                        reader.Close();
                                        return;
                                    }
                                case (int)ImportSelections.Categories:
                                    {//Categories
                                        if (m_CategoryList == null)
                                            m_CategoryList = new List<PGCategory>();

                                        m_CategoryList.Add(new PGCategory(reader));
                                        state.Mobile.SendMessage("Added the Category.");
                                        break;
                                    }
                                case (int)ImportSelections.Locations:
                                    {//Locations
                                        state.Mobile.CloseGump(typeof(CatSelGump));
                                        state.Mobile.SendMessage("Please choose a Category to put this Location in.");
                                        state.Mobile.SendGump(new CatSelGump(this.ToString(), Params, new PGLocation(reader)));
                                        reader.Close();
                                        return;
                                    }
                            }

                            reader.Close();
                        }
                    }
                }
                catch
                {
                }
            }
            #endregion //Imports
            #endregion //Imports/Exports

            else if (info.ButtonID >= 150 && info.ButtonID < m_CategoryList.Count + 150)
                newParams.SelectedCategory = new KeyValuePair<PGCategory, int>(m_CategoryList[info.ButtonID - 150], info.ButtonID - 150);

            else if (info.ButtonID >= 200 && info.ButtonID < 200 + Params.SelectedCategory.Key.Locations.Count)
            {
                newParams.SelectedCategory = Params.SelectedCategory;
                newParams.SelectedLocation = new KeyValuePair<PGLocation, int>(Params.SelectedCategory.Key.Locations[info.ButtonID - 200], info.ButtonID - 200);
            }

            state.Mobile.SendGump(new ACCGump(state.Mobile, this.ToString(), newParams));
        }
Example #14
0
        public override void Gump(Mobile from, Gump gump, ACCGumpParams subParams)
        {
            gump.AddButton(195, 40, 2445, 2445, 101, GumpButtonType.Reply, 0);
            gump.AddLabel(200, 41, 1153, "Manage System");
            gump.AddButton(310, 40, 2445, 2445, 102, GumpButtonType.Reply, 0);
            gump.AddLabel(342, 41, 1153, "Import");

            if (subParams == null || !(subParams is PGGumpParams))
            {
                gump.AddHtml(215, 65, 300, 25, "<basefont size=7 color=white><center>Public Gates</center></font>", false, false);
                gump.AddHtml(140, 95, 450, 250, "<basefont color=white><center>Welcome to the Public Gate Admin Gump!</center><br>With this gump, you can manage the entire system and import and export locations or full categories.  Please choose an option from the top bar.<br><br>Manage System allows you to add/change/delete locations and categories from anywhere in the world.<br><br>Im/Ex port allows you to import or export categories and locations to files that you can distribute to other servers that use this system.</font>", false, false);
                return;
            }

            Params = subParams as PGGumpParams;

            switch ((int)Params.Page)
            {
                #region Manage Gump Code
                case (int)Pages.Manage:
                    {
                        gump.AddBackground(640, 0, 160, 400, 5120);
                        gump.AddButton(425, 40, 2445, 2445, 123, GumpButtonType.Reply, 0);
                        gump.AddLabel(456, 41, 1153, "Export");

                        for (int i = 0; i < m_CategoryList.Count && i < 50; i++)
                        {
                            PGCategory PGC = m_CategoryList[i];
                            if (PGC != null)
                            {
                                gump.AddButton(650, 10 + i * 30, 2501, 2501, 150 + i, GumpButtonType.Reply, 0);
                                gump.AddButton(655, 12 + i * 30, (Params.SelectedCategory.Key == PGC ? 5401 : 5402), (Params.SelectedCategory.Key == PGC ? 5402 : 5401), 150 + i, GumpButtonType.Reply, 0);
                                gump.AddLabel(675, 10 + i * 30, 1153, PGC.Name);
                            }
                        }

                        if (Params.SelectedCategory.Key != null)
                        {
                            gump.AddBackground(425, 75, 170, 285, 5120);
                            gump.AddButton(195, 65, 2445, 2445, 121, GumpButtonType.Reply, 0);
                            gump.AddLabel(206, 66, 1153, "Add Category");
                            gump.AddButton(310, 65, 2445, 2445, 122, GumpButtonType.Reply, 0);
                            gump.AddLabel(322, 66, 1153, "Add Location");

                            for (int i = 0, c = 0, r = 0; i < Params.SelectedCategory.Key.Locations.Count; i++)
                            {
                                PGLocation PGL = Params.SelectedCategory.Key.Locations[i];
                                if (PGL != null)
                                {
                                    gump.AddButton(120 + c * 150, 100 + r * 30, 2501, 2501, 200 + i, GumpButtonType.Reply, 0);
                                    gump.AddButton(125 + c * 150, 102 + r * 30, (Params.SelectedLocation.Key == PGL ? 5401 : 5402), (Params.SelectedLocation.Key == PGL ? 5402 : 5401), 200 + i, GumpButtonType.Reply, 0);
                                    gump.AddLabel(145 + c * 150, 100 + r * 30, 1153, PGL.Name);
                                    r += (c == 1 ? 1 : 0);
                                    c += (c == 1 ? -1 : 1);
                                }
                            }

                            if (Params.SelectedLocation.Key != null)
                            {
                                gump.AddButton(550, 265, 2642, 2643, 103, GumpButtonType.Reply, 0); //Apply Location

                                gump.AddImage(440, 85, 2501);
                                gump.AddTextEntry(446, 85, 130, 20, 0, 105, Params.SelectedLocation.Key.Name);

                                gump.AddImage(445, 110, 2443);
                                gump.AddImage(513, 110, 2443);
                                gump.AddImage(445, 135, 2443);
                                gump.AddImage(513, 135, 2443);
                                gump.AddImage(445, 160, 2443);

                                gump.AddTextEntry(450, 110, 53, 20, 0, 106, Params.SelectedLocation.Key.Location.X.ToString());
                                gump.AddTextEntry(518, 110, 53, 20, 0, 107, Params.SelectedLocation.Key.Location.Y.ToString());
                                gump.AddTextEntry(450, 135, 53, 20, 0, 108, Params.SelectedLocation.Key.Location.Z.ToString());
                                gump.AddTextEntry(518, 135, 53, 20, 0, 109, Params.SelectedLocation.Key.Hue.ToString());
                                gump.AddTextEntry(450, 160, 53, 20, 0, 110, Params.SelectedLocation.Key.Cost.ToString());

                                gump.AddLabel(435, 112, 1153, "X");
                                gump.AddLabel(578, 112, 1153, "Y");
                                gump.AddLabel(435, 137, 1153, "Z");
                                gump.AddLabel(578, 137, 1153, "H");
                                gump.AddLabel(435, 162, 1153, "C");

                                gump.AddRadio(435, 190, 208, 209, (Params.SelectedLocation.Key.Map == Map.Trammel), 111);
                                gump.AddRadio(570, 190, 208, 209, (Params.SelectedLocation.Key.Map == Map.Malas), 112);
                                gump.AddRadio(435, 215, 208, 209, (Params.SelectedLocation.Key.Map == Map.Felucca), 113);
                                gump.AddRadio(570, 215, 208, 209, (Params.SelectedLocation.Key.Map == Map.Ilshenar), 114);
                                gump.AddRadio(435, 240, 208, 209, (Params.SelectedLocation.Key.Map == Map.Tokuno), 115);

                                gump.AddLabel(460, 192, 1153, "Tram");
                                gump.AddLabel(530, 192, 1153, "Malas");
                                gump.AddLabel(460, 217, 1153, "Fel");
                                gump.AddLabel(542, 217, 1153, "Ilsh");
                                gump.AddLabel(460, 242, 1153, "Tokuno");

                                gump.AddLabel(465, 282, 1153, "Young?");
                                gump.AddCheck(440, 280, 210, 211, Params.SelectedLocation.Key.GetFlag(EntryFlag.Young), 120);
                                gump.AddLabel(465, 307, 1153, "Gen?");
                                gump.AddCheck(440, 305, 210, 211, Params.SelectedLocation.Key.GetFlag(EntryFlag.Generate), 116);
                                gump.AddLabel(515, 307, 1153, "Staff?");
                                gump.AddCheck(565, 305, 210, 211, Params.SelectedLocation.Key.GetFlag(EntryFlag.StaffOnly), 117);
                                gump.AddLabel(465, 332, 1153, "Reds?");
                                gump.AddCheck(440, 330, 210, 211, Params.SelectedLocation.Key.GetFlag(EntryFlag.Reds), 118);
                                gump.AddLabel(522, 332, 1153, "Chrg?");
                                gump.AddCheck(565, 330, 210, 211, Params.SelectedLocation.Key.GetFlag(EntryFlag.Charge), 119);
                            }

                            else
                            {
                                gump.AddButton(550, 265, 2642, 2643, 104, GumpButtonType.Reply, 0); //Apply Category

                                gump.AddImage(440, 110, 2501);
                                gump.AddTextEntry(446, 110, 130, 20, 0, 105, Params.SelectedCategory.Key.Name);

                                gump.AddImage(445, 160, 2443);
                                gump.AddTextEntry(450, 160, 53, 20, 0, 110, Params.SelectedCategory.Key.Cost.ToString());
                                gump.AddLabel(435, 162, 1153, "C");

                                gump.AddLabel(465, 282, 1153, "Young?");
                                gump.AddCheck(440, 280, 210, 211, Params.SelectedCategory.Key.GetFlag(EntryFlag.Young), 120);
                                gump.AddLabel(465, 307, 1153, "Gen?");
                                gump.AddCheck(440, 305, 210, 211, Params.SelectedCategory.Key.GetFlag(EntryFlag.Generate), 116);
                                gump.AddLabel(515, 307, 1153, "Staff?");
                                gump.AddCheck(565, 305, 210, 211, Params.SelectedCategory.Key.GetFlag(EntryFlag.StaffOnly), 117);
                                gump.AddLabel(465, 332, 1153, "Reds?");
                                gump.AddCheck(440, 330, 210, 211, Params.SelectedCategory.Key.GetFlag(EntryFlag.Reds), 118);
                                gump.AddLabel(522, 332, 1153, "Chrg?");
                                gump.AddCheck(565, 330, 210, 211, Params.SelectedCategory.Key.GetFlag(EntryFlag.Charge), 119);
                            }
                        }
                        break;
                    }
                #endregion //Manage Gump Code

                #region Import Gump Code
                case (int)Pages.Import:
                    {//Import
                        if (!Directory.Exists("ACC Exports"))
                        {
                            from.SendMessage("There are no files to import!");
                            return;
                        }

                        gump.AddButton(195, 65, 2445, 2445, 124, GumpButtonType.Reply, 0); //Switch to Systems
                        gump.AddLabel(220, 66, 1153, "Systems");

                        gump.AddButton(310, 65, 2445, 2445, 125, GumpButtonType.Reply, 0); //Switch to Categories
                        gump.AddLabel(328, 66, 1153, "Categories");

                        gump.AddButton(425, 65, 2445, 2445, 126, GumpButtonType.Reply, 0); //Switch to Locations
                        gump.AddLabel(447, 66, 1153, "Locations");
                        switch ((int)Params.ImportSelection)
                        {
                            case (int)ImportSelections.Systems: { Dirs = Directory.GetFiles("ACC Exports/", "*.pgs"); break; }
                            case (int)ImportSelections.Categories: { Dirs = Directory.GetFiles("ACC Exports/", "*.pgc"); break; }
                            case (int)ImportSelections.Locations: { Dirs = Directory.GetFiles("ACC Exports/", "*.pgl"); break; }
                            default: { return; }
                        }
                        if (Dirs == null || Dirs.Length == 0)
                        {
                            from.SendMessage("There are no files of that type!");
                            return;
                        }
                        for (int i = 0, r = 0, c = 0; i < Dirs.Length && c < 3; i++)
                        {
                            string s = Dirs[i];
                            s = s.Remove(0, 12);
                            s = s.Remove(s.Length - 4, 4);
                            if (Params.ImportSelection == ImportSelections.Systems)
                                s = s.Remove(0, 9);

                            gump.AddButton(120 + c * 150, 100 + r * 30, 2501, 2501, 300 + i, GumpButtonType.Reply, 0);
                            gump.AddLabelCropped(125 + c * 150, 101 + r * 30, 140, 30, 1153, s);

                            c += (r == 7 ? 1 : 0);
                            r += (r == 7 ? -7 : 1);
                        }
                        break;
                    }
                #endregion //Import Gump Code
            }
        }