예제 #1
0
 public void HideAllExcept(PanelToggleButton panelButton)
 {
     foreach (var pb in PanelButtons.Where(x => x != panelButton))
     {
         pb.Panel.gameObject.SetActive(false);
     }
 }
예제 #2
0
 /// <summary>
 /// Processes the panel button press.
 /// </summary>
 /// <param name="e">The <see cref="LaJust.PowerMeter.Communications.Hardware.DataPacketReceivedEventArgs"/> instance containing the event data.</param>
 private void Publish_PanelButtonPress(byte ButtonCode)
 {
     PanelButtons panelButton = (PanelButtons)ButtonCode;
     Trace.TraceInformation("{0}.Process_PanelButtonPress: Keypad Button={1}", CLASSNAME, panelButton);
     ThreadPool.QueueUserWorkItem(delegate
     {
         OnPanelButtonPressed(new PanelButtonEventData() { 
             Receiver = this, Button = panelButton } );
     });
 }
예제 #3
0
        /// <summary>
        /// Handles the PanelButtonPressed event of the Receiver control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="LaJust.PowerMeter.Communications.PanelButtonEventArgs"/> instance containing the event data.</param>
        private void Receiver_PanelButtonPressed(object sender, PanelButtonEventData e)
        {
            IReceiver    receiver = e.Receiver;
            PanelButtons button   = e.Button;

            // Used to keep monitor from going into suspend when we have receiver activity
            Helpers.ActivitySimulator.MoveMouse();

            _logger.Log("Publishing receiver button pushed event to EventAggregator", Category.Info, Priority.Low);
            _eventAggregator.GetEvent <ReceiverEvents.ButtonPressed>().Publish(
                (ReceiverEvents.PanelButtons)Enum.Parse(typeof(ReceiverEvents.PanelButtons), button.ToString(), true));


            // FIXME: Move this code to the game engine module
            bool contactSensorRequired = _config.ContactSensorRequired;

            if (button == PanelButtons.ChungRegister)
            {
                receiver.RegisterDevice(new RegistrationSettings()
                {
                    TouchSensorMode = contactSensorRequired ? TouchSensorStatusEnum.Required : TouchSensorStatusEnum.NotRequired,
                    OpCode          = OpCodeCmds.RegisterChung,
                    GameNumber      = 1,
                    MinimumPressure = 10
                });
            }
            else if (button == PanelButtons.HongRegister)
            {
                receiver.RegisterDevice(new RegistrationSettings()
                {
                    TouchSensorMode = contactSensorRequired ? TouchSensorStatusEnum.Required : TouchSensorStatusEnum.NotRequired,
                    OpCode          = OpCodeCmds.RegisterHong,
                    GameNumber      = 1,
                    MinimumPressure = 10
                });
            }
            else if (button == PanelButtons.HongWin) // Temporary code
            {
                receiver.RegisterDevice(new RegistrationSettings()
                {
                    TouchSensorMode = contactSensorRequired ? TouchSensorStatusEnum.Required : TouchSensorStatusEnum.NotRequired,
                    OpCode          = OpCodeCmds.RegisterTarget,
                    GameNumber      = 1,
                    MinimumPressure = 10
                });
            }
        }
예제 #4
0
        /// <summary>
        /// Called when a button is pressed on the receiver.
        /// </summary>
        /// <param name="button">The receiver button pressed.</param>
        protected void OnReceiverButtonPress(PanelButtons button)
        {
            switch (button)
            {
            case PanelButtons.Start:
                if (!this.StopWatchService.IsRunning)
                {
                    this.StopWatchService.StartCountDown();
                }
                break;

            case PanelButtons.Clocking:
                if (this.StopWatchService.IsRunning)
                {
                    this.StopWatchService.PauseCountDown();
                }
                else
                {
                    this.StopWatchService.Duration = this.AppConfigService.Settings.RoundDuration;
                    this.ScoreKeeperService.ResetScores();
                }

                break;

            case PanelButtons.ChungRegister:
            case PanelButtons.HongRegister:
                this.registerDeviceRequest.Publish(new RegistrationSettings()
                {
                    GameNumber      = 1,
                    MinimumPressure = 30,
                    OperationCode   = (button == PanelButtons.ChungRegister) ? OpCodeCmds.RegisterChung : OpCodeCmds.RegisterHong,
                    TouchSensorMode = this.AppConfigService.Settings.ContactSensorRequired ? TouchSensorStatusEnum.Required : TouchSensorStatusEnum.NotRequired
                });
                break;

            case PanelButtons.HongWin:
                this.registerDeviceRequest.Publish(new RegistrationSettings()
                {
                    GameNumber      = 1,
                    MinimumPressure = 30,
                    OperationCode   = OpCodeCmds.RegisterTarget,
                    TouchSensorMode = this.AppConfigService.Settings.ContactSensorRequired ? TouchSensorStatusEnum.Required : TouchSensorStatusEnum.NotRequired
                });
                break;
            }
            this.RefreshToolbar();
        }
