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); }
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; } } } } }
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(); } }
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(); } }
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; }
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(); } }
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(); } } }
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); }
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); }
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); }
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); }
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); }