daily update on 20230320 by nitload youmu

This commit is contained in:
Nitload
2023-03-20 01:45:49 +08:00
parent 167e33a3dd
commit db2ca36fd7
100 changed files with 1211 additions and 746 deletions
+17 -9
View File
@@ -1,17 +1,30 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
namespace StgSharp
{
public class ContainerNode<T> where T : INode
public interface INode<T> where T : INode<T>
{
internal readonly T _this;
internal ContainerNode<T> ID { get; }
internal void setID<T>(ContainerNode<T> id) where T : INode<T>;
}
public class ContainerNode<T> where T : INode<T>
{
internal readonly T _value;
internal ContainerNode<T> _previous;
internal ContainerNode<T> _next;
internal ContainerNode<T> _side;
public ContainerNode(T t)
{
_value = t;
t.setID<T>(this);
}
public virtual ContainerNode<T> Previous
{
@@ -33,13 +46,8 @@ namespace StgSharp
public T Value
{
get { return _this; }
get { return _value; }
}
public ContainerNode(T t)
{
_this = t;
t.setID<T>(this);
}
}
}
-13
View File
@@ -1,13 +0,0 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace StgSharp
{
public interface INode
{
internal ContainerNode<INode> ID { get; }
internal void setID<T>(ContainerNode<T> id) where T:INode;
}
}
+21 -8
View File
@@ -1,25 +1,37 @@
using System;
using StgSharp.Logic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
namespace StgSharp
{
public class LinkedList<T> where T: INode
public class LinkedList<T>:IEnumerable where T: INode
{
internal readonly ContainerNode<T> _heading;
internal ContainerNode<T> _first;
internal ContainerNode<T> _tail;
private ContainerNode<T> _cache;
public LinkedList()
{
_heading = new ContainerNode<T>(default(T));
}
public T First
{
get { return _first._this; }
set { _first = new ContainerNode<T>(value); }
get { return _first._value; }
set
{
_first = new ContainerNode<T>(value);
_heading._next = _first;
}
}
public T Tail
{
get { return _tail._this; }
get { return _tail._value; }
set { _tail = new ContainerNode<T>(value); }
}
@@ -53,8 +65,9 @@ namespace StgSharp
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return new LinkedListEnumrator<T>(this);
}
}
}
@@ -0,0 +1,35 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
namespace StgSharp.Logic
{
internal class LinkedListEnumrator<T> : IEnumerator where T : INode
{
private LinkedList<T> _target;
ContainerNode<T> enumrator;
public LinkedListEnumrator(LinkedList<T> target)
{
_target = target;
enumrator = target._heading;
}
object IEnumerator.Current
{
get { return enumrator._value; }
}
bool IEnumerator.MoveNext()
{
enumrator = enumrator._next;
return enumrator == default(ContainerNode<T>);
}
void IEnumerator.Reset()
{
enumrator = _target._heading;
}
}
}
+4 -3
View File
@@ -10,18 +10,19 @@ namespace StgSharp
{
public LinkedList<Point> pointContainer;
public LinkedList<IGeometry> geometryContainer;
public LinkedList<Sensor> sensorContainer;
public LinkedList<Sensor<INode>> sensorContainer;
public Line leftBoader;
public Line rightBoader;
public Line topBoader;
public Line bottomBoader;
public Pool()
{
}
public void OnRender()
{
}
+34 -14
View File
@@ -1,28 +1,48 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Text;
namespace StgSharp
{
public class Sensor : INode
{
private ContainerNode<INode> _id;
ContainerNode<INode> INode.ID
public delegate bool SensorRuleHandler(IGeometry target, IGeometry boarder);
public class Sensor<T>
{
internal IGeometry _boarder;
internal IGeometry _target;
internal SensorRuleHandler _rule;
public IGeometry boarder
{
get { return _id; }
get { return _boarder; }
}
void INode.setID<T>(ContainerNode<T> id)
public IGeometry target
{
if (id == null)
{
_id = id as ContainerNode<INode>;
}
else
{
throw new ArgumentNullException("Cannot set id teice!");
}
get { return _target; }
set { _target = value; }
}
public SensorRuleHandler Rule
{
get { return _rule; }
set { _rule = value; }
}
public static Sensor<T> operator +(Sensor<T> sensor, SensorRuleHandler rule)
{
sensor._rule += rule;
return sensor;
}
public static Sensor<T> operator -(Sensor<T> sensor, SensorRuleHandler rule)
{
sensor._rule -= rule;
return sensor;
}
}
}