Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
 public GradientCircularTrackDrawer(SKPoint center, float radius, float thickness, int circularResolution, ColorPositions colorPositions)
 {
     _center             = center;
     _radius             = radius;
     _thickness          = thickness;
     _circularResolution = circularResolution;
     _colorPositions     = colorPositions;
 }
Exemplo n.º 4
0
        public void GetWinningPositions()
        {
            const Color color = Color.Blue;

            var winPositions = ColorPositions.WinPositions(color);

            Assert.Empty(winPositions);
        }
Exemplo n.º 5
0
        public void GetStartPositionYellow()
        {
            const Color color = Color.Yellow;

            var startPosition = ColorPositions.StartPosition(color);

            Assert.Equal(20, startPosition);
        }
Exemplo n.º 6
0
        public void GetStartPositionRed()
        {
            const Color color = Color.Red;

            var startPosition = ColorPositions.StartPosition(color);

            Assert.Equal(0, startPosition);
        }
Exemplo n.º 7
0
        public void GetStartPositionGreen()
        {
            const Color color = Color.Green;

            var startPosition = ColorPositions.StartPosition(color);

            Assert.Equal(30, startPosition);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 10
0
    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));
    }
Exemplo n.º 11
0
 public CircularTrack(SKPoint center, float radius, float thickness, int circularResolution, ColorPositions colorPositions)
 {
     _drawer = new GradientCircularTrackDrawer(center, radius, thickness, circularResolution, colorPositions);
     AddChild(_drawer);
 }
Exemplo n.º 12
0
        public void GetStartPositionUnknown()
        {
            const Color color = (Color)5;

            Assert.Throws <IndexOutOfRangeException>(() => ColorPositions.StartPosition(color));
        }