Colors, instance vars, custom types
This commit is contained in:
parent
d948acafc9
commit
ca8da172db
2 changed files with 110 additions and 34 deletions
|
|
@ -28,7 +28,7 @@
|
||||||
<string>event_inherited();
|
<string>event_inherited();
|
||||||
|
|
||||||
enum __INSPECTOR_TYPES {
|
enum __INSPECTOR_TYPES {
|
||||||
REAL, STRING, ARRAY, BOOL, UNDEFINED, UNKNOWN
|
NOT_SET, REAL, STRING, ARRAY, BOOL, UNDEFINED, SPRITE_ASSET, COLOR, UNKNOWN
|
||||||
}
|
}
|
||||||
|
|
||||||
target = noone;
|
target = noone;
|
||||||
|
|
@ -62,9 +62,52 @@ variable_number = -1;
|
||||||
<arguments>
|
<arguments>
|
||||||
<argument>
|
<argument>
|
||||||
<kind>1</kind>
|
<kind>1</kind>
|
||||||
<string>variable_names = variable_instance_get_names(target);
|
<string>if (global.__synthasmagoria_debug_inspector_show_instance_vars) {
|
||||||
variable_number = array_length_1d(variable_names);
|
var _instance_variable_names = array_create(22);
|
||||||
variable_types = array_create(variable_number);
|
var _instance_variable_types = array_create(22);
|
||||||
|
_instance_variable_names[0] = "solid";
|
||||||
|
_instance_variable_types[0] = __INSPECTOR_TYPES.BOOL;
|
||||||
|
_instance_variable_names[1] = "visible";
|
||||||
|
_instance_variable_types[1] = __INSPECTOR_TYPES.BOOL;
|
||||||
|
_instance_variable_names[2] = "persistent";
|
||||||
|
_instance_variable_types[2] = __INSPECTOR_TYPES.BOOL;
|
||||||
|
_instance_variable_names[3] = "depth";
|
||||||
|
_instance_variable_names[4] = "sprite_index";
|
||||||
|
_instance_variable_types[4] = __INSPECTOR_TYPES.SPRITE_ASSET;
|
||||||
|
_instance_variable_names[5] = "sprite_width";
|
||||||
|
_instance_variable_names[6] = "sprite_height";
|
||||||
|
_instance_variable_names[7] = "sprite_xoffset";
|
||||||
|
_instance_variable_names[8] = "sprite_yoffset";
|
||||||
|
_instance_variable_names[9] = "image_alpha";
|
||||||
|
_instance_variable_names[10] = "image_angle";
|
||||||
|
_instance_variable_names[11] = "image_blend";
|
||||||
|
_instance_variable_types[11] = __INSPECTOR_TYPES.COLOR;
|
||||||
|
_instance_variable_names[12] = "image_index";
|
||||||
|
_instance_variable_names[13] = "image_number";
|
||||||
|
_instance_variable_names[14] = "image_speed";
|
||||||
|
_instance_variable_names[15] = "image_xscale";
|
||||||
|
_instance_variable_names[16] = "image_yscale";
|
||||||
|
_instance_variable_names[17] = "mask_index";
|
||||||
|
_instance_variable_types[17] = __INSPECTOR_TYPES.COLOR;
|
||||||
|
_instance_variable_names[18] = "bbox_bottom";
|
||||||
|
_instance_variable_names[19] = "bbox_left";
|
||||||
|
_instance_variable_names[20] = "bbox_right";
|
||||||
|
_instance_variable_names[21] = "bbox_top";
|
||||||
|
var _custom_instance_variable_names = variable_instance_get_names(target);
|
||||||
|
var _custom_instance_variable_count = array_length_1d(_custom_instance_variable_names);
|
||||||
|
var _instance_variable_count = array_length_1d(_instance_variable_names);
|
||||||
|
variable_number = _instance_variable_count + _custom_instance_variable_count;
|
||||||
|
variable_names = array_create(variable_number);
|
||||||
|
variable_types = array_create(variable_number);
|
||||||
|
array_copy(variable_names, 0, _custom_instance_variable_names, 0, _custom_instance_variable_count);
|
||||||
|
array_copy(variable_names, _custom_instance_variable_count, _instance_variable_names, 0, _instance_variable_count);
|
||||||
|
array_copy(variable_types, _custom_instance_variable_count, _instance_variable_types, 0, _instance_variable_count);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
variable_names = variable_instance_get_names(target);
|
||||||
|
variable_number = array_length_1d(variable_names);
|
||||||
|
variable_types = array_create(variable_number);
|
||||||
|
}
|
||||||
variable_values = array_create(variable_number);
|
variable_values = array_create(variable_number);
|
||||||
variable_strings = array_create(variable_number);
|
variable_strings = array_create(variable_number);
|
||||||
variable_strings_rendered = array_create(variable_number);
|
variable_strings_rendered = array_create(variable_number);
|
||||||
|
|
@ -73,32 +116,58 @@ var _val;
|
||||||
for (var i = 0; i < variable_number; i++) {
|
for (var i = 0; i < variable_number; i++) {
|
||||||
_val = variable_instance_get(target, variable_names[i]);
|
_val = variable_instance_get(target, variable_names[i]);
|
||||||
variable_values[i] = _val;
|
variable_values[i] = _val;
|
||||||
if (is_undefined(_val)) {
|
switch (variable_types[i]) {
|
||||||
variable_strings[i] = string(_val);
|
case __INSPECTOR_TYPES.NOT_SET:
|
||||||
variable_types[i] = __INSPECTOR_TYPES.UNDEFINED;
|
if (is_undefined(_val)) {
|
||||||
} else if (is_bool(_val)) {
|
variable_strings[i] = string(_val);
|
||||||
variable_strings[i] = string(_val);
|
variable_types[i] = __INSPECTOR_TYPES.UNDEFINED;
|
||||||
variable_types[i] = __INSPECTOR_TYPES.BOOL;
|
} else if (is_bool(_val)) {
|
||||||
} else if (is_real(_val)) {
|
if (_val) {
|
||||||
variable_strings[i] = string(_val);
|
variable_strings[i] = "true";
|
||||||
variable_types[i] = __INSPECTOR_TYPES.REAL;
|
} else {
|
||||||
} else if (is_string(_val)) {
|
variable_strings[i] = "false";
|
||||||
variable_strings[i] = "'" + _val + "'";
|
}
|
||||||
variable_types[i] = __INSPECTOR_TYPES.STRING;
|
variable_types[i] = __INSPECTOR_TYPES.BOOL;
|
||||||
} else if (is_array(_val)) {
|
} else if (is_real(_val)) {
|
||||||
var _buf_str = buffer_create(512, buffer_grow, 1);
|
variable_strings[i] = string(_val);
|
||||||
buffer_write(_buf_str, buffer_text, "[");
|
variable_types[i] = __INSPECTOR_TYPES.REAL;
|
||||||
for (var ii = 0, nn = array_length_1d(_val); ii < nn; ii++) {
|
} else if (is_string(_val)) {
|
||||||
buffer_write(_buf_str, buffer_text, string(_val[ii]) + ", ");
|
variable_strings[i] = "'" + _val + "'";
|
||||||
|
variable_types[i] = __INSPECTOR_TYPES.STRING;
|
||||||
|
} else if (is_array(_val)) {
|
||||||
|
var _buf_str = buffer_create(512, buffer_grow, 1);
|
||||||
|
buffer_write(_buf_str, buffer_text, "[");
|
||||||
|
for (var ii = 0, nn = array_length_1d(_val); ii < nn; ii++) {
|
||||||
|
buffer_write(_buf_str, buffer_text, string(_val[ii]) + ", ");
|
||||||
|
}
|
||||||
|
buffer_write(_buf_str, buffer_text, "]");
|
||||||
|
buffer_seek(_buf_str, buffer_seek_start, 0);
|
||||||
|
variable_strings[i] = buffer_read(_buf_str, buffer_text);
|
||||||
|
buffer_delete(_buf_str);
|
||||||
|
variable_types[i] = __INSPECTOR_TYPES.ARRAY;
|
||||||
|
} else {
|
||||||
|
variable_strings[i] = string(_val);
|
||||||
|
variable_types[i] = __INSPECTOR_TYPES.UNKNOWN;
|
||||||
}
|
}
|
||||||
buffer_write(_buf_str, buffer_text, "]");
|
break;
|
||||||
buffer_seek(_buf_str, buffer_seek_start, 0);
|
|
||||||
variable_strings[i] = buffer_read(_buf_str, buffer_text);
|
case __INSPECTOR_TYPES.SPRITE_ASSET:
|
||||||
buffer_delete(_buf_str);
|
variable_strings[i] = sprite_get_name(_val) + " (" + string(_val) + ")";
|
||||||
variable_types[i] = __INSPECTOR_TYPES.ARRAY;
|
break;
|
||||||
} else {
|
|
||||||
variable_strings[i] = string(_val);
|
case __INSPECTOR_TYPES.COLOR:
|
||||||
variable_types[i] = __INSPECTOR_TYPES.UNKNOWN;
|
variable_strings[i] = "{r: " + string(color_get_red(_val)) + ", g: " + string(color_get_blue(_val)) + ", b: " + string(color_get_green(_val)) + "}";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case __INSPECTOR_TYPES.BOOL:
|
||||||
|
if (_val) {
|
||||||
|
variable_strings[i] = "true";
|
||||||
|
} else {
|
||||||
|
variable_strings[i] = "false";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
// note: the others aren't implemented so if a custom variable type is set then it will crash with DoAdd
|
||||||
}
|
}
|
||||||
|
|
||||||
variable_strings_rendered[i] = variable_names[i] + ": " + variable_strings[i];
|
variable_strings_rendered[i] = variable_names[i] + ": " + variable_strings[i];
|
||||||
|
|
@ -109,6 +178,12 @@ items = variable_strings_rendered;
|
||||||
|
|
||||||
event_inherited();
|
event_inherited();
|
||||||
|
|
||||||
|
if (global.__synthasmagoria_debug_inspector_show_instance_vars) {
|
||||||
|
for (var i = array_length_1d(items) - array_length_1d(_instance_variable_names), n = array_length_1d(items); i < n; i++) {
|
||||||
|
item_colors[i] = c_lime;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var _view = scrDebugInspectorGetView(0);
|
var _view = scrDebugInspectorGetView(0);
|
||||||
x = target.bbox_right + box_padding - _view[0];
|
x = target.bbox_right + box_padding - _view[0];
|
||||||
if (x + width >= _view[2]) {
|
if (x + width >= _view[2]) {
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
///scrDebugInspectorInitialize(global_game_start_name, [debug_key], [font])
|
///scrDebugInspectorInitialize(global_game_start_name, show_instance_vars, [debug_key], [font])
|
||||||
if (instance_exists(objDebugInspectorControl)) {
|
if (instance_exists(objDebugInspectorControl)) {
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
@ -8,14 +8,15 @@ if (variable_global_exists(argument0)) {
|
||||||
show_error("Global variable '" + argument0 + "' didn't exist", false);
|
show_error("Global variable '" + argument0 + "' didn't exist", false);
|
||||||
global.__synthasmagoria_debug_inspector_global_game_start_name = "@";
|
global.__synthasmagoria_debug_inspector_global_game_start_name = "@";
|
||||||
}
|
}
|
||||||
|
global.__synthasmagoria_debug_inspector_show_instance_vars = argument1;
|
||||||
var _debug_key = -1;
|
var _debug_key = -1;
|
||||||
if (argument_count > 1) {
|
if (argument_count > 2) {
|
||||||
_debug_key = argument[1];
|
_debug_key = argument[2];
|
||||||
}
|
}
|
||||||
global.__synthasmagoria_debug_inspector_debug_key = _debug_key;
|
global.__synthasmagoria_debug_inspector_debug_key = _debug_key;
|
||||||
var _font = -1;
|
var _font = -1;
|
||||||
if (argument_count > 2) {
|
if (argument_count > 3) {
|
||||||
_font = argument[2];
|
_font = argument[3];
|
||||||
}
|
}
|
||||||
global.__synthasmagoria_debug_inspector_font = _font;
|
global.__synthasmagoria_debug_inspector_font = _font;
|
||||||
instance_create(0, 0, objDebugInspectorControl);
|
instance_create(0, 0, objDebugInspectorControl);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue