示例#1
0
        public void UpdateVisual(INintrollerState state)
        {
            if (state is ProController)
            {
                var pro = (ProController)state;
                _lastState = pro;

                Display(aBtn, pro.A);
                Display(bBtn, pro.B);
                Display(xBtn, pro.X);
                Display(yBtn, pro.Y);
                Display(lBtn, pro.L);
                Display(rBtn, pro.R);
                Display(zlBtn, pro.ZL);
                Display(zrBtn, pro.ZR);
                Display(dpadUp, pro.Up);
                Display(dpadDown, pro.Down);
                Display(dpadLeft, pro.Left);
                Display(dpadRight, pro.Right);
                Display(dpadCenter, (pro.Up || pro.Down || pro.Left || pro.Right));
                Display(homeBtn, pro.Home);
                Display(plusBtn, pro.Plus);
                Display(minusBtn, pro.Minus);
                Display(leftStickBtn, pro.LStick);
                Display(rightStickBtn, pro.RStick);

                leftStick.Margin     = new Thickness(196 + 50 * pro.LJoy.X, 232 - 50 * pro.LJoy.Y, 0, 0);
                leftStickBtn.Margin  = new Thickness(196 + 50 * pro.LJoy.X, 230 - 50 * pro.LJoy.Y, 0, 0);
                rightStick.Margin    = new Thickness(980 + 50 * pro.RJoy.X, 232 - 50 * pro.RJoy.Y, 0, 0);
                rightStickBtn.Margin = new Thickness(980 + 50 * pro.RJoy.X, 230 - 50 * pro.RJoy.Y, 0, 0);

                if (_openJoyWindow != null)
                {
                    _openJoyWindow.Update(_rightJoyOpen ? pro.RJoy : pro.LJoy);
                }
            }
        }
        public void UpdateVisual(INintrollerState state)
        {
            if (state is ProController)
            {
                var pro = (ProController)state;
                _lastState = pro;

                aBtn.Opacity          = pro.A ? 1 : 0;
                bBtn.Opacity          = pro.B ? 1 : 0;
                xBtn.Opacity          = pro.X ? 1 : 0;
                yBtn.Opacity          = pro.Y ? 1 : 0;
                lBtn.Opacity          = pro.L ? 1 : 0;
                rBtn.Opacity          = pro.R ? 1 : 0;
                zlBtn.Opacity         = pro.ZL ? 1 : 0;
                zrBtn.Opacity         = pro.ZR ? 1 : 0;
                dpadUp.Opacity        = pro.Up ? 1 : 0;
                dpadDown.Opacity      = pro.Down ? 1 : 0;
                dpadLeft.Opacity      = pro.Left ? 1 : 0;
                dpadRight.Opacity     = pro.Right ? 1 : 0;
                dpadCenter.Opacity    = (pro.Up || pro.Down || pro.Left || pro.Right) ? 1 : 0;
                homeBtn.Opacity       = pro.Home ? 1 : 0;
                plusBtn.Opacity       = pro.Plus ? 1 : 0;
                minusBtn.Opacity      = pro.Minus ? 1 : 0;
                leftStickBtn.Opacity  = pro.LStick ? 1 : 0;
                rightStickBtn.Opacity = pro.RStick ? 1 : 0;

                leftStick.Margin     = new Thickness(196 + 50 * pro.LJoy.X, 232 - 50 * pro.LJoy.Y, 0, 0);
                leftStickBtn.Margin  = new Thickness(196 + 50 * pro.LJoy.X, 230 - 50 * pro.LJoy.Y, 0, 0);
                rightStick.Margin    = new Thickness(980 + 50 * pro.RJoy.X, 232 - 50 * pro.RJoy.Y, 0, 0);
                rightStickBtn.Margin = new Thickness(980 + 50 * pro.RJoy.X, 230 - 50 * pro.RJoy.Y, 0, 0);

                if (_openJoyWindow != null)
                {
                    _openJoyWindow.Update(_rightJoyOpen ? pro.RJoy : pro.LJoy);
                }
            }
        }
        public void UpdateVisual(JoystickUpdate[] updates)
        {
            foreach (var update in updates)
            {
                switch (update.Offset)
                {
                case JoystickOffset.Buttons0: bBtn.Opacity = update.Value > 0 ? 1 : 0; break;

                case JoystickOffset.Buttons1: aBtn.Opacity = update.Value > 0 ? 1 : 0; break;

                case JoystickOffset.Buttons2: yBtn.Opacity = update.Value > 0 ? 1 : 0; break;

                case JoystickOffset.Buttons3: xBtn.Opacity = update.Value > 0 ? 1 : 0; break;

                case JoystickOffset.Buttons4: lBtn.Opacity = update.Value > 0 ? 1 : 0; break;

                case JoystickOffset.Buttons5: rBtn.Opacity = update.Value > 0 ? 1 : 0; break;

                case JoystickOffset.Buttons6: zlBtn.Opacity = update.Value > 0 ? 1 : 0; break;

                case JoystickOffset.Buttons7: zrBtn.Opacity = update.Value > 0 ? 1 : 0; break;

                case JoystickOffset.Buttons8: minusBtn.Opacity = update.Value > 0 ? 1 : 0; break;

                case JoystickOffset.Buttons9: plusBtn.Opacity = update.Value > 0 ? 1 : 0; break;

                case JoystickOffset.Buttons10: leftStickButton.Opacity = update.Value > 0 ? 1 : 0; break;

                case JoystickOffset.Buttons11: rightStickButton.Opacity = update.Value > 0 ? 1 : 0; break;

                case JoystickOffset.Buttons12: homeBtn.Opacity = update.Value > 0 ? 1 : 0; break;

                case JoystickOffset.Buttons13: shareBtn.Opacity = update.Value > 0 ? 1 : 0; break;

                case JoystickOffset.PointOfViewControllers0:
                    leftBtn.Opacity  = 0;
                    rightBtn.Opacity = 0;
                    upBtn.Opacity    = 0;
                    downBtn.Opacity  = 0;
                    center.Opacity   = 0;
                    if (update.Value == -1)
                    {
                        break;
                    }
                    else if (update.Value == 0)
                    {
                        upBtn.Opacity  = 1;
                        center.Opacity = 1;
                    }
                    else if (update.Value > 0 && update.Value < 9000)
                    {
                        upBtn.Opacity    = 1;
                        rightBtn.Opacity = 1;
                        center.Opacity   = 1;
                    }
                    else if (update.Value == 9000)
                    {
                        rightBtn.Opacity = 1;
                        center.Opacity   = 1;
                    }
                    else if (update.Value > 9000 && update.Value < 18000)
                    {
                        rightBtn.Opacity = 1;
                        downBtn.Opacity  = 1;
                        center.Opacity   = 1;
                    }
                    else if (update.Value == 18000)
                    {
                        downBtn.Opacity = 1;
                        center.Opacity  = 1;
                    }
                    else if (update.Value > 18000 && update.Value < 27000)
                    {
                        downBtn.Opacity = 1;
                        leftBtn.Opacity = 1;
                        center.Opacity  = 1;
                    }
                    else if (update.Value == 27000)
                    {
                        leftBtn.Opacity = 1;
                        center.Opacity  = 1;
                    }
                    else if (update.Value > 27000)
                    {
                        leftBtn.Opacity = 1;
                        upBtn.Opacity   = 1;
                        center.Opacity  = 1;
                    }
                    break;

                case JoystickOffset.X:
                    _calLeftJoystick.rawX = update.Value;
                    break;

                case JoystickOffset.Y:
                    _calLeftJoystick.rawY = 65535 - update.Value;
                    break;

                case JoystickOffset.RotationX:
                    _calRightJoystick.rawX = update.Value;
                    break;

                case JoystickOffset.RotationY:
                    _calRightJoystick.rawY = 65535 - update.Value;
                    break;
                }
            }

            var joyL = JoyControl.ConvertToNintyJoy(leftXCalibration, leftYCalibration);
            var joyR = JoyControl.ConvertToNintyJoy(rightXCalibration, rightYCalibration);

            joyL.rawX = _calLeftJoystick.rawX;
            joyL.rawY = _calLeftJoystick.rawY;
            joyR.rawX = _calRightJoystick.rawX;
            joyR.rawY = _calRightJoystick.rawY;

            joyL.Normalize();
            joyR.Normalize();

            leftStick.Margin        = new Thickness(146 + 30 * joyL.X, 291 - 30 * joyL.Y, 0, 0);
            rightStick.Margin       = new Thickness(507 + 30 * joyR.X, 412 - 30 * joyR.Y, 0, 0);
            leftStickButton.Margin  = leftStick.Margin;
            rightStickButton.Margin = rightStick.Margin;

            if (_openJoyWindow != null)
            {
                _openJoyWindow.Update(_leftCalibration ? _calLeftJoystick : _calRightJoystick);
            }
        }
        public void UpdateVisual(INintrollerState state)
        {
            if (state is GameCubeAdapter gcn)
            {
                _lastState = gcn;
                GameCubeController activePort;

                bool connecited = GetActivePort(out activePort);

                A.Opacity     = activePort.A ? 1 : 0;
                B.Opacity     = activePort.B ? 1 : 0;
                X.Opacity     = activePort.X ? 1 : 0;
                Y.Opacity     = activePort.Y ? 1 : 0;
                Z.Opacity     = activePort.Z ? 1 : 0;
                START.Opacity = activePort.Start ? 1 : 0;

                dpadUp.Opacity    = activePort.Up ? 1 : 0;
                dpadDown.Opacity  = activePort.Down ? 1 : 0;
                dpadLeft.Opacity  = activePort.Left ? 1 : 0;
                dpadRight.Opacity = activePort.Right ? 1 : 0;

                L.Opacity = activePort.L.value > 0 ? 1 : 0;
                R.Opacity = activePort.R.value > 0 ? 1 : 0;

                var lOpacityMask = L.OpacityMask as LinearGradientBrush;
                if (lOpacityMask != null && lOpacityMask.GradientStops.Count == 2)
                {
                    double offset = 1 - System.Math.Min(1, activePort.L.value);
                    lOpacityMask.GradientStops[0].Offset = offset;
                    lOpacityMask.GradientStops[1].Offset = offset;
                }

                var rOpacityMask = R.OpacityMask as LinearGradientBrush;
                if (rOpacityMask != null && rOpacityMask.GradientStops.Count == 2)
                {
                    double offset = 1 - System.Math.Min(1, activePort.R.value);
                    rOpacityMask.GradientStops[0].Offset = offset;
                    rOpacityMask.GradientStops[1].Offset = offset;
                }

                joystick.Margin = new Thickness(190 + 100 * activePort.joystick.X, 272 - 100 * activePort.joystick.Y, 0, 0);
                cStick.Margin   = new Thickness(887 + 100 * activePort.cStick.X, 618 - 100 * activePort.cStick.Y, 0, 0);

                connectionStatus.Content = connecited ? _connectedStatus : _disconnectedStatus;

                if (_openJoyWindow != null)
                {
                    if (_calibrationTarget == "joy")
                    {
                        _openJoyWindow.Update(activePort.joystick);
                    }
                    else if (_calibrationTarget == "cStk")
                    {
                        _openJoyWindow.Update(activePort.cStick);
                    }
                }
                else if (_openTrigWindow != null)
                {
                    if (_calibrationTarget == "L")
                    {
                        _openTrigWindow.Update(activePort.L);
                    }
                    else if (_calibrationTarget == "R")
                    {
                        _openTrigWindow.Update(activePort.R);
                    }
                }
            }
        }
