public static void Seek(SeekContext ctx) { foreach (var rule in ctx.matchRules) { Seek_Internal(ctx, rule); } }
public static void Seek(SeekContext ctx) { foreach (var rule in ctx.matchRules) { Seek_Internal(ctx, rule); } }
public void TestMethod1() { using (var context = new SeekContext("Seek.Database")) { var users = context.Organizations.ToList(); } }
public void TestMethod1() { using (var context = new SeekContext("Seek.Database")) { var users = context.Organizations.ToList(); } }
private static void Seek_Internal(SeekContext ctx, RuleMatchBasic2D_Rectangular rule) { for (int y = 0; y < ctx.container.Height - rule.maskHeight + 1; y++) { for (int x = 0; x < ctx.container.Width - rule.maskWidth + 1; x++) { Match_Internal(ctx, x, y, rule, 0); Match_Internal(ctx, x, y, rule, rule.scatters.Length - 1); } } }
private static void Seek_Internal(SeekContext ctx, RuleMatchBasic2D_Rectangular rule) { var slots = ctx.container.WrapperRect; for (int y = 0; y < ctx.container.Height - rule.maskHeight + 1; y++) { for (int x = 0; x < ctx.container.Width - rule.maskWidth + 1; x++) { var r = Match_Internal(slots, x, y, rule); if (null != r) ctx.result.Add(r); } } }
private static void Seek_Internal(SeekContext ctx, RuleMatchBasic2D_Rectangular rule) { var slots = ctx.container.WrapperRect; for (int y = 0; y < ctx.container.Height - rule.maskHeight + 1; y++) { for (int x = 0; x < ctx.container.Width - rule.maskWidth + 1; x++) { var r = Match_Internal(slots, x, y, rule); if (null != r) { ctx.result.Add(r); } } } }
public abstract TReturn Execute(T parameters, SeekContext context);
public override IEnumerable <User> Execute(EntityFetcher <User> parameters, SeekContext context) { throw new NotImplementedException(); }
private static void Match_Internal(SeekContext ctx, int x, int y, RuleMatchBasic2D_Rectangular matchRule, int scatterIndex) { intermediate.Clear(); var slots = ctx.container.WrapperRect; var sample = slots[y + matchRule.scatters[scatterIndex].y, x + matchRule.scatters[scatterIndex].x]; if (!sample.IsTarget) { return; } var operationUsed = false; for (int i = 0; i < matchRule.scatters.Length; ++i) { if (i == scatterIndex) { continue; } var targetX = x + matchRule.scatters[i].x; var targetY = y + matchRule.scatters[i].y; var sniff = slots[targetY, targetX]; if (!sniff.IsTarget) { return; } if (!sample.slotAttribute.trait.AbsoluteEqual(sniff.slotAttribute.trait)) { if (operationUsed) { return; } foreach (var operable in ctx.operationRules) { if (JudgeOperable(sample.slotAttribute.trait, ctx.container, x, y, matchRule.scatters[i].x, matchRule.scatters[i].y, matchRule, operable, false)) { var record = new PLMRecord2D_Retangular(); record.operation = operable; record.rule = matchRule; record.x1 = targetX; record.y1 = targetY; record.x2 = targetX + operable.xRelative; record.y2 = targetY + operable.yRelative; intermediate.Add(record); operationUsed = true; } if (JudgeOperable(sample.slotAttribute.trait, ctx.container, x, y, matchRule.scatters[i].x, matchRule.scatters[i].y, matchRule, operable, true)) { var record = new PLMRecord2D_Retangular(); record.operation = operable; record.rule = matchRule; record.x1 = targetX; record.y1 = targetY; record.x2 = targetX - operable.xRelative; record.y2 = targetY - operable.yRelative; intermediate.Add(record); operationUsed = true; } } if (!operationUsed) { return; } } } // A pure match! if (!operationUsed) { return; } ctx.result.AddRange(intermediate); intermediate.Clear(); }