예제 #1
0
    // Finger bending from 0-1
    private float GetFingerBend(Fingers finger)
    {
        float angle = 0;

        switch (finger)
        {
        case Fingers.Index:
            angle = Vector3.Angle(GetBone(HandBone.IndexTip).up, GetBone(HandBone.IndexMetaCarpal).up);
            break;

        case Fingers.Middle:
            angle = Vector3.Angle(GetBone(HandBone.MiddleTip).up, GetBone(HandBone.MiddleMetaCarpal).up);
            break;

        case Fingers.Ring:
            angle = Vector3.Angle(GetBone(HandBone.RingTip).up, GetBone(HandBone.RingMetaCarpal).up);
            break;

        case Fingers.Pinky:
            angle = Vector3.Angle(GetBone(HandBone.PinkyTip).up, GetBone(HandBone.PinkyMetaCarpal).up);
            break;

        case Fingers.Thumb:
            angle = Vector3.Angle(GetBone(HandBone.ThumbTip).forward, GetBone(HandBone.ThumbMetaCarpal).forward);
            break;
        }

        return(angle / 180f);
    }
예제 #2
0
        internal UserInfo(byte[] data, int offset)
        {
            Id = Bytes.Read(Bytes.Split(data, offset, 5));
            var pwd = Bytes.Split(data, offset + 5, 3);

            if (pwd[0] == 0xFF && pwd[1] == 0xFF && pwd[2] == 0xFF)
            {
                Password = null;
            }
            else
            {
                Password = Bytes.PasswordRead(pwd);
            }
            var card = Bytes.Split(data, offset + 8, 4);

            if (card[0] == 0xFF && card[1] == 0xFF && card[2] == 0xFF && card[3] == 0xFF)
            {
                Card = null;
            }
            else
            {
                Card = Bytes.Read(card);
            }
            Name                 = Bytes.GetUnicodeString(Bytes.Split(data, offset + 12, 20));
            Department           = data[offset + 32];
            Group                = data[offset + 33];
            Mode                 = data[offset + 34];
            EnrolledFingerprints = Fingers.DecodeFingers(Bytes.Read(Bytes.Split(data, offset + 35, 2)));
            PWDH8                = data[offset + 37];
            Keep                 = data[offset + 38];
            Message              = data[offset + 39];
        }
예제 #3
0
        public Hand2d(Hand hand)
        {
            Speed               = hand.PalmVelocity.Magnitude;
            SpeedDirection      = GetVectorDirection(hand.PalmVelocity);
            FloatingAttachPoint = GetFloatingAttachPoint(hand);
            IsFist              = GetIsFist(hand);
            IsFlat              = GetIsFlat(hand);
            SetPalmProperties(hand);
            if (hand.IsLeft)
            {
                Side = HandSide.Left;
            }
            else
            {
                Side = HandSide.Right;
            }

            HandVelocityHistory.AddVelocity(hand.PalmVelocity, palmAttachPoint3d, Side);

            PalmPosition   = LeapCalibrator.ToScaledPoint(hand.PalmPosition);
            PalmPosition3d = hand.PalmPosition;
            // TODO: Calculate Details!!!
            foreach (Finger finger in hand.Fingers)
            {
                Fingers.Add(new Finger2d(finger));
            }
        }
예제 #4
0
 /// <summary>
 /// Steps through all available temmplates and match fingerprint templates
 /// </summary>
 /// <param name="comparer">Delegate function that does the actual matching in the context desgnated by a particular finger</param>
 /// <param name="matchAny">If true any one finger match is sufficient for matching, if false all fingers must match</param>
 /// <param name="fingerContexts">List of matching contexts indexed by finger</param>
 /// <param name="matchFingers">Flags of fingers available for matching</param>
 /// <returns></returns>
 public object Identify(CompareFingerDelegate comparer, bool matchAny, Dictionary <Fingers, int> fingerContexts, Fingers matchFingers)
 {
     if (Connection != null && Connection.State == ConnectionState.Open)
     {
         using (IDataReader rdr = InternalGetTemplates()) //Reader must be sorted by individual
         {
             Fingers             matchedFingers = 0;      //fingers that have been matched
             FingerprintTemplate template;
             Fingers             finger;
             while (rdr.Read())
             {
                 ReadTemplate(rdr, out finger, out template);
                 if ((matchFingers & finger) != 0)
                 {
                     if (comparer(fingerContexts[finger], template))
                     {
                         matchedFingers |= finger;
                     }
                 }
                 if ((matchAny & ((matchFingers & matchedFingers) != 0)) | (matchFingers == matchedFingers)) //individual matched
                 {
                     return(rdr[IndividualFieldName]);
                 }
             } //while
             return(null); //No match found
         }
     }
     else
     {
         throw new FPLibraryException(FPLibraryException.LibraryDalError, "Connection is null or closed");
     }
 }
