-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
Tree structures is a package for your project, with a handy implementation of trees for GameMaker Studio 2 using constructors. | ||
The package was originally written for the personal work of TornadoTech projects, but was uploaded to GitHub for the convenience of all developers. | ||
|
||
Also, the root can have a value, but you can simply not declare a value, then it will default to `undefined`. | ||
To create a tree just write: | ||
|
||
```js | ||
var tree = new Tree(); | ||
show_debug_message(tree.value); // undefined | ||
|
||
var tree2 = new Tree("Same data"); | ||
show_debug_message(tree2.value); // "Same data" | ||
``` | ||
|
||
You can add nodes to the root of the tree as well as to other nodes. To add a node, write,<br> | ||
`add(key, value)` and to turn it into a string you need to call the `to_string()` method | ||
|
||
```js | ||
tree = new Tree(); | ||
|
||
// Layer 1 | ||
var node_a = tree.add("node_a", 10); | ||
var node_b = tree.add("node_b", 7); | ||
|
||
// Layer 2 | ||
var node_a2 = node_a.add("node_a2", 3); | ||
var node_a3 = node_a.add("node_a3", 3); | ||
var node_a4 = node_a.add("node_a4", 3); | ||
|
||
// Layer 3 | ||
var node_c = node_a2.add("node_c", 20); | ||
var node_d = node_a4.add("node_d", 37); | ||
|
||
show_debug_message(tree.to_string()); | ||
|
||
// Result: | ||
// [root]: undefined | ||
// _ [node_a]: 10 | ||
// _ _ [node_a2]: 3 | ||
// _ _ _ [node_c]: 20 | ||
// _ _ [node_a3]: 3 | ||
// _ _ [node_a4]: 3 | ||
// _ _ _ [node_d]: 37 | ||
// _ [node_b]: 7 | ||
``` | ||
|
||
You can use `exists(key)` to check if a node exists, and `remove(key)` to remove it. | ||
|
||
```js | ||
tree = new Tree(); | ||
// Layer 1 | ||
var node_a = tree.add("node_a", 23); | ||
var node_b = tree.add("node_b", 29); | ||
|
||
// Layer 2 | ||
var node_c = node_a.add("node_c", 48); | ||
|
||
tree.exists("node_a"); // true | ||
tree.exists("node_c"); // true | ||
tree.exists("node_j"); // false | ||
|
||
tree.remove("node_a"); | ||
|
||
tree.exists("node_a"); // false | ||
tree.exists("node_c"); // false | ||
``` | ||
|
||
And the main thing is of course you can get the `find(key)` node, which will return the tree structure. | ||
And to read and write information, you can refer to the `key` and `value` fields. And to get the parent, refer to `parent`. | ||
|
||
```js | ||
tree = new Tree(); | ||
|
||
// Layer 1 | ||
var node_a = tree.add("node_a", 10); | ||
var node_b = tree.add("node_b", 7); | ||
|
||
// Layer 2 | ||
var node_a2 = node_a.add("node_a2", 3); | ||
var node_a3 = node_a.add("node_a3", 3); | ||
var node_a4 = node_a.add("node_a4", 3); | ||
|
||
// Layer 3 | ||
var node_c = node_a2.add("node_c", 20); | ||
var node_d = node_a4.add("node_d", 37); | ||
|
||
var node = tree.find("node_d"); | ||
show_debug_message(node.value); // 37 | ||
show_debug_message(node.key); // "node_d" | ||
|
||
// node.parent - reference to "node_a4" | ||
show_debug_message(node.parent.value); // 3 | ||
show_debug_message(node.parent.key); // "node_a4" | ||
``` |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
{ | ||
"FolderOrderSettings": [ | ||
{"name":"Objects","order":8,"path":"folders/Objects.yy",}, | ||
{"name":"Rooms","order":9,"path":"folders/Rooms.yy",}, | ||
{"name":"Scripts","order":4,"path":"folders/Scripts.yy",}, | ||
], | ||
"ResourceOrderSettings": [], | ||
} |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
tree = new Tree(); | ||
|
||
// Layer 1 | ||
var node_a = tree.add("node_a", 10); | ||
var node_b = tree.add("node_b", 7); | ||
|
||
// Layer 2 | ||
var node_a2 = node_a.add("node_a2", 3); | ||
var node_a3 = node_a.add("node_a3", 3); | ||
var node_a4 = node_a.add("node_a4", 3); | ||
|
||
// Layer 3 | ||
var node_c = node_a2.add("node_c", 20); | ||
var node_d = node_a4.add("node_d", 37); | ||
|
||
show_debug_message("\n"); | ||
show_debug_message("new Tree().to_string(); method"); | ||
show_debug_message(tree.to_string()); | ||
|
||
show_debug_message("new Tree().exists(key); method"); | ||
show_debug_message("Node \"node_c\" exists - {0}", tree.exists("node_c") ? "true" : "false"); | ||
show_debug_message("Node \"node_a3\" exists - {0}", tree.exists("node_a3") ? "true" : "false"); | ||
show_debug_message("Node \"node_g\" exists - {0}", tree.exists("node_g") ? "true" : "false"); | ||
show_debug_message("\n"); | ||
|
||
show_debug_message("new Tree().remove(key); method"); | ||
tree.remove("node_a2"); | ||
show_debug_message("Remove \"node_a2\""); | ||
show_debug_message(tree.to_string()); | ||
|
||
show_debug_message("new Tree().find(key); method"); | ||
var node = tree.find("node_d"); | ||
show_debug_message("Node \"node_d\" - key: {0}, value: {1}", node.key, node.value); | ||
show_debug_message("Parent \"node_d\" - key: {0}, value: {1}", node.parent.key, node.parent.value); | ||
show_debug_message("\n"); |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
var width = display_get_gui_width(); | ||
var height = display_get_gui_height(); | ||
|
||
draw_set_halign(fa_left); | ||
draw_set_valign(fa_top); | ||
|
||
draw_text(16, 16, "Tree preview:\n\n" + tree.to_string()); | ||
|
||
draw_set_halign(fa_center); | ||
draw_set_valign(fa_middle); | ||
|
||
draw_text(width / 2, height / 2, "Open window \"Otput\",\n and see examples in `obj_tests`"); |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.