annotate src/main/csharp/jp.ac.u-ryukyu.ie.cr/jungle/DefaultJungle.cs @ 0:dec15de2c6ff

first commit
author Kazuma
date Tue, 21 Jun 2016 17:11:12 +0900
parents
children 4d08270a61c8 02b2ab7bffe6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
1 using System.Collections;
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
2 using System.Collections.Generic;
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
3 using System;
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
4 using UnityEngine;
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
5
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
6 public class DefaultJungle : Jungle {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
7 private Journal journal;
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
8 private Dictionary<string, JungleTree> trees;
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
9 private string uuid;
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
10 private TreeEditor editor;
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
11
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
12 public void Start(){
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
13 DefaultJungle j = new DefaultJungle(null, "hoge", new DefaultTreeEditor(new DefaultTraverser()));
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
14 JungleTree t = j.createNewTree ("fuga");
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
15
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
16 JungleTreeEditor e1 = t.getTreeEditor ();
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
17
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
18 DefaultNodePath root = new DefaultNodePath ();
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
19 Either<Error, JungleTreeEditor> either = e1.addNewChildAt (root, 0);
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
20 e1 = either.b();
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
21 either = e1.addNewChildAt (root.add (0), 0);
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
22 e1 = either.b ();
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
23 e1.success ();
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
24 }
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
25
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
26 public DefaultJungle(Journal journal, string uuid, TreeEditor editor){
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
27 this.journal = new NullJournal();
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
28 this.trees = new Dictionary <string, JungleTree>();
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
29 this.uuid = uuid;
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
30 this.editor = editor;
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
31 }
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
32
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
33
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
34 public JungleTree getTreeByName(string name) {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
35
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
36 JungleTree j = trees[name];
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
37 if (j != null) {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
38 return trees [name];
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
39 } else {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
40 return null;
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
41 }
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 JungleTree createNewTree(string name) {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
45 ChangeList list = new InnerChangeList(uuid,name);
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
46 // Debug.Log( list.getTreeName ());
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
47
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
48 DefaultTreeNode root = new DefaultTreeNode ();
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
49 InterfaceTraverser traverser = new InterfaceTraverser (root, true);
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
50 TreeContext tc = new DefaultTreeContext (root, null, list, uuid, name, 0, traverser);
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
51 JungleTree newTree = new DefaultJungleTree (tc, uuid, journal.getWriter (), editor);
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
52 trees.Add (name, newTree);
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
53 // Trees.getValue => nullの時 ここはどう書けば?
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
54 // if (trees.TryGetValue (name, newTree) != null) {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
55 // return null;
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
56 // }
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
57 return newTree;
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
58 }
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
59
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
60 public class InnerChangeList : ChangeList {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
61
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
62 string uuid;
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
63 string name;
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
64
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
65
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
66 IEnumerator IEnumerable.GetEnumerator()
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
67 {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
68 return this.GetEnumerator();
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
69 }
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
70
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
71 public IEnumerator<TreeOperation> GetEnumerator()
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
72 {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
73 return iterator ();
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
74 }
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
75
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
76 // construct
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
77 public InnerChangeList(string _uuid, string _name) {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
78 this.uuid = _uuid;
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
79 this.name = _name;
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
80 }
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
81
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
82 public IEnumerator<TreeOperation> iterator() {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
83 List<TreeOperation> nil = new List<TreeOperation>();
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
84 return nil.iterator();
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
85 }
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
86
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
87 public string uuids() {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
88 return uuid;
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
89 }
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
90
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
91 public string getTreeName() {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
92 return name;
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
93 }
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
94
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
95 public TreeOperationLog getLog() {
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
96 return new DefaultTreeOperationLog();
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
97 }
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
98 }
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
99
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
100
dec15de2c6ff first commit
Kazuma
parents:
diff changeset
101 }