mirror of
https://github.com/DCFApixels/DragonECS.git
synced 2025-09-19 02:24:37 +08:00
fix LayerList
This commit is contained in:
parent
ef18594f82
commit
4196c1e600
@ -176,7 +176,7 @@ namespace DCFApixels.DragonECS
|
|||||||
#region AddModule IEcsModule
|
#region AddModule IEcsModule
|
||||||
public Builder AddModule(IEcsModule module, AddParams parameters)
|
public Builder AddModule(IEcsModule module, AddParams parameters)
|
||||||
{
|
{
|
||||||
if(module is IEcsProcess system)
|
if (module is IEcsProcess system)
|
||||||
{
|
{
|
||||||
return AddSystem_Internal(system, parameters);
|
return AddSystem_Internal(system, parameters);
|
||||||
}
|
}
|
||||||
@ -417,12 +417,13 @@ namespace DCFApixels.DragonECS
|
|||||||
{
|
{
|
||||||
// Автоматический слой нужный только для метода Add
|
// Автоматический слой нужный только для метода Add
|
||||||
// Идея в том что метод Add добавляет слои до EcsConsts.END_LAYER и EcsConsts.POST_END_LAYER
|
// Идея в том что метод Add добавляет слои до EcsConsts.END_LAYER и EcsConsts.POST_END_LAYER
|
||||||
private const string ADD_LAYERS_LAYER = nameof(LayerList) + "." + nameof(ADD_LAYERS_LAYER);
|
// private const string ADD_LAYERS_LAYER = nameof(LayerList) + "." + nameof(ADD_LAYERS_LAYER);
|
||||||
|
|
||||||
|
|
||||||
private Builder _source;
|
private Builder _source;
|
||||||
private List<string> _layers;
|
private List<string> _layers;
|
||||||
private string _basicLayerName;
|
private string _basicLayerName;
|
||||||
|
private string _addLayerName;
|
||||||
|
|
||||||
#region Properties
|
#region Properties
|
||||||
public int Count { get { return _layers.Count; } }
|
public int Count { get { return _layers.Count; } }
|
||||||
@ -433,21 +434,31 @@ namespace DCFApixels.DragonECS
|
|||||||
public LayerList(Builder source, string basicLayerName)
|
public LayerList(Builder source, string basicLayerName)
|
||||||
{
|
{
|
||||||
_source = source;
|
_source = source;
|
||||||
_layers = new List<string>(16) { basicLayerName, ADD_LAYERS_LAYER };
|
//_layers = new List<string>(16) { basicLayerName, ADD_LAYERS_LAYER };
|
||||||
|
_layers = new List<string>(16) { basicLayerName };
|
||||||
_basicLayerName = basicLayerName;
|
_basicLayerName = basicLayerName;
|
||||||
|
_addLayerName = _basicLayerName;
|
||||||
}
|
}
|
||||||
public LayerList(Builder source, string preBeginlayer, string beginlayer, string basicLayer, string endLayer, string postEndLayer)
|
public LayerList(Builder source, string preBeginlayer, string beginlayer, string basicLayer, string endLayer, string postEndLayer)
|
||||||
{
|
{
|
||||||
_source = source;
|
_source = source;
|
||||||
_layers = new List<string>(16) { preBeginlayer, beginlayer, basicLayer, ADD_LAYERS_LAYER, endLayer, postEndLayer };
|
//_layers = new List<string>(16) { preBeginlayer, beginlayer, basicLayer, ADD_LAYERS_LAYER, endLayer, postEndLayer };
|
||||||
|
_layers = new List<string>(16) { preBeginlayer, beginlayer, basicLayer, endLayer, postEndLayer };
|
||||||
_basicLayerName = basicLayer;
|
_basicLayerName = basicLayer;
|
||||||
|
_addLayerName = _basicLayerName;
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Edit
|
#region Edit
|
||||||
|
|
||||||
#region Single
|
#region Single
|
||||||
public Builder Add(string newLayer) { return InsertAfter(ADD_LAYERS_LAYER, newLayer); }
|
//public Builder Add(string newLayer) { return InsertAfter(ADD_LAYERS_LAYER, newLayer); }
|
||||||
|
public Builder Add(string newLayer)
|
||||||
|
{
|
||||||
|
InsertAfter(_addLayerName, newLayer);
|
||||||
|
_addLayerName = newLayer;
|
||||||
|
return _source;
|
||||||
|
}
|
||||||
public Builder Insert(string targetLayer, string newLayer)
|
public Builder Insert(string targetLayer, string newLayer)
|
||||||
{
|
{
|
||||||
if (Contains(newLayer)) { return _source; }
|
if (Contains(newLayer)) { return _source; }
|
||||||
@ -464,10 +475,10 @@ namespace DCFApixels.DragonECS
|
|||||||
{
|
{
|
||||||
if (Contains(newLayer)) { return _source; }
|
if (Contains(newLayer)) { return _source; }
|
||||||
|
|
||||||
if (targetLayer == _basicLayerName) // нужно чтобы метод Add работал правильно. _basicLayerName и ADD_LAYER считается одним слоем, поэтому Before = _basicLayerName After = ADD_LAYER
|
//if (targetLayer == _basicLayerName) // нужно чтобы метод Add работал правильно. _basicLayerName и ADD_LAYER считается одним слоем, поэтому Before = _basicLayerName After = ADD_LAYER
|
||||||
{
|
//{
|
||||||
targetLayer = ADD_LAYERS_LAYER;
|
// targetLayer = ADD_LAYERS_LAYER;
|
||||||
}
|
//}
|
||||||
|
|
||||||
int index = _layers.IndexOf(targetLayer);
|
int index = _layers.IndexOf(targetLayer);
|
||||||
if (index < 0)
|
if (index < 0)
|
||||||
@ -485,10 +496,10 @@ namespace DCFApixels.DragonECS
|
|||||||
}
|
}
|
||||||
public Builder MoveAfter(string targetLayer, string movingLayer)
|
public Builder MoveAfter(string targetLayer, string movingLayer)
|
||||||
{
|
{
|
||||||
if (targetLayer == _basicLayerName) // нужно чтобы метод Add работал правильно. _basicLayerName и ADD_LAYER считается одним слоем, поэтому Before = _basicLayerName After = ADD_LAYER
|
//if (targetLayer == _basicLayerName) // нужно чтобы метод Add работал правильно. _basicLayerName и ADD_LAYER считается одним слоем, поэтому Before = _basicLayerName After = ADD_LAYER
|
||||||
{
|
//{
|
||||||
targetLayer = ADD_LAYERS_LAYER;
|
// targetLayer = ADD_LAYERS_LAYER;
|
||||||
}
|
//}
|
||||||
|
|
||||||
_layers.Remove(movingLayer);
|
_layers.Remove(movingLayer);
|
||||||
return InsertAfter(targetLayer, movingLayer);
|
return InsertAfter(targetLayer, movingLayer);
|
||||||
@ -496,7 +507,13 @@ namespace DCFApixels.DragonECS
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Range
|
#region Range
|
||||||
public Builder Add(params string[] newLayers) { return InsertAfter(ADD_LAYERS_LAYER, newLayers); }
|
//public Builder Add(params string[] newLayers) { return InsertAfter(ADD_LAYERS_LAYER, newLayers); }
|
||||||
|
public Builder Add(params string[] newLayers)
|
||||||
|
{
|
||||||
|
InsertAfter(_addLayerName, newLayers);
|
||||||
|
_addLayerName = newLayers[newLayers.Length - 1];
|
||||||
|
return _source;
|
||||||
|
}
|
||||||
public Builder Insert(string targetLayer, params string[] newLayers)
|
public Builder Insert(string targetLayer, params string[] newLayers)
|
||||||
{
|
{
|
||||||
int index = _layers.IndexOf(targetLayer);
|
int index = _layers.IndexOf(targetLayer);
|
||||||
@ -509,10 +526,10 @@ namespace DCFApixels.DragonECS
|
|||||||
}
|
}
|
||||||
public Builder InsertAfter(string targetLayer, params string[] newLayers)
|
public Builder InsertAfter(string targetLayer, params string[] newLayers)
|
||||||
{
|
{
|
||||||
if (targetLayer == _basicLayerName) // нужно чтобы метод Add работал правильно. _basicLayerName и ADD_LAYER считается одним слоем, поэтому Before = _basicLayerName After = ADD_LAYER
|
//if (targetLayer == _basicLayerName) // нужно чтобы метод Add работал правильно. _basicLayerName и ADD_LAYER считается одним слоем, поэтому Before = _basicLayerName After = ADD_LAYER
|
||||||
{
|
//{
|
||||||
targetLayer = ADD_LAYERS_LAYER;
|
// targetLayer = ADD_LAYERS_LAYER;
|
||||||
}
|
//}
|
||||||
|
|
||||||
int index = _layers.IndexOf(targetLayer);
|
int index = _layers.IndexOf(targetLayer);
|
||||||
if (index < 0)
|
if (index < 0)
|
||||||
@ -533,10 +550,10 @@ namespace DCFApixels.DragonECS
|
|||||||
}
|
}
|
||||||
public Builder MoveAfter(string targetLayer, params string[] movingLayers)
|
public Builder MoveAfter(string targetLayer, params string[] movingLayers)
|
||||||
{
|
{
|
||||||
if (targetLayer == _basicLayerName) // нужно чтобы метод Add работал правильно. _basicLayerName и ADD_LAYER считается одним слоем, поэтому Before = _basicLayerName After = ADD_LAYER
|
//if (targetLayer == _basicLayerName) // нужно чтобы метод Add работал правильно. _basicLayerName и ADD_LAYER считается одним слоем, поэтому Before = _basicLayerName After = ADD_LAYER
|
||||||
{
|
//{
|
||||||
targetLayer = ADD_LAYERS_LAYER;
|
// targetLayer = ADD_LAYERS_LAYER;
|
||||||
}
|
//}
|
||||||
|
|
||||||
foreach (var movingLayer in movingLayers)
|
foreach (var movingLayer in movingLayers)
|
||||||
{
|
{
|
||||||
@ -552,8 +569,11 @@ namespace DCFApixels.DragonECS
|
|||||||
private static bool AreMatchingOrderIdentical(IReadOnlyList<string> listA, IReadOnlyList<string> listB)
|
private static bool AreMatchingOrderIdentical(IReadOnlyList<string> listA, IReadOnlyList<string> listB)
|
||||||
{
|
{
|
||||||
int indexA = 0;
|
int indexA = 0;
|
||||||
|
//if (listA.Contains(ADD_LAYERS_LAYER)) { indexA++; }// чтобы игнорировать слой ADD_LAYERS_LAYER
|
||||||
|
|
||||||
foreach (string itemB in listB)
|
foreach (string itemB in listB)
|
||||||
{
|
{
|
||||||
|
//if (itemB == ADD_LAYERS_LAYER) { continue; } // чтобы игнорировать слой ADD_LAYERS_LAYER
|
||||||
if (indexA < listA.Count && listA[indexA] == itemB)
|
if (indexA < listA.Count && listA[indexA] == itemB)
|
||||||
{
|
{
|
||||||
indexA++;
|
indexA++;
|
||||||
|
Loading…
Reference in New Issue
Block a user