Beispiel #1
0
        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);
            }
        }