Пример #1
0
        private bool _GetFirstConfiguredWebcamDevice(out int device, out int capabilities)
        {
            SWebcamDevice[] devices = CWebcam.GetDevices();

            if (devices == null)
            {
                device       = -1;
                capabilities = -1;
                return(false);
            }
            SWebcamConfig curConfig = CConfig.Config.Video.WebcamConfig.HasValue ? CConfig.Config.Video.WebcamConfig.Value : new SWebcamConfig();

            for (int i = 0; i < devices.Length; i++)
            {
                if (devices[i].MonikerString != curConfig.MonikerString)
                {
                    continue;
                }
                for (int j = 0; j < devices[i].Capabilities.Count; j++)
                {
                    if (devices[i].Capabilities[j].Framerate == curConfig.Framerate &&
                        devices[i].Capabilities[j].Width == curConfig.Width &&
                        devices[i].Capabilities[j].Height == curConfig.Height)
                    {
                        device       = i;
                        capabilities = j;
                        return(true);
                    }
                }
            }
            device       = 0;
            capabilities = 0;
            return(true);
        }
Пример #2
0
        private void GetFirstConfiguredWebcamDevice(ref int Device, ref int Capabilities)
        {
            SWebcamDevice[] devices = CWebcam.GetDevices();

            if (devices == null)
            {
                return;
            }

            for (int i = 0; i < devices.Length; i++)
            {
                if (devices[i].MonikerString == CConfig.WebcamConfig.MonikerString)
                {
                    for (int j = 0; j < devices[i].Capabilities.Count; j++)
                    {
                        if (devices[i].Capabilities[j].Framerate == CConfig.WebcamConfig.Framerate && devices[i].Capabilities[j].Width == CConfig.WebcamConfig.Width && devices[i].Capabilities[j].Height == CConfig.WebcamConfig.Height)
                        {
                            Device       = i;
                            Capabilities = j;
                            return;
                        }
                    }
                }
            }
        }
Пример #3
0
        private void OnDeviceEvent()
        {
            if (SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection != _DeviceNr)
            {
                SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Clear();
                _DeviceNr     = SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection;
                _CapabilityNr = 0;

                SWebcamDevice[] d = CWebcam.GetDevices();
                for (int i = 0; i < d[SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection].Capabilities.Count; i++)
                {
                    SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].AddValue(d[_DeviceNr].Capabilities[i].Width.ToString() + " x " + d[_DeviceNr].Capabilities[i].Height.ToString() + " @ " + d[_DeviceNr].Capabilities[i].Framerate.ToString() + "FPS");
                }
                SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Selection = 0;

                _Config.MonikerString = d[SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection].MonikerString;
                _Config.Width         = d[SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection].Capabilities[SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Selection].Width;
                _Config.Height        = d[SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection].Capabilities[SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Selection].Height;
                _Config.Framerate     = d[SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection].Capabilities[SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Selection].Framerate;

                CWebcam.Close();
                CWebcam.Select(_Config);
                CWebcam.Start();
            }
        }
Пример #4
0
        private void _OnDeviceEvent()
        {
            if (_SelectSlides[_SelectSlideWebcamDevices].Selection != _DeviceNr)
            {
                _SelectSlides[_SelectSlideWebcamCapabilities].Clear();
                _DeviceNr = _SelectSlides[_SelectSlideWebcamDevices].Selection;

                SWebcamDevice d = CWebcam.GetDevices()[_DeviceNr];
                for (int i = 0; i < d.Capabilities.Count; i++)
                {
                    _SelectSlides[_SelectSlideWebcamCapabilities].AddValue(d.Capabilities[i].Width + " x " + d.Capabilities[i].Height +
                                                                           " @ " + d.Capabilities[i].Framerate + "FPS");
                }
                _CapabilityNr = -1;
                _OnCapabilitiesEvent();
            }
        }
