Pixel-Composer/objects/o_dialog_splash/Create_0.gml

139 lines
4.3 KiB
Plaintext
Raw Normal View History

2022-01-13 05:24:03 +01:00
/// @description init
event_inherited();
#region data
destroy_on_click_out = true;
2022-11-03 11:44:49 +01:00
dialog_w = ui(960);
dialog_h = ui(600);
2023-02-15 10:43:24 +01:00
pages = ["Sample projects", "Steam Workshop"];
project_page = 0;
2022-01-13 05:24:03 +01:00
#endregion
#region content
2022-11-03 11:44:49 +01:00
var x0 = dialog_x + ui(16);
var x1 = x0 + ui(288);
var y0 = dialog_y + ui(128);
var y1 = dialog_y + dialog_h - ui(16);
2022-01-13 05:24:03 +01:00
2022-12-16 09:18:09 +01:00
sp_recent = new scrollPane(x1 - x0 - ui(8), y1 - y0, function(_y, _m) {
2022-11-18 03:20:31 +01:00
draw_clear_alpha(COLORS.panel_bg_clear_inner, 0);
2022-11-03 11:44:49 +01:00
var ww = sp_recent.surface_w - ui(2);
2022-01-13 05:24:03 +01:00
var hh = 0;
2022-11-03 11:44:49 +01:00
var pad = ui(8);
var hg = ui(16) + line_height(f_p0b) + line_height(f_p1);
2022-01-13 05:24:03 +01:00
_y += pad;
for(var i = 0; i < ds_list_size(RECENT_FILES); i++) {
var _rec = RECENT_FILES[| i];
2022-11-01 03:06:03 +01:00
if(!file_exists(_rec)) continue;
2022-11-18 03:20:31 +01:00
draw_sprite_stretched(THEME.ui_panel_bg, 1, 0, _y, ww, hg);
2022-01-13 05:24:03 +01:00
2022-12-19 13:35:30 +01:00
if(sHOVER && sp_recent.hover && point_in_rectangle(_m[0], _m[1], 0, _y, ww, _y + hg)) {
2022-11-21 06:38:44 +01:00
draw_sprite_stretched_ext(THEME.node_active, 0, 0, _y, ww, hg, COLORS._main_accent, 1);
2022-01-13 05:24:03 +01:00
2022-12-10 05:06:01 +01:00
if(mouse_press(mb_left, sFOCUS)) {
2022-01-13 05:24:03 +01:00
LOAD_PATH(_rec);
instance_destroy();
}
}
2022-11-03 11:44:49 +01:00
var ly = _y + ui(8);
2022-11-18 03:20:31 +01:00
draw_set_text(f_p0b, fa_left, fa_top, COLORS._main_text);
2022-11-03 11:44:49 +01:00
draw_text(ui(12), ly, filename_name(_rec));
2022-01-13 05:24:03 +01:00
2022-11-03 11:44:49 +01:00
ly += line_height();
2022-11-18 03:20:31 +01:00
draw_set_text(f_p1, fa_left, fa_top, COLORS._main_text_sub);
2022-11-03 11:44:49 +01:00
draw_text_cut(ui(12), ly, _rec, ww - ui(24));
2022-01-13 05:24:03 +01:00
hh += hg + pad;
_y += hg + pad;
}
return hh;
});
2022-11-03 11:44:49 +01:00
x0 = x1 + ui(16);
x1 = dialog_x + dialog_w - ui(16);
2022-01-13 05:24:03 +01:00
2022-12-16 09:18:09 +01:00
sp_sample = new scrollPane(x1 - x0 - ui(8), y1 - y0, function(_y, _m) {
2022-11-18 03:20:31 +01:00
draw_clear_alpha(COLORS.panel_bg_clear_inner, 0);
2023-02-15 10:43:24 +01:00
var list = project_page? STEAM_PROJECTS : SAMPLE_PROJECTS;
2022-01-13 05:24:03 +01:00
var hh = 0;
2022-11-03 11:44:49 +01:00
var grid_heigh = ui(96);
var grid_width = ui(128);
var grid_space = ui(20);
2023-02-15 10:43:24 +01:00
var node_count = ds_list_size(list);
2022-01-13 05:24:03 +01:00
var col = floor(sp_sample.surface_w / (grid_width + grid_space));
var row = ceil(node_count / col);
var hh = grid_space;
var yy = _y + grid_space;
var name_height = 0;
for(var i = 0; i < row; i++) {
name_height = 0;
for(var j = 0; j < col; j++) {
var index = i * col + j;
if(index < node_count) {
2023-02-15 10:43:24 +01:00
var _project = list[| index];
var _nx = grid_space + (grid_width + grid_space) * j;
var _boxx = _nx;
2022-01-13 05:24:03 +01:00
2022-11-18 03:20:31 +01:00
draw_sprite_stretched(THEME.node_bg, 0, _boxx, yy, grid_width, grid_heigh);
2022-12-19 13:35:30 +01:00
if(sHOVER && sp_sample.hover && point_in_rectangle(_m[0], _m[1], _nx, yy, _nx + grid_width, yy + grid_heigh)) {
2022-11-21 06:38:44 +01:00
draw_sprite_stretched_ext(THEME.node_active, 0, _boxx, yy, grid_width, grid_heigh, COLORS._main_accent, 1);
2022-12-10 05:06:01 +01:00
if(mouse_press(mb_left, sFOCUS)) {
2023-02-15 10:43:24 +01:00
LOAD_PATH(_project.path, true);
METADATA.steam = project_page;
if(project_page == 1)
METADATA.file_id = _project.getMetadata().file_id;
2022-01-13 05:24:03 +01:00
instance_destroy();
}
}
2023-02-15 10:43:24 +01:00
var spr = _project.getSpr();
if(spr) {
2022-12-10 05:06:01 +01:00
var gw = grid_width - ui(4);
var gh = grid_heigh - ui(4);
2023-02-15 10:43:24 +01:00
var sw = sprite_get_width(spr);
var sh = sprite_get_height(spr);
2022-12-10 05:06:01 +01:00
var s = min(gw / sw, gh / sh) * 2;
2023-02-15 10:43:24 +01:00
var ox = (sprite_get_xoffset(spr) - sw / 2) * s / 2;
var oy = (sprite_get_yoffset(spr) - sh / 2) * s / 2;
draw_sprite_ui_uniform(spr, 0, _boxx + grid_width / 2 + ox, yy + grid_heigh / 2 + ox, s);
2022-12-10 05:06:01 +01:00
}
2022-01-29 14:25:18 +01:00
var tx = _boxx + grid_width / 2;
2022-11-03 11:44:49 +01:00
var ty = yy + grid_heigh + ui(4);
2022-11-18 03:20:31 +01:00
draw_set_text(f_p2, fa_center, fa_top);
2023-02-15 10:43:24 +01:00
if(project_page == 0) {
var _tw = string_width(_project.tag);
var _th = string_height(_project.tag);
2022-01-29 14:25:18 +01:00
2023-02-15 10:43:24 +01:00
draw_set_color(COLORS.dialog_splash_badge);
draw_roundrect_ext(tx - _tw / 2 - ui(6), ty - ui(2), tx + _tw / 2 + ui(6), ty + _th, ui(8), ui(8), 0);
draw_set_color(_project.tag == "Getting started"? COLORS._main_text_accent : COLORS._main_text_sub);
draw_text(tx, ty - ui(2), _project.tag);
ty += line_height();
}
2022-01-29 14:25:18 +01:00
2022-11-18 03:20:31 +01:00
draw_set_text(f_p1, fa_center, fa_top, COLORS._main_text);
2023-02-15 10:43:24 +01:00
name_height = max(name_height, string_height_ext(_project.name, -1, grid_width) + ui(8));
draw_text_ext_add(tx, ty - ui(2), _project.name, -1, grid_width);
2022-01-13 05:24:03 +01:00
}
}
2022-11-03 11:44:49 +01:00
var hght = grid_heigh + grid_space + name_height + ui(20);
2022-01-13 05:24:03 +01:00
hh += hght;
yy += hght;
}
return hh;
});
#endregion