private void CreatePlayers()
 {
     database.AddBot(botFactory.CreateBot("Bot1", startingChips));
     database.AddBot(botFactory.CreateBot("Bot2", startingChips));
     database.AddBot(botFactory.CreateBot("Bot3", startingChips));
     database.AddBot(botFactory.CreateBot("Bot4", startingChips));
     database.AddBot(botFactory.CreateBot("Bot5", startingChips));
     database.AddHuman(humanFactory.CreateHuman("Player", startingChips));
 }
Пример #2
0
        public void Initialize(IBotFactory botFactory, int delayBetweenInitsMS = 1100)
        {
            if (_initialized)
            {
                throw new InvalidOperationException("Unable to initialize bot framework a second time.");
            }

            int numFailed = 0;

            for (int i = 0; i < _numBots; ++i)
            {
                if (_terminating)
                {
                    throw new BotException("Received termination signal; initialization has been cancelled");
                }

                try
                {
                    var bot = botFactory.CreateBot(i, _host, _port);
                    bot.WorkCompleted += () => _doneSignal.Release();
                    bot.Initialize();
                    _botsList.Add(bot);
                }
                catch (Exception ex)
                {
                    _outputHandler.OutputBotInitializationFailed(ex.Message);
                    numFailed++;
                    continue;
                }

                _outputHandler.OutputBotInitializationSucceeded(i);
                Thread.Sleep(delayBetweenInitsMS); //minimum for this is 1sec server-side
            }

            if (numFailed > 0)
            {
                _outputHandler.OutputWarnSomeBotsFailed();
                _numBots -= numFailed;
            }
            else if (numFailed == _numBots)
            {
                throw new BotException("All bots failed to initialize. No bots will run.");
            }

            _initialized = true;
        }
Пример #3
0
        private async Task <int> Run(ServiceProvider serviceProvider)
        {
            while (true)
            {
                try
                {
                    var botConfiguration = serviceProvider.GetRequiredService <IOptions <BotConfiguration> >();
                    var botInstance      = _botConfigurationFactory.CreateBot(botConfiguration.Value.BotType);
                    await botInstance.Run();
                }
                catch (Exception e)
                {
                    var externalClient = serviceProvider.GetRequiredService <IExternalMessagingClient>();
                    Log.Information($"Bot crashed with exception {e.Message}, restarting");
                    await externalClient.SendMessage($"Bot crashed with exception {e.Message}, restarting");

                    await Task.Delay(TimeSpan.FromSeconds(30));
                }
            }
        }
Пример #4
0
		public void Initialize(IBotFactory botFactory, int delayBetweenInitsMS = 1100)
		{
			if (_initialized)
				throw new InvalidOperationException("Unable to initialize bot framework a second time.");

			int numFailed = 0;
			for (int i = 0; i < _numBots; ++i)
			{
				if (_terminating)
					throw new BotException("Received termination signal; initialization has been cancelled");

				try
				{
					var bot = botFactory.CreateBot(i, _host, _port);
					bot.WorkCompleted += () => _doneSignal.Release();
					bot.Initialize();
					_botsList.Add(bot);
				}
				catch(Exception ex)
				{
					_outputHandler.OutputBotInitializationFailed(ex.Message);
					numFailed++;
					continue;
				}

				_outputHandler.OutputBotInitializationSucceeded(i);
				Thread.Sleep(delayBetweenInitsMS); //minimum for this is 1sec server-side
			}

			if (numFailed > 0)
			{
				_outputHandler.OutputWarnSomeBotsFailed();
				_numBots -= numFailed;
			}
			else if (numFailed == _numBots)
			{
				throw new BotException("All bots failed to initialize. No bots will run.");
			}

			_initialized = true;
		}