annotate Assets/Application/Scripts/Test/SaveDataTest.cs @ 11:cf20add31466

change putAttribute -> use fmap.
author Kazuma Takeda
date Sat, 28 Jan 2017 19:15:44 +0900
parents 3fefb9f9025d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4
2878be4487ec add Maping Code.
Kazuma
parents:
diff changeset
1 using UnityEngine;
2878be4487ec add Maping Code.
Kazuma
parents:
diff changeset
2 using UnityEditor;
2878be4487ec add Maping Code.
Kazuma
parents:
diff changeset
3 using System.Collections;
2878be4487ec add Maping Code.
Kazuma
parents:
diff changeset
4 using UnityEngine.SceneManagement;
7
ad4729c5eec4 fix error.
Kazuma Takeda
parents: 6
diff changeset
5 using JungleDB;
8
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
6 using System.Text;
11
cf20add31466 change putAttribute -> use fmap.
Kazuma Takeda
parents: 10
diff changeset
7 using Default = System.Collections.Generic;
4
2878be4487ec add Maping Code.
Kazuma
parents:
diff changeset
8
2878be4487ec add Maping Code.
Kazuma
parents:
diff changeset
9 public class SaveDataTest : MonoBehaviour {
6
9be20fcffaac SaveDataTest Fix
Kazuma Takeda <kazuma-arashi@hotmail.co.jp>
parents: 5
diff changeset
10
8
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
11 public static SaveDataTest instance;
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
12
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
13 public SceneNode root;
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
14 public System.Collections.Generic.List<GameObject> objList;
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
15 public StageManager stageManager;
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
16
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
17 public static Jungle jungle;
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
18 private JungleTree tree;
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
19 private JungleTreeEditor editor;
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
20 private NodePath rootPath;
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
21
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
22 public delegate void Callback ();
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
23 public Callback callback;
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
24
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
25 /// <summary>
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
26 /// Jungleの木を構築し終わった時に実行するメソッドをセット
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
27 /// </summary>
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
28 public void AddCallback (Callback c) {
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
29 this.callback = c;
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
30 print ("Add : " + callback.Method);
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
31 }
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
32
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
33 private void initJungle () {
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
34 jungle = new DefaultJungle (null, "Game", new DefaultTreeEditor(new DefaultTraverser()));
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
35 tree = jungle.createNewTree ("Scene");
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
36 rootPath = new DefaultNodePath ();
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
37 // 編集を可能にする
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
38 editor = tree.getTreeEditor ();
9
bbab930748c4 no use path ver.
Kazuma Takeda
parents: 8
diff changeset
39 // editor = editor.addNewChildAt (rootPath, 0).b();
8
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
40 }
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
41
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
42 private void Awake () {
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
43 if (instance == null)
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
44 instance = this;
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
45 }
4
2878be4487ec add Maping Code.
Kazuma
parents:
diff changeset
46
2878be4487ec add Maping Code.
Kazuma
parents:
diff changeset
47 private void Start () {
8
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
48 initJungle ();
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
49 CreateSceneTree ();
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
50 CreateItemTree ();
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
51 }
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
52
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
53 private void CreateTree () {
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
54 GameObject rootObj = new GameObject ();
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
55 rootObj.name = "Root";
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
56 root = new SceneNode(rootObj, null);
4
2878be4487ec add Maping Code.
Kazuma
parents:
diff changeset
57 }
2878be4487ec add Maping Code.
Kazuma
parents:
diff changeset
58
2878be4487ec add Maping Code.
Kazuma
parents:
diff changeset
59 private void Check () {
2878be4487ec add Maping Code.
Kazuma
parents:
diff changeset
60 int i = 0;
2878be4487ec add Maping Code.
Kazuma
parents:
diff changeset
61 foreach (GameObject obj in UnityEngine.Resources.FindObjectsOfTypeAll(typeof(GameObject))) {
2878be4487ec add Maping Code.
Kazuma
parents:
diff changeset
62 string path = AssetDatabase.GetAssetOrScenePath (obj);
2878be4487ec add Maping Code.
Kazuma
parents:
diff changeset
63 bool isScene = path.Contains (".unity");
2878be4487ec add Maping Code.
Kazuma
parents:
diff changeset
64 if (isScene) { // このシーンの中のオブジェクトかどうか。
2878be4487ec add Maping Code.
Kazuma
parents:
diff changeset
65 if (obj.transform.childCount == 0 && obj.transform.parent == null || obj.transform.childCount > 0 && obj.transform.parent == null) { // 親を取得
8
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
66 objList.Add(obj);
4
2878be4487ec add Maping Code.
Kazuma
parents:
diff changeset
67 i++;
2878be4487ec add Maping Code.
Kazuma
parents:
diff changeset
68 }
2878be4487ec add Maping Code.
Kazuma
parents:
diff changeset
69 }
2878be4487ec add Maping Code.
Kazuma
parents:
diff changeset
70 }
8
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
71
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
72 foreach (var obj in objList) {
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
73 SceneNode node = new SceneNode (obj, root);
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
74 root.AddChild (node);
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
75 CheckChild (obj.transform, node);
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
76 }
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
77 }
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
78
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
79 private void CheckChild (Transform obj, SceneNode parent) {
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
80 if (obj.childCount == 0)
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
81 return;
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
82
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
83 for (int i = 0; i < obj.childCount; i++) {
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
84 SceneNode node = new SceneNode (obj.GetChild (i).gameObject, parent);
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
85 parent.AddChild (node);
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
86 CheckChild (obj.GetChild (i), node);
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
87 }
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
88 }
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
89
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
90 private bool CreateNode (NodePath path, int num) {
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
91 Either<Error, JungleTreeEditor> e = editor.addNewChildAt (path, num);
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
92 if (e.isA ()) {
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
93 e.a ();
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
94 return false;
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
95 }
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
96 editor = e.b ();
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
97 return true;
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
98 }
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
99
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
100 private bool SetAttribute (NodePath path, GameObject obj) {
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
101 // Either<Error, TreeEditor> e = editor.putAttribute (path, key, Encoding.UTF8.GetBytes(val));
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
102 Either<Error, JungleTreeEditor> e = editor.putAttribute (path, "NodeName", Encoding.UTF8.GetBytes(obj.name));
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
103 if (e.isA ()) {
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
104 e.a ();
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
105 return false;
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
106 }
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
107 editor = e.b ();
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
108 return true;
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
109 }
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
110
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
111 private void CreateItemTree () {
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
112 JungleTree tree = jungle.createNewTree ("ItemTree");
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
113 JungleTreeEditor edt = tree.getTreeEditor ();
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
114
11
cf20add31466 change putAttribute -> use fmap.
Kazuma Takeda
parents: 10
diff changeset
115
cf20add31466 change putAttribute -> use fmap.
Kazuma Takeda
parents: 10
diff changeset
116 Either<Error, JungleTreeEditor> e = edt.putAttribute (rootPath, "TreeName", "Item");
8
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
117
11
cf20add31466 change putAttribute -> use fmap.
Kazuma Takeda
parents: 10
diff changeset
118 System.Func<JungleTreeEditor, JungleTreeEditor> f = (JungleTreeEditor arg) => {
cf20add31466 change putAttribute -> use fmap.
Kazuma Takeda
parents: 10
diff changeset
119 edt = arg;
cf20add31466 change putAttribute -> use fmap.
Kazuma Takeda
parents: 10
diff changeset
120 return edt;
cf20add31466 change putAttribute -> use fmap.
Kazuma Takeda
parents: 10
diff changeset
121 };
8
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
122
11
cf20add31466 change putAttribute -> use fmap.
Kazuma Takeda
parents: 10
diff changeset
123 e.fmap (f, edt.addNewChildAt (rootPath, 0));
cf20add31466 change putAttribute -> use fmap.
Kazuma Takeda
parents: 10
diff changeset
124 e.fmap (f, edt.putAttribute ("Category", "Box"));
cf20add31466 change putAttribute -> use fmap.
Kazuma Takeda
parents: 10
diff changeset
125
cf20add31466 change putAttribute -> use fmap.
Kazuma Takeda
parents: 10
diff changeset
126 e.fmap (f, edt.addNewChildAt (rootPath, 1));
cf20add31466 change putAttribute -> use fmap.
Kazuma Takeda
parents: 10
diff changeset
127 e.fmap (f, edt.putAttribute ("Category", "Food"));
8
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
128
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
129 NodePath path = rootPath.add(0);
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
130
11
cf20add31466 change putAttribute -> use fmap.
Kazuma Takeda
parents: 10
diff changeset
131 Default.List<ItemInfo> infoList = new Default.List<ItemInfo> ();
cf20add31466 change putAttribute -> use fmap.
Kazuma Takeda
parents: 10
diff changeset
132 infoList.Add (new ItemInfo (1, 2, "Grass", "#019540FF"));
cf20add31466 change putAttribute -> use fmap.
Kazuma Takeda
parents: 10
diff changeset
133 infoList.Add (new ItemInfo (2, 4, "Wood", "#7F3C01FF"));
cf20add31466 change putAttribute -> use fmap.
Kazuma Takeda
parents: 10
diff changeset
134 infoList.Add (new ItemInfo (3, 1, "Sand", "#D4500EFF"));
cf20add31466 change putAttribute -> use fmap.
Kazuma Takeda
parents: 10
diff changeset
135 infoList.Add (new ItemInfo (4, 5, "Water", "#2432ADFF"));
8
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
136
11
cf20add31466 change putAttribute -> use fmap.
Kazuma Takeda
parents: 10
diff changeset
137 int i = 0;
cf20add31466 change putAttribute -> use fmap.
Kazuma Takeda
parents: 10
diff changeset
138 foreach (var info in infoList) {
cf20add31466 change putAttribute -> use fmap.
Kazuma Takeda
parents: 10
diff changeset
139 e.fmap (f, edt.addNewChildAt (path, i));
cf20add31466 change putAttribute -> use fmap.
Kazuma Takeda
parents: 10
diff changeset
140 e.fmap (f, edt.putAttribute (info));
cf20add31466 change putAttribute -> use fmap.
Kazuma Takeda
parents: 10
diff changeset
141 i++;
cf20add31466 change putAttribute -> use fmap.
Kazuma Takeda
parents: 10
diff changeset
142 }
8
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
143
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
144 edt.commit ();
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
145
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
146 StageManager.Instance.Init ();
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
147 }
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
148
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
149 private void CreateSceneTree () {
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
150 JungleTree tree = jungle.createNewTree ("SceneTree");
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
151 JungleTreeEditor edt = tree.getTreeEditor ();
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
152
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
153 edt = edt.addNewChildAt (rootPath, 0).b ();
10
3fefb9f9025d put Attribute class.
Kazuma Takeda
parents: 9
diff changeset
154 edt = edt.putAttribute ("NodeName", "Player").b ();
8
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
155
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
156 NodePath playerpath = rootPath.add (0);
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
157
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
158 edt = edt.addNewChildAt (playerpath, 0).b();
10
3fefb9f9025d put Attribute class.
Kazuma Takeda
parents: 9
diff changeset
159 edt = edt.putAttribute ("NodeName", "HaveItems").b();
8
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
160
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
161 edt = edt.addNewChildAt (rootPath, 1).b ();
10
3fefb9f9025d put Attribute class.
Kazuma Takeda
parents: 9
diff changeset
162 edt = edt.putAttribute ("NodeName", "Stage").b ();
8
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
163
599bd8ddb72b Create Item Tree and Create Stage.
Kazuma Takeda
parents: 7
diff changeset
164 edt = edt.commit ().b();
4
2878be4487ec add Maping Code.
Kazuma
parents:
diff changeset
165 }
2878be4487ec add Maping Code.
Kazuma
parents:
diff changeset
166 }