Pixel-Composer/objects/o_main/Step_0.gml

150 lines
No EOL
3.6 KiB
Text

/// @description init
if(winMan_isMinimized()) exit;
winManStep()
//print("===== Step start =====");
if(PROJECT.active && !PROJECT.safeMode) { #region node step
PROJECT.animator.step();
PROJECT.globalNode.step();
LIVE_UPDATE = false;
try {
if(PANEL_MAIN != 0) PANEL_MAIN.step();
array_foreach(PROJECT.allNodes, function(_node) {
if(!_node.active) return;
_node.triggerCheck();
_node.step();
});
} catch(e) {
noti_warning("Step error: " + exception_print(e));
}
IS_SAVING = false;
} #endregion
#region hotkey
if(!instance_exists(o_dialog_preference) && !HOTKEY_BLOCK) {
if(ds_map_exists(HOTKEYS, "")) {
var l = HOTKEYS[? ""];
for(var i = 0; i < ds_list_size(l); i++) {
var hotkey = l[| i];
if(hotkey.key == 0 && hotkey.modi == MOD_KEY.none) continue;
if(key_press(hotkey.key, hotkey.modi)) {
hotkey.action();
break;
}
}
}
if(ds_map_exists(HOTKEYS, FOCUS_STR)) {
var list = HOTKEYS[? FOCUS_STR];
for(var i = 0; i < ds_list_size(list); i++) {
var hotkey = list[| i];
if(hotkey.key == 0 && hotkey.modi == MOD_KEY.none) continue;
if(key_press(hotkey.key, hotkey.modi)) {
hotkey.action();
break;
}
}
}
}
HOTKEY_BLOCK = false;
#endregion
#region GIF builder
for( var i = 0; i < ds_list_size(GIF_READER); i++ ) {
var _reader = GIF_READER[| i];
var _reading = _reader[0].reading();
if(_reading) {
var ret = _reader[2];
ret(new __gif_sprite_builder(_reader[0]));
ds_stack_push(gif_complete_st, i);
}
}
while(!ds_stack_empty(gif_complete_st)) {
var i = ds_stack_pop(gif_complete_st);
buffer_delete(GIF_READER[| i][1]);
delete GIF_READER[| i][0];
ds_list_delete(GIF_READER, i);
}
#endregion
#region file drop
if(OS == os_macosx) {
file_dnd_set_files(file_dnd_pattern, file_dnd_allowfiles, file_dnd_allowdirs, file_dnd_allowmulti);
file_dnd_filelist = file_dnd_get_files();
if(file_dnd_filelist != "" && _file_dnd_filelist != file_dnd_filelist) {
var path = string_trim(file_dnd_filelist);
load_file_path(string_splice(path, "\n"));
}
_file_dnd_filelist = file_dnd_filelist;
}
#endregion
#region window
if(_modified != PROJECT.modified) {
_modified = PROJECT.modified;
var cap = "";
if(PROJECT.safeMode) cap += "[SAFE MODE] ";
if(PROJECT.readonly) cap += "[READ ONLY] ";
cap += PROJECT.path + (PROJECT.modified? "*" : "") + " - Pixel Composer";
window_set_caption(cap);
}
#endregion
#region notification
if(!ds_list_empty(WARNING)) {
var rem = ds_stack_create();
for( var i = 0; i < ds_list_size(WARNING); i++ ) {
var w = WARNING[| i];
if(--w.life <= 0)
ds_stack_push(rem, w);
}
while(!ds_stack_empty(rem)) {
ds_list_delete(WARNING, ds_stack_pop(rem));
}
ds_stack_destroy(rem);
}
#endregion
#region steam
steam_update();
if(STEAM_ENABLED) {
if (steam_is_screenshot_requested()) {
var file = $"PixelComposer_{seed_random(6)}.png";
screen_save(file);
steam_send_screenshot(file, window_get_width(), window_get_height());
}
if (steam_avatar_id > 0 && STEAM_AVATAR == 0) {
var _l_dims = steam_image_get_size(steam_avatar_id);
var _buff_size = _l_dims[0] * _l_dims[1] * 4;
var _l_cols = buffer_create(_buff_size, buffer_fixed, 1);
var _l_ok = steam_image_get_rgba(steam_avatar_id, _l_cols, _buff_size);
if(_l_ok) {
var _l_surf = surface_create(_l_dims[0], _l_dims[1]);
buffer_set_surface(_l_cols, _l_surf, 0);
STEAM_AVATAR = sprite_create_from_surface(_l_surf, 0, 0, _l_dims[0], _l_dims[1], false, false, 0, 0);
surface_free(_l_surf);
}
buffer_delete(_l_cols);
}
}
#endregion