예제 #5
0
        void update_WaitState()
        {
            Fingers currentFinger = RoundRequiredFingers[currentRound][currentFingureIndex];
            int     i             = (int)RoundRequiredFingers[currentRound][currentFingureIndex];

            //sets image to be shown
            setImagePlayerOne = SetKeyImage(currentFinger, 1);
            setImagePlayerTwo = SetKeyImage(currentFinger, 2);

            //copy for P2

            if (playerOneSucceds == false)
            {
                playerOneSucceds = GetKeyWasPressed(currentFinger, 1);
            }
            if (playerTwoSucceds == false)
            {
                playerTwoSucceds = GetKeyWasPressed(currentFinger, 2);
            }


            //Transition
            waitStateTimer += Time.deltaTime;
            if (waitStateTimer > WaitStateTime)
            {
                waitStateTimer = 0.0f;
                state          = State.STATE_PLAY;
            }
        }
예제 #6
0
 public Hands()
 {
     InitializeComponent();
     RegisteredFingers = 0;
     selectedFinger    = 0;
     ClearFingers();
 }
예제 #7
0
 private bool GetKeyWasPressed(Fingers currentFinger, int v)
 {
     if (currentFinger == Fingers.Finger1)
     {
         if (v == 1)
         {
             return(Input.GetKey(KeyCode.Q));
         }
         if (v == 2)
         {
             return(Input.GetKey(KeyCode.Y));
         }
     }
     if (currentFinger == Fingers.Finger2)
     {
         if (v == 1)
         {
             return(Input.GetKey(KeyCode.W));
         }
         if (v == 2)
         {
             return(Input.GetKey(KeyCode.U));
         }
     }
     if (currentFinger == Fingers.Finger3)
     {
         if (v == 1)
         {
             return(Input.GetKey(KeyCode.E));
         }
         if (v == 2)
         {
             return(Input.GetKey(KeyCode.I));
         }
     }
     if (currentFinger == Fingers.Finger4)
     {
         if (v == 1)
         {
             return(Input.GetKey(KeyCode.R));
         }
         if (v == 2)
         {
             return(Input.GetKey(KeyCode.O));
         }
     }
     if (currentFinger == Fingers.Finger5)
     {
         if (v == 1)
         {
             return(Input.GetKey(KeyCode.T));
         }
         if (v == 2)
         {
             return(Input.GetKey(KeyCode.P));
         }
     }
     return(false);
 }
예제 #8
0
 private void FocusFinger(Fingers finger)
 {
     if (SelectedFinger != finger)
     {
         selectedFinger = finger;
         DisplayFingers();
         OnFingerFocused(new FingerFocusedEventArgs(finger));
     }
 }
예제 #9
0
파일: Hand.cs 프로젝트: KJongHyun/smglove
 // Use this for initialization
 void Start()
 {
     soundManager = GameObject.Find("SoundManager").GetComponent <SoundManager>();
     fadeEffect   = GameObject.Find("FadeEffect").GetComponent <FadeEffect>();
     soundManager.playBackgroundSound(2, 0);
     fadeEffect.applyFade(soundManager.backgroundAudio, FadeEffect.FadeState.FADE_IN);
     ReadData.QuaternionToHandRotionEvent += ReadData_QuaternionToHandRotionEvent;
     readData = GameObject.Find("ReadData").GetComponent <ReadData>();
     fingers  = new Fingers();
     ReadData.PositionEvent += ReadData_PositionEvent;
 }
예제 #10
0
        private Fingers GetRegisteredFingers()
        {
            Fingers fingers = 0;
            Dictionary <Fingers, FingerprintTemplate> savedFingers = DataAccessLayer.GetFingerTemplates();

            foreach (var kvp in savedFingers)
            {
                fingers |= kvp.Key;
            }
            return(fingers);
        }
예제 #11
0
    public LoopListener(Fingers parent)
    {
        fingers = parent;

        // Initialize loop state
        foreach (LoopButton button in Enum.GetValues(typeof(LoopButton)))
        {
            state[button] = false;
        }

        Watch();
    }
