Example #1
0
        public void ShouldBuildIndexViewWithCustomersOrderByName()
        {
            ICustomerAdapter adapter = Substitute.For <ICustomerAdapter>();

            CustomerData[] customers = new CustomerData[]
            {
                new CustomerData()
                {
                    Name = "Gary"
                },
                new CustomerData()
                {
                    Name = "Louis"
                },
                new CustomerData()
                {
                    Name = "Bob"
                }
            };
            adapter.GetCustomers().Returns(customers);

            using (ClassicController controller = new ClassicController(adapter))
            {
                ActionResult result = controller.Index();

                adapter.Received().GetCustomers();

                CustomerData[] model    = ActionResultHelper.AssertViewWithModel <CustomerData[]>(result, controller.Views.Index);
                string[]       names    = model.Select(customer => customer.Name).ToArray();
                string[]       expected = new string[] { "Bob", "Gary", "Louis" };
                CollectionAssert.AreEqual(expected, names, "The customers were not ordered by name.");
            }
        }
Example #2
0
        private ClassicController ChangeCcBoolean(string property)
        {
            ClassicController cc = (ClassicController)Device.State;

            switch (property)
            {
            case INPUT_NAMES.CLASSIC_CONTROLLER.A: cc.A = !cc.A; break;

            case INPUT_NAMES.CLASSIC_CONTROLLER.B: cc.B = !cc.B; break;

            case INPUT_NAMES.CLASSIC_CONTROLLER.X: cc.X = !cc.X; break;

            case INPUT_NAMES.CLASSIC_CONTROLLER.Y: cc.Y = !cc.Y; break;

            case INPUT_NAMES.CLASSIC_CONTROLLER.ZL: cc.ZL = !cc.ZL; break;

            case INPUT_NAMES.CLASSIC_CONTROLLER.ZR: cc.ZR = !cc.ZR; break;

            case INPUT_NAMES.CLASSIC_CONTROLLER.UP: cc.Up = !cc.Up; break;

            case INPUT_NAMES.CLASSIC_CONTROLLER.DOWN: cc.Down = !cc.Down; break;

            case INPUT_NAMES.CLASSIC_CONTROLLER.LEFT: cc.Left = !cc.Left; break;

            case INPUT_NAMES.CLASSIC_CONTROLLER.RIGHT: cc.Right = !cc.Right; break;

            case INPUT_NAMES.CLASSIC_CONTROLLER.START: cc.Start = !cc.Start; break;

            case INPUT_NAMES.CLASSIC_CONTROLLER.SELECT: cc.Minus = !cc.Minus; break;

            case INPUT_NAMES.CLASSIC_CONTROLLER.HOME: cc.Home = !cc.Home; break;
            }

            return(cc);
        }
Example #3
0
        void Awake()
        {
            classicController = GetComponent <ClassicController>();

            gunStartPos  = GunCamera.transform.localPosition;
            viewStartPos = View.transform.localPosition;
        }
Example #4
0
 /// <summary>
 /// Default constructor setting all calibrations to their defaults.
 /// </summary>
 public CalibrationStorage()
 {
     ProCalibration        = Calibrations.Defaults.ProControllerDefault;
     WiimoteCalibration    = Calibrations.Defaults.WiimoteDefault;
     NunchukCalibration    = Calibrations.Defaults.NunchukDefault;
     ClassicCalibration    = Calibrations.Defaults.ClassicControllerDefault;
     ClassicProCalibration = Calibrations.Defaults.ClassicControllerProDefault;
 }
Example #5
0
        void Awake()
        {
            capsule      = GetComponent <CapsuleCollider>();
            p_Controller = GetComponent <ClassicController>();
            m_MouseLook.Init(transform, m_PlayerView);

            DontDestroyOnLoad(gameObject);
        }
 public void ConfigureClassicController(ClassicController cState)
 {
     cState.LJoy.rawX = (short)cState.LJoy.centerX;
     cState.LJoy.rawY = (short)cState.LJoy.centerY;
     cState.RJoy.rawX = (short)cState.RJoy.centerX;
     cState.RJoy.rawY = (short)cState.RJoy.centerY;
     State            = cState;
 }
Example #7
0
        public void ShouldBuildCreateViewWithNoModel()
        {
            ICustomerAdapter adapter = Substitute.For <ICustomerAdapter>();

            using (ClassicController controller = new ClassicController(adapter))
            {
                ActionResult result = controller.Create();

                ActionResultHelper.AssertView(result, controller.Views.Create);
            }
        }
