Created
October 12, 2023 07:07
-
-
Save tinkerer-red/b30d0033348a5b32e72a155e96efec95 to your computer and use it in GitHub Desktop.
GML: Room to struct boiler plate code
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function current_room_to_struct() { | |
var _room = { | |
"Controls" : { | |
//"room_goto" : room_goto(), | |
//"room_goto_next" : room_goto_next(), | |
//"room_goto_previous" : room_goto_previous(), | |
//"room_restart" : room_restart(), | |
}, | |
"Room Settings" : { | |
"Read Only" : { | |
"Room ID" : room, | |
"Room Name" : room_get_name(room), | |
}, | |
"room_persistent" : room_persistent, | |
"room_speed" : room_speed, | |
"room_height" : room_height, | |
"room_width" : room_width, | |
}, | |
"Viewports and Cameras" : { | |
"Enable Viewports" : view_enabled, | |
"Default Camera" : camera_get_default(), //camera_set_default(_value) | |
}, | |
"Room Physics" : { | |
"Currently Not Possible to Access at Runtime" : true, | |
}, | |
"Layers" : { | |
"Global" : { | |
"Force Draw Depth" : { | |
"Enabled" : layer_get_forced_depth(), //layer_force_draw_depth(_bool, layer_is_draw_depth_forced()) | |
"Depth" : layer_is_draw_depth_forced(), //layer_force_draw_depth(layer_get_forced_depth(), _depth) | |
}, | |
}, | |
}, | |
} | |
//populate the Viewports | |
var _viewports = _room[$ "Viewports and Cameras"]; | |
var _i=0; repeat(8) { | |
_viewports[$ "Viewport "+string(_i)] = viewport_to_struct(_i); | |
_i+=1;}//end repeat loop | |
//populate the Layers | |
var _layers_struct = _room[$ "Layers"]; | |
var _layers = layer_get_all(); | |
log(["_layers", _layers]) | |
var _i=0; repeat(array_length(_layers)) { | |
var _layer = _layers[_i]; | |
log("Adding Layer : "+layer_get_name(_layer)) | |
_layers_struct[$ layer_get_name(_layer)] = layer_to_struct(_layer); | |
_i+=1;}//end repeat loop | |
return _room; | |
} | |
function viewport_to_struct(_view) { | |
var _viewport = { | |
"view_visible" : view_get_visible(_view), //view_set_visible(_view, _bool) | |
"view_surface_id" : view_get_surface_id(_view), //view_set_surface_id(_view, _surface_id) | |
"Camera Properties" : camera_to_struct(view_get_camera(_view)), //view_set_camera(_view, _cam) | |
"Viewport Properties" : { | |
"view_xport" : view_get_xport(_view), //view_set_xport(_view, _value) | |
"view_yport" : view_get_yport(_view), //view_set_yport(_view, _value) | |
"view_wport" : view_get_wport(_view), //view_set_wport(_view, _value) | |
"view_hport" : view_get_hport(_view), //view_set_hport(_view, _value) | |
}, | |
"Object Following" : { | |
"View Target" : camera_get_view_target(_view), //camera_set_view_target(_cam, _obj) | |
"Horizontal Border" : camera_get_view_border_x(_view), //camera_set_view_border(_cam, _value, camera_get_view_border_y(_cam)) | |
"Vertical Border" : camera_get_view_border_y(_view), //camera_set_view_border(_cam, camera_get_view_border_x(_cam), _value) | |
"Horizontal Speed" : camera_get_view_speed_x(_view), //camera_set_view_speed(_cam, _value, camera_get_view_speed_y(_cam)) | |
"Vertical Speed" : camera_get_view_speed_y(_view), //camera_set_view_speed(_cam, camera_get_view_speed_x(_cam), _value) | |
}, | |
} | |
return _viewport; | |
} | |
function camera_to_struct(_cam) { | |
var _camera = { | |
"X Pos" : camera_get_view_x(_cam), //camera_set_view_pos(_cam, _value, camera_get_view_y(_cam)) | |
"Y Pos" : camera_get_view_y(_cam), //camera_set_view_pos(_cam, camera_get_view_x(_cam), _value) | |
"Width" : camera_get_view_width(_cam), //camera_set_view_size(_cam, _value, camera_get_view_height(_cam)) | |
"Height" : camera_get_view_height(_cam), //camera_set_view_size(_cam, camera_get_view_width(_cam), _value) | |
"Angle" : camera_get_view_angle(_cam), //camera_set_view_angle(_cam, _angle) | |
"Scripts" : { | |
"Update Script" : camera_get_update_script(_cam), //camera_set_update_script(_cam, _func) | |
"Begin Script" : camera_get_begin_script(_cam), //camera_set_begin_script(_cam, _func) | |
"End Script" : camera_get_end_script(_cam), //camera_set_end_script(_cam, _func) | |
}, | |
"Advanced" : { | |
"View Matrix" : camera_get_view_mat(_cam), //camera_set_view_mat(_cam, _matrix_arr) | |
"Projection Matrix" : camera_get_proj_mat(_cam), //camera_set_proj_mat(_cam, _matrix_arr) | |
} | |
} | |
return _camera; | |
} | |
function layer_to_struct(_layer_id) { | |
var _layer = { | |
"Read Only" : { | |
"id" : _layer_id, | |
}, | |
"Elements" : { | |
}, | |
"Properties" : { | |
"x" : layer_get_x(_layer_id), //layer_x(_layer_id, _value) | |
"y" : layer_get_y(_layer_id), //layer_y(_layer_id, _value) | |
"hspeed" : layer_get_hspeed(_layer_id), //layer_hspeed(_layer_id, _value) | |
"vspeed" : layer_get_vspeed(_layer_id), //layer_vspeed(_layer_id, _value) | |
"visible" : layer_get_visible(_layer_id), //layer_set_visible(_layer_id, _bool) | |
"depth" : layer_get_depth(_layer_id), //layer_depth(_layer_id) | |
"script_begin" : layer_get_script_begin(_layer_id), //layer_script_begin(_layer_id, _script) | |
"script_end" : layer_get_script_end(_layer_id), //layer_script_end(_layer_id, _script) | |
"shader" : layer_get_shader(_layer_id), //layer_shader(_layer_id, _shader) | |
}, | |
"Filters & Effects" : { | |
"Enabled" : layer_fx_is_enabled(_layer_id), //layer_enable_fx(_bool) | |
}, | |
}; | |
var _elements = layer_get_all_elements(_layer_id) | |
log(["_elements", _elements]) | |
var _i=0; repeat(array_length(_elements)) { | |
_layer[$ "Elements"][$ "<"+string(_elements[_i])+">"] = layer_element_to_struct(_elements[_i]); | |
_i+=1;}//end repeat loop | |
if (layer_get_fx(_layer_id) != -1) { | |
var _fx_folder = _layer[$ "Filters & Effects"] | |
_fx_folder[$ layer_fx_get_readable_name(fx_get_name(layer_get_fx(_layer_id)))] = layer_fx_to_struct(layer_get_fx(_layer_id)); | |
} | |
return _layer; | |
} | |
function layer_element_to_struct(_layer_elem) { | |
var _type = layer_get_element_type(_layer_elem); | |
var _element = { | |
"Read Obly" : { | |
"Type" : _type, | |
}, | |
}; | |
switch (_type) { | |
case layerelementtype_background: { | |
_element[$ "visible"] = layer_background_get_visible(_layer_elem); //layer_background_visible(_layer_elem, _bool) | |
_element[$ "sprite"] = layer_background_get_sprite(_layer_elem); //layer_background_sprite(_layer_elem, _sprite) | |
_element[$ "htiled"] = layer_background_get_htiled(_layer_elem); //layer_background_htiled(_layer_elem, _bool) | |
_element[$ "vtiled"] = layer_background_get_vtiled(_layer_elem); //layer_background_vtiled(_layer_elem, _bool) | |
_element[$ "stretch"] = layer_background_get_stretch(_layer_elem); //layer_background_stretch(_layer_elem, _bool) | |
_element[$ "blend"] = layer_background_get_blend(_layer_elem); //layer_background_blend(_layer_elem, _color) | |
_element[$ "alpha"] = layer_background_get_alpha(_layer_elem); //layer_background_alpha(_layer_elem, _float) | |
_element[$ "index"] = layer_background_get_index(_layer_elem); //layer_background_index(_layer_elem, _real) | |
_element[$ "speed"] = layer_background_get_speed(_layer_elem); //layer_background_speed(_layer_elem, _real) | |
_element[$ "xscale"] = layer_background_get_xscale(_layer_elem); //layer_background_xscale(_layer_elem, _real) | |
_element[$ "yscale"] = layer_background_get_yscale(_layer_elem); //layer_background_yscale(_layer_elem, _real) | |
break;} | |
case layerelementtype_instance: { | |
break;} | |
case layerelementtype_sprite: { | |
_element[$ "sprite"] = layer_sprite_get_sprite(_layer_elem); //layer_sprite_change(_layer_elem, _sprite) | |
_element[$ "index"] = layer_sprite_get_index(_layer_elem); //layer_sprite_index(_layer_elem, _real) | |
_element[$ "speed"] = layer_sprite_get_speed(_layer_elem); //layer_sprite_speed(_layer_elem, _real) | |
_element[$ "xscale"] = layer_sprite_get_xscale(_layer_elem); //layer_sprite_xscale(_layer_elem, _real) | |
_element[$ "yscale"] = layer_sprite_get_yscale(_layer_elem); //layer_sprite_yscale(_layer_elem, _real) | |
_element[$ "angle"] = layer_sprite_get_angle(_layer_elem); //layer_sprite_angle(_layer_elem, _angle) | |
_element[$ "blend"] = layer_sprite_get_blend(_layer_elem); //layer_sprite_blend(_layer_elem, _color) | |
_element[$ "angle"] = layer_sprite_get_alpha(_layer_elem); //layer_sprite_alpha(_layer_elem, _float) | |
_element[$ "x"] = layer_sprite_get_x(_layer_elem); //layer_sprite_x(_layer_elem, _real) | |
_element[$ "y"] = layer_sprite_get_y(_layer_elem); //layer_sprite_y(_layer_elem, _real) | |
break;} | |
case layerelementtype_tilemap: | |
case layerelementtype_oldtilemap: | |
case layerelementtype_tile: { | |
_element[$ "tileset"] = tilemap_get_tileset(_layer_elem); //tilemap_tileset(_layer_elem, _tileset) | |
_element[$ "x"] = tilemap_get_x(_layer_elem); //tilemap_x(_layer_elem, _real) | |
_element[$ "y"] = tilemap_get_y(_layer_elem); //tilemap_y(_layer_elem, _real) | |
_element[$ "mask"] = tilemap_get_mask(_layer_elem); //tilemap_set_mask(_layer_elem, _real) | |
//_element[$ "mask"] = tilemap_get_global_mask(_layer_elem); //tilemap_set_global_mask(_layer_elem, _real) | |
_element[$ "width"] = tilemap_get_width(_layer_elem); //tilemap_set_width(_layer_elem, _real) | |
_element[$ "height"] = tilemap_get_height(_layer_elem); //tilemap_set_height(_layer_elem, _real) | |
/// NO WAY TO SET IT _element[$ "frame"] = tilemap_get_frame(_layer_elem); | |
break;} | |
case layerelementtype_particlesystem: { | |
break;} | |
case layerelementtype_sequence: { | |
_element[$ "playing"] = layer_sequence_is_paused(_layer_elem); //function(_layer_elem, _bool){ return (_bool) ? layer_sequence_play(_layer_elem) : layer_sequence_pause(_layer_elem) } | |
_element[$ "x"] = layer_sequence_get_x(_layer_elem); //layer_sequence_x(_layer_elem, _real) | |
_element[$ "y"] = layer_sequence_get_y(_layer_elem); //layer_sequence_y(_layer_elem, _real) | |
_element[$ "angle"] = layer_sequence_get_angle(_layer_elem); //layer_sequence_angle(_layer_elem, _real) | |
_element[$ "xscale"] = layer_sequence_get_xscale(_layer_elem); //layer_sequence_xscale(_layer_elem, _real) | |
_element[$ "yscale"] = layer_sequence_get_yscale(_layer_elem); //layer_sequence_yscale(_layer_elem, _real) | |
_element[$ "headpos"] = layer_sequence_get_headpos(_layer_elem); //layer_sequence_headpos(_layer_elem, _real) | |
_element[$ "headdir"] = layer_sequence_get_headdir(_layer_elem); //layer_sequence_headdir(_layer_elem, _real) | |
_element[$ "speedscale"] = layer_sequence_get_speedscale(_layer_elem); //layer_sequence_speedscale(_layer_elem) | |
break;} | |
case layerelementtype_undefined: { | |
break;} | |
} | |
return _element | |
} | |
function layer_fx_to_struct(_filter_or_effect) { | |
var _fx = { | |
"Single Layer" : fx_get_single_layer(_filter_or_effect), //fx_set_single_layer(_filter_or_effect, _bool) | |
"Effect Type" : fx_get_name(_filter_or_effect), //layer_set_fx(fx_create(_string)) | |
"expanded tools for FX coming soon" : 0.5 //bool | |
}; | |
var _args = fx_get_parameter_names(_filter_or_effect); | |
var _i=0; repeat(array_length(_args)) { | |
var _name = _args[_i]; | |
_fx[$ _name] = fx_get_parameter(_filter_or_effect, _name) //fx_set_parameter(_filter_or_effect) | |
_i+=1;}//end repeat loop | |
return _fx; | |
} | |
function layer_fx_get_readable_name(_name) { | |
#region Readable formatted names | |
static _readable_name_lookup = { | |
#region Filters | |
"_filter_blocks": "Blocks Background", | |
"_filter_boxes": "Boxes", | |
"_filter_clouds": "Clouds", | |
"_filter_colour_balance": "Colour Balance", | |
"_filter_tintfilter": "Colour Tint", | |
"_filter_colourise": "Colourise", | |
"_filter_contrast": "Constrast", | |
"_filter_greyscale": "Desaturate", | |
"_filter_distort": "Distort", | |
"_filter_dots": "Dots Background", | |
"_filter_edgedetect": "Edge Detect", | |
"_filter_fractal_noise": "Fractal Noise", | |
"_filter_gradient": "Gradient", | |
"_filter_heathaze": "Heat Haze", | |
"_filter_hue": "Hue", | |
"_filter_large_blur": "Large Blur", | |
"_filter_linear_blur": "Linear Blur", | |
"_filter_lut_colour": "LUT Colour Grading", | |
"_filter_mask": "Mask", | |
"_filter_old_film": "Old Film", | |
"_filter_outline": "Outline", | |
"_filter_panorama": "Panorama Background", | |
"_filter_parallax": "Parallax Background", | |
"_filter_pixelate": "Pixelate", | |
"_filter_posterise": "Posterise", | |
"_filter_rgbnoise": "RGB Noise", | |
"_filter_ripples": "Ripples", | |
"_filter_screenshake": "Screen Shake", | |
"_filter_stripes": "Stripes Background", | |
"_filter_twirl_distort": "Twirl Distort", | |
"_filter_twist_blur": "Twist Blur", | |
"_filter_underwater": "Underwater", | |
"_filter_vignette": "Vignette", | |
"_filter_whitenoise": "White Noise", | |
"_filter_zoom_blur": "Zoom Blur", | |
#endregion | |
#region Effects | |
"_effect_blend": "Blend", | |
"_effect_blend_ext": "Blend Ext", | |
"_effect_glow": "Glow", | |
"_effect_recursive_blur": "Recursive Blur", | |
"_effect_windblown_particles": "Windblown Particles", | |
#endregion | |
} | |
#endregion | |
return _readable_name_lookup[$ _name]; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Just letting you know but in line 149 (layer_element_to_struct) "Read Only" is mispelled as "Read Obly".