Beispiel #1
0
        /// <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;
        }
Beispiel #2
0
        /// <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];
        }
Beispiel #3
0
        /// <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);
            }
        }