public Gameplay(Seller seller, Battle battle, Doctor doctor, IEventBus eventBus, IGameplaySettings settings) { _seller = seller ?? throw new ArgumentNullException(nameof(seller)); _battle = battle ?? throw new ArgumentNullException(nameof(battle)); _doctor = doctor ?? throw new ArgumentNullException(nameof(doctor)); _eventBus = eventBus ?? throw new ArgumentNullException(nameof(eventBus)); _settings = settings ?? throw new ArgumentNullException(nameof(settings)); WireUpEvents(); }
public GameService(IGameService implementation, IGameplaySettings settings) { Instance = implementation; gameSettings = settings; }
// Sets up the options to show on the page private void CreateGameplaySettingItems() { IGameplaySettings gameplaySettings = _settingsManager.Settings.Gameplay; // Add player type selection IList <Type> paddleTypes = PaddleFactory.GetSupportedTypes(); _playersItem = new MenuItem { Name = StringResources.Players }; MenuItemOption selectedPlayerOption = null; // Add all available left+right player combinations, for example: "AI vs. Player" foreach (Type leftPaddleType in paddleTypes) { foreach (Type rightPaddleType in paddleTypes) { string text = string.Format("{0} {1} {2}", StringResources.ResourceManager.GetString("MenuText_Paddle_" + leftPaddleType.Name), StringResources.versus, StringResources.ResourceManager.GetString("MenuText_Paddle_" + rightPaddleType.Name)); Tuple <Type, Type> value = new Tuple <Type, Type>(leftPaddleType, rightPaddleType); MenuItemOption option = new MenuItemOption { Text = text, Value = value }; _playersItem.Options.Add(option); if (leftPaddleType == gameplaySettings.LeftPaddleType && rightPaddleType == gameplaySettings.RightPaddleType) { selectedPlayerOption = option; } } } if (selectedPlayerOption != null) { _playersItem.SelectedOption = selectedPlayerOption; } Items.Add(_playersItem); // Add score limit item _scoreLimitItem = new MenuItem { Name = StringResources.ScoreLimit }; _scoreLimitItem.Options.Add(new MenuItemOption { Text = StringResources.None, Value = 0 }); foreach (int scoreLimit in new[] { 5, 10, 20, 30 }) { string text = string.Format("{0} {1}", scoreLimit, StringResources.pts); _scoreLimitItem.Options.Add(new MenuItemOption { Text = text, Value = scoreLimit }); } _scoreLimitItem.SelectedValue = gameplaySettings.ScoreLimit; Items.Add(_scoreLimitItem); // Add time limit item _timeLimitItem = new MenuItem { Name = StringResources.TimeLimit }; _timeLimitItem.Options.Add(new MenuItemOption { Text = StringResources.None, Value = TimeSpan.Zero }); foreach (int timeLimit in new[] { 5, 10, 20, 30 }) { string text = string.Format("{0} {1}", timeLimit, StringResources.minutes); _timeLimitItem.Options.Add(new MenuItemOption { Text = text, Value = TimeSpan.FromMinutes(timeLimit) }); } _timeLimitItem.SelectedValue = gameplaySettings.TimeLimit; Items.Add(_timeLimitItem); // Add ball count item _ballCountItem = new MenuItem { Name = StringResources.Balls }; for (int i = SettingsConstants.BallMinCount; i <= SettingsConstants.BallMaxCount; i++) { _ballCountItem.Options.Add(new MenuItemOption { Text = i.ToString(), Value = i }); } _ballCountItem.SelectedValue = gameplaySettings.BallCount; Items.Add(_ballCountItem); // Add game speed item _gameSpeedItem = new MenuItem { Name = StringResources.GameSpeed }; for (float i = SettingsConstants.GameSpeedMinValue; i <= SettingsConstants.GameSpeedMaxValue; i = (float)Math.Round(i + SettingsConstants.GameSpeedIncreaseFactor, 1)) { string text = string.Format("{0}%", (int)Math.Round(i * 100F, 1)); _gameSpeedItem.Options.Add(new MenuItemOption { Text = text, Value = i }); } _gameSpeedItem.Options.Add(new MenuItemOption { Text = StringResources.AutoIncrease, Value = null }); _gameSpeedItem.SelectedValue = gameplaySettings.AutoIncreaseSpeed ? null : (object)gameplaySettings.GameSpeed; Items.Add(_gameSpeedItem); }