public Decision MakeDecision(FlopDecisionContext context) { if (!_initialized) { Init(context); } if (context.IsHeadsUp) { Logger.Instance.Log($"Heads up: villain: {context.HeadsUpVillain.Position}-{context.HeadsUpVillainName} hero: {context.Hero.Position}-{context.HeroName}"); if (context.IsRaised) { Logger.Instance.Log($"Pot is raised, employing callingStrategy to make decision..."); return(_callingStrategy.MakeDecision(context)); } else { Logger.Instance.Log($"Pot is not raised, employing bettingStrategy to make decision..."); return(_bettingStrategy.MakeDecision(context)); } } else { Logger.Instance.Log($"Multiway: villains: {string.Join(",", context.AliveVillains.Select(v => $"{v.Position}-{v.Name}"))} hero: {context.Hero.Position}-{context.HeroName}"); if (context.IsRaised) { Logger.Instance.Log($"Pot is raised, employing callingStrategy to make decision..."); return(_multiwayCallingStrategy.MakeDecision(context)); } else { Logger.Instance.Log($"Pot is not raised, employing bettingStrategy to make decision..."); return(_multiwayBettingStrategy.MakeDecision(context)); } } }
private void Init(FlopDecisionContext context) { _bettingStrategy = new FlopHeadsUpBettingStrategy(context.FlopBoard, context.HeroHoles); _callingStrategy = new FlopHeadsUpCallingStrategy(); _multiwayBettingStrategy = new FlopMultiwayBettingStrategy(context.FlopBoard, context.HeroHoles); _multiwayCallingStrategy = new FlopMultiwayCallingStrategy(context.FlopBoard, context.HeroHoles); _initialized = true; }