Пример #5
0
        public override void OnShow()
        {
            base.OnShow();
            _SelectSlides[_SelectSlideWebcamDevices].Clear();
            _SelectSlides[_SelectSlideWebcamCapabilities].Clear();

            _DeviceNr     = -1;
            _CapabilityNr = -1;

            SWebcamDevice[] devices = CWebcam.GetDevices();

            bool ssVisible = false;

            try
            {
                if (devices != null && devices.Length > 0)
                {
                    foreach (SWebcamDevice d in devices)
                    {
                        _SelectSlides[_SelectSlideWebcamDevices].AddValue(d.Name);
                    }

                    int devNr;
                    int capNr;
                    if (_GetFirstConfiguredWebcamDevice(out devNr, out capNr))
                    {
                        _SelectSlides[_SelectSlideWebcamDevices].Selection = devNr;
                        _OnDeviceEvent();
                        _SelectSlides[_SelectSlideWebcamCapabilities].Selection = capNr;
                        _OnCapabilitiesEvent();

                        ssVisible = true;
                    }
                }
            }
            catch (Exception e)
            {
                CLog.LogError("Error on listing webcam capabilities: " + e.Message);
            }

            _SelectSlides[_SelectSlideWebcamDevices].Visible      = ssVisible;
            _SelectSlides[_SelectSlideWebcamCapabilities].Visible = ssVisible;
            _Statics[_StaticWebcamOutput].Visible = ssVisible;
            _Texts[_TextWebcams].Visible          = ssVisible;
            _Texts[_TextWebcamResolution].Visible = ssVisible;
        }
Пример #6
0
        private void OnCapabilitiesEvent()
        {
            if (SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Selection != _CapabilityNr)
            {
                _CapabilityNr = SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Selection;

                SWebcamDevice[] d = CWebcam.GetDevices();
                _Config.MonikerString = d[SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection].MonikerString;
                _Config.Width         = d[SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection].Capabilities[SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Selection].Width;
                _Config.Height        = d[SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection].Capabilities[SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Selection].Height;
                _Config.Framerate     = d[SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection].Capabilities[SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Selection].Framerate;

                CWebcam.Close();
                CWebcam.Select(_Config);
                CWebcam.Start();
            }
        }
Пример #7
0
        private void _OnCapabilitiesEvent()
        {
            if (_SelectSlides[_SelectSlideWebcamCapabilities].Selection != _CapabilityNr)
            {
                _CapabilityNr = _SelectSlides[_SelectSlideWebcamCapabilities].Selection;

                SWebcamDevice d = CWebcam.GetDevices()[_DeviceNr];
                _Config.MonikerString = d.MonikerString;
                _Config.Width         = d.Capabilities[_CapabilityNr].Width;
                _Config.Height        = d.Capabilities[_CapabilityNr].Height;
                _Config.Framerate     = d.Capabilities[_CapabilityNr].Framerate;

                if (CWebcam.Select(_Config))
                {
                    CWebcam.Start();
                }
            }
        }
Пример #8
0
        public override void LoadTheme()
        {
            base.LoadTheme();

            Buttons[htButtons(ButtonSaveSnapshot)].Visible    = false;
            Buttons[htButtons(ButtonDiscardSnapshot)].Visible = false;
            Buttons[htButtons(ButtonTakeSnapshot)].Visible    = false;
            if (CWebcam.GetDevices().Length > 0)
            {
                Buttons[htButtons(ButtonWebcam)].Visible = true;
            }
            else
            {
                Buttons[htButtons(ButtonWebcam)].Visible = false;
            }
            SelectSlides[htSelectSlides(SelectSlideDifficulty)].SetValues <EGameDifficulty>(0);
            SelectSlides[htSelectSlides(SelectSlideGuestProfile)].SetValues <EOffOn>(0);
            SelectSlides[htSelectSlides(SelectSlideActive)].SetValues <EOffOn>(0);
        }
