mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2024-11-10 20:45:35 +01:00
166 lines
4.0 KiB
Plaintext
166 lines
4.0 KiB
Plaintext
globalvar NODE_EXTRACT;
|
|
NODE_EXTRACT = false;
|
|
|
|
function __generate_node_data() { #region
|
|
var amo = ds_map_size(ALL_NODES);
|
|
var k = ds_map_find_first(ALL_NODES);
|
|
|
|
CLONING = true;
|
|
NODE_EXTRACT = true;
|
|
|
|
var dir = DIRECTORY + "Nodes/";
|
|
if(!directory_exists(dir)) directory_create(dir);
|
|
var data = {};
|
|
var junc = {};
|
|
var locale = {};
|
|
|
|
repeat(amo) {
|
|
var _n = ALL_NODES[? k];
|
|
var _b = _n.build(0, 0);
|
|
k = ds_map_find_next(ALL_NODES, k);
|
|
|
|
if(_b.name == "") continue;
|
|
|
|
var _data = variable_clone(_n, 1);
|
|
|
|
var _junc = {};
|
|
_junc.node = _n.node;
|
|
|
|
var _loca = {};
|
|
_loca.name = _n.name;
|
|
_loca.tooltip = _n.tooltip;
|
|
|
|
var _jin = [], _jot = [];
|
|
var _lin = [], _lot = [];
|
|
var _din = [], _dot = [];
|
|
|
|
for( var i = 0; i < ds_list_size(_b.inputs); i++ ) {
|
|
_din[i] = variable_clone(_b.inputs[| i], 1);
|
|
|
|
_jin[i] = {
|
|
type: _b.inputs[| i].type,
|
|
visible: _b.inputs[| i].visible? 1 : 0,
|
|
};
|
|
|
|
_lin[i] = {
|
|
name: _b.inputs[| i]._initName,
|
|
tooltip: _b.inputs[| i].tooltip,
|
|
};
|
|
}
|
|
|
|
for( var i = 0; i < ds_list_size(_b.outputs); i++ ) {
|
|
_dot[i] = variable_clone(_b.outputs[| i], 1);
|
|
|
|
_jot[i] = {
|
|
type: _b.outputs[| i].type,
|
|
visible: _b.outputs[| i].visible? 1 : 0,
|
|
};
|
|
|
|
_lot[i] = {
|
|
name: _b.outputs[| i]._initName,
|
|
tooltip: _b.outputs[| i].tooltip,
|
|
};
|
|
}
|
|
|
|
_junc.inputs = _jin;
|
|
_junc.outputs = _jot;
|
|
junc[$ _n.name] = _junc;
|
|
|
|
_loca.inputs = _lin;
|
|
_loca.outputs = _lot;
|
|
locale[$ _n.node] = _loca;
|
|
|
|
_data.inputs = _din;
|
|
_data.outputs = _dot;
|
|
data[$ _n.name] = _data;
|
|
}
|
|
|
|
json_save_struct(dir + "node_data.json", data, true);
|
|
json_save_struct(dir + "node_junctions.json", junc, false);
|
|
json_save_struct(dir + "node_locale.json", locale, true);
|
|
shellOpenExplorer(dir);
|
|
|
|
CLONING = false;
|
|
game_end();
|
|
} #endregion
|
|
|
|
#region node suggestion
|
|
function __loadNodeReleated(path) {
|
|
var _json = json_load_struct(path);
|
|
var _keys = variable_struct_get_names(_json);
|
|
var _rel = global.NODE_RELATION;
|
|
|
|
for( var i = 0, n = array_length(_keys); i < n; i++ ) {
|
|
var _group = _json[$ _keys[i]];
|
|
|
|
if(!struct_has(_rel, _keys[i]))
|
|
_rel[$ _keys[i]] = { relations : {} };
|
|
var _Vgroup = _rel[$ _keys[i]].relations;
|
|
|
|
switch(_group.key) {
|
|
case "connectionType" :
|
|
var _types = variable_struct_get_names(_group.relations);
|
|
for( var j = 0, m = array_length(_types); j < m; j++ ) {
|
|
var _k = value_type_from_string(_types[j]);
|
|
if(!struct_has(_Vgroup, _k)) _Vgroup[$ _k] = [];
|
|
array_append(_Vgroup[$ _k], _group.relations[$ _types[j]]);
|
|
}
|
|
break;
|
|
case "contextNode" :
|
|
var _nodes = variable_struct_get_names(_group.relations);
|
|
for( var j = 0, m = array_length(_nodes); j < m; j++ ) {
|
|
if(!struct_has(_Vgroup, _nodes[j])) _Vgroup[$ _nodes[j]] = [];
|
|
array_append(_Vgroup[$ _nodes[j]], _group.relations[$ _nodes[j]]);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
function __initNodeReleated() {
|
|
global.NODE_RELATION = {};
|
|
|
|
var _dir = DIRECTORY + "Nodes/Related";
|
|
if(!directory_exists(_dir)) return;
|
|
|
|
var f = file_find_first(_dir + "/*.json", fa_none);
|
|
|
|
while (f != "") {
|
|
__loadNodeReleated(_dir + "/" + f);
|
|
f = file_find_next();
|
|
}
|
|
|
|
file_find_close();
|
|
}
|
|
|
|
function nodeReleatedQuery(type, key) {
|
|
if(!struct_has(global.NODE_RELATION, type)) return [];
|
|
var _sugs = global.NODE_RELATION[$ type];
|
|
|
|
if(!struct_has(_sugs.relations, key)) return [];
|
|
return _sugs.relations[$ key];
|
|
}
|
|
#endregion
|
|
|
|
function __initNodeData() {
|
|
global.NODE_GUIDE = {};
|
|
|
|
var nodeDir = DIRECTORY + "Nodes/";
|
|
var _l = nodeDir + "/version";
|
|
|
|
if(file_exists("data/tooltip.zip"))
|
|
zip_unzip("data/tooltip.zip", nodeDir);
|
|
else
|
|
noti_status("Tooltip image file not found.")
|
|
|
|
if(file_exists("data/nodes.json")) {
|
|
file_delete(nodeDir + "nodes.json");
|
|
file_copy_override("data/nodes.json", nodeDir + "nodes.json");
|
|
}
|
|
|
|
directory_verify(nodeDir + "/Related");
|
|
file_copy_override("data/related_node.json", nodeDir + "/Related/default.json");
|
|
|
|
__initNodeReleated();
|
|
} |