annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
1 using UnityEngine;
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
2 using System.Collections.Generic;
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
3 using System.Collections;
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
4
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
5 public class DefaultNodePath : NodePath {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
6 private List<int> path = new List<int>();
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
7
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
8 int[] _array;
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
9 int Count;
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
10
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
11 IEnumerator IEnumerable.GetEnumerator()
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
12 {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
13 // call the generic version of the method
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
14 return this.GetEnumerator();
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
15 }
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
16
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
17 public IEnumerator<int> GetEnumerator()
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
18 {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
19 for (int i = 0; i < Count; i++)
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
20 yield return _array[i];
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
21 }
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
22
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
23
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
24
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
25 public void Start() {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
26 NodePath p = new DefaultNodePath();
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
27 p = p.add(1).add(2).add(3).add(4);
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
28 Debug.Log (p.ToString ());
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
29 }
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
30
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
31 public DefaultNodePath() {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
32 path = new List<int> ().addLast (-1);
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
33 }
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
34
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
35 private DefaultNodePath(List<int> path) {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
36 this.path = path;
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
37 }
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
38
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
39
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
40 // public IEnumerator<int> iterator() {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
41 // return path.iterator();
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
42 // }
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
43
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
44 public NodePath add(int pos) {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
45 List<int> newPath = path.addLast(pos);
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
46 return new DefaultNodePath(newPath);
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
47 }
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
48
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
49 public Pair<int, NodePath> pop() {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
50 int head = path.headList();
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
51 List<int> tail = path.deleteHead();
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
52 return new Pair<int, NodePath>(head, new DefaultNodePath(tail));
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
53 }
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
54
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
55 public Pair<int, NodePath> last() {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
56 int last = path.headList();
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
57 List<int> list = path.deleteHead();
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
58 return new Pair<int, NodePath>(last, new DefaultNodePath(list));
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
59 }
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
60
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
61 public string toString() {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
62 return path.toString();
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
63 }
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
64
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
65 public int size() {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
66 return path.length();
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
67 }
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
68
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
69 public NodePath tail() {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
70 List<int> tail = path.deleteLast ();
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
71 return new DefaultNodePath (tail);
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
72 }
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
73
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
74 public List<DefaultNodePath> inits() {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
75 List<DefaultNodePath> paths = new List<DefaultNodePath> ();
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
76 List<int> coursePath = new List<int> ();
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
77 foreach (int tmpPath in path) {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
78 List<int> tmp = coursePath.addLast (tmpPath);
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
79 paths = paths.addLast (new DefaultNodePath (tmp));
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
80 coursePath = tmp;
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
81 }
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
82 return paths;
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
83 }
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
84
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
85
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
86 }