Example #8
0
        public void ShouldCreateCustomerAndReturnToIndex()
        {
            ICustomerAdapter adapter = Substitute.For <ICustomerAdapter>();

            using (ClassicController controller = new ClassicController(adapter))
            {
                CustomerData data   = new CustomerData();
                ActionResult result = controller.Create(data);

                adapter.Received().AddCustomer(data);

                ActionResultHelper.AssertRedirected(result, controller.Name, controller.ActionNames.Index);
            }
        }
Example #9
0
        public void ShouldRedisplayViewWhenEditValidationFails()
        {
            ICustomerAdapter adapter = Substitute.For <ICustomerAdapter>();

            using (ClassicController controller = new ClassicController(adapter))
            {
                controller.ModelState.AddModelError("txtName", "You must provide a name for the customer.");

                CustomerData data   = new CustomerData();
                ActionResult result = controller.Edit(data);

                CustomerData model = ActionResultHelper.AssertViewWithModel <CustomerData>(result, controller.Views.Edit);
                Assert.AreSame(data, model, "The model was not passed to the view.");
            }
        }
Example #10
0
        public void ShouldRedisplayViewIfCreateValidationFails()
        {
            ICustomerAdapter adapter = Substitute.For <ICustomerAdapter>();

            using (ClassicController controller = new ClassicController(adapter))
            {
                controller.ModelState.AddModelError("txtName", "You must provide a customer name.");

                CustomerData data   = new CustomerData();
                ActionResult result = controller.Create(data);

                CustomerData model = ActionResultHelper.AssertViewWithModel <CustomerData>(result, controller.Views.Create);
                Assert.AreSame(data, model, "The customer data was not set as the model.");
            }
        }
        /// <summary>
        /// Default constructor setting all calibrations to their defaults.
        /// </summary>
        public CalibrationStorage()
        {
            ProCalibration        = Calibrations.Defaults.ProControllerDefault;
            WiimoteCalibration    = Calibrations.Defaults.WiimoteDefault;
            NunchukCalibration    = Calibrations.Defaults.NunchukDefault;
            ClassicCalibration    = Calibrations.Defaults.ClassicControllerDefault;
            ClassicProCalibration = Calibrations.Defaults.ClassicControllerProDefault;
            GuitarCalibration     = Calibrations.Defaults.GuitarDefault;

            GameCubeAdapterCalibration = new GameCubeAdapter(true)
            {
                port1 = Calibrations.Defaults.GameCubeControllerDefault,
                port2 = Calibrations.Defaults.GameCubeControllerDefault,
                port3 = Calibrations.Defaults.GameCubeControllerDefault,
                port4 = Calibrations.Defaults.GameCubeControllerDefault,
            };
        }
Example #12
0
        public void ShouldDeleteCustomerAndRedirectToIndex()
        {
            ICustomerAdapter adapter = Substitute.For <ICustomerAdapter>();

            using (ClassicController controller = new ClassicController(adapter))
            {
                CustomerData data = new CustomerData()
                {
                    CustomerId = Guid.NewGuid().ToString("N")
                };
                ActionResult result = controller.Delete(data);

                adapter.Received().RemoveCustomer(data.CustomerId);

                ActionResultHelper.AssertRedirected(result, controller.Name, controller.ActionNames.Index);
            }
        }
