private static void Resolve(Pair <string, ResolveParams> toResolve) { string first = toResolve.First; ResolveParams second = toResolve.Second; tmpResolvers.Clear(); if (rulesBySymbol.TryGetValue(first, out List <RuleDef> value)) { for (int i = 0; i < value.Count; i++) { RuleDef ruleDef = value[i]; for (int j = 0; j < ruleDef.resolvers.Count; j++) { SymbolResolver symbolResolver = ruleDef.resolvers[j]; if (symbolResolver.CanResolve(second)) { tmpResolvers.Add(symbolResolver); } } } } if (!tmpResolvers.Any()) { Log.Warning("Could not find any RuleDef for symbol \"" + first + "\" with any resolver that could resolve " + second); } else { SymbolResolver symbolResolver2 = tmpResolvers.RandomElementByWeight((SymbolResolver x) => x.selectionWeight); symbolResolver2.Resolve(second); } }
private static void Resolve(SymbolStack.Element toResolve) { string symbol = toResolve.symbol; ResolveParams resolveParams = toResolve.resolveParams; tmpResolvers.Clear(); if (rulesBySymbol.TryGetValue(symbol, out var value)) { for (int i = 0; i < value.Count; i++) { RuleDef ruleDef = value[i]; for (int j = 0; j < ruleDef.resolvers.Count; j++) { SymbolResolver symbolResolver = ruleDef.resolvers[j]; if (symbolResolver.CanResolve(resolveParams)) { tmpResolvers.Add(symbolResolver); } } } } if (!tmpResolvers.Any()) { Log.Warning("Could not find any RuleDef for symbol \"" + symbol + "\" with any resolver that could resolve " + resolveParams); } else { tmpResolvers.RandomElementByWeight((SymbolResolver x) => x.selectionWeight).Resolve(resolveParams); } }
private static void Resolve(Pair <string, ResolveParams> toResolve) { string first = toResolve.First; ResolveParams second = toResolve.Second; BaseGen.tmpResolvers.Clear(); List <RuleDef> list; if (BaseGen.rulesBySymbol.TryGetValue(first, out list)) { for (int i = 0; i < list.Count; i++) { RuleDef ruleDef = list[i]; for (int j = 0; j < ruleDef.resolvers.Count; j++) { SymbolResolver symbolResolver = ruleDef.resolvers[j]; if (symbolResolver.CanResolve(second)) { BaseGen.tmpResolvers.Add(symbolResolver); } } } } if (!BaseGen.tmpResolvers.Any <SymbolResolver>()) { Log.Warning(string.Concat(new object[] { "Could not find any RuleDef for symbol \"", first, "\" with any resolver that could resolve ", second }), false); } else { SymbolResolver symbolResolver2 = BaseGen.tmpResolvers.RandomElementByWeight((SymbolResolver x) => x.selectionWeight); symbolResolver2.Resolve(second); } }