Пример #9
0
        public override void OnShow()
        {
            base.OnShow();
            SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Clear();
            SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Clear();

            _DeviceNr     = -1;
            _CapabilityNr = -1;

            SWebcamDevice[] devices = CWebcam.GetDevices();

            if (devices != null)
            {
                if (devices.Length > 0)
                {
                    _DeviceNr     = 0;
                    _CapabilityNr = 0;
                    GetFirstConfiguredWebcamDevice(ref _DeviceNr, ref _CapabilityNr);

                    foreach (SWebcamDevice d in devices)
                    {
                        SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].AddValue(d.Name);
                    }
                    SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection = _DeviceNr;

                    foreach (SCapabilities c in devices[_DeviceNr].Capabilities)
                    {
                        SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].AddValue(c.Width.ToString() + " x " + c.Height.ToString() + " @ " + c.Framerate.ToString() + " FPS ");
                    }
                    _Config.MonikerString = devices[SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection].MonikerString;
                    _Config.Width         = devices[SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection].Capabilities[SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Selection].Width;
                    _Config.Height        = devices[SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection].Capabilities[SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Selection].Height;
                    _Config.Framerate     = devices[SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection].Capabilities[SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Selection].Framerate;
                    CWebcam.Close();
                    CWebcam.Select(CConfig.WebcamConfig);
                    CWebcam.Start();
                }
            }
            SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Visible      = (devices != null && devices.Length > 0);
            SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Visible = (devices != null && devices.Length > 0);
            Statics[htStatics(StaticWebcamOutput)].Visible = (devices != null && devices.Length > 0);
        }
Пример #10
0
        public override bool UpdateGame()
        {
            if (SelectSlides[htSelectSlides(SelectSlideProfiles)].Selection > -1)
            {
                Buttons[htButtons(ButtonPlayerName)].Text.Text = CProfiles.GetPlayerName(SelectSlides[htSelectSlides(SelectSlideProfiles)].Selection);
                if (_EditMode == EEditMode.PlayerName)
                {
                    Buttons[htButtons(ButtonPlayerName)].Text.Text += "|";
                }

                SelectSlides[htSelectSlides(SelectSlideDifficulty)].Selection   = (int)CProfiles.GetDifficulty(SelectSlides[htSelectSlides(SelectSlideProfiles)].Selection);
                SelectSlides[htSelectSlides(SelectSlideGuestProfile)].Selection = (int)CProfiles.GetGuestProfile(SelectSlides[htSelectSlides(SelectSlideProfiles)].Selection);
                SelectSlides[htSelectSlides(SelectSlideActive)].Selection       = (int)CProfiles.GetActive(SelectSlides[htSelectSlides(SelectSlideProfiles)].Selection);

                int avatarNr = CProfiles.GetAvatarNr(SelectSlides[htSelectSlides(SelectSlideProfiles)].Selection);
                SelectSlides[htSelectSlides(SelectSlideAvatars)].Selection = avatarNr;
                if (CWebcam.GetDevices().Length > 0 && _WebcamTexture.index > 0)
                {
                    if (_Snapshot == null)
                    {
                        CWebcam.GetFrame(ref _WebcamTexture);
                    }
                    Statics[htStatics(StaticAvatar)].Texture = _WebcamTexture;

                    RectangleF bounds = new RectangleF(_WebcamTexture.rect.X, _WebcamTexture.rect.Y, _WebcamTexture.rect.W, _WebcamTexture.rect.H);
                    RectangleF rect   = new RectangleF(0f, 0f, _WebcamTexture.rect.W, _WebcamTexture.rect.H);
                    CHelper.SetRect(bounds, ref rect, rect.Width / rect.Height, EAspect.Crop);
                }
                else
                {
                    Statics[htStatics(StaticAvatar)].Texture = CProfiles.Avatars[avatarNr].Texture;
                }
            }

            return(true);
        }