Example #13
0
        /// <summary>
        /// Sets calibrations based on a preset.
        /// </summary>
        /// <param name="preset"></param>
        public void SetCalibrations(Calibrations.CalibrationPreset preset)
        {
            switch (preset)
            {
            case Calibrations.CalibrationPreset.Default:
                ProCalibration        = Calibrations.Defaults.ProControllerDefault;
                WiimoteCalibration    = Calibrations.Defaults.WiimoteDefault;
                NunchukCalibration    = Calibrations.Defaults.NunchukDefault;
                ClassicCalibration    = Calibrations.Defaults.ClassicControllerDefault;
                ClassicProCalibration = Calibrations.Defaults.ClassicControllerProDefault;
                break;

            case Calibrations.CalibrationPreset.Modest:
                ProCalibration        = Calibrations.Moderate.ProControllerModest;
                WiimoteCalibration    = Calibrations.Moderate.WiimoteModest;
                NunchukCalibration    = Calibrations.Moderate.NunchukModest;
                ClassicCalibration    = Calibrations.Moderate.ClassicControllerModest;
                ClassicProCalibration = Calibrations.Moderate.ClassicControllerProModest;
                break;

            case Calibrations.CalibrationPreset.Extra:
                ProCalibration        = Calibrations.Extras.ProControllerExtra;
                WiimoteCalibration    = Calibrations.Extras.WiimoteExtra;
                NunchukCalibration    = Calibrations.Extras.NunchukExtra;
                ClassicCalibration    = Calibrations.Extras.ClassicControllerExtra;
                ClassicProCalibration = Calibrations.Extras.ClassicControllerProExtra;
                break;

            case Calibrations.CalibrationPreset.Minimum:
                ProCalibration        = Calibrations.Minimum.ProControllerMinimal;
                WiimoteCalibration    = Calibrations.Minimum.WiimoteMinimal;
                NunchukCalibration    = Calibrations.Minimum.NunchukMinimal;
                ClassicCalibration    = Calibrations.Minimum.ClassicControllerMinimal;
                ClassicProCalibration = Calibrations.Minimum.ClassicControllerProMinimal;
                break;

            case Calibrations.CalibrationPreset.None:
                ProCalibration        = Calibrations.None.ProControllerRaw;
                WiimoteCalibration    = Calibrations.None.WiimoteRaw;
                NunchukCalibration    = Calibrations.None.NunchukRaw;
                ClassicCalibration    = Calibrations.None.ClassicControllerRaw;
                ClassicProCalibration = Calibrations.None.ClassicControllerProRaw;
                break;
            }
        }
Example #14
0
        public void ShouldRetrieveCustomerForDelete()
        {
            ICustomerAdapter adapter = Substitute.For <ICustomerAdapter>();
            CustomerData     data    = new CustomerData();

            adapter.GetCustomer(Arg.Any <string>()).Returns(data);

            using (ClassicController controller = new ClassicController(adapter))
            {
                string       customerId = Guid.NewGuid().ToString("N");
                ActionResult result     = controller.Delete(customerId);

                CustomerData model = ActionResultHelper.AssertViewWithModel <CustomerData>(result, controller.Views.Delete);

                adapter.Received().GetCustomer(customerId);

                Assert.AreSame(data, model, "The customer data was not passed to the view.");
            }
        }