예제 #12
0
 /// <summary>
 /// Fingerprints are obtained, first tested if they exist in the database, and if not then saved to the database
 /// The individual to which the captured fingerprints must be saved must be set as the ActiveIndividual in the DataAccesLayer
 /// </summary>
 /// <param name="sensor">The sensor to capture the finger print from</param>
 /// <returns>The individual ID of the individual identified, null if none was identified</returns>
 public object IdentifyAndCapture(string sensor)
 {
     try
     {
         object result = null;
         griauleLibrary.SetIdentifyParameters(IdentificationThreshold, IdentificationRotationTolerance);
         Dictionary <Fingers, FingerprintTemplate> capturedFingers = Capture(sensor, DataAccessLayer.ActiveIndividual != null);
         if (capturedFingers != null && capturedFingers.Count > 0)
         {
             //Set up and prepare an identification context for each captured finger
             Dictionary <Fingers, int> fingerContexts = new Dictionary <Fingers, int>(capturedFingers.Count);
             Fingers matchFingers = 0; //Fingers to match
             try
             {
                 foreach (var kvp in capturedFingers)
                 {
                     int context;
                     griauleLibrary.CreateContext(out context);
                     fingerContexts.Add(kvp.Key, context);
                     griauleLibrary.IdentifyPrepare(capturedFingers[kvp.Key], context);
                     matchFingers |= kvp.Key; //add finger to fingers to be matched
                 }
                 CompareFingerDelegate comparer = CompareTemplate;
                 result = DataAccessLayer.Identify(CompareTemplate, true, fingerContexts, matchFingers);
                 if (result == null) //No one identified
                 {
                     foreach (var kvp in capturedFingers)
                     {
                         DataAccessLayer.SaveTemplate(kvp.Key, kvp.Value);
                     }
                 }
             }
             finally
             {
                 foreach (var kvp in fingerContexts)
                 {
                     griauleLibrary.DestroyContext(kvp.Value);
                 }
             }
         }
         return(result);
     }
     catch (FingerprintException ex)
     {
         MessageBox.Show(String.Format("Identification Error : {0} {1}", ex.ErrorCode, ex.Message), "FPLibrary Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
         return(null);
     }
     catch (Exception e)
     {
         MessageBox.Show(String.Format("Identification Error : {0}", e.Message), "FPLibrary Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
         return(null);
     }
 }
예제 #13
0
        protected virtual void ReadTemplate(IDataReader rdr, out Fingers finger, out FingerprintTemplate template)
        {
            byte[] buff    = (byte[])rdr[TemplateFieldName];
            int    quality = Convert.ToInt16(rdr[QualityFieldName]);

            template = new FingerprintTemplate {
                Size = buff.Length, Buffer = buff, Quality = quality
            };
            Byte fingerCode = Convert.ToByte(rdr[FingerFieldName]);

            finger = MatchFingerCode(fingerCode);
        }
예제 #14
0
 public void RemoveFinger(string fingerId)
 {
     if (Fingers.ContainsKey(fingerId))
     {
         TutorialFinger finger = Fingers[fingerId];
         if (finger && finger.gameObject)
         {
             Destroy(finger.gameObject);
         }
         Fingers.Remove(fingerId);
     }
 }
예제 #15
0
        public TutorialFinger CreateFinger(Transform parent, TutorialFingerData fingerData)
        {
            if (Fingers.ContainsKey(fingerData.Id))
            {
                RemoveFinger(fingerData.Id);
            }
            GameObject     fingerObj = GameObject.Instantiate(Services.ResourceService.Prefabs.GetPrefab("finger"), parent, false);
            TutorialFinger finger    = fingerObj.GetComponent <TutorialFinger>();

            finger.Setup(fingerData);
            Fingers.Add(finger.Data.Id, finger);
            return(finger);
        }
예제 #16
0
        public void Remove(Pointable pointable)
        {
            Pointables.Remove(pointable);
            Finger f = pointable as Finger;

            if (f != null)
            {
                Fingers.Remove(f);
            }
            else
            {
                Tools.Remove(pointable as Tool);
            }
        }
예제 #17
0
 /// <summary>
 /// Save a fingerprint template for the current individual
 /// </summary>
 /// <param name="finger">The finger to which the template belongs</param>
 /// <param name="fingerPrintTemplate">The template to be saved</param>
 public void SaveTemplate(Fingers finger, FingerprintTemplate fingerPrintTemplate)
 {
     if (Connection != null && Connection.State == ConnectionState.Open)
     {
         if (ActiveIndividual != null)
         {
             InternalSaveTemplate(FingerValueTable[finger], fingerPrintTemplate);
         }
         else
         {
             throw new FPLibraryException(FPLibraryException.LibraryDalError, "Active individual not set");
         }
     }
     else
     {
         throw new FPLibraryException(FPLibraryException.LibraryDalError, "Connection is null or closed");
     }
 }
예제 #18
0
        public static Color OfFinger(Fingers finger)
        {
            switch (finger)
            {
            case Fingers.First: return(Colors.firstFinger);

            case Fingers.SecondLeft: return(Colors.secondLeftFinger);

            case Fingers.SecondRight: return(Colors.secondRightFinger);

            case Fingers.Third: return(Colors.thirdFinger);

            case Fingers.Fourth: return(Colors.fourthFinger);

            case Fingers.Fifth: return(Colors.fifthFinger);

            default: return(Colors.common);
            }
        }
예제 #19
0
 /// <summary>
 /// Search though all available fingerprint templates for a match
 /// </summary>
 /// <param name="anyMatch">Any one finger needs to match for identification</param>
 /// <param name="capturedFingers">The fingerprints to search for</param>
 /// <returns></returns>
 public object Identify(bool anyMatch, Dictionary <Fingers, FingerprintTemplate> capturedFingers)
 {
     try
     {
         object result = null;
         griauleLibrary.SetIdentifyParameters(IdentificationThreshold, IdentificationRotationTolerance);
         //Set up and prepare an identification context for each captured finger
         Dictionary <Fingers, int> fingerContexts = new Dictionary <Fingers, int>(capturedFingers.Count);
         Fingers matchFingers = 0; //Fingers to match
         try
         {
             foreach (var kvp in capturedFingers)
             {
                 int context;
                 griauleLibrary.CreateContext(out context);
                 fingerContexts.Add(kvp.Key, context);
                 griauleLibrary.IdentifyPrepare(capturedFingers[kvp.Key], context);
                 matchFingers |= kvp.Key; //add finger to fingers to be matched
             }
             result = DataAccessLayer.Identify(CompareTemplate, anyMatch, fingerContexts, matchFingers);
         }
         finally
         {
             foreach (var kvp in fingerContexts)
             {
                 griauleLibrary.DestroyContext(kvp.Value);
             }
         }
         return(result);
     }
     catch (FingerprintException ex)
     {
         MessageBox.Show(String.Format("Identification Error : {0} {1}", ex.ErrorCode, ex.Message), "FPLibrary Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
         return(null);
     }
     catch (Exception e)
     {
         MessageBox.Show(String.Format("Identification Error : {0}", e.Message), "FPLibrary Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
         return(null);
     }
 }
예제 #20
0
        /// <summary>
        /// Pの持ち駒項目の、配列の添え字番号。
        ///
        /// 王は判定できない。
        /// </summary>
        /// <param name="src_Sky"></param>
        /// <param name="pside"></param>
        /// <param name="syurui"></param>
        /// <returns>エラー時は-1</returns>
        public static int ParamIndex_Moti(SkyConst src_Sky, Playerside pside, PieceType syurui)
        {
            Fingers fingers = Util_Sky_FingersQuery.InOkibaPsideKomasyuruiNow(src_Sky, Conv_Playerside.ToKomadai(pside), pside, syurui);

            int index_playerside = Util_FvParamIndex.paramIndex_Playerside[(int)pside];
            int index_komasyurui = Util_FvParamIndex.paramIndex_KomaSyrui_Moti[(int)syurui];

            if (index_playerside == -1)
            {
                throw new Exception("二駒関係の持ち駒_先後不明の駒");
            }
            else if (index_komasyurui == -1)
            {
                throw new Exception("二駒関係の持ち駒_駒種類が対象外の駒");
            }

            int koumokuP = index_playerside + index_komasyurui + fingers.Count;

            Debug.Assert(0 <= koumokuP && koumokuP < FeatureVectorImpl.CHOSA_KOMOKU_P, $"koumokuP=[{koumokuP}]");
            return(koumokuP);
        }
예제 #21
0
 protected override FingerprintRawImage InternalGetFingerprintImage(Fingers finger)
 {
     return base.InternalGetFingerprintImage(finger);
 }
예제 #22
0
파일: FPDal.cs 프로젝트: BoschC/fplibrary
 /// <summary>
 /// Save a fingerprint template for the current individual
 /// </summary>
 /// <param name="finger">The finger to which the template belongs</param>
 /// <param name="fingerPrintTemplate">The template to be saved</param>
 public void SaveTemplate(Fingers finger, FingerprintTemplate fingerPrintTemplate)
 {
     if (Connection != null && Connection.State == ConnectionState.Open)
     if (ActiveIndividual != null)
       InternalSaveTemplate(FingerValueTable[finger], fingerPrintTemplate);
     else throw new FPLibraryException(FPLibraryException.LibraryDalError, "Active individual not set");
       else
     throw new FPLibraryException(FPLibraryException.LibraryDalError, "Connection is null or closed");
 }
예제 #23
0
        public static string FingerToString(Settings settings, Beat beat, Fingers finger, bool leftHand)
        {
            if (settings.ForcePianoFingering || GeneralMidi.IsPiano(beat.Voice.Bar.Staff.Track.PlaybackInfo.Program))
            {
                switch (finger)
                {
                case Fingers.Unknown:
                case Fingers.NoOrDead:
                    return(null);

                case Fingers.Thumb:
                    return("1");

                case Fingers.IndexFinger:
                    return("2");

                case Fingers.MiddleFinger:
                    return("3");

                case Fingers.AnnularFinger:
                    return("4");

                case Fingers.LittleFinger:
                    return("5");

                default:
                    return(null);
                }
            }
            else if (leftHand)
            {
                switch (finger)
                {
                case Fingers.Unknown:
                case Fingers.NoOrDead:
                    return("0");

                case Fingers.Thumb:
                    return("T");

                case Fingers.IndexFinger:
                    return("1");

                case Fingers.MiddleFinger:
                    return("2");

                case Fingers.AnnularFinger:
                    return("3");

                case Fingers.LittleFinger:
                    return("4");

                default:
                    return(null);
                }
            }
            else
            {
                switch (finger)
                {
                case Fingers.Unknown:
                case Fingers.NoOrDead:
                    return(null);

                case Fingers.Thumb:
                    return("p");

                case Fingers.IndexFinger:
                    return("i");

                case Fingers.MiddleFinger:
                    return("m");

                case Fingers.AnnularFinger:
                    return("a");

                case Fingers.LittleFinger:
                    return("c");

                default:
                    return(null);
                }
            }
        }
예제 #24
0
 public bool ExistsFinger(string fingerName)
 {
     return(Fingers.ContainsKey(fingerName));
 }
예제 #25
0
 private string FingerToString(Beat beat, Fingers finger, bool leftHand)
 {
     if (Settings.ForcePianoFingering || GeneralMidi.IsPiano(beat.Voice.Bar.Staff.Track.PlaybackInfo.Program))
     {
         switch (finger)
         {
             case Fingers.Unknown:
             case Fingers.NoOrDead:
                 return null;
             case Fingers.Thumb:
                 return "1";
             case Fingers.IndexFinger:
                 return "2";
             case Fingers.MiddleFinger:
                 return "3";
             case Fingers.AnnularFinger:
                 return "4";
             case Fingers.LittleFinger:
                 return "5";
             default:
                 return null;
         }
     }
     else if (leftHand)
     {
         switch (finger)
         {
             case Fingers.Unknown:
             case Fingers.NoOrDead:
                 return "0";
             case Fingers.Thumb:
                 return "T";
             case Fingers.IndexFinger:
                 return "1";
             case Fingers.MiddleFinger:
                 return "2";
             case Fingers.AnnularFinger:
                 return "3";
             case Fingers.LittleFinger:
                 return "4";
             default:
                 return null;
         }
     }
     else
     {
         switch (finger)
         {
             case Fingers.Unknown:
             case Fingers.NoOrDead:
                 return null;
             case Fingers.Thumb:
                 return "p";
             case Fingers.IndexFinger:
                 return "i";
             case Fingers.MiddleFinger:
                 return "m";
             case Fingers.AnnularFinger:
                 return "a";
             case Fingers.LittleFinger:
                 return "c";
             default:
                 return null;
         }
     }
 }
예제 #26
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="kifu"></param>
        /// <param name="restText"></param>
        /// <param name="startposImporter"></param>
        /// <param name="logTag"></param>
        public static void OnChangeSky_Im_Srv(
            IRoomViewModel roomViewModel,
            StartposImporter startposImporter,
            KifuParserA_Genjo genjo
            )
        {
            // SFENの初期配置の書き方(*1)を元に、駒を並べます。
            //
            //     *1…「position startpos moves 7g7f 3c3d 2g2f」といった書き方。
            //

            //------------------------------
            // 駒の配置
            //------------------------------
            {
                // 先後
                Playerside nextTebanside;
                if (startposImporter.RO_SfenStartpos.PsideIsBlack)
                {
                    // 黒は先手。
                    nextTebanside = Converter04.AlternatePside(Playerside.P1);//FIXME:逆か?
                }
                else
                {
                    // 白は後手。
                    nextTebanside = Converter04.AlternatePside(Playerside.P2);//FIXME:逆か?
                }

                ShootingStarlightable move = Util_Sky.NullObjectMove;//ルートなので

                SkyConst src_Sky_New = startposImporter.ToSky();
                Node <ShootingStarlightable, KyokumenWrapper> newNode =
                    new KifuNodeImpl(
                        move,
                        new KyokumenWrapper(new SkyConst(src_Sky_New)),
                        nextTebanside
                        );

                Util_InServer.SetCurNode_Srv(roomViewModel, newNode);// GUIに通知するだけ。
            }


            //------------------------------
            // 先後
            //------------------------------
            if (startposImporter.RO_SfenStartpos.PsideIsBlack)
            {
                // 黒は先手。
                roomViewModel.GameViewModel.Kifu.SetProperty(KifuTreeImpl.PropName_FirstPside, Converter04.AlternatePside(Playerside.P1));//FIXME:逆か?
            }
            else
            {
                // 白は後手。
                roomViewModel.GameViewModel.Kifu.SetProperty(KifuTreeImpl.PropName_FirstPside, Converter04.AlternatePside(Playerside.P2));//FIXME:逆か?
            }

            // 駒袋に表示されている駒を、駒台に表示させます。
            {
                // 駒袋に表示されている駒を、駒台へ表示されるように移します。
                List <PieceType>  syuruiList = new List <PieceType>();
                List <int>        countList  = new List <int>();
                List <Playerside> psideList  = new List <Playerside>();

                //------------------------------------------------------------------------------------------------------------------------
                // 移動計画作成
                //------------------------------------------------------------------------------------------------------------------------

                //------------------------------
                // ▲王
                //------------------------------
                if (0 < startposImporter.RO_SfenStartpos.Moti1K)
                {
                    syuruiList.Add(PieceType.K);
                    countList.Add(startposImporter.RO_SfenStartpos.Moti1K);
                    psideList.Add(Playerside.P1);
                    //System.C onsole.WriteLine("mK=" + ro_SfenStartpos.Moti1K);
                }

                //------------------------------
                // ▲飛
                //------------------------------
                if (0 < startposImporter.RO_SfenStartpos.Moti1R)
                {
                    syuruiList.Add(PieceType.R);
                    countList.Add(startposImporter.RO_SfenStartpos.Moti1R);
                    psideList.Add(Playerside.P1);
                    //System.C onsole.WriteLine("mR=" + ro_SfenStartpos.Moti1R);
                }

                //------------------------------
                // ▲角
                //------------------------------
                if (0 < startposImporter.RO_SfenStartpos.Moti1B)
                {
                    syuruiList.Add(PieceType.B);
                    countList.Add(startposImporter.RO_SfenStartpos.Moti1B);
                    psideList.Add(Playerside.P1);
                    //System.C onsole.WriteLine("mB=" + ro_SfenStartpos.Moti1B);
                }

                //------------------------------
                // ▲金
                //------------------------------
                if (0 < startposImporter.RO_SfenStartpos.Moti1G)
                {
                    syuruiList.Add(PieceType.G);
                    countList.Add(startposImporter.RO_SfenStartpos.Moti1G);
                    psideList.Add(Playerside.P1);
                    //System.C onsole.WriteLine("mG=" + ro_SfenStartpos.Moti1G);
                }

                //------------------------------
                // ▲銀
                //------------------------------
                if (0 < startposImporter.RO_SfenStartpos.Moti1S)
                {
                    syuruiList.Add(PieceType.S);
                    countList.Add(startposImporter.RO_SfenStartpos.Moti1S);
                    psideList.Add(Playerside.P1);
                    //System.C onsole.WriteLine("mS=" + ro_SfenStartpos.Moti1S);
                }

                //------------------------------
                // ▲桂
                //------------------------------
                if (0 < startposImporter.RO_SfenStartpos.Moti1N)
                {
                    syuruiList.Add(PieceType.N);
                    countList.Add(startposImporter.RO_SfenStartpos.Moti1N);
                    psideList.Add(Playerside.P1);
                    //System.C onsole.WriteLine("mN=" + ro_SfenStartpos.Moti1N);
                }

                //------------------------------
                // ▲香
                //------------------------------
                if (0 < startposImporter.RO_SfenStartpos.Moti1L)
                {
                    syuruiList.Add(PieceType.L);
                    countList.Add(startposImporter.RO_SfenStartpos.Moti1L);
                    psideList.Add(Playerside.P1);
                    //System.C onsole.WriteLine("mL=" + ro_SfenStartpos.Moti1L);
                }

                //------------------------------
                // ▲歩
                //------------------------------
                if (0 < startposImporter.RO_SfenStartpos.Moti1P)
                {
                    syuruiList.Add(PieceType.P);
                    countList.Add(startposImporter.RO_SfenStartpos.Moti1P);
                    psideList.Add(Playerside.P1);
                    //System.C onsole.WriteLine("mP=" + ro_SfenStartpos.Moti1P);
                }

                //------------------------------
                // △王
                //------------------------------
                if (0 < startposImporter.RO_SfenStartpos.Moti2k)
                {
                    syuruiList.Add(PieceType.K);
                    countList.Add(startposImporter.RO_SfenStartpos.Moti2k);
                    psideList.Add(Playerside.P2);
                    //System.C onsole.WriteLine("mk=" + ro_SfenStartpos.Moti2k);
                }

                //------------------------------
                // △飛
                //------------------------------
                if (0 < startposImporter.RO_SfenStartpos.Moti2r)
                {
                    syuruiList.Add(PieceType.R);
                    countList.Add(startposImporter.RO_SfenStartpos.Moti2r);
                    psideList.Add(Playerside.P2);
                    //System.C onsole.WriteLine("mr=" + ro_SfenStartpos.Moti2r);
                }

                //------------------------------
                // △角
                //------------------------------
                if (0 < startposImporter.RO_SfenStartpos.Moti2b)
                {
                    syuruiList.Add(PieceType.B);
                    countList.Add(startposImporter.RO_SfenStartpos.Moti2b);
                    psideList.Add(Playerside.P2);
                    //System.C onsole.WriteLine("mb=" + ro_SfenStartpos.Moti2b);
                }

                //------------------------------
                // △金
                //------------------------------
                if (0 < startposImporter.RO_SfenStartpos.Moti2g)
                {
                    syuruiList.Add(PieceType.G);
                    countList.Add(startposImporter.RO_SfenStartpos.Moti2g);
                    psideList.Add(Playerside.P2);
                    //System.C onsole.WriteLine("mg=" + ro_SfenStartpos.Moti2g);
                }

                //------------------------------
                // △銀
                //------------------------------
                if (0 < startposImporter.RO_SfenStartpos.Moti2s)
                {
                    syuruiList.Add(PieceType.S);
                    countList.Add(startposImporter.RO_SfenStartpos.Moti2s);
                    psideList.Add(Playerside.P2);
                    //System.C onsole.WriteLine("ms=" + ro_SfenStartpos.Moti2s);
                }

                //------------------------------
                // △桂
                //------------------------------
                if (0 < startposImporter.RO_SfenStartpos.Moti2n)
                {
                    syuruiList.Add(PieceType.N);
                    countList.Add(startposImporter.RO_SfenStartpos.Moti2n);
                    psideList.Add(Playerside.P2);
                    //System.C onsole.WriteLine("mn=" + ro_SfenStartpos.Moti2n);
                }

                //------------------------------
                // △香
                //------------------------------
                if (0 < startposImporter.RO_SfenStartpos.Moti2l)
                {
                    syuruiList.Add(PieceType.L);
                    countList.Add(startposImporter.RO_SfenStartpos.Moti2l);
                    psideList.Add(Playerside.P2);
                    //System.C onsole.WriteLine("ml=" + ro_SfenStartpos.Moti2l);
                }

                //------------------------------
                // △歩
                //------------------------------
                if (0 < startposImporter.RO_SfenStartpos.Moti2p)
                {
                    syuruiList.Add(PieceType.P);
                    countList.Add(startposImporter.RO_SfenStartpos.Moti2p);
                    psideList.Add(Playerside.P2);
                    //System.C onsole.WriteLine("mp=" + ro_SfenStartpos.Moti2p);
                }



                //------------------------------------------------------------------------------------------------------------------------
                // 移動
                //------------------------------------------------------------------------------------------------------------------------
                for (int i = 0; i < syuruiList.Count; i++)
                {
                    Playerside itaruPside; //(至)先後
                    Okiba      itaruOkiba; //(至)置き場

                    if (Playerside.P2 == psideList[i])
                    {
                        // 宛:後手駒台
                        itaruPside = Playerside.P2;
                        itaruOkiba = Okiba.Gote_Komadai;
                    }
                    else
                    {
                        // 宛:先手駒台
                        itaruPside = Playerside.P1;
                        itaruOkiba = Okiba.Sente_Komadai;
                    }


                    //------------------------------
                    // 駒を、駒袋から駒台に移動させます。
                    //------------------------------
                    {
                        SkyBuffer buffer_Sky = new SkyBuffer(roomViewModel.GameViewModel.GuiSkyConst);

                        Fingers komas = Util_Sky.Fingers_ByOkibaSyuruiNow(new SkyConst(buffer_Sky), Okiba.KomaBukuro, syuruiList[i]);
                        int     moved = 1;
                        foreach (Finger koma in komas.Items)
                        {
                            // 駒台の空いている枡
                            SyElement akiMasu = KifuIO.GetKomadaiKomabukuroSpace(itaruOkiba, new SkyConst(buffer_Sky));

                            buffer_Sky.AddOverwriteStarlight(koma, new RO_MotionlessStarlight(
                                                                 //koma,
                                                                 new RO_Star_Koma(
                                                                     itaruPside,
                                                                     akiMasu,
                                                                     syuruiList[i]
                                                                     )));

                            if (countList[i] <= moved)
                            {
                                break;
                            }

                            moved++;
                        }
                        roomViewModel.GameViewModel.SetGuiSky(new SkyConst(buffer_Sky));
                    }
                }
            }
        }
예제 #27
0
파일: FPDal.cs 프로젝트: BoschC/fplibrary
 protected virtual FingerprintRawImage InternalGetFingerprintImage(Fingers finger)
 {
     throw new NotImplementedException();
 }
예제 #28
0
 public FingerprintRawImage GetFingerprintImage(Fingers finger)
 {
     return(InternalGetFingerprintImage(finger));
 }
예제 #29
0
 public FingerFocusedEventArgs(Fingers finger)
 {
     FocusedFinger = finger;
 }
예제 #30
0
 /// <summary>
 /// Set a flag in RegisteredFingers that the given finger is registered
 /// </summary>
 /// <param name="finger">Finger to register, if <c>Fingers.Unknown</c> then all fingers are unregistered</param>
 public void RegisterFinger(Fingers finger)
 {
     RegisteredFingers |= finger;
 }
예제 #31
0
        /// <summary>
        /// Clear a flag in RegisteredFingers indicating that the given finger is not registered
        /// </summary>
        /// <param name="finger">Finger to register, if <c>Fingers.Unknown</c> then all fingers are registered</param>
        public void UnRegisterFinger(Fingers finger)
        {
            Fingers allFingers = ~(Fingers)0;

            RegisteredFingers &= (finger ^ allFingers);
        }
예제 #32
0
 /// <summary>
 /// Returns the template for the specified finger of the current individual
 /// </summary>
 /// <param name="finger">The finger to which the template belongs</param>
 /// <returns>A fingerprint template</returns>
 public FingerprintTemplate GetTemplate(Fingers finger)
 {
     throw new NotImplementedException();
 }
예제 #33
0
 protected virtual FingerprintRawImage InternalGetFingerprintImage(Fingers finger)
 {
     throw new NotImplementedException();
 }
예제 #34
0
        private bool SetKeyImage(Fingers currentFinger, int v)
        {
            if (currentFinger == Fingers.Finger1)
            {
                if (v == 1)
                {
                    Q = true;
                }

                if (v == 1)
                {
                    W = false;
                }
                if (v == 1)
                {
                    E = false;
                }
                if (v == 1)
                {
                    R = false;
                }
                if (v == 1)
                {
                    T = false;
                }

                if (v == 2)
                {
                    Y = true;
                }

                if (v == 2)
                {
                    U = false;
                }
                if (v == 2)
                {
                    I = false;
                }
                if (v == 2)
                {
                    O = false;
                }
                if (v == 2)
                {
                    P = false;
                }
            }
            if (currentFinger == Fingers.Finger2)
            {
                if (v == 1)
                {
                    W = true;
                }

                if (v == 1)
                {
                    Q = false;
                }
                if (v == 1)
                {
                    E = false;
                }
                if (v == 1)
                {
                    R = false;
                }
                if (v == 1)
                {
                    T = false;
                }


                if (v == 2)
                {
                    U = true;
                }

                if (v == 2)
                {
                    Y = false;
                }
                if (v == 2)
                {
                    I = false;
                }
                if (v == 2)
                {
                    O = false;
                }
                if (v == 2)
                {
                    P = false;
                }
            }
            if (currentFinger == Fingers.Finger3)
            {
                if (v == 1)
                {
                    E = true;
                }

                if (v == 1)
                {
                    Q = false;
                }
                if (v == 1)
                {
                    W = false;
                }
                if (v == 1)
                {
                    R = false;
                }
                if (v == 1)
                {
                    T = false;
                }

                if (v == 2)
                {
                    I = true;
                }

                if (v == 2)
                {
                    Y = false;
                }
                if (v == 2)
                {
                    U = false;
                }
                if (v == 2)
                {
                    O = false;
                }
                if (v == 2)
                {
                    P = false;
                }
            }
            if (currentFinger == Fingers.Finger4)
            {
                if (v == 1)
                {
                    R = true;
                }

                if (v == 1)
                {
                    Q = false;
                }
                if (v == 1)
                {
                    W = false;
                }
                if (v == 1)
                {
                    E = false;
                }
                if (v == 1)
                {
                    T = false;
                }


                if (v == 2)
                {
                    O = true;
                }

                if (v == 2)
                {
                    Y = false;
                }
                if (v == 2)
                {
                    U = false;
                }
                if (v == 2)
                {
                    I = false;
                }
                if (v == 2)
                {
                    P = false;
                }
            }
            if (currentFinger == Fingers.Finger5)
            {
                if (v == 1)
                {
                    T = true;
                }

                if (v == 1)
                {
                    Q = false;
                }
                if (v == 1)
                {
                    W = false;
                }
                if (v == 1)
                {
                    E = false;
                }
                if (v == 1)
                {
                    R = false;
                }


                if (v == 2)
                {
                    P = true;
                }

                if (v == 2)
                {
                    Y = false;
                }
                if (v == 2)
                {
                    U = false;
                }
                if (v == 2)
                {
                    I = false;
                }
                if (v == 2)
                {
                    O = false;
                }
            }
            return(false);
        }
예제 #35
0
파일: FPDal.cs 프로젝트: BoschC/fplibrary
 /// <summary>
 /// Steps through all available temmplates and match fingerprint templates
 /// </summary>
 /// <param name="comparer">Delegate function that does the actual matching in the context desgnated by a particular finger</param>
 /// <param name="matchAny">If true any one finger match is sufficient for matching, if false all fingers must match</param>
 /// <param name="fingerContexts">List of matching contexts indexed by finger</param>
 /// <param name="matchFingers">Flags of fingers available for matching</param>
 /// <returns></returns>
 public object Identify(CompareFingerDelegate comparer, bool matchAny, Dictionary<Fingers, int> fingerContexts, Fingers matchFingers)
 {
     if (Connection != null && Connection.State == ConnectionState.Open)
       {
     using (IDataReader rdr = InternalGetTemplates()) //Reader must be sorted by individual
     {
       Fingers matchedFingers = 0; //fingers that have been matched
       FingerprintTemplate template;
       Fingers finger;
       while (rdr.Read())
       {
     ReadTemplate(rdr, out finger, out template);
     if ((matchFingers & finger) != 0)
     {
       if (comparer(fingerContexts[finger], template))
         matchedFingers |= finger;
     }
     if ((matchAny & ((matchFingers & matchedFingers) != 0)) | (matchFingers == matchedFingers)) //individual matched
       return rdr[IndividualFieldName];
       } //while
       return null; //No match found
     }
       }
       else
       {
     throw new FPLibraryException(FPLibraryException.LibraryDalError, "Connection is null or closed");
       }
 }
예제 #36
0
파일: FPDal.cs 프로젝트: BoschC/fplibrary
 protected virtual void ReadTemplate(IDataReader rdr, out Fingers finger, out FingerprintTemplate template)
 {
     byte[] buff = (byte[])rdr[TemplateFieldName];
       int quality = Convert.ToInt16(rdr[QualityFieldName]);
       template = new FingerprintTemplate { Size = buff.Length, Buffer = buff, Quality = quality };
       Byte fingerCode = Convert.ToByte(rdr[FingerFieldName]);
       finger = MatchFingerCode(fingerCode);
 }
예제 #37
0
파일: FPDal.cs 프로젝트: BoschC/fplibrary
 public FingerprintRawImage GetFingerprintImage(Fingers finger)
 {
     return InternalGetFingerprintImage(finger);
 }
예제 #38
0
파일: FPDal.cs 프로젝트: BoschC/fplibrary
 /// <summary>
 /// Returns the template for the specified finger of the current individual
 /// </summary>
 /// <param name="finger">The finger to which the template belongs</param>
 /// <returns>A fingerprint template</returns>
 public FingerprintTemplate GetTemplate(Fingers finger)
 {
     throw new NotImplementedException();
 }