Esempio n. 1
0
 public FilterResult(CustomFilter filter, ItemData itemData)
 {
     Filter     = filter;
     ItemData   = itemData;
     StashIndex = filter.StashIndexNode.Index;
     ClickPos   = itemData.GetClickPosCache();
 }
Esempio n. 2
0
 public FilterResult(CustomFilter filter, ItemData itemData)
 {
     Filter           = filter;
     ItemData         = itemData;
     StashIndex       = filter.StashIndexNode.Index;
     ClickPos         = itemData.GetClickPosCache();
     SkipSwitchTab    = Filter.Commands.Contains("affinity");
     ShiftForStashing = Filter.Commands.Contains("shifting");
 }
Esempio n. 3
0
        public static List <CustomFilter> Parse(string[] filtersLines)
        {
            var allFilters = new List <CustomFilter>();

            for (var i = 0; i < filtersLines.Length; ++i)
            {
                var filterLine = filtersLines[i];

                filterLine = filterLine.Replace("\t", "");

                if (filterLine.StartsWith(COMMENTSYMBOL))
                {
                    continue;
                }
                if (filterLine.StartsWith(COMMENTSYMBOLALT))
                {
                    continue;
                }

                if (filterLine.Replace(" ", "").Length == 0)
                {
                    continue;
                }

                var nameIndex = filterLine.IndexOf(SYMBOL_NAMEDIVIDE);

                if (nameIndex == -1)
                {
                    DebugWindow.LogMsg("Filter parser: Can't find filter name in line: " + (i + 1), 5);
                    continue;
                }

                var newFilter = new CustomFilter {
                    Name = filterLine.Substring(0, nameIndex).Trim(), Index = i + 1
                };

                var filterCommandsLine = filterLine.Substring(nameIndex + 1);

                var submenuIndex = filterCommandsLine.IndexOf(SYMBOL_SUBMENUNAME);

                if (submenuIndex != -1)
                {
                    newFilter.SubmenuName = filterCommandsLine.Substring(submenuIndex + 1);
                    filterCommandsLine    = filterCommandsLine.Substring(0, submenuIndex);
                }

                var filterCommands = filterCommandsLine.Split(SYMBOL_COMMANDSDIVIDE);
                newFilter.Commands = filterCommandsLine;

                var filterErrorParse = false;

                foreach (var command in filterCommands)
                {
                    if (string.IsNullOrEmpty(command.Replace(" ", "")))
                    {
                        continue;
                    }

                    if (command.Contains(SYMBOL_COMMAND_FILTER_OR))
                    {
                        var orFilterCommands = command.Split(SYMBOL_COMMAND_FILTER_OR);
                        var newOrFilter      = new BaseFilter {
                            BAny = true
                        };
                        newFilter.Filters.Add(newOrFilter);

                        foreach (var t in orFilterCommands)
                        {
                            if (ProcessCommand(newOrFilter, t))
                            {
                                continue;
                            }
                            filterErrorParse = true;
                            break;
                        }

                        if (filterErrorParse)
                        {
                            break;
                        }
                    }
                    else
                    {
                        if (ProcessCommand(newFilter, command))
                        {
                            continue;
                        }

                        filterErrorParse = true;
                        break;
                    }
                }

                if (!filterErrorParse)
                {
                    allFilters.Add(newFilter);
                }
                else
                {
                    DebugWindow.LogMsg($"Line: {i + 1}", 5, Color.Red);
                }
            }

            return(allFilters);
        }