Example #1
0
        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();
        }
Example #2
0
 public GameService(IGameService implementation, IGameplaySettings settings)
 {
     Instance     = implementation;
     gameSettings = settings;
 }
Example #3
0
        // 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);
        }