public override void Evaluate(SpinContext context) { // wildcard symbols should: // not change current letter // not terminate evaluation // add their coefficient although it's probably 0 or very low context.Coefficient += SymbolOptions.Coefficient; }
private void OutputSymbolRow(string rowOutput, SpinContext context) { if (context.Coefficient > 0) { _output.Congratulate(rowOutput); } else { _output.Inform(rowOutput); } }
private void EvaluateSymbolRow(SpinContext context, Symbol[] symbols) { context.Clear(); foreach (Symbol symbol in symbols) { symbol.Evaluate(context); if (!context.Continue) { break; } } _logger.LogDebug("Evaluated row {0}.", context); }
public SpinResult Execute() { Symbol[] symbols = new Symbol[_options.Spin.SymbolCount]; StringBuilder rowBuilder = new StringBuilder(); SpinContext context = new SpinContext(); int coefficient = 0; for (int rowIndex = 0; rowIndex < _options.Spin.RowCount; ++rowIndex) { GenerateSymbolRow(rowBuilder, symbols); EvaluateSymbolRow(context, symbols); coefficient += context.Coefficient; OutputSymbolRow(rowBuilder.ToString(), context); } return(new SpinResult { Coefficient = coefficient }); }
public override void Evaluate(SpinContext context) { if (context.SymbolLetter.Length > 0) { if (context.SymbolLetter == SymbolOptions.Letter) { context.Coefficient += SymbolOptions.Coefficient; } else { context.Coefficient = 0; context.Continue = false; } } else { context.SymbolLetter = SymbolOptions.Letter; context.Coefficient += SymbolOptions.Coefficient; } }
public abstract void Evaluate(SpinContext context);