Пример #11
0
        public override bool HandleInput(KeyEvent KeyEvent)
        {
            if (_EditMode == EEditMode.None)
            {
                base.HandleInput(KeyEvent);
            }

            if (KeyEvent.KeyPressed && !Char.IsControl(KeyEvent.Unicode))
            {
                switch (_EditMode)
                {
                case EEditMode.None:
                    break;

                case EEditMode.PlayerName:
                    SelectSlides[htSelectSlides(SelectSlideProfiles)].RenameValue(
                        CProfiles.AddGetPlayerName(SelectSlides[htSelectSlides(SelectSlideProfiles)].Selection, KeyEvent.Unicode));
                    break;

                default:
                    break;
                }
            }
            else
            {
                switch (KeyEvent.Key)
                {
                case Keys.Escape:
                    CGraphics.FadeTo(EScreens.ScreenMain);
                    break;

                case Keys.Enter:
                    if (Buttons[htButtons(ButtonExit)].Selected)
                    {
                        CGraphics.FadeTo(EScreens.ScreenMain);
                    }
                    else if (Buttons[htButtons(ButtonSave)].Selected)
                    {
                        SaveProfiles();
                    }
                    else if (Buttons[htButtons(ButtonNew)].Selected)
                    {
                        NewProfile();
                    }
                    else if (Buttons[htButtons(ButtonPlayerName)].Selected)
                    {
                        if (CProfiles.NumProfiles > 0 && _EditMode != EEditMode.PlayerName)
                        {
                            _EditMode = EEditMode.PlayerName;
                        }
                        else
                        {
                            _EditMode = EEditMode.None;
                        }
                    }
                    else if (Buttons[htButtons(ButtonDelete)].Selected)
                    {
                        DeleteProfile();
                    }
                    else if (Buttons[htButtons(ButtonWebcam)].Selected && CWebcam.GetDevices().Length > 0)
                    {
                        OnWebcam();
                    }
                    else if (Buttons[htButtons(ButtonSaveSnapshot)].Selected && CWebcam.GetDevices().Length > 0)
                    {
                        OnSaveSnapshot();
                    }
                    else if (Buttons[htButtons(ButtonDiscardSnapshot)].Selected && CWebcam.GetDevices().Length > 0)
                    {
                        OnDiscardSnapshot();
                    }
                    else if (Buttons[htButtons(ButtonTakeSnapshot)].Selected && CWebcam.GetDevices().Length > 0)
                    {
                        OnTakeSnapshot();
                    }
                    break;

                case Keys.Back:
                    if (_EditMode == EEditMode.PlayerName)
                    {
                        SelectSlides[htSelectSlides(SelectSlideProfiles)].RenameValue(
                            CProfiles.GetDeleteCharInPlayerName(SelectSlides[htSelectSlides(SelectSlideProfiles)].Selection));
                    }
                    else
                    {
                        CGraphics.FadeTo(EScreens.ScreenMain);
                    }
                    break;

                case Keys.Delete:
                    DeleteProfile();
                    break;
                }
                if (SelectSlides[htSelectSlides(SelectSlideDifficulty)].Selected)
                {
                    CProfiles.SetDifficulty(SelectSlides[htSelectSlides(SelectSlideProfiles)].Selection,
                                            (EGameDifficulty)SelectSlides[htSelectSlides(SelectSlideDifficulty)].Selection);
                }
                else if (SelectSlides[htSelectSlides(SelectSlideAvatars)].Selected)
                {
                    CProfiles.SetAvatar(SelectSlides[htSelectSlides(SelectSlideProfiles)].Selection,
                                        SelectSlides[htSelectSlides(SelectSlideAvatars)].Selection);
                }
                else if (SelectSlides[htSelectSlides(SelectSlideGuestProfile)].Selected)
                {
                    CProfiles.SetGuestProfile(SelectSlides[htSelectSlides(SelectSlideProfiles)].Selection,
                                              (EOffOn)SelectSlides[htSelectSlides(SelectSlideGuestProfile)].Selection);
                }
                else if (SelectSlides[htSelectSlides(SelectSlideActive)].Selected)
                {
                    CProfiles.SetActive(SelectSlides[htSelectSlides(SelectSlideProfiles)].Selection,
                                        (EOffOn)SelectSlides[htSelectSlides(SelectSlideActive)].Selection);
                }
            }

            return(true);
        }
