public HsvColorPicker(ColorTimeLineDrawingConfig drawingConfig) { _drawingConfig = drawingConfig; _worldDimensions = _drawingConfig.WorldDimensions(); _hsAreaRadius = _worldDimensions.HsvColorPickerHueSaturationCircleRadius; _hsvRgb = new HsvRgbConverter(); _hsTrack = new HsTrack(_drawingConfig); AddChild(_hsTrack); _vTrackColorPositions = new ColorPositions(new[] { new ColorPosition(SKColors.Black, .25f), new ColorPosition(SKColors.White, .75f) }); _vTrack = new CircularTrack(_worldDimensions.Center, _worldDimensions.HsvColorPickerValueCircleRadius, _worldDimensions.HsvColorPickerValueCircleWidth, 36, _vTrackColorPositions); AddChild(_vTrack); _hsSliderBody = new HsSliderBody(_worldDimensions.Center, _hsAreaRadius); _hsSlider = new Slider <HueSaturation>(_drawingConfig, new HueSaturation(0, 0), SKColors.Black, _worldDimensions.HsvColorPcikerHueSaturationSliderRadius, false, false, _hsSliderBody); _hsSlider.ValueChanged += _hsSlider_ValueChanged; AddChild(_hsSlider); _vSliderBody = new CircularSliderBody(_worldDimensions.Center, _worldDimensions.HsvColorPickerValueCircleRadius, ConvertHSliderInputValue, ConvertHSliderOutputValue); _vSlider = new Slider <float>(_drawingConfig, 0, SKColors.Black, _worldDimensions.HsvColorPickerValueCircleWidth / 2f, false, false, _vSliderBody); _vSlider.ValueChanged += _vSlider_ValueChanged; AddChild(_vSlider); }
public void TestAdvancePlayerSecond() { var players = new List <IPlayer> { new Player("1", Color.Red), new Player("2", Color.Blue), new Player("3", Color.Yellow), new Player("4", Color.Green) }; var gameService = new GameService(); gameService.StartGame(players); const int piece = 1; const int playerIndex = 2; var rolled = gameService.RollDie(players.ElementAt(playerIndex)); var position = players.ElementAt(playerIndex).Pieces.ElementAt(piece); Assert.Equal(-1, position); gameService.Advance(players.ElementAt(playerIndex), piece); Assert.Equal(rolled + ColorPositions.StartPosition(players.ElementAt(playerIndex).Color), players.ElementAt(playerIndex).Pieces.ElementAt(piece)); }
public GradientCircularTrackDrawer(SKPoint center, float radius, float thickness, int circularResolution, ColorPositions colorPositions) { _center = center; _radius = radius; _thickness = thickness; _circularResolution = circularResolution; _colorPositions = colorPositions; }
public void GetWinningPositions() { const Color color = Color.Blue; var winPositions = ColorPositions.WinPositions(color); Assert.Empty(winPositions); }
public void GetStartPositionYellow() { const Color color = Color.Yellow; var startPosition = ColorPositions.StartPosition(color); Assert.Equal(20, startPosition); }
public void GetStartPositionRed() { const Color color = Color.Red; var startPosition = ColorPositions.StartPosition(color); Assert.Equal(0, startPosition); }
public void GetStartPositionGreen() { const Color color = Color.Green; var startPosition = ColorPositions.StartPosition(color); Assert.Equal(30, startPosition); }
public void GetStartPositionBlue() { const Color color = Color.Blue; var startPosition = ColorPositions.StartPosition(color); Assert.Equal(10, startPosition); }
public RootSurfaceComponent(IPhotonLedControllerCommunicator photonLedControllerCommunicator) { // Dependencies. _photonLedControllerCommunicator = photonLedControllerCommunicator; // Drawing configuration. _drawingConfig = new ColorTimeLineDrawingConfig(); _worldDimensions = _drawingConfig.WorldDimensions(); // Initialize color positions. _colorPositions = new ColorPositions(new ColorPosition[0]); // Gradient circle component. _gradientCircularTrack = new CircularTrack(_worldDimensions.Center, _worldDimensions.GradientCircleRadius, _worldDimensions.GradientCircleWidth, 360, _colorPositions); AddChild(_gradientCircularTrack); // Track for color time points. _colorTimePointsTrack = new CircularTrack(_worldDimensions.Center, _worldDimensions.ColorsCircleRadius, _worldDimensions.ColorsCircleWidth, _drawingConfig.SliderTrackBackgroundColor); AddChild(_colorTimePointsTrack); // Container for color time point sliders - the only sliders which number is dynamic so generic list is used here. _colorTimePointSliders = new List <ColorTimePointSlider>(); // Color picker. _colorPicker = new HsvColorPicker(_drawingConfig); _colorPicker.IsEnabled = false; AddChild(_colorPicker); // Time progress slider with cycle time slider inside. _timeProgressSlider = new TimeProgressSlider(_drawingConfig, SKColors.Black, _timeProgress, _photonLedControllerCommunicator); _timeProgressSlider.Slider.IsSelectedChanged += Slider_IsSelectedChanged; AddChild(_timeProgressSlider); }
public CodeValidationResult ValidateCode(Code codeGuess) { if (code == null) { throw new Exception("Tried to validate code without initializing the validator!"); } if (code.Length != codeGuess.Length) { throw new Exception("Tried to validate code that is different length!"); } ColorPositions colorPositions = new ColorPositions(availableColors); int countPositionsCorrect = 0; int countColorsCorrect = 0; for (int i = 0; i < code.Length; i++) { CodeColor colorGuess = codeGuess[i]; if (code.IsPositionValid(i, colorGuess)) { countPositionsCorrect++; } else { int nextColorIdx = colorPositions.GetLastColorPosition(colorGuess) + 1; int foundIdx = code.PositionOf(colorGuess, nextColorIdx); if (foundIdx >= 0) { colorPositions.SetLastColorPosition(colorGuess, foundIdx); countColorsCorrect++; } } } return(new CodeValidationResult(countPositionsCorrect == code.Length, countPositionsCorrect, countColorsCorrect)); }
public CircularTrack(SKPoint center, float radius, float thickness, int circularResolution, ColorPositions colorPositions) { _drawer = new GradientCircularTrackDrawer(center, radius, thickness, circularResolution, colorPositions); AddChild(_drawer); }
public void GetStartPositionUnknown() { const Color color = (Color)5; Assert.Throws <IndexOutOfRangeException>(() => ColorPositions.StartPosition(color)); }