/// <summary> /// 入力許可を設定 /// </summary> /// <param name="keyId">キーID</param> /// <param name="enable">入力許可の有無</param> public void SetKeyEnable(int keyId, bool enable) { if (!DataId.EqualsUpper(keyId, KeyIdOffset.UI)) { Log.Error("キーIDの種類が異なります(ID:{0:X8})", keyId); return; } int index = DataId.GetIndex(keyId); if (index <= 0) { Log.Error("キーIDのインデックスが不正(ID:{0:X8})", keyId); return; } IKeyMap keyMap; if (!_keyConfig.TryGetKeyMap(index, out keyMap)) { return; } keyMap.SetKeyEnable(keyId, enable); }
/// <summary> /// キーIDから配列インデックスに変換する /// </summary> /// <param name="keyId">キーID</param> /// <param name="index">変換したインデックス</param> /// <returns>処理結果</returns> bool TryConvertIndex(int keyId, out int index) { if (!DataId.EqualsUpper(keyId, _data[0].id)) { Log.Error("IDの種類が異なります(KID:{0:X8}, Offset:{1:X8})", keyId, _data[0].id); index = -1; return false; } if (DataId.GetData(keyId) != DataId.GetIndex(Id)) { Log.Error("マップIDが異なります(KID:{0:X8}, MID:{1:X8})", keyId, Id); index = -1; return false; } index = DataId.GetIndex(keyId); if (index <= 0 || index >= _data.Length) { Log.Error("インデックスが不正(KID:{0:X8}, Num:{1})", keyId, _data.Length - 1); index = -1; return false; } return true; }
/// <summary> /// キーフィールドを追加し、キーコードを設定するハンドラを取得する /// </summary> /// <param name="field">キーフィールド</param> /// <param name="handler">キーコードを設定するハンドラ</param> public void AddKeyField(IKeyFieldAccesser field, out IAlterKeyHandler handler) { if (DataId.EqualsUpper(field.KeyId, KeyIdOffset.UI)) { _uiGroup.AddKeyField(field, out handler); } else if (DataId.EqualsUpper(field.KeyId, KeyIdOffset.P1)) { _plGroup.AddKeyField(field, out handler); } else { Log.Error("キーフィールドのIDが不正(ID:{0:X8})", field.KeyId); handler = null; } }
/// <summary> /// キー設定を反映させる /// </summary> /// <param name="keys">キー設定</param> public void ApplyKey(Dictionary <int, KeyCode> keys) { int index; foreach (var pair in keys) { if (!DataId.EqualsUpper(pair.Key, _idOffset)) { Log.Error("キーIDの種類が異なります(ID:{0:X8})", pair.Key); return; } index = DataId.GetData(pair.Key); if (index <= 0) { Log.Warning("キーIDのインデックスが不正(ID:{0:X8})", pair.Key); continue; } _keyMaps[index].AlterKeyCode(pair.Key, pair.Value); } }
void ShowKeyId() { int offset = _spOffset.intValue; int keyId = 0; if (DataId.EqualsUpper(offset, KeyIdOffset.UI)) { EUIKeyId keyIdEnum = (EUIKeyId)_spKeyId.intValue; keyIdEnum = (EUIKeyId)EditorGUILayout.EnumPopup( _spKeyId.displayName, keyIdEnum); keyId = (int)keyIdEnum; } else if (DataId.EqualsUpper(offset, KeyIdOffset.P1)) { EPKeyId keyIdEnum = (EPKeyId)_spKeyId.intValue; keyIdEnum = (EPKeyId)EditorGUILayout.EnumPopup( _spKeyId.displayName, keyIdEnum); keyId = (int)keyIdEnum; } _spKeyId.intValue = keyId; }