view src/main/csharp/jp.ac.u-ryukyu.ie.cr/jungle/store/impl/DefaultNodePath.cs @ 0:dec15de2c6ff

first commit
author Kazuma
date Tue, 21 Jun 2016 17:11:12 +0900
parents
children 02b2ab7bffe6
line wrap: on
line source

using UnityEngine;
using System.Collections.Generic;
using System.Collections;

public class DefaultNodePath : NodePath {
	private List<int> path = new List<int>();

	int[] _array;
	int Count;

	IEnumerator IEnumerable.GetEnumerator()
	{
		// call the generic version of the method
		return this.GetEnumerator();
	}

	public IEnumerator<int> GetEnumerator()
	{
		for (int i = 0; i < Count; i++)
			yield return _array[i];
	}



	public void Start() {
		NodePath p = new DefaultNodePath();
		p = p.add(1).add(2).add(3).add(4);
		Debug.Log (p.ToString ());
	}

	public DefaultNodePath() {
		path = new List<int> ().addLast (-1);
	}

	private DefaultNodePath(List<int> path) {
		this.path = path;
	}


//	public IEnumerator<int> iterator() {
//		return path.iterator();
//	}

	public NodePath add(int pos) {
		List<int> newPath = path.addLast(pos);
		return new DefaultNodePath(newPath);
	}

	public Pair<int, NodePath> pop() {
		int head = path.headList();
		List<int> tail = path.deleteHead();
		return new Pair<int, NodePath>(head, new DefaultNodePath(tail));
	}

	public Pair<int, NodePath> last() {
		int last = path.headList();
		List<int> list = path.deleteHead();
		return new Pair<int, NodePath>(last, new DefaultNodePath(list));
	}

	public string toString() {
		return path.toString();
	}

	public int size() {
		return path.length();
	}

	public NodePath tail() {
		List<int> tail = path.deleteLast ();
		return new DefaultNodePath (tail);
	}

	public List<DefaultNodePath> inits() {
		List<DefaultNodePath> paths = new List<DefaultNodePath> ();
		List<int> coursePath = new List<int> ();
		foreach (int tmpPath in path) {
			List<int> tmp = coursePath.addLast (tmpPath);
			paths = paths.addLast (new DefaultNodePath (tmp));
			coursePath = tmp;
		}
		return paths;
	}


}