Example #15
0
        private ClassicController ChangeCcAnalog(string property, float value)
        {
            ClassicController cc = (ClassicController)Device.State;

            switch (property)
            {
            case INPUT_NAMES.CLASSIC_CONTROLLER.LX:
                cc.LJoy.X    = value;
                cc.LJoy.rawX = CalculateRaw(cc.LJoy.minX, cc.LJoy.maxX, value);
                break;

            case INPUT_NAMES.CLASSIC_CONTROLLER.LY:
                cc.LJoy.Y    = value;
                cc.LJoy.rawY = CalculateRaw(cc.LJoy.minY, cc.LJoy.maxY, value);
                break;

            case INPUT_NAMES.CLASSIC_CONTROLLER.RX:
                cc.RJoy.X    = value;
                cc.RJoy.rawX = CalculateRaw(cc.RJoy.minX, cc.RJoy.maxX, value);
                break;

            case INPUT_NAMES.CLASSIC_CONTROLLER.RY:
                cc.RJoy.Y    = value;
                cc.RJoy.rawY = CalculateRaw(cc.RJoy.minY, cc.RJoy.maxY, value);
                break;

            case INPUT_NAMES.CLASSIC_CONTROLLER.LT:
                cc.L.value    = value;
                cc.L.rawValue = (short)((cc.L.max - cc.L.min) * value);
                break;

            case INPUT_NAMES.CLASSIC_CONTROLLER.RT:
                cc.R.value    = value;
                cc.R.rawValue = (short)((cc.R.max - cc.R.min) * value);
                break;
            }

            return(cc);
        }
        public void ChangeExtension(ControllerType type)
        {
            if (DeviceType == type)
            {
                return;
            }

            switch (type)
            {
            case ControllerType.Wiimote:
                if (State is IWiimoteExtension)
                {
                    ConfigureWiimote(((IWiimoteExtension)State).wiimote);
                }
                else
                {
                    ConfigureWiimote(new Wiimote());
                }
                break;

            case ControllerType.Nunchuk:
            case ControllerType.NunchukB:
                var nState = new Nunchuk();
                nState.SetCalibration(Calibrations.CalibrationPreset.Default);
                ConfigureNunchuk(nState);
                ConfigureWiimote(nState.wiimote);
                break;

            case ControllerType.ClassicController:
                var cState = new ClassicController();
                cState.SetCalibration(Calibrations.CalibrationPreset.Default);
                ConfigureClassicController(cState);
                ConfigureWiimote(cState.wiimote);
                break;

            case ControllerType.ClassicControllerPro:
                var ccpState = new ClassicControllerPro();
                ccpState.SetCalibration(Calibrations.CalibrationPreset.Default);
                ConfigureClassicControllerPro(ccpState);
                ConfigureWiimote(ccpState.wiimote);
                break;

            case ControllerType.Guitar:
                var guitar = new Guitar();
                guitar.SetCalibration(Calibrations.CalibrationPreset.Default);
                ConfigureGuitar(guitar);
                ConfigureWiimote(guitar.wiimote);
                break;

            case ControllerType.TaikoDrum:
                var takio = new TaikoDrum();
                takio.SetCalibration(Calibrations.CalibrationPreset.Default);     // for wiimote
                ConfigureWiimote(takio.wiimote);
                break;

            default:
                // Invalid
                return;
            }

            DeviceType = type;
            _nextQueue.Enqueue(InputReport.Status);
        }
        /// <summary>
        /// Sets calibrations based on a preset.
        /// </summary>
        /// <param name="preset"></param>
        public void SetCalibrations(Calibrations.CalibrationPreset preset)
        {
            switch (preset)
            {
            case Calibrations.CalibrationPreset.Default:
                ProCalibration             = Calibrations.Defaults.ProControllerDefault;
                WiimoteCalibration         = Calibrations.Defaults.WiimoteDefault;
                NunchukCalibration         = Calibrations.Defaults.NunchukDefault;
                ClassicCalibration         = Calibrations.Defaults.ClassicControllerDefault;
                ClassicProCalibration      = Calibrations.Defaults.ClassicControllerProDefault;
                GuitarCalibration          = Calibrations.Defaults.GuitarDefault;
                GameCubeAdapterCalibration = new GameCubeAdapter(true)
                {
                    port1 = Calibrations.Defaults.GameCubeControllerDefault,
                    port2 = Calibrations.Defaults.GameCubeControllerDefault,
                    port3 = Calibrations.Defaults.GameCubeControllerDefault,
                    port4 = Calibrations.Defaults.GameCubeControllerDefault,
                };
                break;

            case Calibrations.CalibrationPreset.Modest:
                ProCalibration             = Calibrations.Moderate.ProControllerModest;
                WiimoteCalibration         = Calibrations.Moderate.WiimoteModest;
                NunchukCalibration         = Calibrations.Moderate.NunchukModest;
                ClassicCalibration         = Calibrations.Moderate.ClassicControllerModest;
                ClassicProCalibration      = Calibrations.Moderate.ClassicControllerProModest;
                GuitarCalibration          = Calibrations.Moderate.GuitarModest;
                GameCubeAdapterCalibration = new GameCubeAdapter(true)
                {
                    port1 = Calibrations.Moderate.GameCubeControllerModest,
                    port2 = Calibrations.Moderate.GameCubeControllerModest,
                    port3 = Calibrations.Moderate.GameCubeControllerModest,
                    port4 = Calibrations.Moderate.GameCubeControllerModest,
                };
                break;

            case Calibrations.CalibrationPreset.Extra:
                ProCalibration             = Calibrations.Extras.ProControllerExtra;
                WiimoteCalibration         = Calibrations.Extras.WiimoteExtra;
                NunchukCalibration         = Calibrations.Extras.NunchukExtra;
                ClassicCalibration         = Calibrations.Extras.ClassicControllerExtra;
                ClassicProCalibration      = Calibrations.Extras.ClassicControllerProExtra;
                GuitarCalibration          = Calibrations.Extras.GuitarExtra;
                GameCubeAdapterCalibration = new GameCubeAdapter(true)
                {
                    port1 = Calibrations.Extras.GameCubeControllerExtra,
                    port2 = Calibrations.Extras.GameCubeControllerExtra,
                    port3 = Calibrations.Extras.GameCubeControllerExtra,
                    port4 = Calibrations.Extras.GameCubeControllerExtra,
                };
                break;

            case Calibrations.CalibrationPreset.Minimum:
                ProCalibration             = Calibrations.Minimum.ProControllerMinimal;
                WiimoteCalibration         = Calibrations.Minimum.WiimoteMinimal;
                NunchukCalibration         = Calibrations.Minimum.NunchukMinimal;
                ClassicCalibration         = Calibrations.Minimum.ClassicControllerMinimal;
                ClassicProCalibration      = Calibrations.Minimum.ClassicControllerProMinimal;
                GuitarCalibration          = Calibrations.Minimum.GuitarMinimal;
                GameCubeAdapterCalibration = new GameCubeAdapter(true)
                {
                    port1 = Calibrations.Minimum.GameCubeControllerMinimal,
                    port2 = Calibrations.Minimum.GameCubeControllerMinimal,
                    port3 = Calibrations.Minimum.GameCubeControllerMinimal,
                    port4 = Calibrations.Minimum.GameCubeControllerMinimal,
                };
                break;

            case Calibrations.CalibrationPreset.None:
                ProCalibration             = Calibrations.None.ProControllerRaw;
                WiimoteCalibration         = Calibrations.None.WiimoteRaw;
                NunchukCalibration         = Calibrations.None.NunchukRaw;
                ClassicCalibration         = Calibrations.None.ClassicControllerRaw;
                ClassicProCalibration      = Calibrations.None.ClassicControllerProRaw;
                GuitarCalibration          = Calibrations.None.GuitarRaw;
                GameCubeAdapterCalibration = new GameCubeAdapter(true)
                {
                    port1 = Calibrations.None.GameCubeControllerRaw,
                    port2 = Calibrations.None.GameCubeControllerRaw,
                    port3 = Calibrations.None.GameCubeControllerRaw,
                    port4 = Calibrations.None.GameCubeControllerRaw,
                };
                break;
            }
        }