예제 #5
0
파일: RIOT.cs 프로젝트: asterick/cstari
        public RIOT(Controller CtrlA, Controller CtrlB)
        {
            m_Clocks = 0xCD;                                    // Riot gains a random start position
            m_Timer  = 0x7FFF;                                  // Timer is reset

            m_DDRA = 0x00;                                      // Initially, everything is a read
            m_DDRB = 0x00;                                      // ONLY HOLDS DATA!  This might also mask data
            m_OUTA = 0x00;                                      // Only A allows output
            m_OUTB = 0x00;                                      // THIS MIGHT BE DEPRECIATED, since the port is read only

            m_IRQ    = 0x00;                                    // No events have occured, but they could later
            m_Edge   = 0;                                       // Interrupt occurs on a negitive edge
            m_Shift  = 10;                                      // There is no inverval shift
            m_Clocks = 0;                                       // RIOT Timing

            m_Panel = PanelButtons.Reset | PanelButtons.Color | PanelButtons.Select;

            m_CtrlA = CtrlA;                                    // Start off with dummy controllers, these do nothing
            m_CtrlB = CtrlB;                                    // but return OFF states, only player one gets an IRQ
        }
예제 #6
0
        /// <summary>
        /// Called when a button is pressed on the receiver.
        /// </summary>
        /// <param name="button">The receiver button pressed.</param>
        protected void OnReceiverButtonPress(PanelButtons button)
        {
            switch (button)
            {
                case PanelButtons.Start:
                    if (!this.StopWatchService.IsRunning)
                    {
                        this.StopWatchService.StartCountDown();
                    }
                    break;

                case PanelButtons.Clocking:
                    if (this.StopWatchService.IsRunning)
                    {
                        this.StopWatchService.PauseCountDown();
                    }
                    else
                    {
                        this.StopWatchService.Duration = this.AppConfigService.Settings.RoundDuration;
                        this.ScoreKeeperService.ResetScores();
                    }

                    break;

                case PanelButtons.ChungRegister:
                case PanelButtons.HongRegister:
                    this.registerDeviceRequest.Publish(new RegistrationSettings()
                    {
                        GameNumber = 1,
                        MinimumPressure = 30,
                        OperationCode = (button == PanelButtons.ChungRegister) ? OpCodeCmds.RegisterChung : OpCodeCmds.RegisterHong,
                        TouchSensorMode = this.AppConfigService.Settings.ContactSensorRequired ? TouchSensorStatusEnum.Required : TouchSensorStatusEnum.NotRequired
                    });
                    break;

                case PanelButtons.HongWin:
                    this.registerDeviceRequest.Publish(new RegistrationSettings()
                    {
                        GameNumber = 1,
                        MinimumPressure = 30,
                        OperationCode = OpCodeCmds.RegisterTarget,
                        TouchSensorMode = this.AppConfigService.Settings.ContactSensorRequired ? TouchSensorStatusEnum.Required : TouchSensorStatusEnum.NotRequired
                    });
                    break;
            }
            this.RefreshToolbar();
        }
예제 #7
0
 private GameObject GetCurrentActivePanel()
 {
     return(PanelButtons.Select(p => p.Panel)
            .FirstOrDefault(p => p.activeSelf));
 }
예제 #8
0
파일: RIOT.cs 프로젝트: asterick/cstari
 public void AlterPanel(PanelButtons toggle, PanelButtons release, PanelButtons press)
 {
     m_Panel ^= toggle;
     m_Panel |= release;
     m_Panel &= ~press;
 }