Exemple #1
0
        private void UpdateKeyDown(KeyCode2 kc, int value)
        {
            targetArray[kc] = value;

            if (kc == KeyCode2.Left || kc == KeyCode2.Right)
            {
                HorizontalRaw = targetArray[kc];

                //目标不同,则进度清0
                if (hTarget != targetArray[kc])
                {
                    hPercent = 0f;
                }

                hTarget = targetArray[kc];
                hFactor = 1;
            }
            else if (kc == KeyCode2.Up || kc == KeyCode2.Down)
            {
                VerticalRaw = targetArray[kc];

                //目标不同,则进度清0
                if (vTarget != targetArray[kc])
                {
                    vPercent = 0f;
                }

                vTarget = targetArray[kc];
                vFactor = 1;
            }
        }
Exemple #2
0
 /// <summary>
 /// 缓存KeyUp池
 /// </summary>
 /// <param name="kc">Kc.</param>
 public void CacheKeyUp(KeyCode2 kc)
 {
     KeyUp.Add(kc);
     if (KeyPress.Contains(kc))
     {
         KeyPress.Remove(kc);
     }
 }
Exemple #3
0
        /// <summary>
        /// 检测按键弹起,支持根据devID 映射其他键值。
        /// 受IsMultiplayer参数影响
        /// </summary>
        /// <param name="kc"> 键值 </param>
        /// <param name="devID"> 需要映射的devID </param>
        /// <returns></returns>
        public static bool GetKeyUp(KeyCode2 kc, int devID = 1)
        {
            if (devID > 1)
            {
                return(keyUpPool.Contains(Mapping.DevIdTable[devID][kc]));
            }

            return(keyUpPool.Contains(kc));
        }
Exemple #4
0
        public override int Decode(byte[] buf, int startIndex)
        {
            startIndex = base.Decode(buf, startIndex);

            KeyCode     = (KeyCode2)BitConverter.ToUInt16(buf, startIndex);
            startIndex += 2;
            State       = (KeyboardState)buf[startIndex];
            startIndex += 1;

            return(startIndex);
        }
Exemple #5
0
 /// <summary>
 /// 键值入池
 /// </summary>
 /// <param name="kc">键值</param>
 /// <param name="state">键值状态</param>
 public void Cache(KeyCode2 kc, KeyboardState state)
 {
     if (state == KeyboardState.KeyDown)
     {
         CacheKeyDown(kc);
     }
     else if (state == KeyboardState.KeyUp)
     {
         CacheKeyUp(kc);
     }
 }
Exemple #6
0
 /// <summary>
 /// 检测列表包含内容
 /// </summary>
 /// <param name="target">目标列表</param>
 /// <param name="kc">键值</param>
 /// <param name="hid">手柄id</param>
 private bool CheckContains(ISet <KeyCode2> target, KeyCode2 kc, int hid)
 {
     if (hid == 1)
     {
         return(target.Contains(kc));
     }
     else if (Mapping.HidTable.TryGetValue(hid, out Dictionary <KeyCode2, KeyCode2> hidTable) && hidTable.TryGetValue(kc, out KeyCode2 realkc))
     {
         return(target.Contains(realkc));
     }
     return(false);
 }
Exemple #7
0
        public IMessage Decode(string data)
        {
            string[] keyData  = data.Split('-');
            KeyCode2 kc       = (KeyCode2)int.Parse(keyData[0]);
            string   keyState = keyData[1];

            //TODO 1p,2p 赋值
            keyboard.KeyCode = kc;
            if (keyState.Equals("down"))
            {
                keyboard.State = KeyboardState.KeyDown;
            }
            else if (keyState.Equals("up"))
            {
                keyboard.State = KeyboardState.KeyUp;
            }

            return(keyboard);
        }
Exemple #8
0
 /// <summary>
 /// 检测按键弹起,其他P键值统一反馈为1P的键值。
 /// 不受IsMultiplayer参数影响
 /// </summary>
 /// <param name="kc"></param>
 /// <returns></returns>
 public static bool GetKeyUpSingle(KeyCode2 kc)
 {
     return(singleKeyupPool.Contains(kc));
 }
Exemple #9
0
 /// <summary>
 /// 检测按键按下,其他P键值统一反馈为1P的键值。
 /// 不受IsMultiplayer参数影响
 /// </summary>
 /// <param name="kc"></param>
 /// <returns></returns>
 public static bool GetKeyDownSingle(KeyCode2 kc)
 {
     return(singleKeydownPool.Contains(kc));
 }
Exemple #10
0
        private void UpdateKeyUp(KeyCode2 kc, int value)
        {
            targetArray[kc] = value;

            if (kc == KeyCode2.Left)
            {
                HorizontalRaw = targetArray[KeyCode2.Right];

                if (targetArray[KeyCode2.Right] == 0)
                {
                    hFactor = -1;
                }
                else
                {
                    hTarget  = targetArray[KeyCode2.Right];
                    hPercent = 0f;
                }
            }
            else if (kc == KeyCode2.Right)
            {
                HorizontalRaw = targetArray[KeyCode2.Left];

                if (targetArray[KeyCode2.Left] == 0)
                {
                    hFactor = -1;
                }
                else
                {
                    hTarget  = targetArray[KeyCode2.Left];
                    hPercent = 0f;
                }
            }
            else if (kc == KeyCode2.Up)
            {
                VerticalRaw = targetArray[KeyCode2.Down];

                if (targetArray[KeyCode2.Down] == 0)
                {
                    vFactor = -1;
                }
                else
                {
                    vTarget  = targetArray[KeyCode2.Down];
                    vPercent = 0f;
                }
            }
            else if (kc == KeyCode2.Down)
            {
                VerticalRaw = targetArray[KeyCode2.Up];

                if (targetArray[KeyCode2.Up] == 0)
                {
                    vFactor = -1;
                }
                else
                {
                    vTarget  = targetArray[KeyCode2.Up];
                    vPercent = 0f;
                }
            }
        }
Exemple #11
0
 /// <summary>
 /// 依据手柄hid,检测按键弹起
 /// </summary>
 /// <param name="kc"> 键值 </param>
 /// <param name="hid"> 手柄id </param>
 /// <returns></returns>
 public static bool GetKeyUp(KeyCode2 kc, int hid)
 {
     return(That.GetKeyUp(kc, hid));
 }
Exemple #12
0
 /// <summary>
 /// 检测按键弹起
 /// </summary>
 public static bool GetKeyUp(KeyCode2 kc)
 {
     return(That.GetKeyUp(kc));
 }
Exemple #13
0
 /// <summary>
 /// 缓存KeyDown池
 /// </summary>
 /// <param name="kc">Kc.</param>
 public void CacheKeyDown(KeyCode2 kc)
 {
     KeyDown.Add(kc);
     KeyPress.Add(kc);
 }
Exemple #14
0
 /// <summary>
 /// 依据手柄hid,检测按键弹起
 /// </summary>
 /// <param name="kc"> 键值 </param>
 /// <param name="hid"> 手柄id </param>
 /// <returns>弹起返回true</returns>
 public bool GetKeyUp(KeyCode2 kc, int hid)
 {
     return(CheckContains(multiPool.KeyUp, kc, hid));
 }
Exemple #15
0
 /// <summary>
 /// 检测按键弹起
 /// </summary>
 public bool GetKeyUp(KeyCode2 kc)
 {
     return(singlePool.KeyUp.Contains(kc));
 }
Exemple #16
0
 /// <summary>
 /// 检测按键持续按下
 /// </summary>
 public bool GetKey(KeyCode2 kc)
 {
     return(singlePool.KeyPress.Contains(kc));
 }