upgrate
This commit is contained in:
parent
d165b75f02
commit
f3aa411e51
@ -14,8 +14,14 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
vfSetting: {fileID: 11400000, guid: b304f98f44ccac546969282b7054a052, type: 2}
|
vfSetting: {fileID: 11400000, guid: b304f98f44ccac546969282b7054a052, type: 2}
|
||||||
debugGraphBackgroundStyle: {fileID: 7433441132597879392, guid: cbaf6570e48ba6248a61745f7f4473d4, type: 3}
|
debugGraphBackgroundStyle: {fileID: 7433441132597879392, guid: cbaf6570e48ba6248a61745f7f4473d4, type: 3}
|
||||||
uploaderClassName: VersionFlow.Editors.PatchUploader_LocalFileSystem
|
uploaderClassName: VersionFlow.Editors.PatchUpLoader_AliOSS
|
||||||
uploaderCfgJson: '{"UploadRoot":"../LocalPatchRoot"}'
|
UploaderCfgDict:
|
||||||
|
m_keys:
|
||||||
|
- VersionFlow.Editors.PatchUploader_LocalFileSystem
|
||||||
|
- VersionFlow.Editors.PatchUpLoader_AliOSS
|
||||||
|
m_values:
|
||||||
|
- '{"UploadRoot":"./LocalPatch"}'
|
||||||
|
- '{"BucketName":"asdad","UploadPath":"asdasd","accessKeyId":"asdasd","accessKeySecret":"dasdad","endPoint":"asdasd"}'
|
||||||
Options: 288
|
Options: 288
|
||||||
Groups:
|
Groups:
|
||||||
- GroupName: Backpack
|
- GroupName: Backpack
|
||||||
|
|||||||
137
Assets/VersionFlow/Runtime/SerializableDictionary.cs
Normal file
137
Assets/VersionFlow/Runtime/SerializableDictionary.cs
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace VersionFlow.Runtime.Builder
|
||||||
|
{
|
||||||
|
[Serializable]
|
||||||
|
public class SerializableDictionary<KEY, VALUE> : IDictionary<KEY, VALUE>
|
||||||
|
{
|
||||||
|
[SerializeField]
|
||||||
|
List<KEY> m_keys = new List<KEY>();
|
||||||
|
[SerializeField]
|
||||||
|
List<VALUE> m_values = new List<VALUE>();
|
||||||
|
|
||||||
|
public void Add(KEY key, VALUE value)
|
||||||
|
{
|
||||||
|
if (m_keys.Contains(key))
|
||||||
|
throw new Exception("Key Exist");
|
||||||
|
|
||||||
|
m_keys.Add(key);
|
||||||
|
m_values.Add(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool ContainsKey(KEY key)
|
||||||
|
{
|
||||||
|
return m_keys.Contains(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Remove(KEY key)
|
||||||
|
{
|
||||||
|
if (!ContainsKey(key)) return false;
|
||||||
|
|
||||||
|
var index = m_keys.IndexOf(key);
|
||||||
|
m_keys.RemoveAt(index);
|
||||||
|
m_values.RemoveAt(index);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool TryGetValue(KEY key, out VALUE value)
|
||||||
|
{
|
||||||
|
value = default;
|
||||||
|
var index = m_keys.IndexOf(key);
|
||||||
|
if (index == -1) return false;
|
||||||
|
|
||||||
|
value = m_values[index];
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public VALUE this[KEY key]
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
var index = m_keys.IndexOf(key);
|
||||||
|
if (index == -1) throw new KeyNotFoundException();
|
||||||
|
return m_values[index];
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
var index = m_keys.IndexOf(key);
|
||||||
|
if (index == -1)
|
||||||
|
{
|
||||||
|
Add(key, value);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_keys[index] = key;
|
||||||
|
m_values[index] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public ICollection<KEY> Keys => m_keys;
|
||||||
|
|
||||||
|
public ICollection<VALUE> Values => m_values;
|
||||||
|
|
||||||
|
public void Add(KeyValuePair<KEY, VALUE> item)
|
||||||
|
{
|
||||||
|
Add(item.Key, item.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Clear()
|
||||||
|
{
|
||||||
|
m_keys.Clear();
|
||||||
|
m_values.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Contains(KeyValuePair<KEY, VALUE> item)
|
||||||
|
{
|
||||||
|
if (!TryGetValue(item.Key, out VALUE value)) return false;
|
||||||
|
|
||||||
|
return EqualityComparer<VALUE>.Default.Equals(value, item.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CopyTo(KeyValuePair<KEY, VALUE>[] array, int arrayIndex)
|
||||||
|
{
|
||||||
|
if (array == null)
|
||||||
|
throw new ArgumentNullException(nameof(array));
|
||||||
|
|
||||||
|
if (arrayIndex < 0 || arrayIndex >= array.Length)
|
||||||
|
throw new ArgumentOutOfRangeException(nameof(arrayIndex));
|
||||||
|
|
||||||
|
if (array.Length - arrayIndex < Count)
|
||||||
|
throw new ArgumentException("Destination array is not long enough to copy all the items in the collection. Check array index and length.");
|
||||||
|
|
||||||
|
for (int i = 0; i < m_keys.Count; i++)
|
||||||
|
{
|
||||||
|
array[arrayIndex + i] = new KeyValuePair<KEY, VALUE>(m_keys[i], m_values[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Remove(KeyValuePair<KEY, VALUE> item)
|
||||||
|
{
|
||||||
|
if (!Contains(item)) return false;
|
||||||
|
|
||||||
|
return Remove(item.Key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Count => m_keys.Count;
|
||||||
|
|
||||||
|
public bool IsReadOnly => false;
|
||||||
|
|
||||||
|
public IEnumerator<KeyValuePair<KEY, VALUE>> GetEnumerator()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < m_keys.Count; i++)
|
||||||
|
{
|
||||||
|
yield return new KeyValuePair<KEY, VALUE>(m_keys[i], m_values[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
IEnumerator IEnumerable.GetEnumerator()
|
||||||
|
{
|
||||||
|
return GetEnumerator();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/VersionFlow/Runtime/SerializableDictionary.cs.meta
Normal file
11
Assets/VersionFlow/Runtime/SerializableDictionary.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: fa315da522bc0f04599c822154d9d749
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Loading…
Reference in New Issue
Block a user