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; } }
/// <summary> /// 缓存KeyUp池 /// </summary> /// <param name="kc">Kc.</param> public void CacheKeyUp(KeyCode2 kc) { KeyUp.Add(kc); if (KeyPress.Contains(kc)) { KeyPress.Remove(kc); } }
/// <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)); }
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); }
/// <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); } }
/// <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); }
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); }
/// <summary> /// 检测按键弹起,其他P键值统一反馈为1P的键值。 /// 不受IsMultiplayer参数影响 /// </summary> /// <param name="kc"></param> /// <returns></returns> public static bool GetKeyUpSingle(KeyCode2 kc) { return(singleKeyupPool.Contains(kc)); }
/// <summary> /// 检测按键按下,其他P键值统一反馈为1P的键值。 /// 不受IsMultiplayer参数影响 /// </summary> /// <param name="kc"></param> /// <returns></returns> public static bool GetKeyDownSingle(KeyCode2 kc) { return(singleKeydownPool.Contains(kc)); }
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; } } }
/// <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)); }
/// <summary> /// 检测按键弹起 /// </summary> public static bool GetKeyUp(KeyCode2 kc) { return(That.GetKeyUp(kc)); }
/// <summary> /// 缓存KeyDown池 /// </summary> /// <param name="kc">Kc.</param> public void CacheKeyDown(KeyCode2 kc) { KeyDown.Add(kc); KeyPress.Add(kc); }
/// <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)); }
/// <summary> /// 检测按键弹起 /// </summary> public bool GetKeyUp(KeyCode2 kc) { return(singlePool.KeyUp.Contains(kc)); }
/// <summary> /// 检测按键持续按下 /// </summary> public bool GetKey(KeyCode2 kc) { return(singlePool.KeyPress.Contains(kc)); }