示例#5
0
        public void UpdateVisual(INintrollerState state)
        {
            _lastState = state;
            if (state is Wiimote)
            {
                if (viewNunchuk.Visibility == Visibility.Visible)
                {
                    viewNunchuk.Visibility = Visibility.Collapsed;
                }
                if (viewClassicController.Visibility == Visibility.Visible)
                {
                    viewClassicController.Visibility = Visibility.Collapsed;
                }
                if (viewClassicControllerPro.Visibility == Visibility.Visible)
                {
                    viewClassicControllerPro.Visibility = Visibility.Collapsed;
                }

                UpdateWiimoteVisual((Wiimote)state);
            }
            else if (state is Nunchuk)
            {
                if (viewNunchuk.Visibility != Visibility.Visible)
                {
                    viewNunchuk.Visibility = Visibility.Visible;
                }
                if (viewClassicController.Visibility == Visibility.Visible)
                {
                    viewClassicController.Visibility = Visibility.Collapsed;
                }
                if (viewClassicControllerPro.Visibility == Visibility.Visible)
                {
                    viewClassicControllerPro.Visibility = Visibility.Collapsed;
                }

                var nun = (Nunchuk)state;
                UpdateWiimoteVisual(nun.wiimote);

                nBtnC.Opacity = nun.C ? 1 : 0;
                nBtnZ.Opacity = nun.Z ? 1 : 0;
                nJoy.Margin   = new Thickness(70 + 30 * nun.joystick.X, 360 - 30 * nun.joystick.Y, 0, 0);

                if (_openJoyWindow != null && _calibrationTarget == App.CAL_NUN_JOYSTICK)
                {
                    _openJoyWindow.Update(nun.joystick);
                }
            }
            else if (state is ClassicController)
            {
                if (viewNunchuk.Visibility == Visibility.Visible)
                {
                    viewNunchuk.Visibility = Visibility.Collapsed;
                }
                if (viewClassicController.Visibility != Visibility.Visible)
                {
                    viewClassicController.Visibility = Visibility.Visible;
                }
                if (viewClassicControllerPro.Visibility == Visibility.Visible)
                {
                    viewClassicControllerPro.Visibility = Visibility.Collapsed;
                }

                var cc = (ClassicController)state;
                UpdateWiimoteVisual(cc.wiimote);

                ccBtnA.Opacity      = cc.A ? 1 : 0;
                ccBtnB.Opacity      = cc.B ? 1 : 0;
                ccBtnX.Opacity      = cc.X ? 1 : 0;
                ccBtnY.Opacity      = cc.Y ? 1 : 0;
                ccBtnUp.Opacity     = cc.Up ? 1 : 0;
                ccBtnDown.Opacity   = cc.Down ? 1 : 0;
                ccBtnRight.Opacity  = cc.Right ? 1 : 0;
                ccBtnLeft.Opacity   = cc.Left ? 1 : 0;
                ccPadCenter.Opacity = cc.Up || cc.Down || cc.Left || cc.Right ? 1 : 0;
                ccBtnHome.Opacity   = cc.Home ? 1 : 0;
                ccBtnSelect.Opacity = cc.Select ? 1 : 0;
                ccBtnStart.Opacity  = cc.Start ? 1 : 0;
                ccBtnZL.Opacity     = cc.ZL ? 1 : 0;
                ccBtnZR.Opacity     = cc.ZR ? 1 : 0;
                ccL.Opacity         = cc.L.value > 0 ? 1 : 0;
                ccR.Opacity         = cc.R.value > 0 ? 1 : 0;
                ccLeftStick.Margin  = new Thickness(208 + 30 * cc.LJoy.X, 210 - 30 * cc.LJoy.Y, 0, 0);
                ccRightStick.Margin = new Thickness(364 + 30 * cc.RJoy.X, 210 - 30 * cc.RJoy.Y, 0, 0);

                if (_openJoyWindow != null && _calibrationTarget.StartsWith("cc"))
                {
                    if (_calibrationTarget == App.CAL_CC_LJOYSTICK)
                    {
                        _openJoyWindow.Update(cc.LJoy);
                    }
                    else if (_calibrationTarget == App.CAL_CC_RJOYSTICK)
                    {
                        _openJoyWindow.Update(cc.RJoy);
                    }
                }
                else if (_openTrigWindow != null && _calibrationTarget.StartsWith("cc"))
                {
                    if (_calibrationTarget == "ccLT")
                    {
                        _openTrigWindow.Update(cc.L);
                    }
                    else if (_calibrationTarget == "ccRT")
                    {
                        _openTrigWindow.Update(cc.R);
                    }
                }
            }
            else if (state is ClassicControllerPro)
            {
                if (viewNunchuk.Visibility == Visibility.Visible)
                {
                    viewNunchuk.Visibility = Visibility.Collapsed;
                }
                if (viewClassicController.Visibility == Visibility.Visible)
                {
                    viewClassicController.Visibility = Visibility.Collapsed;
                }
                if (viewClassicControllerPro.Visibility != Visibility.Visible)
                {
                    viewClassicControllerPro.Visibility = Visibility.Visible;
                }

                var ccp = (ClassicControllerPro)state;
                UpdateWiimoteVisual(ccp.wiimote);

                ccpBtnA.Opacity      = ccp.A ? 1 : 0;
                ccpBtnB.Opacity      = ccp.B ? 1 : 0;
                ccpBtnX.Opacity      = ccp.X ? 1 : 0;
                ccpBtnY.Opacity      = ccp.Y ? 1 : 0;
                ccpBtnUp.Opacity     = ccp.Up ? 1 : 0;
                ccpBtnDown.Opacity   = ccp.Down ? 1 : 0;
                ccpBtnRight.Opacity  = ccp.Right ? 1 : 0;
                ccpBtnLeft.Opacity   = ccp.Left ? 1 : 0;
                ccpPadCenter.Opacity = ccp.Up || ccp.Down || ccp.Left || ccp.Right ? 1 : 0;
                ccpBtnHome.Opacity   = ccp.Home ? 1 : 0;
                ccpBtnSelect.Opacity = ccp.Select ? 1 : 0;
                ccpBtnStart.Opacity  = ccp.Start ? 1 : 0;
                ccpBtnZL.Opacity     = ccp.ZL ? 1 : 0;
                ccpBtnZR.Opacity     = ccp.ZR ? 1 : 0;
                ccpBtnL.Opacity      = ccp.L ? 1 : 0;
                ccpBtnR.Opacity      = ccp.R ? 1 : 0;
                ccpLeftStick.Margin  = new Thickness(255 + 30 * ccp.LJoy.X, 279 - 30 * ccp.LJoy.Y, 0, 0);
                ccpRightStick.Margin = new Thickness(485 + 30 * ccp.RJoy.X, 279 - 30 * ccp.RJoy.Y, 0, 0);

                if (_openJoyWindow != null && _calibrationTarget.StartsWith("ccp"))
                {
                    if (_calibrationTarget == App.CAL_CCP_LJOYSTICK)
                    {
                        _openJoyWindow.Update(ccp.LJoy);
                    }
                    else if (_calibrationTarget == App.CAL_CCP_RJOYSTICK)
                    {
                        _openJoyWindow.Update(ccp.RJoy);
                    }
                }
            }
        }
        public void UpdateVisual(INintrollerState state)
        {
            _lastState = state;
            if (state is Wiimote)
            {
                if (viewNunchuk.Visibility == Visibility.Visible)
                {
                    viewNunchuk.Visibility = Visibility.Collapsed;
                }
                if (viewClassicController.Visibility == Visibility.Visible)
                {
                    viewClassicController.Visibility = Visibility.Collapsed;
                }
                if (viewClassicControllerPro.Visibility == Visibility.Visible)
                {
                    viewClassicControllerPro.Visibility = Visibility.Collapsed;
                }
                if (viewGuitar.Visibility == Visibility.Visible)
                {
                    viewGuitar.Visibility = Visibility.Collapsed;
                }
                if (viewTaikoDrum.Visibility == Visibility.Visible)
                {
                    viewTaikoDrum.Visibility = Visibility.Collapsed;
                }

                UpdateWiimoteVisual((Wiimote)state);
            }
            else if (state is Nunchuk)
            {
                if (viewNunchuk.Visibility != Visibility.Visible)
                {
                    viewNunchuk.Visibility = Visibility.Visible;
                }
                if (viewClassicController.Visibility == Visibility.Visible)
                {
                    viewClassicController.Visibility = Visibility.Collapsed;
                }
                if (viewClassicControllerPro.Visibility == Visibility.Visible)
                {
                    viewClassicControllerPro.Visibility = Visibility.Collapsed;
                }
                if (viewGuitar.Visibility == Visibility.Visible)
                {
                    viewGuitar.Visibility = Visibility.Collapsed;
                }
                if (viewTaikoDrum.Visibility == Visibility.Visible)
                {
                    viewTaikoDrum.Visibility = Visibility.Collapsed;
                }

                var nun = (Nunchuk)state;
                UpdateWiimoteVisual(nun.wiimote);

                nBtnC.Opacity = nun.C ? 1 : 0;
                nBtnZ.Opacity = nun.Z ? 1 : 0;
                nJoy.Margin   = new Thickness(70 + 30 * nun.joystick.X, 360 - 30 * nun.joystick.Y, 0, 0);

                if (_openJoyWindow != null && _calibrationTarget == App.CAL_NUN_JOYSTICK)
                {
                    _openJoyWindow.Update(nun.joystick);
                }
            }
            else if (state is ClassicController)
            {
                if (viewNunchuk.Visibility == Visibility.Visible)
                {
                    viewNunchuk.Visibility = Visibility.Collapsed;
                }
                if (viewClassicController.Visibility != Visibility.Visible)
                {
                    viewClassicController.Visibility = Visibility.Visible;
                }
                if (viewClassicControllerPro.Visibility == Visibility.Visible)
                {
                    viewClassicControllerPro.Visibility = Visibility.Collapsed;
                }
                if (viewGuitar.Visibility == Visibility.Visible)
                {
                    viewGuitar.Visibility = Visibility.Collapsed;
                }
                if (viewTaikoDrum.Visibility == Visibility.Visible)
                {
                    viewTaikoDrum.Visibility = Visibility.Collapsed;
                }

                var cc = (ClassicController)state;
                UpdateWiimoteVisual(cc.wiimote);

                ccBtnA.Opacity      = cc.A ? 1 : 0;
                ccBtnB.Opacity      = cc.B ? 1 : 0;
                ccBtnX.Opacity      = cc.X ? 1 : 0;
                ccBtnY.Opacity      = cc.Y ? 1 : 0;
                ccBtnUp.Opacity     = cc.Up ? 1 : 0;
                ccBtnDown.Opacity   = cc.Down ? 1 : 0;
                ccBtnRight.Opacity  = cc.Right ? 1 : 0;
                ccBtnLeft.Opacity   = cc.Left ? 1 : 0;
                ccPadCenter.Opacity = cc.Up || cc.Down || cc.Left || cc.Right ? 1 : 0;
                ccBtnHome.Opacity   = cc.Home ? 1 : 0;
                ccBtnSelect.Opacity = cc.Select ? 1 : 0;
                ccBtnStart.Opacity  = cc.Start ? 1 : 0;
                ccBtnZL.Opacity     = cc.ZL ? 1 : 0;
                ccBtnZR.Opacity     = cc.ZR ? 1 : 0;
                ccL.Opacity         = cc.L.value > 0 ? 1 : 0;
                ccR.Opacity         = cc.R.value > 0 ? 1 : 0;
                ccLeftStick.Margin  = new Thickness(208 + 30 * cc.LJoy.X, 210 - 30 * cc.LJoy.Y, 0, 0);
                ccRightStick.Margin = new Thickness(364 + 30 * cc.RJoy.X, 210 - 30 * cc.RJoy.Y, 0, 0);

                if (_openJoyWindow != null && _calibrationTarget.StartsWith("cc"))
                {
                    if (_calibrationTarget == App.CAL_CC_LJOYSTICK)
                    {
                        _openJoyWindow.Update(cc.LJoy);
                    }
                    else if (_calibrationTarget == App.CAL_CC_RJOYSTICK)
                    {
                        _openJoyWindow.Update(cc.RJoy);
                    }
                }
                else if (_openTrigWindow != null && _calibrationTarget.StartsWith("cc"))
                {
                    if (_calibrationTarget == "ccLT")
                    {
                        _openTrigWindow.Update(cc.L);
                    }
                    else if (_calibrationTarget == "ccRT")
                    {
                        _openTrigWindow.Update(cc.R);
                    }
                }
            }
            else if (state is ClassicControllerPro)
            {
                if (viewNunchuk.Visibility == Visibility.Visible)
                {
                    viewNunchuk.Visibility = Visibility.Collapsed;
                }
                if (viewClassicController.Visibility == Visibility.Visible)
                {
                    viewClassicController.Visibility = Visibility.Collapsed;
                }
                if (viewClassicControllerPro.Visibility != Visibility.Visible)
                {
                    viewClassicControllerPro.Visibility = Visibility.Visible;
                }
                if (viewGuitar.Visibility == Visibility.Visible)
                {
                    viewGuitar.Visibility = Visibility.Collapsed;
                }
                if (viewTaikoDrum.Visibility == Visibility.Visible)
                {
                    viewTaikoDrum.Visibility = Visibility.Collapsed;
                }

                var ccp = (ClassicControllerPro)state;
                UpdateWiimoteVisual(ccp.wiimote);

                ccpBtnA.Opacity      = ccp.A ? 1 : 0;
                ccpBtnB.Opacity      = ccp.B ? 1 : 0;
                ccpBtnX.Opacity      = ccp.X ? 1 : 0;
                ccpBtnY.Opacity      = ccp.Y ? 1 : 0;
                ccpBtnUp.Opacity     = ccp.Up ? 1 : 0;
                ccpBtnDown.Opacity   = ccp.Down ? 1 : 0;
                ccpBtnRight.Opacity  = ccp.Right ? 1 : 0;
                ccpBtnLeft.Opacity   = ccp.Left ? 1 : 0;
                ccpPadCenter.Opacity = ccp.Up || ccp.Down || ccp.Left || ccp.Right ? 1 : 0;
                ccpBtnHome.Opacity   = ccp.Home ? 1 : 0;
                ccpBtnSelect.Opacity = ccp.Select ? 1 : 0;
                ccpBtnStart.Opacity  = ccp.Start ? 1 : 0;
                ccpBtnZL.Opacity     = ccp.ZL ? 1 : 0;
                ccpBtnZR.Opacity     = ccp.ZR ? 1 : 0;
                ccpBtnL.Opacity      = ccp.L ? 1 : 0;
                ccpBtnR.Opacity      = ccp.R ? 1 : 0;
                ccpLeftStick.Margin  = new Thickness(255 + 30 * ccp.LJoy.X, 279 - 30 * ccp.LJoy.Y, 0, 0);
                ccpRightStick.Margin = new Thickness(485 + 30 * ccp.RJoy.X, 279 - 30 * ccp.RJoy.Y, 0, 0);

                if (_openJoyWindow != null && _calibrationTarget.StartsWith("ccp"))
                {
                    if (_calibrationTarget == App.CAL_CCP_LJOYSTICK)
                    {
                        _openJoyWindow.Update(ccp.LJoy);
                    }
                    else if (_calibrationTarget == App.CAL_CCP_RJOYSTICK)
                    {
                        _openJoyWindow.Update(ccp.RJoy);
                    }
                }
            }
            else if (state is Guitar)
            {
                if (viewNunchuk.Visibility == Visibility.Visible)
                {
                    viewNunchuk.Visibility = Visibility.Collapsed;
                }
                if (viewClassicController.Visibility == Visibility.Visible)
                {
                    viewClassicController.Visibility = Visibility.Collapsed;
                }
                if (viewClassicControllerPro.Visibility == Visibility.Visible)
                {
                    viewClassicControllerPro.Visibility = Visibility.Collapsed;
                }
                if (viewGuitar.Visibility != Visibility.Visible)
                {
                    viewGuitar.Visibility = Visibility.Visible;
                }
                if (viewTaikoDrum.Visibility == Visibility.Visible)
                {
                    viewTaikoDrum.Visibility = Visibility.Collapsed;
                }

                var gut = (Guitar)state;
                UpdateWiimoteVisual(gut.wiimote);

                gBtnGreen.Opacity     = gut.Green ? 1 : 0;
                gBtnRed.Opacity       = gut.Red ? 1 : 0;
                gBtnYellow.Opacity    = gut.Yellow ? 1 : 0;
                gBtnBlue.Opacity      = gut.Blue ? 1 : 0;
                gBtnOrange.Opacity    = gut.Orange ? 1 : 0;
                gBtnStrumUp.Opacity   = gut.StrumUp ? 1 : 0;
                gBtnStrumDown.Opacity = gut.StrumDown ? 1 : 0;
                gBtnPlus.Opacity      = gut.Plus ? 1 : 0;
                gBtnMinus.Opacity     = gut.Minus ? 1 : 0;
                gTouch1.Opacity       = gut.T1 ? 1 : 0;
                gTouch2.Opacity       = gut.T2 ? 1 : 0;
                gTouch3.Opacity       = gut.T3 ? 1 : 0;
                gTouch4.Opacity       = gut.T4 ? 1 : 0;
                gTouch5.Opacity       = gut.T5 ? 1 : 0;
                gStick.Margin         = new Thickness(1236 + 30 * gut.joystick.X, 283 - 30 * gut.joystick.Y, 0, 0);
                gStick.Margin         = new Thickness(1236 + 30 * gut.joystick.X, 283 - 30 * gut.joystick.Y, 0, 0);
                gWhammy.Margin        = new Thickness(345 + 60 * gut.whammyBar.value, 815 - 20 * gut.whammyBar.value, 0, 0);

                if (_openJoyWindow != null && _calibrationTarget == App.CAL_GUT_JOYSTICK)
                {
                    _openJoyWindow.Update(gut.joystick);
                }
                else if (_openTrigWindow != null && _calibrationTarget == App.CAL_GUT_WHAMMY)
                {
                    _openTrigWindow.Update(gut.whammyBar);
                }
            }
            else if (state is TaikoDrum)
            {
                if (viewNunchuk.Visibility == Visibility.Visible)
                {
                    viewNunchuk.Visibility = Visibility.Collapsed;
                }
                if (viewClassicController.Visibility == Visibility.Visible)
                {
                    viewClassicController.Visibility = Visibility.Collapsed;
                }
                if (viewClassicControllerPro.Visibility == Visibility.Visible)
                {
                    viewClassicControllerPro.Visibility = Visibility.Collapsed;
                }
                if (viewGuitar.Visibility == Visibility.Visible)
                {
                    viewGuitar.Visibility = Visibility.Collapsed;
                }
                if (viewTaikoDrum.Visibility != Visibility.Visible)
                {
                    viewTaikoDrum.Visibility = Visibility.Visible;
                }

                var tak = (TaikoDrum)state;
                UpdateWiimoteVisual(tak.wiimote);

                takL.Fill      = tak.centerLeft ? System.Windows.Media.Brushes.Red : System.Windows.Media.Brushes.White;
                takR.Fill      = tak.centerRight ? System.Windows.Media.Brushes.Red : System.Windows.Media.Brushes.White;
                takRimL.Stroke = tak.rimLeft ? System.Windows.Media.Brushes.Blue : System.Windows.Media.Brushes.White;
                takRimR.Stroke = tak.rimRight ? System.Windows.Media.Brushes.Blue : System.Windows.Media.Brushes.White;
            }
        }