Mercurial > hg > Database > jungle-sharp
view Main/jungle-network/operations/NetworkNodePath.cs @ 20:1f99e150f336
fix folder and add Object Mapper.
author | Kazuma Takeda |
---|---|
date | Thu, 15 Dec 2016 22:52:48 +0900 |
parents | |
children | f2ea780b3e80 |
line wrap: on
line source
using UnityEngine; using System.Collections; using System.Collections.Generic; public class NetworkNodePath : NodePath { LinkedList<int> Path; public NetworkNodePath () { Path = new LinkedList<int>(); Path.AddFirst(-1); } public NetworkNodePath (NodePath path){ Path = new LinkedList<int>(); foreach(int p in path) { Path.AddLast(p); } } // msg pack ni pointer wo watasenai point youso wo narabikaeru. private NetworkNodePath (LinkedList<int> path) { this.Path = path; } IEnumerator IEnumerable.GetEnumerator() { return this.GetEnumerator(); } public IEnumerator<int> GetEnumerator() { foreach(var l in Path) { yield return l; } } public NodePath add (int pos) { LinkedList<int> newPath = copyPath(); newPath.AddLast(pos); return new NetworkNodePath(newPath); } public NodePath addHead(int pos) { // still java code. LinkedList<int> newPath = copyPath(); newPath.AddFirst(pos); return new NetworkNodePath(newPath); } public Pair<int, NodePath> pop () { LinkedList<int> cPath = copyPath(); int e = cPath.First.Value; cPath.RemoveFirst(); return new Pair<int, NodePath>(e, new NetworkNodePath(cPath)); } public int size () { return this.Path.Count; } public LinkedList<int> copyPath(){ LinkedList<int> newPath = new LinkedList<int>(); foreach(int i in this.Path) { newPath.AddLast(i); } return newPath; } public override string ToString () { return Path.ToString(); } public NodePath tail() { this.Path.RemoveLast(); return new NetworkNodePath(this.Path); } public Pair<int, NodePath> last () { int lastValue = this.Path.Last.Value; this.Path.RemoveLast(); return new Pair<int, NodePath>(lastValue, new NetworkNodePath(this.Path)); } }