Example #1
0
        public void createSortFlagListFromString(String str)
        {
            sortFlags.Clear();

            foreach (SortFlag sf in SortFlag.sortedFlagList.Values)
            {
                sf.descending = false;
            }

            String[] sortKeys = str.Split(',');
            for (int i = 0; i < sortKeys.Length; i++)
            {
                try
                {
                    SortFlag sf = SortFlag.decode(sortKeys[i]);
                    sf.descending = sortKeys[i].Length == 3 && sortKeys[i].Substring(2, 1).Equals("-");
                    sortFlags.Add(sf);
                }
                catch (Exception e) { Util.LogError(e); }
            }
        }
Example #2
0
 public void lstSortSettings_Selected(object sender, int row, int col)
 {
     try
     {
         HudList.HudListRowAccessor acc = MainView.lstSortSettings[row];
         String   code    = ((HudStaticText)acc[0]).Text.ToString();
         SortFlag flag    = SortFlag.decode(code);
         bool     changed = false;
         if (col < 2) // DUMP PROPERTIES
         {
             flag.propertyDumpSelection();
         }
         else if (col == 2) // MOVE UP
         {
             if (sortFlags.Contains(flag))
             {
                 int index = sortFlags.IndexOf(flag);
                 if (index > 0)
                 {
                     SortFlag f = (SortFlag)sortFlags[index - 1];
                     sortFlags[index - 1] = sortFlags[index];
                     sortFlags[index]     = f;
                     changed = true;
                 }
             }
         }
         else if (col == 3) // MOVE DOWN
         {
             if (sortFlags.Contains(flag))
             {
                 int index = sortFlags.IndexOf(flag);
                 if (index < sortFlags.Count - 1)
                 {
                     SortFlag f = (SortFlag)sortFlags[index + 1];
                     sortFlags[index + 1] = sortFlags[index];
                     sortFlags[index]     = f;
                     changed = true;
                 }
             }
         }
         else if (col == 4) // REMOVE
         {
             if (sortFlags.Contains(flag))
             {
                 sortFlags.Remove(flag);
                 flag.descending = false;
             }
             else
             {
                 sortFlags.Add(flag);
             }
             changed = true;
         }
         else if (col == 5)
         {
             if (sortFlags.Contains(flag))
             {
                 flag.descending = !flag.descending;
                 changed         = true;
             }
         }
         if (changed)
         {
             MainView.edtSortString.Text = sortFlagListToString();
             rebuildLstSortSettings();
         }
     }
     catch (Exception ex) { Util.LogError(ex); }
 }
Example #3
0
 private void Current_RenderFrame_Sort(object sender, EventArgs e)
 {
     try
     {
         if (CURRENT_STATE == State.IDLE)
         {
             CoreManager.Current.RenderFrame -= new EventHandler <EventArgs>(Current_RenderFrame_Sort);
         }
         else if (CURRENT_STATE == State.INITIATED)
         {
             bool identifying = false;
             MainView.prgProgressBar.Max     = sortList.Count;
             MainView.prgProgressBar.PreText = "identifying...";
             foreach (WorldObject obj in sortList)
             {
                 if (!obj.HasIdData)
                 {
                     identifying = true;
                     MainView.prgProgressBar.Position = sortList.IndexOf(obj) + 1;
                     break;
                 }
             }
             if (!identifying)
             {
                 CURRENT_STATE = State.BUILDING_LIST;
                 MainView.prgProgressBar.Position = MainView.prgProgressBar.Max;
             }
         }
         else if (CURRENT_STATE == State.BUILDING_LIST)
         {
             String[] sortKeys = MainView.edtSortString.Text.Split(',');
             System.Collections.ArrayList sortValueList = new System.Collections.ArrayList();
             for (int i = sortKeys.Length - 1; i >= 0; i--)
             {
                 foreach (WorldObject worldObject in sortList)
                 {
                     SortFlag sf         = SortFlag.decode(sortKeys[i]);
                     String   sortMetric = sf.valueOf(worldObject);
                     if (!sortValueList.Contains(sortMetric))
                     {
                         sortValueList.Add(sortMetric);
                     }
                 }
                 sortValueList.Sort(new AlphanumComparator());
                 System.Collections.ArrayList newSortList = new System.Collections.ArrayList();
                 if (!(sortKeys[i].Length == 3 && sortKeys[i].Substring(2, 1).Equals("-")))
                 {
                     sortValueList.Reverse();
                 }
                 foreach (Object sortValue in sortValueList)
                 {
                     foreach (WorldObject worldObject in sortList)
                     {
                         String sortMetric = SortFlag.decode(sortKeys[i]).valueOf(worldObject);
                         if (sortMetric.Equals(sortValue))
                         {
                             newSortList.Add(worldObject);
                         }
                     }
                 }
                 sortList = newSortList;
                 if (i == 0)
                 {
                     if (Properties.Settings.Default.ReverseSortList)
                     {
                         sortList.Reverse();
                     }
                     foreach (WorldObject worldObject in sortList)
                     {
                         sortQueue.Enqueue(worldObject);
                     }
                 }
             }
             Util.WriteToChat(sortQueue.Count + " items in queue...");
             CURRENT_STATE = State.MOVING_ITEMS;
             MainView.prgProgressBar.PreText = "working...";
             MainView.prgProgressBar.Max     = sortQueue.Count;
         }
         else if (CURRENT_STATE == State.MOVING_ITEMS)
         {
             if (sortQueue.Count > 0)
             {
                 if (Core.Actions.BusyState == 0)
                 {
                     MainView.prgProgressBar.Position = MainView.prgProgressBar.Max - sortQueue.Count;
                     WorldObject obj = (WorldObject)sortQueue.Dequeue();
                     if (containerDest != Core.CharacterFilter.Id && Core.WorldFilter[containerDest].ObjectClass.Equals(ObjectClass.Player))
                     {
                         Globals.Host.Actions.GiveItem(obj.Id, containerDest);
                     }
                     else
                     {
                         Globals.Host.Actions.MoveItem(obj.Id, containerDest, containerDestSlot, true);
                     }
                 }
             }
             else
             {
                 CURRENT_STATE = State.IDLE;
                 MainView.prgProgressBar.PreText  = "done!";
                 MainView.prgProgressBar.Position = MainView.prgProgressBar.Max;
                 MainView.btnActivate.Text        = "Activate";
                 Util.WriteToChat("done sorting items!");
             }
         }
     }
     catch (Exception ex) { Util.LogError(ex); }
 }