using System.Collections; using System.Collections.Generic; using System; using UnityEngine; public class DefaultJungle : Jungle { private Journal journal; private Dictionary trees; private string uuid; private TreeEditor editor; public void Start(){ DefaultJungle j = new DefaultJungle(null, "hoge", new DefaultTreeEditor(new DefaultTraverser())); JungleTree t = j.createNewTree ("fuga"); JungleTreeEditor e1 = t.getTreeEditor (); DefaultNodePath root = new DefaultNodePath (); Either either = e1.addNewChildAt (root, 0); e1 = either.b(); either = e1.addNewChildAt (root.add (0), 0); e1 = either.b (); e1.success (); } public DefaultJungle(Journal journal, string uuid, TreeEditor editor){ this.journal = new NullJournal(); this.trees = new Dictionary (); this.uuid = uuid; this.editor = editor; } public JungleTree getTreeByName(string name) { JungleTree j = trees[name]; if (j != null) { return trees [name]; } else { return null; } } public JungleTree createNewTree(string name) { ChangeList list = new InnerChangeList(uuid,name); // Debug.Log( list.getTreeName ()); DefaultTreeNode root = new DefaultTreeNode (); InterfaceTraverser traverser = new InterfaceTraverser (root, true); TreeContext tc = new DefaultTreeContext (root, null, list, uuid, name, 0, traverser); JungleTree newTree = new DefaultJungleTree (tc, uuid, journal.getWriter (), editor); trees.Add (name, newTree); // Trees.getValue => nullの時 ここはどう書けば? // if (trees.TryGetValue (name, newTree) != null) { // return null; // } return newTree; } public class InnerChangeList : ChangeList { string uuid; string name; IEnumerator IEnumerable.GetEnumerator() { return this.GetEnumerator(); } public IEnumerator GetEnumerator() { return iterator (); } // construct public InnerChangeList(string _uuid, string _name) { this.uuid = _uuid; this.name = _name; } public IEnumerator iterator() { List nil = new List(); return nil.iterator(); } public string uuids() { return uuid; } public string getTreeName() { return name; } public TreeOperationLog getLog() { return new DefaultTreeOperationLog(); } } }