public FilterResult(CustomFilter filter, ItemData itemData) { Filter = filter; ItemData = itemData; StashIndex = filter.StashIndexNode.Index; ClickPos = itemData.GetClickPosCache(); }
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"); }
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); }