Пример #12
0
        public override bool HandleMouse(MouseEvent MouseEvent)
        {
            if (_EditMode == EEditMode.None)
            {
                base.HandleMouse(MouseEvent);
            }

            if (MouseEvent.LB && IsMouseOver(MouseEvent))
            {
                if (Buttons[htButtons(ButtonExit)].Selected)
                {
                    CGraphics.FadeTo(EScreens.ScreenMain);
                }
                else if (Buttons[htButtons(ButtonSave)].Selected)
                {
                    SaveProfiles();
                }
                else if (Buttons[htButtons(ButtonNew)].Selected)
                {
                    NewProfile();
                }
                else if (Buttons[htButtons(ButtonDelete)].Selected)
                {
                    DeleteProfile();
                }
                else if (Buttons[htButtons(ButtonPlayerName)].Selected)
                {
                    if (CProfiles.NumProfiles > 0 && _EditMode != EEditMode.PlayerName)
                    {
                        _EditMode = EEditMode.PlayerName;
                    }
                    else
                    {
                        _EditMode = EEditMode.None;
                    }
                }
                else if (SelectSlides[htSelectSlides(SelectSlideDifficulty)].Selected)
                {
                    CProfiles.SetDifficulty(SelectSlides[htSelectSlides(SelectSlideProfiles)].Selection,
                                            (EGameDifficulty)SelectSlides[htSelectSlides(SelectSlideDifficulty)].Selection);
                }
                else if (SelectSlides[htSelectSlides(SelectSlideAvatars)].Selected)
                {
                    CProfiles.SetAvatar(SelectSlides[htSelectSlides(SelectSlideProfiles)].Selection,
                                        SelectSlides[htSelectSlides(SelectSlideAvatars)].Selection);
                    if (CWebcam.GetDevices().Length > 0 && _WebcamTexture.index > 0)
                    {
                        OnDiscardSnapshot();
                    }
                }
                else if (SelectSlides[htSelectSlides(SelectSlideGuestProfile)].Selected)
                {
                    CProfiles.SetGuestProfile(SelectSlides[htSelectSlides(SelectSlideProfiles)].Selection,
                                              (EOffOn)SelectSlides[htSelectSlides(SelectSlideGuestProfile)].Selection);
                }
                else if (SelectSlides[htSelectSlides(SelectSlideActive)].Selected)
                {
                    CProfiles.SetActive(SelectSlides[htSelectSlides(SelectSlideProfiles)].Selection,
                                        (EOffOn)SelectSlides[htSelectSlides(SelectSlideActive)].Selection);
                }
                else if (Buttons[htButtons(ButtonWebcam)].Selected && CWebcam.GetDevices().Length > 0)
                {
                    OnWebcam();
                }
                else if (Buttons[htButtons(ButtonSaveSnapshot)].Selected && CWebcam.GetDevices().Length > 0)
                {
                    OnSaveSnapshot();
                }
                else if (Buttons[htButtons(ButtonDiscardSnapshot)].Selected && CWebcam.GetDevices().Length > 0)
                {
                    OnDiscardSnapshot();
                }
                else if (Buttons[htButtons(ButtonTakeSnapshot)].Selected && CWebcam.GetDevices().Length > 0)
                {
                    OnTakeSnapshot();
                }
            }

            if (MouseEvent.RB)
            {
                CGraphics.FadeTo(EScreens.ScreenMain);
            }
            return(true);
        }