/// <summary> /// キーフィールドを追加し、キーを変更するハンドラを取得する /// </summary> /// <param name="field"></param> /// <param name="handler"></param> public void AddKeyField(IKeyFieldAccesser field, out IAlterKeyHandler handler) { int index = DataId.GetData(field.KeyId); _fields.Add(field); _alters[index].AddKeyField(field); handler = _alters[index]; }
/// <summary> /// キー配置に対応するキーフィールドを追加 /// </summary> /// <param name="field"></param> public void AddKeyField(IKeyFieldAccesser field) { if (!_svKeys.ContainsKey(field.KeyId)) { Log.Warning("フィールドIDがキー配置に対応していません(ID:{0:X8})", field.KeyId); return; } _uniKeys[_svKeys[field.KeyId]] = field; }
/// <summary> /// IAlterKeyHandlerを参照 /// </summary> /// <param name="field"></param> /// <param name="code"></param> public void AlterKey(IKeyFieldAccesser field, KeyCode code) { // 引数のキーコードが既に設定済み if (_uniKeys.ContainsKey(code)) { IKeyFieldAccesser duField = _uniKeys[code]; duField.Code = KeyCode.None; _svKeys[duField.KeyId] = KeyCode.None; } field.Code = code; _uniKeys[code] = field; _svKeys[field.KeyId] = code; }
/// <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; } }