Exemplo n.º 1
0
 public bool DoesEmblemMatch(NetworkGuildEmblem emblem)
 {
     return(BackgroundColor.ToArgb() == emblem.backgroundColor &&
            BackgroundShape == emblem.backgroundShape &&
            SymbolColor.ToArgb() == emblem.symbolColor &&
            SymbolShape == emblem.symbolShape);
 }
Exemplo n.º 2
0
        /// <summary>
        /// Construct imageattribute based upon Transparency and/or Color Re-map
        /// </summary>
        private void ConstructImageAttributes()
        {
            if (_imageAttributes != null)
            {
                _imageAttributes.Dispose();
            }

            if (Transparency == 0 && (SymbolColor.ToArgb() == RemapColor.ToArgb()))
            {
                return;
            }

            _imageAttributes = new ImageAttributes();

            if (SymbolColor.ToArgb() != RemapColor.ToArgb())
            {
                var cm = new ColorMap[1];

                var a = SymbolColor.A;

                if (Transparency > 0)
                {
                    a = (byte)(Math.Ceiling(255 * (1F - Transparency)));
                }

                var nc = Color.FromArgb(a, SymbolColor);
                cm[0]          = new ColorMap();
                cm[0].OldColor = RemapColor;
                cm[0].NewColor = nc;
                ImageAttributes.SetRemapTable(cm);
            }
            else
            {
                var cm = new ColorMatrix();
                cm.Matrix33 = 1F - _transparency;
                ImageAttributes.SetColorMatrix(cm);
            }
        }
        protected override void OnPropertyChanged(string propertyName = null)
        {
            base.OnPropertyChanged(propertyName);

            if (string.IsNullOrWhiteSpace(propertyName))
            {
                return;
            }

            if (propertyName == BackgroundHighlightColorProperty.PropertyName)
            {
                _backgroundPaint.Color = BackgroundHighlightColor.ToSKColor();
                InvalidateSurface();
            }

            if (propertyName == SymbolColorProperty.PropertyName)
            {
                _symbolPaint.Color = SymbolColor.ToSKColor();
                InvalidateSurface();
            }

            // Do the animation just once
            if (propertyName == CurrentModeProperty.PropertyName || propertyName == CurrentStateProperty.PropertyName)
            {
                (_endSymbolPathA, _endSymbolPathB) = (CurrentMode, CurrentState) switch
                {
                    (DisplayMode.PlayPause, State.Paused) => (_playA, _playB),
                    (DisplayMode.PlayPause, State.Stopped) => (_playA, _playB),
                    (DisplayMode.PlayPause, State.Playing) => (_pauseA, _pauseB),
                    (DisplayMode.PlayStop, State.Paused) => (_playA, _playB),
                    (DisplayMode.PlayStop, State.Stopped) => (_playA, _playB),
                    (DisplayMode.PlayStop, State.Playing) => (_stopA, _stopB)
                };

                LaunchAnimation();
            }
        }
        // This class return the sequence associated to a symbol and a color
        public static List <DoorController.Direction> GetSymbolCode(SymbolColor pColor, Symbol pSymbol)
        {
            List <DoorController.Direction> dirList = new List <DoorController.Direction>();

            switch (pColor)
            {
            case SymbolColor.Blue:
                switch (pSymbol)
                {
                case Symbol.One:
                    dirList.Add(DoorController.Direction.Up);
                    dirList.Add(DoorController.Direction.Up);
                    dirList.Add(DoorController.Direction.Left);
                    break;

                case Symbol.Two:
                    dirList.Add(DoorController.Direction.Bottom);
                    dirList.Add(DoorController.Direction.Bottom);
                    dirList.Add(DoorController.Direction.Bottom);
                    break;

                case Symbol.Three:
                    dirList.Add(DoorController.Direction.Up);
                    dirList.Add(DoorController.Direction.Left);
                    dirList.Add(DoorController.Direction.Right);
                    break;

                default:
                    dirList.Clear();
                    break;
                }
                break;

            case SymbolColor.Green:
                switch (pSymbol)
                {
                case Symbol.One:
                    dirList.Add(DoorController.Direction.Left);
                    dirList.Add(DoorController.Direction.Left);
                    dirList.Add(DoorController.Direction.Left);
                    break;

                case Symbol.Two:
                    dirList.Add(DoorController.Direction.Bottom);
                    dirList.Add(DoorController.Direction.Up);
                    dirList.Add(DoorController.Direction.Up);
                    break;

                case Symbol.Three:
                    dirList.Add(DoorController.Direction.Bottom);
                    dirList.Add(DoorController.Direction.Bottom);
                    dirList.Add(DoorController.Direction.Bottom);
                    break;

                default:
                    dirList.Clear();
                    break;
                }
                break;

            case SymbolColor.Red:
                switch (pSymbol)
                {
                case Symbol.One:
                    dirList.Add(DoorController.Direction.Right);
                    dirList.Add(DoorController.Direction.Left);
                    dirList.Add(DoorController.Direction.Up);
                    break;

                case Symbol.Two:
                    dirList.Add(DoorController.Direction.Left);
                    dirList.Add(DoorController.Direction.Right);
                    dirList.Add(DoorController.Direction.Right);
                    break;

                case Symbol.Three:
                    dirList.Add(DoorController.Direction.Right);
                    dirList.Add(DoorController.Direction.Up);
                    dirList.Add(DoorController.Direction.Bottom);
                    break;

                default:
                    dirList.Clear();
                    break;
                }
                break;

            case SymbolColor.Yellow:
                switch (pSymbol)
                {
                case Symbol.One:
                    dirList.Add(DoorController.Direction.Left);
                    dirList.Add(DoorController.Direction.Right);
                    dirList.Add(DoorController.Direction.Left);
                    break;

                case Symbol.Two:
                    dirList.Add(DoorController.Direction.Right);
                    dirList.Add(DoorController.Direction.Right);
                    dirList.Add(DoorController.Direction.Right);
                    break;

                case Symbol.Three:
                    dirList.Add(DoorController.Direction.Up);
                    dirList.Add(DoorController.Direction.Left);
                    dirList.Add(DoorController.Direction.Left);
                    break;

                default:
                    dirList.Clear();
                    break;
                }
                break;

            case SymbolColor.Purple:
                switch (pSymbol)
                {
                case Symbol.One:
                    dirList.Add(DoorController.Direction.Up);
                    dirList.Add(DoorController.Direction.Up);
                    dirList.Add(DoorController.Direction.Right);
                    break;

                case Symbol.Two:
                    dirList.Add(DoorController.Direction.Right);
                    dirList.Add(DoorController.Direction.Bottom);
                    dirList.Add(DoorController.Direction.Right);
                    break;

                case Symbol.Three:
                    dirList.Add(DoorController.Direction.Bottom);
                    dirList.Add(DoorController.Direction.Bottom);
                    dirList.Add(DoorController.Direction.Up);
                    break;

                default:
                    dirList.Clear();
                    break;
                }
                break;

            default:
                dirList.Clear();
                break;
            }

            return(dirList);
        }