Update EcsWorldConfig.cs

This commit is contained in:
Mikhail 2024-02-10 15:00:30 +08:00
parent 181f0ecde9
commit 71464421a4

View File

@ -1,27 +1,25 @@
using System; using System.Collections.Generic;
using System.Collections.Generic;
namespace DCFApixels.DragonECS namespace DCFApixels.DragonECS
{ {
public interface IEcsWorldConfig public interface IEcsWorldConfig
{ {
bool IsLocked { get; } bool Has(string valueName);
void Lock(); T Get<T>(string valueName);
bool TryGet<T>(string valueName, out T value);
}
public interface IEcsWorldConfigWriter
{
void Set<T>(string valueName, T value); void Set<T>(string valueName, T value);
bool Has(string valueName); bool Has(string valueName);
T Get<T>(string valueName); T Get<T>(string valueName);
bool TryGet<T>(string valueName, out T value); bool TryGet<T>(string valueName, out T value);
void Remove(string valueName); void Remove(string valueName);
} }
public class EcsWorldConfig : IEcsWorldConfig public class EcsWorldConfig : IEcsWorldConfigWriter, IEcsWorldConfig
{ {
private Dictionary<string, object> _storage = new Dictionary<string, object>(); private Dictionary<string, object> _storage = new Dictionary<string, object>();
private bool _isLocked = false;
public bool IsLocked { get { return _isLocked; } }
public void Lock()
{
_isLocked = true;
}
public T Get<T>(string valueName) public T Get<T>(string valueName)
{ {
return (T)_storage[valueName]; return (T)_storage[valueName];
@ -32,18 +30,10 @@ namespace DCFApixels.DragonECS
} }
public void Remove(string valueName) public void Remove(string valueName)
{ {
if (_isLocked)
{
throw new InvalidOperationException();
}
_storage.Remove(valueName); _storage.Remove(valueName);
} }
public void Set<T>(string valueName, T value) public void Set<T>(string valueName, T value)
{ {
if (_isLocked)
{
throw new InvalidOperationException();
}
_storage[valueName] = value; _storage[valueName] = value;
} }
public bool TryGet<T>(string valueName, out T value) public bool TryGet<T>(string valueName, out T value)
@ -67,7 +57,7 @@ namespace DCFApixels.DragonECS
private const string ENTITIES_CAPACITY = nameof(ENTITIES_CAPACITY); private const string ENTITIES_CAPACITY = nameof(ENTITIES_CAPACITY);
private const int ENTITIES_CAPACITY_DEFAULT = 512; private const int ENTITIES_CAPACITY_DEFAULT = 512;
public static TConfig Set_EntitiesCapacity<TConfig>(this TConfig self, int value) public static TConfig Set_EntitiesCapacity<TConfig>(this TConfig self, int value)
where TConfig : IEcsWorldConfig where TConfig : IEcsWorldConfigWriter
{ {
self.Set(ENTITIES_CAPACITY, value); self.Set(ENTITIES_CAPACITY, value);
return self; return self;
@ -90,7 +80,7 @@ namespace DCFApixels.DragonECS
private const string POOLS_CAPACITY = nameof(POOLS_CAPACITY); private const string POOLS_CAPACITY = nameof(POOLS_CAPACITY);
private const int POOLS_CAPACITY_DEFAULT = 512; private const int POOLS_CAPACITY_DEFAULT = 512;
public static TConfig Set_PoolsCapacity<TConfig>(this TConfig self, int value) public static TConfig Set_PoolsCapacity<TConfig>(this TConfig self, int value)
where TConfig : IEcsWorldConfig where TConfig : IEcsWorldConfigWriter
{ {
self.Set(POOLS_CAPACITY, value); self.Set(POOLS_CAPACITY, value);
return self; return self;
@ -103,7 +93,7 @@ namespace DCFApixels.DragonECS
private const string COMPONENT_POOL_CAPACITY = nameof(COMPONENT_POOL_CAPACITY); private const string COMPONENT_POOL_CAPACITY = nameof(COMPONENT_POOL_CAPACITY);
private const int COMPONENT_POOL_CAPACITY_DEFAULT = 512; private const int COMPONENT_POOL_CAPACITY_DEFAULT = 512;
public static TConfig Set_PoolComponentsCapacity<TConfig>(this TConfig self, int value) public static TConfig Set_PoolComponentsCapacity<TConfig>(this TConfig self, int value)
where TConfig : IEcsWorldConfig where TConfig : IEcsWorldConfigWriter
{ {
self.Set(COMPONENT_POOL_CAPACITY, value); self.Set(COMPONENT_POOL_CAPACITY, value);
return self; return self;
@ -115,7 +105,7 @@ namespace DCFApixels.DragonECS
private const string POOL_RECYCLED_COMPONENTS_CAPACITY = nameof(POOL_RECYCLED_COMPONENTS_CAPACITY); private const string POOL_RECYCLED_COMPONENTS_CAPACITY = nameof(POOL_RECYCLED_COMPONENTS_CAPACITY);
public static TConfig Set_PoolRecycledComponentsCapacity<TConfig>(this TConfig self, int value) public static TConfig Set_PoolRecycledComponentsCapacity<TConfig>(this TConfig self, int value)
where TConfig : IEcsWorldConfig where TConfig : IEcsWorldConfigWriter
{ {
self.Set(POOL_RECYCLED_COMPONENTS_CAPACITY, value); self.Set(POOL_RECYCLED_COMPONENTS_CAPACITY, value);
return self; return self;