private void Initialize() { _table = Rnd.Range(0, 8); _mode = Rnd.Range(0, 2) != 0 ? ScanningMode.TopToBottom : ScanningMode.BottomToTop; var validCells = Enumerable.Range(0, 49).Except(new[] { 0, 6, 42, 48, 24 }).ToArray(); _curCell = validCells.PickRandom(); _solutionCell = validCells.PickRandom(); _directions = ((ButtonDirection[])Enum.GetValues(typeof(ButtonDirection))).Shuffle(); var similarCells = validCells.Where(c => _rules.Tables[_table][c] == _rules.Tables[_table][_solutionCell]); _scannerColor = _solutionCell == similarCells.Min() ? ScannerColor.Red : _solutionCell == similarCells.Max() ? ScannerColor.Blue : _solutionCell % 7 == similarCells.Select(c => c % 7).Min() ? ScannerColor.White : ScannerColor.Yellow; Debug.LogFormat(@"[Not X-Ray #{0}] Buttons 1–4 go: {1}", _moduleId, _directions.Join(", ")); Debug.LogFormat(@"[Not X-Ray #{0}] You’re in table #{1}, starting position {2}{3}.", _moduleId, _table + 1, (char)('A' + _curCell % 7), _curCell / 7 + 1); Debug.LogFormat(@"[Not X-Ray #{0}] Scanning {1}.", _moduleId, _mode == ScanningMode.TopToBottom ? "top to bottom" : "bottom to top"); _isMazeStage = false; StartLights(new[] { _rules.Tables[_table][_curCell] }, _mode, ScannerColor.Green, 2f); }
private void btnScanMode_Click(object sender, RoutedEventArgs e) { Button send = (Button)sender; foreach (object modeButton in modeMenu.Children) { Button button = (Button)modeButton; if (button != send) { button.Background = new SolidColorBrush(ColorScheme.MenuDarker); button.Foreground = new SolidColorBrush(Colors.Black); button.FontWeight = FontWeights.Normal; } } send.Background = new SolidColorBrush(ColorScheme.GlobalBlue); send.Foreground = new SolidColorBrush(Colors.White); send.FontWeight = FontWeights.Medium; switch (send.Name) { case "btnScanModeManual": _scanMode = ScanningMode.Manual; ScanningWindows.ScanningManual scanManual = new ScanningWindows.ScanningManual(); scanManual.btnManualScan.Click += BtnManualScan_Click; ContentArea.Content = scanManual; break; case "btnScanModeAutomatic": _scanMode = ScanningMode.Automatic; ScanningWindows.ScanningAutomatic scanAuto = new ScanningWindows.ScanningAutomatic(); scanAuto.btnAutoScan.Click += BtnAutoScan_Click; ContentArea.Content = scanAuto; break; } }
private IEnumerator RunLights(SymbolInfo[] icons, ScanningMode mode, ScannerColor color, float delayBetweenRepeats = 0) { const int _iconWidth = 180; const int _iconHeight = 180; const int _ulongsPerScanline = (_iconWidth + 63) / 64; const float _pixelWidth = 0.138f / _iconWidth; const float _secondsPerIcon = 4f; foreach (var scanLight in ScanLights) { scanLight.GetComponent <MeshRenderer>().sharedMaterial = ScannerColors[(int)color]; } var prevScanline = -1; while (true) { int curScanline; switch (mode) { case ScanningMode.TopToBottom: curScanline = Mathf.FloorToInt((Time.time % (icons.Length * _secondsPerIcon + delayBetweenRepeats)) * (_iconHeight / _secondsPerIcon)); break; case ScanningMode.BottomToTop: curScanline = Mathf.FloorToInt((icons.Length * _secondsPerIcon - Time.time % (icons.Length * _secondsPerIcon + delayBetweenRepeats)) * (_iconHeight / _secondsPerIcon)); break; default: // alternating var e = Time.time % (2 * icons.Length * _secondsPerIcon + 2 * delayBetweenRepeats); curScanline = e > icons.Length * _secondsPerIcon ? Mathf.FloorToInt((2 * icons.Length * _secondsPerIcon - e - delayBetweenRepeats) * (_iconHeight / _secondsPerIcon)) : Mathf.FloorToInt((e - delayBetweenRepeats) * (_iconHeight / _secondsPerIcon)); break; } if (curScanline < icons.Length * _iconHeight && curScanline > 0 && curScanline != prevScanline) { var icon = RawBits.Icons[icons[curScanline / _iconHeight].Index]; var scanlineStart = (icons[curScanline / _iconHeight].Flipped ? _iconHeight - 1 - (curScanline % _iconHeight) : curScanline % _iconHeight) * _ulongsPerScanline; var lightIx = 0; int?startX = null; for (int x = 0; x <= _iconWidth; x++) { var curBit = x < _iconWidth && (icon[scanlineStart + x / 64] & (1UL << (x % 64))) != 0; if (curBit && startX == null) { startX = x; } else if (!curBit && startX != null) { ScanLights[lightIx].SetActive(true); ScanLights[lightIx].transform.localScale = new Vector3((x - startX.Value) * _pixelWidth, 1, 1); ScanLights[lightIx].transform.localPosition = new Vector3((x + startX.Value - _iconWidth) * .5f * _pixelWidth, 0, 0); lightIx++; startX = null; } } for (int i = lightIx; i < ScanLights.Length; i++) { ScanLights[i].SetActive(false); } } prevScanline = curScanline; yield return(null); } }
protected void StartLights(SymbolInfo[] icons, ScanningMode mode, ScannerColor color, float delayBetweenRepeats = 0) { StopLights(); _coroutine = StartCoroutine(RunLights(icons, mode, color, delayBetweenRepeats)); }
public void Initialize(Patient_cu patient, ScanningMode scanningMode, MedicalType medicalType) { ActiveSelectedPatient = patient; ActiveScanningMode = scanningMode; MedicalType = medicalType; BackColor = Color.White; List <PatientAttachment_cu> list = null; switch (ActiveScanningMode) { case ScanningMode.Regular: if (ActiveSelectedPatient != null) { if (ImagesList == null) { ImagesList = new List <PatientAttachment_cu>(); } } ImagesList = PatientAttachment_cu.ItemsList.FindAll(item => Convert.ToInt32(item.Patient_CU_ID) .Equals(Convert.ToInt32(ActiveSelectedPatient.Person_CU_ID)) && Convert.ToInt32(item.ImageType_P_ID).Equals(Convert.ToInt32(ImageType_P_ID))); emptySpaceItem3.Visibility = LayoutVisibility.Always; layoutControlItem4.Visibility = LayoutVisibility.Always; layoutControlItem3.Visibility = LayoutVisibility.Always; layoutControlGroup2.Visibility = LayoutVisibility.Always; layoutControlGroup3.Visibility = LayoutVisibility.Always; layoutControlItem5.Visibility = LayoutVisibility.Always; layoutControlItem15.Visibility = LayoutVisibility.Always; simpleSeparator4.Visibility = LayoutVisibility.Always; layoutControlGroup2.Visibility = LayoutVisibility.Always; layoutControlGroup3.Visibility = LayoutVisibility.Always; layoutControlItem5.Visibility = LayoutVisibility.Always; lytSelectAll.Visibility = LayoutVisibility.Never; break; case ScanningMode.MedicalVisit: if (PEMRBusinessLogic.ActivePEMRObject != null && PEMRBusinessLogic.ActivePEMRObject.List_VisitTiming_Attachment != null) { foreach (VisitTiming_Attachment visitTimingAttachement in PEMRBusinessLogic.ActivePEMRObject .List_VisitTiming_Attachment) { PatientAttachment_cu patientAttachment = PatientAttachment_cu.ItemsList.Find(item => Convert.ToInt32(item.ID) .Equals(Convert.ToInt32(visitTimingAttachement.PatientAttachement_CU_ID))); if (patientAttachment != null) { if (ImagesList == null) { ImagesList = new List <PatientAttachment_cu>(); } ImagesList.Add(patientAttachment); } } } emptySpaceItem3.Visibility = LayoutVisibility.Never; layoutControlItem4.Visibility = LayoutVisibility.Never; layoutControlItem3.Visibility = LayoutVisibility.Never; layoutControlGroup2.Visibility = LayoutVisibility.Never; layoutControlGroup3.Visibility = LayoutVisibility.Never; layoutControlItem5.Visibility = LayoutVisibility.Never; layoutControlItem15.Visibility = LayoutVisibility.Never; simpleSeparator4.Visibility = LayoutVisibility.Never; layoutControlGroup2.Visibility = LayoutVisibility.Never; layoutControlGroup3.Visibility = LayoutVisibility.Never; layoutControlItem5.Visibility = LayoutVisibility.Never; lytSelectAll.Visibility = LayoutVisibility.Always; break; } switch (medicalType) { case MedicalType.InvestigationResult: chkPersonalPhoto.Enabled = false; chkID.Enabled = false; chkPassport.Enabled = false; chkInvestigation.Enabled = true; chkSurgery.Enabled = false; chkLab.Enabled = false; chkOther.Enabled = false; chkInvestigation.Checked = true; break; case MedicalType.LabResult: chkPersonalPhoto.Enabled = false; chkID.Enabled = false; chkPassport.Enabled = false; chkInvestigation.Enabled = false; chkSurgery.Enabled = false; chkLab.Enabled = true; chkOther.Enabled = false; chkLab.Checked = true; break; case MedicalType.SurgeryResult: chkPersonalPhoto.Enabled = false; chkID.Enabled = false; chkPassport.Enabled = false; chkInvestigation.Enabled = false; chkLab.Enabled = false; chkSurgery.Enabled = true; chkOther.Enabled = false; chkSurgery.Checked = true; break; case MedicalType.None: chkPersonalPhoto.Enabled = true; chkID.Enabled = true; chkPassport.Enabled = true; chkSurgery.Enabled = true; chkInvestigation.Enabled = true; chkLab.Enabled = true; chkOther.Enabled = true; chkPersonalPhoto.Checked = true; break; } CommonViewsActions.FillListBoxControl(lstImageNames, ImagesList, "ImageName"); lstImageNames.Refresh(); if (!string.IsNullOrEmpty(ApplicationStaticConfiguration.SkinName) && !string.IsNullOrWhiteSpace(ApplicationStaticConfiguration.SkinName)) { if (ApplicationStaticConfiguration.SkinName.Equals("McSkin")) { lblPatientID.ForeColor = Color.DarkOrange; lblPatientName.ForeColor = lblInsuranceCarrierName.ForeColor = lblInsuranceLevelName.ForeColor = lblInsurancePercentage.ForeColor = Color.DarkBlue; labelControl1.ForeColor = labelControl3.ForeColor = labelControl5.ForeColor = labelControl7.ForeColor = Color.Black; btnClose.Image = Properties.Resources.ExitIcon_8; } else { lblPatientID.ForeColor = Color.OrangeRed; lblPatientName.ForeColor = lblInsuranceCarrierName.ForeColor = lblInsuranceLevelName.ForeColor = lblInsurancePercentage.ForeColor = Color.Ivory; labelControl1.ForeColor = labelControl3.ForeColor = labelControl5.ForeColor = labelControl7.ForeColor = Color.OldLace; btnClose.Image = Properties.Resources.Exit_1_16; } } lblPatientID.Text = ActiveSelectedPatient.Person_CU_ID.ToString(); lblPatientName.Text = ActiveSelectedPatient.PatientFullName; if (ActiveSelectedPatient.InsuranceCarrier_InsuranceLevel_CU_ID != null) { InsuranceCarrier_InsuranceLevel_cu insuranceBridge = InsuranceCarrier_InsuranceLevel_cu.ItemsList.Find( item => Convert.ToInt32(item.ID) .Equals(Convert.ToInt32(ActiveSelectedPatient.InsuranceCarrier_InsuranceLevel_CU_ID))); if (insuranceBridge != null) { InsuranceCarrier_cu insuranceCarrier = InsuranceCarrier_cu.ItemsList.Find( item => Convert.ToInt32(item.ID).Equals(Convert.ToInt32(insuranceBridge.InsuranceCarrier_CU_ID))); if (insuranceCarrier != null) { lblInsuranceCarrierName.Text = insuranceCarrier.Name_P; } InsuranceLevel_cu insurancelevel = InsuranceLevel_cu.ItemsList.Find( item => Convert.ToInt32(item.ID).Equals(Convert.ToInt32(insuranceBridge.InsuranceLevel_CU_ID))); if (insurancelevel != null) { lblInsuranceLevelName.Text = insurancelevel.Name_P; } lblInsurancePercentage.Text = Convert.ToString(insuranceBridge.InsurancePercentage * 100); } } }