Example #18
0
        void device_StateChange(object sender, NintrollerStateEventArgs e)
        {
            // Makes the timer wait
            if (updateTimer != null)
            {
                updateTimer.Change(1000, UPDATE_SPEED);
            }

            if (holder == null)
            {
                return;
            }

//            float intensity = 0;
//            if (holder.Values.TryGetValue(Inputs.Flags.RUMBLE, out intensity))
//            {
//                rumbleAmount = (int)intensity;
            RumbleStep();
//            }

            holder.ClearAllValues();

            switch (e.controllerType)
            {
            // TODO: Motion Plus Reading (not for 1st release)
            // TODO: Balance Board Reading (not for 1st release)
            // TODO: Musical Extension readings (not for 1st release)
            case ControllerType.ProController:
                #region Pro Controller
                ProController pro = (ProController)e.state;

                holder.SetValue(Inputs.ProController.A, pro.A);
                holder.SetValue(Inputs.ProController.B, pro.B);
                holder.SetValue(Inputs.ProController.X, pro.X);
                holder.SetValue(Inputs.ProController.Y, pro.Y);

                holder.SetValue(Inputs.ProController.UP, pro.Up);
                holder.SetValue(Inputs.ProController.DOWN, pro.Down);
                holder.SetValue(Inputs.ProController.LEFT, pro.Left);
                holder.SetValue(Inputs.ProController.RIGHT, pro.Right);

                holder.SetValue(Inputs.ProController.L, pro.L);
                holder.SetValue(Inputs.ProController.R, pro.R);
                holder.SetValue(Inputs.ProController.ZL, pro.ZL);
                holder.SetValue(Inputs.ProController.ZR, pro.ZR);

                holder.SetValue(Inputs.ProController.START, pro.Plus);
                holder.SetValue(Inputs.ProController.SELECT, pro.Minus);
                holder.SetValue(Inputs.ProController.HOME, pro.Home);
                holder.SetValue(Inputs.ProController.LS, pro.LStick);
                holder.SetValue(Inputs.ProController.RS, pro.RStick);

                holder.SetValue(Inputs.ProController.LRIGHT, pro.LJoy.X > 0 ? pro.LJoy.X : 0f);
                holder.SetValue(Inputs.ProController.LLEFT, pro.LJoy.X < 0 ? pro.LJoy.X * -1 : 0f);
                holder.SetValue(Inputs.ProController.LUP, pro.LJoy.Y > 0 ? pro.LJoy.Y : 0f);
                holder.SetValue(Inputs.ProController.LDOWN, pro.LJoy.Y < 0 ? pro.LJoy.Y * -1 : 0f);

                holder.SetValue(Inputs.ProController.RRIGHT, pro.RJoy.X > 0 ? pro.RJoy.X : 0f);
                holder.SetValue(Inputs.ProController.RLEFT, pro.RJoy.X < 0 ? pro.RJoy.X * -1 : 0f);
                holder.SetValue(Inputs.ProController.RUP, pro.RJoy.Y > 0 ? pro.RJoy.Y : 0f);
                holder.SetValue(Inputs.ProController.RDOWN, pro.RJoy.Y < 0 ? pro.RJoy.Y * -1 : 0f);
                #endregion
                break;

            case ControllerType.Wiimote:
                Wiimote wm = (Wiimote)e.state;
                SetWiimoteInputs(wm);
                break;

            case ControllerType.Nunchuk:
            case ControllerType.NunchukB:
                #region Nunchuk
                Nunchuk nun = (Nunchuk)e.state;

                SetWiimoteInputs(nun.wiimote);

                holder.SetValue(Inputs.Nunchuk.C, nun.C);
                holder.SetValue(Inputs.Nunchuk.Z, nun.Z);

                holder.SetValue(Inputs.Nunchuk.RIGHT, nun.joystick.X > 0 ? nun.joystick.X : 0f);
                holder.SetValue(Inputs.Nunchuk.LEFT, nun.joystick.X < 0 ? nun.joystick.X * -1 : 0f);
                holder.SetValue(Inputs.Nunchuk.UP, nun.joystick.Y > 0 ? nun.joystick.Y : 0f);
                holder.SetValue(Inputs.Nunchuk.DOWN, nun.joystick.Y < 0 ? nun.joystick.Y * -1 : 0f);

                //TODO: Nunchuk Accelerometer (not for 1st release)
                holder.SetValue(Inputs.Nunchuk.TILT_RIGHT, nun.accelerometer.X > 0 ? nun.accelerometer.X : 0f);
                holder.SetValue(Inputs.Nunchuk.TILT_LEFT, nun.accelerometer.X < 0 ? nun.accelerometer.X * -1 : 0f);
                holder.SetValue(Inputs.Nunchuk.TILT_UP, nun.accelerometer.Y > 0 ? nun.accelerometer.Y : 0f);
                holder.SetValue(Inputs.Nunchuk.TILT_DOWN, nun.accelerometer.Y < 0 ? nun.accelerometer.Y * -1 : 0f);

                holder.SetValue(Inputs.Nunchuk.ACC_SHAKE_X, nun.accelerometer.X > 1.15f);
                holder.SetValue(Inputs.Nunchuk.ACC_SHAKE_Y, nun.accelerometer.Y > 1.15f);
                holder.SetValue(Inputs.Nunchuk.ACC_SHAKE_Z, nun.accelerometer.Z > 1.15f);
                #endregion
                break;

            case ControllerType.ClassicController:
                #region Classic Controller
                ClassicController cc = (ClassicController)e.state;

                SetWiimoteInputs(cc.wiimote);

                holder.SetValue(Inputs.ClassicController.A, cc.A);
                holder.SetValue(Inputs.ClassicController.B, cc.B);
                holder.SetValue(Inputs.ClassicController.X, cc.X);
                holder.SetValue(Inputs.ClassicController.Y, cc.Y);

                holder.SetValue(Inputs.ClassicController.UP, cc.Up);
                holder.SetValue(Inputs.ClassicController.DOWN, cc.Down);
                holder.SetValue(Inputs.ClassicController.LEFT, cc.Left);
                holder.SetValue(Inputs.ClassicController.RIGHT, cc.Right);

                holder.SetValue(Inputs.ClassicController.L, cc.L.value > 0);
                holder.SetValue(Inputs.ClassicController.R, cc.R.value > 0);
                holder.SetValue(Inputs.ClassicController.ZL, cc.ZL);
                holder.SetValue(Inputs.ClassicController.ZR, cc.ZR);

                holder.SetValue(Inputs.ClassicController.START, cc.Start);
                holder.SetValue(Inputs.ClassicController.SELECT, cc.Select);
                holder.SetValue(Inputs.ClassicController.HOME, cc.Home);

                holder.SetValue(Inputs.ClassicController.LFULL, cc.LFull);
                holder.SetValue(Inputs.ClassicController.RFULL, cc.RFull);
                holder.SetValue(Inputs.ClassicController.LT, cc.L.value > 0.1f ? cc.L.value : 0f);
                holder.SetValue(Inputs.ClassicController.RT, cc.R.value > 0.1f ? cc.R.value : 0f);

                holder.SetValue(Inputs.ClassicController.LRIGHT, cc.LJoy.X > 0 ? cc.LJoy.X : 0f);
                holder.SetValue(Inputs.ClassicController.LLEFT, cc.LJoy.X < 0 ? cc.LJoy.X * -1 : 0f);
                holder.SetValue(Inputs.ClassicController.LUP, cc.LJoy.Y > 0 ? cc.LJoy.Y : 0f);
                holder.SetValue(Inputs.ClassicController.LDOWN, cc.LJoy.Y < 0 ? cc.LJoy.Y * -1 : 0f);

                holder.SetValue(Inputs.ClassicController.RRIGHT, cc.RJoy.X > 0 ? cc.RJoy.X : 0f);
                holder.SetValue(Inputs.ClassicController.RLEFT, cc.RJoy.X < 0 ? cc.RJoy.X * -1 : 0f);
                holder.SetValue(Inputs.ClassicController.RUP, cc.RJoy.Y > 0 ? cc.RJoy.Y : 0f);
                holder.SetValue(Inputs.ClassicController.RDOWN, cc.RJoy.Y < 0 ? cc.RJoy.Y * -1 : 0f);
                #endregion
                break;

            case ControllerType.ClassicControllerPro:
                #region Classic Controller Pro
                ClassicControllerPro ccp = (ClassicControllerPro)e.state;

                SetWiimoteInputs(ccp.wiimote);

                holder.SetValue(Inputs.ClassicControllerPro.A, ccp.A);
                holder.SetValue(Inputs.ClassicControllerPro.B, ccp.B);
                holder.SetValue(Inputs.ClassicControllerPro.X, ccp.X);
                holder.SetValue(Inputs.ClassicControllerPro.Y, ccp.Y);

                holder.SetValue(Inputs.ClassicControllerPro.UP, ccp.Up);
                holder.SetValue(Inputs.ClassicControllerPro.DOWN, ccp.Down);
                holder.SetValue(Inputs.ClassicControllerPro.LEFT, ccp.Left);
                holder.SetValue(Inputs.ClassicControllerPro.RIGHT, ccp.Right);

                holder.SetValue(Inputs.ClassicControllerPro.L, ccp.L);
                holder.SetValue(Inputs.ClassicControllerPro.R, ccp.R);
                holder.SetValue(Inputs.ClassicControllerPro.ZL, ccp.ZL);
                holder.SetValue(Inputs.ClassicControllerPro.ZR, ccp.ZR);

                holder.SetValue(Inputs.ClassicControllerPro.START, ccp.Start);
                holder.SetValue(Inputs.ClassicControllerPro.SELECT, ccp.Select);
                holder.SetValue(Inputs.ClassicControllerPro.HOME, ccp.Home);

                holder.SetValue(Inputs.ClassicControllerPro.LRIGHT, ccp.LJoy.X > 0 ? ccp.LJoy.X : 0f);
                holder.SetValue(Inputs.ClassicControllerPro.LLEFT, ccp.LJoy.X < 0 ? ccp.LJoy.X * -1 : 0f);
                holder.SetValue(Inputs.ClassicControllerPro.LUP, ccp.LJoy.Y > 0 ? ccp.LJoy.Y : 0f);
                holder.SetValue(Inputs.ClassicControllerPro.LDOWN, ccp.LJoy.Y < 0 ? ccp.LJoy.Y * -1 : 0f);

                holder.SetValue(Inputs.ClassicControllerPro.RRIGHT, ccp.RJoy.X > 0 ? ccp.RJoy.X : 0f);
                holder.SetValue(Inputs.ClassicControllerPro.RLEFT, ccp.RJoy.X < 0 ? ccp.RJoy.X * -1 : 0f);
                holder.SetValue(Inputs.ClassicControllerPro.RUP, ccp.RJoy.Y > 0 ? ccp.RJoy.Y : 0f);
                holder.SetValue(Inputs.ClassicControllerPro.RDOWN, ccp.RJoy.Y < 0 ? ccp.RJoy.Y * -1 : 0f);
                #endregion
                break;
            }

            holder.Update();

            // Resumes the timer in case this method is not called withing 100ms
            if (updateTimer != null)
            {
                updateTimer.Change(100, UPDATE_SPEED);
            }
        }