Beispiel #1
0
    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);
    }
Beispiel #2
0
        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;
            }
        }
Beispiel #3
0
    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);
        }
    }
Beispiel #4
0
 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);
                }
            }
        }