/// <summary> /// キー情報の内容をチェックする /// </summary> /// <param name="keyData">キー情報</param> /// <returns></returns> bool ValidateKeyData(KeyData keyData) { if (keyData.id <= 0) { Log.Error("キーIDが設定されていません(ID:{0:X8})", keyData.id); return false; } return true; }
static KeyData() { KeyData data; data.id = -1; data.code = KeyCode.None; data.defCode = KeyCode.None; data.use = false; empty = data; }
/// <summary> /// 指定したIDのキー情報を取得する /// </summary> /// <param name="keyId">キーID</param> /// <param name="keyData">取得するキー情報</param> public void GetKeyData(int keyId, out KeyData keyData) { int index; if (!TryConvertIndex(keyId, out index)) { keyData = KeyData.empty; return; } keyData = _data[index]; }
/// <summary> /// 指定したキー情報をマップに設定する /// </summary> /// <param name="keyId">キーID</param> /// <param name="keyData">設定するキー情報</param> public void SetKeyData(int keyId, KeyData keyData) { int index; if (!TryConvertIndex(keyId, out index)) return; if (!ValidateKeyData(keyData)) return; _data[index] = keyData; }
/// <summary> /// キー情報を取得する /// </summary> /// <param name="mapId">キーマップの番号</param> /// <param name="keyId">マップ内のキーID</param> /// <param name="keyData">取得するキー情報</param> /// <returns>キー情報が存在するならtrue、それ以外はfalse</returns> public bool TryGetKeyData(int mapId, int keyId, out KeyData keyData) { IKeyMap keyMap; if (!TryGetKeyMap(mapId, out keyMap)) { keyData = KeyData.empty; return(false); } return(keyMap.TryGetKeyData(keyId, out keyData)); }
/// <summary> /// キー情報を取得する /// </summary> /// <param name="mapId">キーマップの番号</param> /// <param name="keyId">マップ内のキーID</param> /// <param name="keyData">取得するキー情報</param> public void GetKeyData(int mapId, int keyId, out KeyData keyData) { IKeyMap keyMap; if (!TryGetKeyMap(mapId, out keyMap)) { keyData = KeyData.empty; return; } keyMap.GetKeyData(keyId, out keyData); }
/// <summary> /// 配列のインデックス指定されたキー情報を取得する /// </summary> /// <param name="index">キー情報配列のインデックス(>=1)</param> /// <param name="keyData">取得するキー情報</param> /// <returns>true:キー情報が存在する。false:それ以外</returns> public bool TryGetKeyDataAtIndex(int index, out KeyData keyData) { if (index <= 0 || index >= _data.Length) { Log.Warning("キー情報のインデックス範囲外です(MID:{0:X8})", Id); keyData = KeyData.empty; return false; } keyData = _data[index]; return true; }
/// <summary> /// デフォルトのキーコードに変更する /// </summary> /// <param name="index">キー情報のインデックス</param> public void AlterDefaultKeyAtIndex(int index) { if (index <= 0 || index >= _data.Length) { Log.Warning("キー情報のインデックス範囲外です(MID:{0:X8})", Id); return; } KeyData keyData = _data[index]; keyData.code = keyData.defCode; keyData.use = (keyData.code != KeyCode.None); _data[index] = keyData; }
/// <summary> /// 指定したIDのキー情報を取得する /// </summary> /// <param name="keyId">キーID</param> /// <param name="keyData">取得するキー情報</param> /// <returns>true:キー情報が存在する。false:それ以外</returns> public bool TryGetKeyData(int keyId, out KeyData keyData) { int index; if (!TryConvertIndex(keyId, out index)) { keyData = KeyData.empty; return false; } keyData = _data[index]; return true; }
/// <summary> /// キーを使用するかを設定する /// </summary> /// <param name="keyId">設定するキーのID</param> /// <param name="isUse">使用フラグ</param> public void SetKeyEnable(int keyId, bool isUse) { int index; if (!TryConvertIndex(keyId, out index)) return; KeyData keyData = _data[index]; if (!ValidateKeyData(keyData)) return; keyData.use = isUse; _data[index] = keyData; }
/// <summary> /// 指定したキーIDのキーコードを変更する /// </summary> /// <param name="keyId">キーID</param> /// <param name="code">変更するキーコード</param> public void AlterKeyCode(int keyId, KeyCode code) { int index; if (!TryConvertIndex(keyId, out index)) return; KeyData keyData = _data[index]; if (!ValidateKeyData(keyData)) return; keyData.code = code; keyData.use = (keyData.code != KeyCode.None); _data[index] = keyData; }