Pixel-Composer/scripts/addon_lua/addon_lua.gml

1052 lines
38 KiB
Plaintext
Raw Normal View History

2023-05-03 21:42:17 +02:00
#region setup
function __addon_lua_setup(lua, context) {
__addon_lua_setup_functions(lua);
__addon_lua_setup_constants(lua, context);
__addon_lua_setup_widget(lua, context);
context.ready = true;
2023-04-23 16:47:33 +02:00
}
2023-05-03 21:42:17 +02:00
#endregion
2023-04-23 16:47:33 +02:00
#region API
2023-05-03 21:42:17 +02:00
function __addon_lua_setup_functions(lua) {
2023-07-25 20:12:40 +02:00
for( var i = 0, n = array_length(global.__lua_functions); i < n; i++ ) {
2023-05-03 21:42:17 +02:00
var _func = global.__lua_functions[i];
2023-05-07 20:55:13 +02:00
if(is_string(_func))
lua_add_code(lua, _func);
else if(is_array(_func))
lua_add_function(lua, _func[0], _func[1]);
2023-05-03 21:42:17 +02:00
}
}
2023-04-22 16:23:51 +02:00
global.__lua_functions = [
[ "print", print ],
2023-04-23 16:47:33 +02:00
[ "colour_get_blue", colour_get_blue ],
[ "colour_get_green", colour_get_green ],
[ "colour_get_red", colour_get_red ],
[ "colour_get_hue", colour_get_hue ],
[ "colour_get_saturation", colour_get_saturation ],
[ "colour_get_value", colour_get_value ],
[ "draw_getpixel", draw_getpixel ],
[ "draw_getpixel_ext", draw_getpixel_ext ],
[ "draw_get_colour", draw_get_colour ],
[ "draw_get_alpha", draw_get_alpha ],
[ "make_colour_hsv", make_colour_hsv ],
[ "make_colour_rgb", make_colour_rgb ],
[ "merge_colour", merge_colour ],
[ "draw_clear", draw_clear ],
[ "draw_clear_alpha", draw_clear_alpha ],
[ "draw_set_alpha", draw_set_alpha ],
[ "draw_set_colour", draw_set_colour ],
// gpu
[ "gpu_get_blendenable", gpu_get_blendenable],
[ "gpu_get_ztestenable", gpu_get_ztestenable],
[ "gpu_get_zfunc", gpu_get_zfunc],
[ "gpu_get_zwriteenable", gpu_get_zwriteenable],
[ "gpu_get_fog", gpu_get_fog],
[ "gpu_get_cullmode", gpu_get_cullmode],
[ "gpu_get_blendmode", gpu_get_blendmode],
[ "gpu_get_blendmode_ext", gpu_get_blendmode_ext],
[ "gpu_get_blendmode_ext_sepalpha", gpu_get_blendmode_ext_sepalpha],
[ "gpu_get_blendmode_src", gpu_get_blendmode_src],
[ "gpu_get_blendmode_dest", gpu_get_blendmode_dest],
[ "gpu_get_blendmode_srcalpha", gpu_get_blendmode_srcalpha],
[ "gpu_get_blendmode_destalpha", gpu_get_blendmode_destalpha],
[ "gpu_get_colourwriteenable", gpu_get_colourwriteenable],
[ "gpu_get_alphatestenable", gpu_get_alphatestenable],
[ "gpu_get_alphatestref", gpu_get_alphatestref],
[ "gpu_get_texfilter", gpu_get_texfilter],
[ "gpu_get_texfilter_ext", gpu_get_texfilter_ext],
[ "gpu_get_texrepeat", gpu_get_texrepeat],
[ "gpu_get_texrepeat_ext", gpu_get_texrepeat_ext],
[ "gpu_set_blendenable", gpu_set_blendenable],
[ "gpu_set_ztestenable", gpu_set_ztestenable],
[ "gpu_set_zfunc", gpu_set_zfunc],
[ "gpu_set_zwriteenable", gpu_set_zwriteenable],
[ "gpu_set_fog", gpu_set_fog],
[ "gpu_set_cullmode", gpu_set_cullmode],
[ "gpu_set_blendmode", gpu_set_blendmode],
[ "gpu_set_blendmode_ext", gpu_set_blendmode_ext],
[ "gpu_set_blendmode_ext_sepalpha", gpu_set_blendmode_ext_sepalpha],
[ "gpu_set_colourwriteenable", gpu_set_colourwriteenable],
[ "gpu_set_alphatestenable", gpu_set_alphatestenable],
[ "gpu_set_alphatestref", gpu_set_alphatestref],
[ "gpu_set_texfilter", gpu_set_texfilter],
[ "gpu_set_texfilter_ext", gpu_set_texfilter_ext],
[ "gpu_set_texrepeat", gpu_set_texrepeat],
[ "gpu_set_texrepeat_ext", gpu_set_texrepeat_ext],
[ "gpu_push_state", gpu_push_state],
[ "gpu_pop_state", gpu_pop_state],
[ "gpu_get_state", gpu_get_state],
[ "gpu_set_state", gpu_set_state],
// basic form
2023-05-07 20:55:13 +02:00
[ "draw_set_color", draw_set_color ],
[ "draw_set_alpha", draw_set_alpha ],
[ "gpu_set_blendmode", gpu_set_blendmode ],
[ "gpu_set_blendmode_ext", gpu_set_blendmode_ext ],
2023-04-23 16:47:33 +02:00
[ "draw_arrow", draw_arrow ],
[ "draw_circle", draw_circle ],
[ "draw_circle_colour", draw_circle_colour ],
[ "draw_ellipse", draw_ellipse ],
[ "draw_ellipse_colour", draw_ellipse_colour ],
[ "draw_line", draw_line ],
[ "draw_line_colour", draw_line_colour ],
[ "draw_line_width", draw_line_width ],
[ "draw_line_width_colour", draw_line_width_colour ],
2023-05-07 20:55:13 +02:00
[ "draw_line_round", draw_line_round ],
[ "draw_line_round_color", draw_line_round_color ],
2023-04-23 16:47:33 +02:00
[ "draw_point", draw_point ],
[ "draw_point_colour", draw_point_colour ],
[ "draw_rectangle", draw_rectangle ],
[ "draw_rectangle_colour", draw_rectangle_colour ],
[ "draw_roundrect", draw_roundrect ],
[ "draw_roundrect_colour", draw_roundrect_colour ],
[ "draw_roundrect_ext", draw_roundrect_ext ],
[ "draw_roundrect_colour_ext", draw_roundrect_colour_ext ],
[ "draw_triangle", draw_triangle ],
[ "draw_triangle_colour", draw_triangle_colour ],
[ "draw_set_circle_precision", draw_set_circle_precision ],
[ "draw_button", draw_button ],
[ "draw_healthbar", draw_healthbar ],
[ "draw_path", draw_path ],
//sprite
[ "draw_self", draw_self ],
[ "draw_sprite", draw_sprite ],
[ "draw_sprite_ext", draw_sprite_ext ],
[ "draw_sprite_general", draw_sprite_general ],
[ "draw_sprite_part", draw_sprite_part ],
[ "draw_sprite_part_ext", draw_sprite_part_ext ],
[ "draw_sprite_stretched", draw_sprite_stretched ],
[ "draw_sprite_stretched_ext", draw_sprite_stretched_ext ],
[ "draw_sprite_pos", draw_sprite_pos ],
[ "draw_sprite_tiled", draw_sprite_tiled ],
[ "draw_sprite_tiled_ext", draw_sprite_tiled_ext ],
// text
[ "draw_set_font", draw_set_font ],
[ "draw_set_halign", draw_set_halign ],
[ "draw_set_valign", draw_set_valign ],
[ "draw_get_font", draw_get_font ],
[ "draw_get_halign", draw_get_halign ],
[ "draw_get_valign", draw_get_valign ],
[ "draw_set_text", draw_set_text ],
[ "draw_text", draw_text_add ],
2023-06-05 19:41:01 +02:00
[ "draw_text_line", draw_text_ext_add ],
2023-04-23 16:47:33 +02:00
[ "draw_text_colour", draw_text_colour ],
[ "draw_text_transformed", draw_text_transformed ],
[ "draw_text_ext_colour", draw_text_ext_colour ],
2023-06-05 19:41:01 +02:00
[ "draw_text_ext_transformed", __draw_text_ext_transformed ],
2023-04-23 16:47:33 +02:00
[ "draw_text_transformed_colour", draw_text_transformed_colour ],
[ "draw_text_ext_transformed_colour", draw_text_ext_transformed_colour ],
//primitive
[ "draw_primitive_begin", draw_primitive_begin ],
[ "draw_primitive_begin_texture", draw_primitive_begin_texture ],
[ "draw_primitive_end", draw_primitive_end ],
[ "draw_vertex", draw_vertex ],
[ "draw_vertex_colour", draw_vertex_colour ],
[ "draw_vertex_texture", draw_vertex_texture ],
[ "draw_vertex_texture_colour", draw_vertex_texture_colour ],
[ "vertex_format_begin", vertex_format_begin ],
[ "vertex_format_add_colour", vertex_format_add_colour ],
[ "vertex_format_add_position", vertex_format_add_position ],
[ "vertex_format_add_position_3d", vertex_format_add_position_3d ],
[ "vertex_format_add_texcoord", vertex_format_add_texcoord ],
[ "vertex_format_add_normal", vertex_format_add_normal ],
[ "vertex_format_add_custom", vertex_format_add_custom ],
[ "vertex_format_end", vertex_format_end ],
[ "vertex_format_delete", vertex_format_delete ],
[ "vertex_create_buffer", vertex_create_buffer ],
[ "vertex_create_buffer_ext", vertex_create_buffer_ext ],
[ "vertex_create_buffer_from_buffer", vertex_create_buffer_from_buffer ],
[ "vertex_create_buffer_from_buffer_ext", vertex_create_buffer_from_buffer_ext ],
[ "vertex_get_buffer_size", vertex_get_buffer_size ],
[ "vertex_get_number", vertex_get_number ],
[ "vertex_delete_buffer", vertex_delete_buffer ],
[ "vertex_begin", vertex_begin ],
[ "vertex_colour", vertex_colour ],
[ "vertex_normal", vertex_normal ],
[ "vertex_position", vertex_position ],
[ "vertex_position_3d", vertex_position_3d ],
[ "vertex_argb", vertex_argb ],
[ "vertex_texcoord", vertex_texcoord ],
[ "vertex_float1", vertex_float1 ],
[ "vertex_float2", vertex_float2 ],
[ "vertex_float3", vertex_float3 ],
[ "vertex_float4", vertex_float4 ],
[ "vertex_ubyte4", vertex_ubyte4 ],
[ "vertex_end", vertex_end ],
[ "vertex_freeze", vertex_freeze ],
[ "vertex_submit", vertex_submit ],
// surface
[ "surface_exists", surface_exists ],
[ "surface_create", surface_create ],
[ "surface_create_ext", surface_create_ext ],
[ "surface_resize", surface_resize ],
[ "surface_set_target", surface_set_target ],
[ "surface_set_target_ext", surface_set_target_ext ],
[ "surface_get_target", surface_get_target ],
[ "surface_get_target_ext", surface_get_target_ext ],
[ "surface_reset_target", surface_reset_target ],
[ "surface_copy", surface_copy ],
[ "surface_copy_part", surface_copy_part ],
[ "surface_depth_disable", surface_depth_disable ],
2023-09-08 21:37:36 +02:00
[ "surface_get_height_safe", surface_get_height_safe ],
[ "surface_get_width_safe", surface_get_width_safe ],
2023-04-23 16:47:33 +02:00
[ "surface_get_texture", surface_get_texture ],
[ "surface_get_depth_disable", surface_get_depth_disable ],
[ "surface_getpixel", surface_getpixel ],
[ "surface_getpixel_ext", surface_getpixel_ext ],
[ "surface_get_format", surface_get_format ],
[ "surface_format_is_supported", surface_format_is_supported ],
[ "surface_free", surface_free ],
[ "surface_save", surface_save ],
[ "surface_save_part", surface_save_part ],
[ "is_surface", is_surface ],
[ "draw_surface", draw_surface ],
2023-09-09 13:52:16 +02:00
[ "draw_surface_ext_safe", draw_surface_ext_safe ],
2023-04-23 16:47:33 +02:00
[ "draw_surface_part", draw_surface_part ],
[ "draw_surface_part_ext", draw_surface_part_ext ],
[ "draw_surface_stretched", draw_surface_stretched ],
[ "draw_surface_stretched_ext", draw_surface_stretched_ext ],
[ "draw_surface_tiled", draw_surface_tiled ],
[ "draw_surface_tiled_ext", draw_surface_tiled_ext ],
[ "draw_surface_general", draw_surface_general ],
[ "buffer_get_surface", buffer_get_surface ],
[ "buffer_set_surface", buffer_set_surface ],
2023-05-07 20:55:13 +02:00
//sprite
[ "sprite_collision_mask", sprite_collision_mask ],
[ "sprite_set_offset", sprite_set_offset ],
[ "sprite_set_bbox_mode", sprite_set_bbox_mode ],
[ "sprite_set_bbox", sprite_set_bbox ],
[ "sprite_set_speed", sprite_set_speed ],
[ "sprite_set_nineslice", sprite_set_nineslice ],
[ "__sprite_add", function(_ID, _path, _amo, rem = false, smt = false, xoff = 0, yoff = 0) {
var _addon = noone;
with(_addon_custom) if(self.ID == _ID) _addon = self;
if(_addon == noone) return 0;
_path = string_replace(_path, "./", _addon.directory + "/");
return sprite_add(_path, _amo, rem, smt, xoff, yoff);
}],
@"function sprite_add(path, _amo, rem, smt, xoff, yoff)
rem = rem or false
smt = smt or false
xoff = xoff or 0
yoff = yoff or 0
return __sprite_add(ID, path, _amo, rem, smt, xoff, yoff)
end",
[ "sprite_delete", sprite_delete ],
[ "sprite_replace", sprite_replace ],
[ "sprite_duplicate", sprite_duplicate ],
[ "sprite_assign", sprite_assign ],
[ "sprite_merge", sprite_merge ],
[ "sprite_set_alpha_from_sprite", sprite_set_alpha_from_sprite ],
[ "sprite_nineslice_create", sprite_nineslice_create ],
[ "sprite_create_from_surface", sprite_create_from_surface ],
[ "sprite_add_from_surface", sprite_add_from_surface ],
//variable
2023-04-23 16:47:33 +02:00
[ "variable_instance_exists", variable_instance_exists ],
[ "variable_instance_get_names", variable_instance_get_names ],
[ "variable_instance_names_count", variable_instance_names_count ],
[ "variable_instance_get", variable_instance_get ],
[ "variable_instance_set", variable_instance_set ],
[ "variable_global_exists", variable_global_exists ],
[ "variable_global_get", variable_global_get ],
[ "variable_global_set", variable_global_set ],
[ "method", method ],
[ "method_get_self", method_get_self ],
[ "method_get_index", method_get_index ],
[ "method_call", method_call ],
[ "variable_struct_exists", variable_struct_exists ],
[ "variable_struct_get", variable_struct_get ],
[ "variable_struct_set", variable_struct_set ],
[ "variable_struct_remove", variable_struct_remove ],
[ "variable_struct_get_names", variable_struct_get_names ],
[ "variable_struct_names_count", variable_struct_names_count ],
[ "is_instanceof", is_instanceof ],
[ "static_get", static_get ],
[ "static_set", static_set ],
[ "instanceof", instanceof ],
[ "is_string", is_string ],
[ "is_real", is_real ],
[ "is_numeric", is_numeric ],
[ "is_bool", is_bool ],
[ "is_array", is_array ],
[ "is_struct", is_struct ],
[ "is_method", is_method ],
[ "is_callable", is_callable ],
[ "is_ptr", is_ptr ],
[ "is_int32", is_int32 ],
[ "is_int64", is_int64 ],
[ "is_undefined", is_undefined ],
[ "is_nan", is_nan ],
[ "is_infinity", is_infinity ],
[ "typeof", typeof ],
[ "bool", bool ],
[ "ptr", ptr ],
[ "int64", int64 ],
//array
[ "array_create", array_create ],
[ "array_copy", array_copy ],
[ "array_equals", array_equals ],
[ "array_get", array_get ],
[ "array_set", array_set ],
[ "array_push", array_push ],
[ "array_pop", array_pop ],
[ "array_insert", array_insert ],
[ "array_delete", array_delete ],
[ "array_get_index", array_get_index ],
[ "array_contains", array_contains ],
[ "array_contains_ext", array_contains_ext ],
[ "array_sort", array_sort ],
[ "array_reverse", array_reverse ],
[ "array_shuffle", array_shuffle ],
[ "array_length", array_length ],
[ "array_resize", array_resize ],
[ "array_first", array_first ],
[ "array_last", array_last ],
[ "array_find_index", array_find_index ],
[ "array_any", array_any ],
[ "array_all", array_all ],
[ "array_foreach", array_foreach ],
[ "array_reduce", array_reduce ],
[ "array_concat", array_concat ],
[ "array_union", array_union ],
[ "array_intersection", array_intersection ],
[ "array_filter", array_filter ],
[ "array_map", array_map ],
[ "array_unique", array_unique ],
[ "array_copy_while", array_copy_while ],
[ "array_create_ext", array_create_ext ],
[ "array_filter_ext", array_filter_ext ],
[ "array_map_ext", array_map_ext ],
[ "array_unique_ext", array_unique_ext ],
[ "array_reverse_ext", array_reverse_ext ],
[ "array_shuffle_ext", array_shuffle_ext ],
//window
[ "window_center", window_center ],
[ "window_handle", window_handle ],
[ "window_get_caption", window_get_caption ],
[ "window_get_colour", window_get_colour ],
[ "window_get_fullscreen", window_get_fullscreen ],
[ "window_get_width", window_get_width ],
[ "window_get_height", window_get_height ],
[ "window_get_x", window_get_x ],
[ "window_get_y", window_get_y ],
[ "window_get_cursor", window_get_cursor ],
[ "window_get_visible_rects", window_get_visible_rects ],
[ "window_mouse_get_x", window_mouse_get_x ],
[ "window_mouse_get_y", window_mouse_get_y ],
[ "window_mouse_set", window_mouse_set ],
[ "window_set_caption", window_set_caption ],
[ "window_set_colour", window_set_colour ],
[ "window_set_fullscreen", window_set_fullscreen ],
[ "window_set_position", window_set_position ],
[ "window_set_size", window_set_size ],
[ "window_set_rectangle", window_set_rectangle ],
[ "window_set_cursor", window_set_cursor ],
[ "window_set_min_width", window_set_min_width ],
[ "window_set_max_width", window_set_max_width ],
[ "window_set_min_height", window_set_min_height ],
[ "window_set_max_height", window_set_max_height ],
[ "window_has_focus", window_has_focus ],
[ "window_device", window_device ],
[ "window_view_mouse_get_x", window_view_mouse_get_x ],
[ "window_view_mouse_get_y", window_view_mouse_get_y ],
[ "window_views_mouse_get_x", window_views_mouse_get_x ],
[ "window_views_mouse_get_y", window_views_mouse_get_y ],
//display
[ "display_reset", display_reset ],
[ "display_get_width", display_get_width ],
[ "display_get_height", display_get_height ],
[ "display_get_orientation", display_get_orientation ],
[ "display_get_dpi_x", display_get_dpi_x ],
[ "display_get_dpi_y", display_get_dpi_y ],
[ "display_get_gui_width", display_get_gui_width ],
[ "display_get_gui_height", display_get_gui_height ],
[ "display_get_timing_method", display_get_timing_method ],
[ "display_get_sleep_margin", display_get_sleep_margin ],
[ "display_get_frequency", display_get_frequency ],
[ "display_mouse_get_x", display_mouse_get_x ],
[ "display_mouse_get_y", display_mouse_get_y ],
[ "display_mouse_set", display_mouse_set ],
[ "display_set_gui_size", display_set_gui_size ],
[ "display_set_gui_maximise", display_set_gui_maximise ],
[ "display_set_ui_visibility", display_set_ui_visibility ],
[ "display_set_timing_method", display_set_timing_method ],
[ "display_set_sleep_margin", display_set_sleep_margin ],
//keyboard
[ "io_clear", io_clear ],
[ "keyboard_check", keyboard_check ],
[ "keyboard_check_pressed", keyboard_check_pressed ],
[ "keyboard_check_released", keyboard_check_released ],
[ "keyboard_check_direct", keyboard_check_direct ],
[ "keyboard_clear", keyboard_clear ],
[ "keyboard_set_map", keyboard_set_map ],
[ "keyboard_get_map", keyboard_get_map ],
[ "keyboard_unset_map", keyboard_unset_map ],
[ "keyboard_set_numlock", keyboard_set_numlock ],
[ "keyboard_get_numlock", keyboard_get_numlock ],
2023-05-03 21:42:17 +02:00
[ "keyboard_key", function() { return keyboard_key; } ],
[ "keyboard_lastkey", function() { return keyboard_lastkey; } ],
[ "keyboard_lastchar", function() { return keyboard_lastchar; } ],
[ "keyboard_string", function() { return keyboard_string; } ],
2023-04-23 16:47:33 +02:00
2023-05-03 21:42:17 +02:00
[ "mouse_button", function() { return mouse_button; } ],
[ "mouse_x", function() { return mouse_x; } ],
[ "mouse_y", function() { return mouse_y; } ],
2023-04-23 16:47:33 +02:00
[ "mouse_check_button", mouse_check_button ],
[ "mouse_check_button_pressed", mouse_check_button_pressed ],
[ "mouse_check_button_released", mouse_check_button_released ],
[ "mouse_clear", mouse_clear ],
[ "window_mouse_get_x", window_mouse_get_x ],
[ "window_mouse_get_y", window_mouse_get_y ],
[ "window_mouse_set", window_mouse_set ],
[ "gamepad_is_supported", gamepad_is_supported ],
[ "gamepad_is_connected", gamepad_is_connected ],
[ "gamepad_get_guid", gamepad_get_guid ],
[ "gamepad_get_device_count", gamepad_get_device_count ],
[ "gamepad_get_description", gamepad_get_description ],
[ "gamepad_get_button_threshold", gamepad_get_button_threshold ],
[ "gamepad_get_axis_deadzone", gamepad_get_axis_deadzone ],
[ "gamepad_get_option", gamepad_get_option ],
[ "gamepad_set_button_threshold", gamepad_set_button_threshold ],
[ "gamepad_set_axis_deadzone", gamepad_set_axis_deadzone ],
[ "gamepad_set_vibration", gamepad_set_vibration ],
[ "gamepad_set_colour", gamepad_set_colour ],
[ "gamepad_set_option", gamepad_set_option ],
[ "gamepad_axis_count", gamepad_axis_count ],
[ "gamepad_axis_value", gamepad_axis_value ],
[ "gamepad_button_check", gamepad_button_check ],
[ "gamepad_button_check_pressed", gamepad_button_check_pressed ],
[ "gamepad_button_check_released", gamepad_button_check_released ],
[ "gamepad_button_count", gamepad_button_count ],
[ "gamepad_button_value", gamepad_button_value ],
[ "gamepad_hat_count", gamepad_hat_count ],
[ "gamepad_hat_value", gamepad_hat_value ],
//string
[ "string", string ],
[ "string_ext", string_ext ],
[ "ansi_char", ansi_char ],
[ "chr", chr ],
[ "ord", ord ],
[ "real", real ],
[ "string_byte_at", string_byte_at ],
[ "string_byte_length", string_byte_length ],
[ "string_set_byte_at", string_set_byte_at ],
[ "string_char_at", string_char_at ],
[ "string_ord_at", string_ord_at ],
[ "string_length", string_length ],
[ "string_pos", string_pos ],
[ "string_pos_ext", string_pos_ext ],
[ "string_last_pos", string_last_pos ],
[ "string_last_pos_ext", string_last_pos_ext ],
[ "string_starts_with", string_starts_with ],
[ "string_ends_with", string_ends_with ],
[ "string_count", string_count ],
[ "string_copy", string_copy ],
[ "string_delete", string_delete ],
[ "string_digits", string_digits ],
[ "string_format", string_format ],
[ "string_insert", string_insert ],
[ "string_letters", string_letters ],
[ "string_lettersdigits", string_lettersdigits ],
[ "string_lower", string_lower ],
[ "string_repeat", string_repeat ],
[ "string_replace", string_replace ],
[ "string_replace_all", string_replace_all ],
[ "string_upper", string_upper ],
[ "string_hash_to_newline", string_hash_to_newline ],
[ "string_trim", string_trim ],
[ "string_trim_start", string_trim_start ],
[ "string_trim_end", string_trim_end ],
[ "string_split", string_split ],
[ "string_split_ext", string_split_ext ],
[ "string_join", string_join ],
[ "string_join_ext", string_join_ext ],
[ "string_concat", string_concat ],
[ "string_concat_ext", string_concat_ext ],
[ "string_width", string_width ],
[ "string_width_ext", string_width_ext ],
[ "string_height", string_height ],
[ "string_height_ext", string_height_ext ],
[ "string_foreach", string_foreach ],
//date time
[ "date_set_timezone", date_set_timezone ],
[ "date_get_timezone", date_get_timezone ],
[ "current_time", function() { return current_time } ],
[ "current_second", function() { return current_second } ],
[ "current_minute", function() { return current_minute } ],
[ "current_hour", function() { return current_hour } ],
[ "current_day", function() { return current_day } ],
[ "current_weekday", function() { return current_weekday } ],
[ "current_month", function() { return current_month } ],
[ "current_year", function() { return current_year } ],
[ "date_create_datetime", date_create_datetime ],
[ "date_current_datetime", date_current_datetime ],
[ "date_compare_date", date_compare_date ],
[ "date_compare_datetime", date_compare_datetime ],
[ "date_compare_time", date_compare_time ],
[ "date_valid_datetime", date_valid_datetime ],
[ "date_date_of", date_date_of ],
[ "date_time_of", date_time_of ],
[ "date_is_today", date_is_today ],
[ "date_leap_year", date_leap_year ],
[ "date_date_string", date_date_string ],
[ "date_datetime_string", date_datetime_string ],
[ "date_time_string", date_time_string ],
[ "date_second_span", date_second_span ],
[ "date_minute_span", date_minute_span ],
[ "date_hour_span", date_hour_span ],
[ "date_day_span", date_day_span ],
[ "date_week_span", date_week_span ],
[ "date_month_span", date_month_span ],
[ "date_year_span", date_year_span ],
[ "date_days_in_month", date_days_in_month ],
[ "date_days_in_year", date_days_in_year ],
[ "date_get_second", date_get_second ],
[ "date_get_minute", date_get_minute ],
[ "date_get_hour", date_get_hour ],
[ "date_get_day", date_get_day ],
[ "date_get_weekday", date_get_weekday ],
[ "date_get_week", date_get_week ],
[ "date_get_month", date_get_month ],
[ "date_get_year", date_get_year ],
[ "date_get_second_of_year", date_get_second_of_year ],
[ "date_get_minute_of_year", date_get_minute_of_year ],
[ "date_get_hour_of_year", date_get_hour_of_year ],
[ "date_get_day_of_year", date_get_day_of_year ],
[ "date_inc_second", date_inc_second ],
[ "date_inc_minute", date_inc_minute ],
[ "date_inc_hour", date_inc_hour ],
[ "date_inc_day", date_inc_day ],
[ "date_inc_week", date_inc_week ],
[ "date_inc_month", date_inc_month ],
[ "date_inc_year", date_inc_year ],
[ "get_timer", get_timer ],
[ "delta_time", function() { return delta_time } ],
//number
[ "choose", choose ],
[ "random", random ],
[ "random_range", random_range ],
[ "irandom", irandom ],
[ "irandom_range", irandom_range ],
[ "random_set_seed", random_set_seed ],
[ "random_get_seed", random_get_seed ],
[ "randomise", randomise ],
[ "round", round ],
[ "floor", floor ],
[ "frac", frac ],
[ "abs", abs ],
[ "sign", sign ],
[ "ceil", ceil ],
[ "max", max ],
[ "mean", mean ],
[ "median", median ],
[ "min", min ],
[ "lerp", lerp ],
[ "clamp", clamp ],
[ "exp", exp ],
[ "ln", ln ],
[ "power", power ],
[ "sqr", sqr ],
[ "sqrt", sqrt ],
[ "log2", log2 ],
[ "log10", log10 ],
[ "logn", logn ],
[ "arccos", arccos ],
[ "arcsin", arcsin ],
[ "arctan", arctan ],
[ "arctan2", arctan2 ],
[ "cos", cos ],
[ "sin", sin ],
[ "tan", tan ],
[ "dcos", dcos ],
[ "dsin", dsin ],
[ "dtan", dtan ],
[ "darccos", darccos ],
[ "darcsin", darcsin ],
[ "darctan", darctan ],
[ "darctan2", darctan2 ],
[ "degtorad", degtorad ],
[ "radtodeg", radtodeg ],
[ "point_direction", point_direction ],
[ "point_distance", point_distance ],
[ "point_distance_3d", point_distance_3d ],
[ "distance_to_object", distance_to_object ],
[ "distance_to_point", distance_to_point ],
[ "dot_product", dot_product ],
[ "dot_product_3d", dot_product_3d ],
[ "dot_product_normalised", dot_product_normalised ],
[ "dot_product_3d_normalised", dot_product_3d_normalised ],
[ "angle_difference", angle_difference ],
[ "lengthdir_x", lengthdir_x ],
[ "lengthdir_y", lengthdir_y ],
[ "matrix_get", matrix_get ],
[ "matrix_set", matrix_set ],
[ "matrix_build", matrix_build ],
[ "matrix_multiply", matrix_multiply ],
[ "matrix_build_identity", matrix_build_identity ],
[ "matrix_build_lookat", matrix_build_lookat ],
[ "matrix_build_projection_ortho", matrix_build_projection_ortho ],
[ "matrix_build_projection_perspective", matrix_build_projection_perspective ],
[ "matrix_build_projection_perspective_fov", matrix_build_projection_perspective_fov ],
[ "matrix_transform_vertex", matrix_transform_vertex ],
[ "matrix_stack_is_empty", matrix_stack_is_empty ],
[ "matrix_stack_clear", matrix_stack_clear ],
[ "matrix_stack_set", matrix_stack_set ],
[ "matrix_stack_push", matrix_stack_push ],
[ "matrix_stack_pop", matrix_stack_pop ],
[ "matrix_stack_top", matrix_stack_top ],
2023-05-08 10:50:42 +02:00
[ "point_in_rectangle", point_in_rectangle ],
[ "point_in_triangle", point_in_triangle ],
[ "point_in_circle", point_in_circle ],
[ "rectangle_in_rectangle", rectangle_in_rectangle ],
[ "rectangle_in_triangle", rectangle_in_triangle ],
[ "rectangle_in_circle", rectangle_in_circle ],
2023-04-23 16:47:33 +02:00
//file
[ "file_exists", file_exists ],
[ "file_delete", file_delete ],
[ "file_rename", file_rename ],
[ "file_copy", file_copy ],
[ "file_find_first", file_find_first ],
[ "file_find_next", file_find_next ],
[ "file_find_close", file_find_close ],
[ "file_attributes", file_attributes ],
[ "filename_name", filename_name ],
[ "filename_path", filename_path ],
[ "filename_dir", filename_dir ],
[ "filename_drive", filename_drive ],
[ "filename_ext", filename_ext ],
[ "filename_change_ext", filename_change_ext ],
[ "get_open_filename", get_open_filename ],
[ "get_open_filename_ext", get_open_filename_ext ],
[ "get_save_filename", get_save_filename ],
[ "get_save_filename_ext", get_save_filename_ext ],
[ "ini_open", ini_open ],
[ "ini_close", ini_close ],
[ "ini_write_real", ini_write_real ],
[ "ini_write_string", ini_write_string ],
[ "ini_read_real", ini_read_real ],
[ "ini_read_string", ini_read_string ],
[ "ini_key_exists", ini_key_exists ],
[ "ini_section_exists", ini_section_exists ],
[ "ini_key_delete", ini_key_delete ],
[ "ini_section_delete", ini_section_delete ],
[ "ini_open_from_string", ini_open_from_string ],
[ "file_text_open_read", file_text_open_read ],
[ "file_text_open_write", file_text_open_write ],
[ "file_text_open_append", file_text_open_append ],
[ "file_text_open_from_string", file_text_open_from_string ],
[ "file_text_read_real", file_text_read_real ],
[ "file_text_read_string", file_text_read_string ],
[ "file_text_readln", file_text_readln ],
[ "file_text_write_real", file_text_write_real ],
[ "file_text_write_string", file_text_write_string ],
[ "file_text_writeln", file_text_writeln ],
[ "file_text_eoln", file_text_eoln ],
[ "file_text_eof", file_text_eof ],
[ "file_text_close", file_text_close ],
[ "file_bin_open", file_bin_open ],
[ "file_bin_rewrite", file_bin_rewrite ],
[ "file_bin_close", file_bin_close ],
[ "file_bin_size", file_bin_size ],
[ "file_bin_position", file_bin_position ],
[ "file_bin_seek", file_bin_seek ],
[ "file_bin_write_byte", file_bin_write_byte ],
[ "file_bin_read_byte", file_bin_read_byte ],
[ "directory_exists", directory_exists ],
[ "directory_create", directory_create ],
[ "directory_destroy", directory_destroy ],
[ "temp_directory", function() { return temp_directory } ],
[ "working_directory", function() { return working_directory } ],
[ "program_directory", function() { return program_directory } ],
[ "json_encode", json_encode ],
[ "json_decode", json_decode ],
[ "json_stringify", json_stringify ],
[ "json_parse", json_parse ],
//buffer
[ "buffer_exists", buffer_exists ],
[ "buffer_create", buffer_create ],
[ "buffer_create_from_vertex_buffer", buffer_create_from_vertex_buffer ],
[ "buffer_create_from_vertex_buffer_ext", buffer_create_from_vertex_buffer_ext ],
[ "buffer_delete", buffer_delete ],
[ "buffer_read", buffer_read ],
[ "buffer_write", buffer_write ],
[ "buffer_fill", buffer_fill ],
[ "buffer_seek", buffer_seek ],
[ "buffer_tell", buffer_tell ],
[ "buffer_peek", buffer_peek ],
[ "buffer_poke", buffer_poke ],
[ "buffer_save", buffer_save ],
[ "buffer_save_ext", buffer_save_ext ],
[ "buffer_save_async", buffer_save_async ],
[ "buffer_load", buffer_load ],
[ "buffer_load_ext", buffer_load_ext ],
[ "buffer_load_async", buffer_load_async ],
[ "buffer_load_partial", buffer_load_partial ],
[ "buffer_compress", buffer_compress ],
[ "buffer_decompress", buffer_decompress ],
[ "buffer_async_group_begin", buffer_async_group_begin ],
[ "buffer_async_group_option", buffer_async_group_option ],
[ "buffer_async_group_end", buffer_async_group_end ],
[ "buffer_copy", buffer_copy ],
[ "buffer_copy_from_vertex_buffer", buffer_copy_from_vertex_buffer ],
[ "buffer_get_type", buffer_get_type ],
[ "buffer_get_alignment", buffer_get_alignment ],
[ "buffer_get_address", buffer_get_address ],
[ "buffer_get_size", buffer_get_size ],
[ "buffer_get_surface", buffer_get_surface ],
[ "buffer_set_surface", buffer_set_surface ],
[ "buffer_resize", buffer_resize ],
[ "buffer_sizeof", buffer_sizeof ],
[ "buffer_md5", buffer_md5 ],
[ "buffer_sha1", buffer_sha1 ],
[ "buffer_crc32", buffer_crc32 ],
[ "buffer_base64_encode", buffer_base64_encode ],
[ "buffer_base64_decode", buffer_base64_decode ],
[ "buffer_base64_decode_ext", buffer_base64_decode_ext ],
[ "buffer_set_used_size", buffer_set_used_size ],
//os
[ "os_browser", function() { return os_browser } ],
[ "os_device", function() { return os_device } ],
[ "os_type", function() { return os_type } ],
[ "os_version", function() { return os_version } ],
[ "os_is_paused", os_is_paused ],
[ "os_is_network_connected", os_is_network_connected ],
[ "os_get_config", os_get_config ],
[ "os_get_language", os_get_language ],
[ "os_get_region", os_get_region ],
[ "os_get_info", os_get_info ],
[ "os_powersave_enable", os_powersave_enable ],
[ "os_lock_orientation", os_lock_orientation ],
[ "os_check_permission", os_check_permission ],
[ "os_request_permission", os_request_permission ],
//debug
[ "print", print ],
[ "noti_error", noti_error ],
[ "noti_warning", noti_warning ],
2023-04-22 16:23:51 +02:00
2023-05-16 21:28:16 +02:00
//animation
2023-07-06 19:49:16 +02:00
[ "animation_playing", function() { return PROJECT.animator.is_playing? lua_true : lua_false; }],
[ "animation_play", function() { PROJECT.animator.resume(); }],
[ "animation_pause", function() { PROJECT.animator.pause(); }],
[ "animation_stop", function() { PROJECT.animator.stop(); }],
[ "animation_set_frame", function(frame) { PROJECT.animator.setFrame(frame); }],
[ "animation_render", function() { PROJECT.animator.render(); }],
2023-05-16 21:28:16 +02:00
2023-04-23 16:47:33 +02:00
//panel
2023-05-16 21:28:16 +02:00
[ "set_tooltip", function(txt) { TOOLTIP = txt; }],
2023-04-23 16:47:33 +02:00
[ "panel_get", function(type) {
switch(type) {
case "animation" : return PANEL_ANIMATION;
case "collection" : return PANEL_COLLECTION;
case "graph" : return PANEL_GRAPH;
case "inspector" : return PANEL_INSPECTOR;
case "main" : return PANEL_MAIN;
}
} ],
2023-04-22 16:23:51 +02:00
2023-04-23 16:47:33 +02:00
[ "draw_text_set_format", function(ind) {
switch(ind) {
case 0 : draw_set_font(f_h3); draw_set_color(COLORS._main_text); break;
case 1 : draw_set_font(f_p0); draw_set_color(COLORS._main_text); break;
case 2 : draw_set_font(f_p1); draw_set_color(COLORS._main_text_sub); break;
case 3 : draw_set_font(f_p2); draw_set_color(COLORS._main_text_sub); break;
case 4 : draw_set_font(f_p3); draw_set_color(COLORS._main_text_sub); break;
}
}],
2023-05-03 21:42:17 +02:00
//nodes
[ "node_get", function(nodeId) {
2023-07-06 19:49:16 +02:00
if(!ds_map_exists(PROJECT.nodeNameMap, nodeId)) return 0;
return PROJECT.nodeNameMap[? nodeId];
2023-05-03 21:42:17 +02:00
}],
[ "node_get_input_value", function(nodeId, input) {
2023-07-06 19:49:16 +02:00
if(!ds_map_exists(PROJECT.nodeNameMap, nodeId)) return 0;
var node = PROJECT.nodeNameMap[? nodeId];
2023-05-03 21:42:17 +02:00
if(!ds_map_exists(node.inputMap, input)) return 0;
return node.inputMap[? input].getValue();
}],
[ "node_set_input_value", function(nodeId, input, value) {
2023-07-06 19:49:16 +02:00
if(!ds_map_exists(PROJECT.nodeNameMap, nodeId)) return 0;
var node = PROJECT.nodeNameMap[? nodeId];
2023-05-03 21:42:17 +02:00
if(!ds_map_exists(node.inputMap, input)) return 0;
return node.inputMap[? input].setValue(value);
}],
[ "node_get_output_value", function(nodeId, input) {
2023-07-06 19:49:16 +02:00
if(!ds_map_exists(PROJECT.nodeNameMap, nodeId)) return 0;
var node = PROJECT.nodeNameMap[? nodeId];
2023-05-03 21:42:17 +02:00
if(!ds_map_exists(node.outputMap, input)) return 0;
return node.outputMap[? input].getValue();
}],
2023-05-08 10:50:42 +02:00
[ "element_get", function() {
if(HOVERING_ELEMENT == noone)
return undefined;
var ele = HOVERING_ELEMENT;
for( var i = 0; i < argument_count; i++ ) {
if(!struct_has(ele, argument[i])) return undefined;
ele = ele[$ argument[i]];
}
return ele;
}],
2023-05-07 20:55:13 +02:00
[ "__panel_create", function(ID, panel = "") {
var _addon = noone;
with(_addon_custom) if(self.ID == ID) _addon = self;
if(_addon == noone) return noone;
var arr = variable_struct_get_names(_addon.panels);
2023-07-25 20:12:40 +02:00
for( var i = 0, n = array_length(arr); i < n; i++ ) {
2023-05-07 20:55:13 +02:00
if(arr[i] != panel) continue;
var pane = _addon.panels[$ arr[i]];
dialogPanelCall(new addonPanel(_addon, pane));
}
return noone;
}],
@"
function panel_create(panel)
__panel_create(ID, panel)
end
",
2023-05-03 21:42:17 +02:00
];
#endregion
#region widget manager
global.__lua_widget_functions = [
[ "__widget_wake", function(wd, hover, focus) {
if(!ds_map_exists(global.ADDON_WIDGET, wd)) return;
2023-06-21 20:36:53 +02:00
global.ADDON_WIDGET[? wd].setFocusHover(focus, hover);
2023-05-03 21:42:17 +02:00
} ],
2023-05-07 20:55:13 +02:00
[ "__textBox", function(ID, type, onModify) {
var _addon = noone;
with(_addon_custom) if(self.ID == ID) _addon = self;
if(_addon == noone) return noone;
var wd = new textBox(type, noone);
wd.setLua(_addon.thread, onModify, function(txt) {
return lua_call(lua_thread, lua_thread_key, txt);
});
2023-05-03 21:42:17 +02:00
var key = UUID_generate();
global.ADDON_WIDGET[? key] = wd;
return key;
} ],
[ "__textBox_draw", function(wd, _x, _y, _w, _h, _text, _m) {
if(!ds_map_exists(global.ADDON_WIDGET, wd)) return;
global.ADDON_WIDGET[? wd].draw(_x, _y, _w, _h, _text, _m);
} ],
@"
TextBox = {}
TextBox.new = function(type, onModify)
local self = {}
2023-05-07 20:55:13 +02:00
self.id = __textBox(ID, type, onModify)
2023-05-03 21:42:17 +02:00
function self.draw(self, _x, _y, _w, _h, _text)
__widget_wake(self.id, Panel.hoverable, Panel.clickable)
__textBox_draw(self.id, _x, _y, _w, _h, _text, Panel.mouse)
end
return self
end",
2023-05-07 20:55:13 +02:00
[ "__vectorBox", function(ID, size, onModify) {
var _addon = noone;
with(_addon_custom) if(self.ID == ID) _addon = self;
if(_addon == noone) return noone;
var wd = new vectorBox(size, noone);
wd.setLua(_addon.thread, onModify, function(i, v) {
return lua_call(lua_thread, lua_thread_key, i + 1, v);
});
2023-05-03 21:42:17 +02:00
var key = UUID_generate();
global.ADDON_WIDGET[? key] = wd;
return key;
} ],
[ "__vectorBox_draw", function(wd, _x, _y, _w, _h, _vector, _m) {
if(!ds_map_exists(global.ADDON_WIDGET, wd)) return;
global.ADDON_WIDGET[? wd].draw(_x, _y, _w, _h, _vector, _m);
} ],
@"
VectorBox = {}
VectorBox.new = function(size, onModify)
local self = {}
2023-05-07 20:55:13 +02:00
self.id = __vectorBox(ID, size, onModify)
2023-05-03 21:42:17 +02:00
function self.draw(self, _x, _y, _w, _h, _vector)
__widget_wake(self.id, Panel.hoverable, Panel.clickable)
__vectorBox_draw(self.id, _x, _y, _w, _h, _vector, Panel.mouse)
end
return self
end",
2023-05-07 20:55:13 +02:00
[ "__checkBox", function(ID, onModify) {
var _addon = noone;
with(_addon_custom) if(self.ID == ID) _addon = self;
if(_addon == noone) return noone;
2023-05-03 21:42:17 +02:00
var wd = new checkBox(onModify);
2023-05-07 20:55:13 +02:00
wd.setLua(_addon.thread, onModify, function() {
return lua_call(lua_thread, lua_thread_key);
});
2023-05-03 21:42:17 +02:00
var key = UUID_generate();
global.ADDON_WIDGET[? key] = wd;
return key;
} ],
[ "__checkBox_draw", function(wd, _x, _y, _value, _m) {
if(!ds_map_exists(global.ADDON_WIDGET, wd)) return;
global.ADDON_WIDGET[? wd].draw(_x, _y, _value);
} ],
@"
CheckBox = {}
CheckBox.new = function(onModify)
local self = {}
2023-05-07 20:55:13 +02:00
self.id = __checkBox(ID, onModify)
2023-05-03 21:42:17 +02:00
function self.draw(self, _x, _y, _value)
__widget_wake(self.id, Panel.hoverable, Panel.clickable)
__checkBox_draw(self.id, _x, _y, _value, Panel.mouse)
end
return self
end",
2023-05-07 20:55:13 +02:00
[ "__button", function(ID, onModify, txt = "") {
var _addon = noone;
with(_addon_custom) if(self.ID == ID) _addon = self;
if(_addon == noone) return noone;
2023-05-03 21:42:17 +02:00
var wd = new button(onModify).setText(txt);
2023-05-07 20:55:13 +02:00
wd.setLua(_addon.thread, onModify, function() {
return lua_call(lua_thread, lua_thread_key);
});
2023-05-03 21:42:17 +02:00
var key = UUID_generate();
global.ADDON_WIDGET[? key] = wd;
return key;
} ],
[ "__button_draw", function(wd, _x, _y, _w, _h, _m) {
if(!ds_map_exists(global.ADDON_WIDGET, wd)) return;
2023-07-05 15:09:52 +02:00
var _button = global.ADDON_WIDGET[? wd];
_button.draw(_x, _y, _w, _h);
2023-05-03 21:42:17 +02:00
} ],
@"
Button = {}
Button.new = function(onModify, txt)
local self = {}
2023-05-07 20:55:13 +02:00
self.id = __button(ID, onModify, txt)
2023-05-03 21:42:17 +02:00
function self.draw(self, _x, _y, _w, _h)
__widget_wake(self.id, Panel.hoverable, Panel.clickable)
__button_draw(self.id, _x, _y, _w, _h, Panel.mouse)
end
return self
end",
2023-04-22 16:23:51 +02:00
];
2023-05-03 21:42:17 +02:00
function __addon_lua_setup_widget(lua, context) {
2023-07-25 20:12:40 +02:00
for( var i = 0, n = array_length(global.__lua_widget_functions); i < n; i++ ) {
2023-05-03 21:42:17 +02:00
var _func = global.__lua_widget_functions[i];
2023-05-07 20:55:13 +02:00
if(is_string(_func))
2023-05-03 21:42:17 +02:00
lua_add_code(lua, _func);
2023-05-07 20:55:13 +02:00
else if(is_array(_func))
2023-05-03 21:42:17 +02:00
lua_add_function(lua, _func[0], _func[1]);
}
}
2023-04-23 16:47:33 +02:00
#endregion