mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2024-12-27 15:36:16 +01:00
1310 lines
49 KiB
Text
1310 lines
49 KiB
Text
|
// Generated at 2022-12-14 10:28:54 (1226ms) for v2.3.7+
|
||
|
/// @lint nullToAny true
|
||
|
// Feather disable all
|
||
|
#region prototypes
|
||
|
globalvar mq_game_frame_button; mq_game_frame_button = [undefined, /* 1:name */undefined, /* 2:custom */undefined, /* 3:icon */undefined, /* 4:subimg */0, /* 5:margin_left */0, /* 6:margin_right */0, /* 7:hover */undefined, /* 8:pressed */undefined, /* 9:enabled */undefined, /* 10:fade */0, /* 11:click */undefined, /* 12:get_width */0, /* 13:update */undefined, /* 14:draw_underlay */undefined, /* 15:draw_icon */undefined];
|
||
|
globalvar mq_gameframe_delayed_item; mq_gameframe_delayed_item = [undefined, /* 1:func */undefined, /* 2:time */0, /* 3:arg0 */undefined, /* 4:arg1 */undefined, /* 5:arg2 */undefined, /* 6:arg3 */undefined];
|
||
|
#endregion
|
||
|
#region metatype
|
||
|
globalvar gameframe_std_haxe_type_markerValue; gameframe_std_haxe_type_markerValue = [];
|
||
|
globalvar mt_game_frame_button;
|
||
|
globalvar mt_gameframe_delayed_item;
|
||
|
globalvar mt_gameframe_std_haxe_class;
|
||
|
(function() {
|
||
|
mt_game_frame_button = new gameframe_std_haxe_class(7, "game_frame_button");
|
||
|
mt_gameframe_delayed_item = new gameframe_std_haxe_class(8, "gameframe_delayed_item");
|
||
|
mt_gameframe_std_haxe_class = new gameframe_std_haxe_class(-1, "gameframe_std_haxe_class");
|
||
|
})();
|
||
|
#endregion
|
||
|
|
||
|
#region gameframe
|
||
|
|
||
|
function gameframe_log(_args1) {
|
||
|
// gameframe_log(args:haxe_Rest<any>)
|
||
|
if (!gameframe_debug) exit;
|
||
|
var _s = "[Gameframe]";
|
||
|
var __g = 0;
|
||
|
while (__g < argument_count) {
|
||
|
var _arg = argument[__g];
|
||
|
__g++;
|
||
|
_s += " " + gameframe_std_Std_stringify(_arg);
|
||
|
}
|
||
|
show_debug_message(_s);
|
||
|
}
|
||
|
|
||
|
function gameframe_update() {
|
||
|
/// gameframe_update()
|
||
|
/// @returns {void}
|
||
|
if (!gameframe_is_ready) exit;
|
||
|
gameframe_effective_scale = display_get_dpi_x() / 96 / gameframe_dpi_scale;
|
||
|
gameframe_mouse_over_frame = false;
|
||
|
gameframe_delayed_update();
|
||
|
gameframe_cover_ensure();
|
||
|
if (window_get_fullscreen() || gameframe_isFullscreen_hx) {
|
||
|
gameframe_tools_keyctl_reset();
|
||
|
exit;
|
||
|
}
|
||
|
gameframe_tools_keyctl_update();
|
||
|
if (!gameframe_isMaximized_hx && gameframe_has_native_extension && gameframe_delayed_frame_index > 3 && !gameframe_get_shadow()) gameframe_set_shadow(true);
|
||
|
var _mx = (window_mouse_get_x() | 0);
|
||
|
var _my = (window_mouse_get_y() | 0);
|
||
|
var _gw = window_get_width();
|
||
|
var _gh = window_get_height();
|
||
|
var __borderWidth = (gameframe_isMaximized_hx ? 0 : gameframe_border_width);
|
||
|
var __titleHeight = gameframe_caption_get_height();
|
||
|
var __buttons_x = gameframe_button_get_combined_offset(_gw);
|
||
|
var __flags = 0;
|
||
|
var __titleHit = false;
|
||
|
var __hitSomething = true;
|
||
|
var _resizePadding = gameframe_resize_padding;
|
||
|
if (!point_in_rectangle(_mx, _my, __buttons_x, __borderWidth, _gw - __borderWidth - ((gameframe_isMaximized_hx ? 0 : _resizePadding)), __borderWidth + __titleHeight)) {
|
||
|
if (!gameframe_isMaximized_hx && gameframe_can_resize && !point_in_rectangle(_mx, _my, _resizePadding, _resizePadding, _gw - _resizePadding, _gh - _resizePadding)) {
|
||
|
if (_mx < _resizePadding) __flags |= 1;
|
||
|
if (_my < _resizePadding) __flags |= 2;
|
||
|
if (_mx >= _gw - _resizePadding) __flags |= 4;
|
||
|
if (_my >= _gh - _resizePadding) __flags |= 8;
|
||
|
} else if (point_in_rectangle(_mx, _my, 0, 0, _gw, __titleHeight)) {
|
||
|
__titleHit = true;
|
||
|
} else __hitSomething = false;
|
||
|
}
|
||
|
gameframe_mouse_over_frame = __hitSomething;
|
||
|
if (gameframe_drag_flags == 0) {
|
||
|
var __cursor = gameframe_default_cursor;
|
||
|
if (gameframe_can_input && gameframe_can_resize) switch (__flags) {
|
||
|
case 1: case 4: __cursor = cr_size_we; break;
|
||
|
case 2: case 8: __cursor = cr_size_ns; break;
|
||
|
case 3: case 12: __cursor = cr_size_nwse; break;
|
||
|
case 6: case 9: __cursor = cr_size_nesw; break;
|
||
|
}
|
||
|
gameframe_set_window_cursor(__cursor);
|
||
|
}
|
||
|
gameframe_button_update(__buttons_x, __borderWidth, __titleHeight, _mx, _my);
|
||
|
if (gameframe_can_input && mouse_check_button_pressed(1)) {
|
||
|
if (__titleHit) {
|
||
|
var __now = current_time;
|
||
|
if (__now < gameframe_last_title_click_at + gameframe_double_click_time) {
|
||
|
if (gameframe_isMaximized_hx) gameframe_restore(); else gameframe_maximize();
|
||
|
} else {
|
||
|
gameframe_last_title_click_at = __now;
|
||
|
if (gameframe_isMaximized_hx) gameframe_drag_start(32); else gameframe_drag_start(16);
|
||
|
}
|
||
|
} else if (__flags != 0 && gameframe_can_resize) {
|
||
|
gameframe_drag_start(__flags);
|
||
|
}
|
||
|
}
|
||
|
if (gameframe_can_input) {
|
||
|
if (mouse_check_button_released(1)) gameframe_drag_stop(); else gameframe_drag_update();
|
||
|
} else if (gameframe_drag_flags != 0) {
|
||
|
gameframe_drag_stop();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function gameframe_init() {
|
||
|
/// gameframe_init()
|
||
|
/// @returns {void}
|
||
|
gameframe_is_ready = true;
|
||
|
gameframe_has_native_extension = gameframe_check_native_extension();
|
||
|
gameframe_double_click_time = (gameframe_has_native_extension ? gameframe_get_double_click_time() : 500);
|
||
|
gameframe_init_native();
|
||
|
gameframe_tools_rect_get_window_rect(gameframe_restoreRect_hx);
|
||
|
gameframe_button_add_defaults();
|
||
|
gameframe_set_shadow(true);
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region game_frame_button
|
||
|
|
||
|
function game_frame_button_create(_name, _icon, _subimg, _onClick) {
|
||
|
/// game_frame_button_create(name:string, icon:sprite, subimg:int, onClick:function<game_frame_button; void>)
|
||
|
/// @param {string} name
|
||
|
/// @param {sprite} icon
|
||
|
/// @param {int} subimg
|
||
|
/// @param {function<game_frame_button; void>} onClick
|
||
|
/// @returns {game_frame_button}
|
||
|
var _this = [mt_game_frame_button];
|
||
|
array_copy(_this, 1, mq_game_frame_button, 1, 15);
|
||
|
/// @typedef {tuple<any,name:string,custom:any,icon:sprite,subimg:int,margin_left:int,margin_right:int,hover:bool,pressed:bool,enabled:bool,fade:number,click:function<button:game_frame_button; void>,get_width:function<button:game_frame_button; int>,update:function<button:game_frame_button; void>,draw_underlay:function<button:game_frame_button; x:number; y:number; width:number; height:number; void>,draw_icon:function<button:game_frame_button; x:number; y:number; width:number; height:number; void>>} game_frame_button
|
||
|
_this[@15/* draw_icon */] = game_frame_button_draw_icon_default;
|
||
|
_this[@14/* draw_underlay */] = game_frame_button_draw_underlay_default;
|
||
|
_this[@13/* update */] = game_frame_button_update_default;
|
||
|
_this[@12/* get_width */] = game_frame_button_get_width_default;
|
||
|
_this[@10/* fade */] = 0.;
|
||
|
_this[@9/* enabled */] = true;
|
||
|
_this[@8/* pressed */] = false;
|
||
|
_this[@7/* hover */] = false;
|
||
|
_this[@6/* margin_right */] = 0;
|
||
|
_this[@5/* margin_left */] = 0;
|
||
|
_this[@1/* name */] = _name;
|
||
|
_this[@3/* icon */] = _icon;
|
||
|
_this[@4/* subimg */] = _subimg;
|
||
|
_this[@11/* click */] = _onClick;
|
||
|
return _this;
|
||
|
}
|
||
|
|
||
|
function game_frame_button_get_width_default(_b) {
|
||
|
// game_frame_button_get_width_default(b:game_frame_button)->int
|
||
|
return sprite_get_width(_b[3/* icon */]);
|
||
|
}
|
||
|
|
||
|
function game_frame_button_update_default(_b) {
|
||
|
// game_frame_button_update_default(b:game_frame_button)
|
||
|
|
||
|
}
|
||
|
|
||
|
function game_frame_button_draw_underlay_default(_b, _x, _y, _width, _height) {
|
||
|
// game_frame_button_draw_underlay_default(b:game_frame_button, x:number, y:number, width:number, height:number)
|
||
|
var _alpha1;
|
||
|
if (_b[9/* enabled */]) {
|
||
|
if (_b[8/* pressed */]) {
|
||
|
_alpha1 = 0.7;
|
||
|
_b[@10/* fade */] = 1;
|
||
|
} else {
|
||
|
var _dt = delta_time / 1000000;
|
||
|
if (_b[7/* hover */]) {
|
||
|
if (_b[10/* fade */] < 1) _b[@10/* fade */] = min(_b[10/* fade */] + _dt / gameframe_button_fade_time, 1);
|
||
|
} else if (_b[10/* fade */] > 0) {
|
||
|
_b[@10/* fade */] = max(_b[10/* fade */] - _dt / gameframe_button_fade_time, 0);
|
||
|
}
|
||
|
_alpha1 = _b[10/* fade */] * 0.3;
|
||
|
}
|
||
|
} else _alpha1 = 0.;
|
||
|
draw_sprite_stretched_ext(gameframe_spr_pixel, 0, _x, _y, _width, _height, gameframe_blend, gameframe_alpha * _alpha1);
|
||
|
}
|
||
|
|
||
|
function game_frame_button_draw_icon_default(_b, _x, _y, _width, _height) {
|
||
|
// game_frame_button_draw_icon_default(b:game_frame_button, x:number, y:number, width:number, height:number)
|
||
|
var _icon = _b[3/* icon */];
|
||
|
var _scale = gameframe_effective_scale;
|
||
|
draw_sprite_ext(_icon, _b[4/* subimg */], (_x + ((_width - sprite_get_width(_icon) * _scale) div 2) + (sprite_get_xoffset(_icon) * _scale | 0)), _y + ((_height - sprite_get_height(_icon) * _scale) div 2) + (sprite_get_yoffset(_icon) * _scale | 0), _scale, _scale, 0, gameframe_blend, gameframe_alpha * ((_b[9/* enabled */] ? 1 : 0.3)));
|
||
|
}
|
||
|
|
||
|
function game_frame_button_set_name(_this, _value) {
|
||
|
/// game_frame_button_set_name(this:game_frame_button, value:string)
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @param {string} value
|
||
|
/// @returns {void}
|
||
|
_this[@1/* name */] = _value;
|
||
|
}
|
||
|
|
||
|
function game_frame_button_get_name(_this) {
|
||
|
/// game_frame_button_get_name(this:game_frame_button)->string
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @returns {string}
|
||
|
return _this[1/* name */];
|
||
|
}
|
||
|
|
||
|
function game_frame_button_set_custom(_this, _value) {
|
||
|
/// game_frame_button_set_custom(this:game_frame_button, value:any)
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @param {any} value
|
||
|
/// @returns {void}
|
||
|
_this[@2/* custom */] = _value;
|
||
|
}
|
||
|
|
||
|
function game_frame_button_get_custom(_this) {
|
||
|
/// game_frame_button_get_custom(this:game_frame_button)->any
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @returns {any}
|
||
|
return _this[2/* custom */];
|
||
|
}
|
||
|
|
||
|
function game_frame_button_set_icon(_this, _value) {
|
||
|
/// game_frame_button_set_icon(this:game_frame_button, value:sprite)
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @param {sprite} value
|
||
|
/// @returns {void}
|
||
|
_this[@3/* icon */] = _value;
|
||
|
}
|
||
|
|
||
|
function game_frame_button_get_icon(_this) {
|
||
|
/// game_frame_button_get_icon(this:game_frame_button)->sprite
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @returns {sprite}
|
||
|
return _this[3/* icon */];
|
||
|
}
|
||
|
|
||
|
function game_frame_button_set_subimg(_this, _value) {
|
||
|
/// game_frame_button_set_subimg(this:game_frame_button, value:int)
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @param {int} value
|
||
|
/// @returns {void}
|
||
|
_this[@4/* subimg */] = _value;
|
||
|
}
|
||
|
|
||
|
function game_frame_button_get_subimg(_this) {
|
||
|
/// game_frame_button_get_subimg(this:game_frame_button)->int
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @returns {int}
|
||
|
return _this[4/* subimg */];
|
||
|
}
|
||
|
|
||
|
function game_frame_button_set_margin_left(_this, _value) {
|
||
|
/// game_frame_button_set_margin_left(this:game_frame_button, value:int)
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @param {int} value
|
||
|
/// @returns {void}
|
||
|
_this[@5/* margin_left */] = _value;
|
||
|
}
|
||
|
|
||
|
function game_frame_button_get_margin_left(_this) {
|
||
|
/// game_frame_button_get_margin_left(this:game_frame_button)->int
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @returns {int}
|
||
|
return _this[5/* margin_left */];
|
||
|
}
|
||
|
|
||
|
function game_frame_button_set_margin_right(_this, _value) {
|
||
|
/// game_frame_button_set_margin_right(this:game_frame_button, value:int)
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @param {int} value
|
||
|
/// @returns {void}
|
||
|
_this[@6/* margin_right */] = _value;
|
||
|
}
|
||
|
|
||
|
function game_frame_button_get_margin_right(_this) {
|
||
|
/// game_frame_button_get_margin_right(this:game_frame_button)->int
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @returns {int}
|
||
|
return _this[6/* margin_right */];
|
||
|
}
|
||
|
|
||
|
function game_frame_button_set_hover(_this, _value) {
|
||
|
/// game_frame_button_set_hover(this:game_frame_button, value:bool)
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @param {bool} value
|
||
|
/// @returns {void}
|
||
|
_this[@7/* hover */] = _value;
|
||
|
}
|
||
|
|
||
|
function game_frame_button_get_hover(_this) {
|
||
|
/// game_frame_button_get_hover(this:game_frame_button)->bool
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @returns {bool}
|
||
|
return _this[7/* hover */];
|
||
|
}
|
||
|
|
||
|
function game_frame_button_set_pressed(_this, _value) {
|
||
|
/// game_frame_button_set_pressed(this:game_frame_button, value:bool)
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @param {bool} value
|
||
|
/// @returns {void}
|
||
|
_this[@8/* pressed */] = _value;
|
||
|
}
|
||
|
|
||
|
function game_frame_button_get_pressed(_this) {
|
||
|
/// game_frame_button_get_pressed(this:game_frame_button)->bool
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @returns {bool}
|
||
|
return _this[8/* pressed */];
|
||
|
}
|
||
|
|
||
|
function game_frame_button_set_enabled(_this, _value) {
|
||
|
/// game_frame_button_set_enabled(this:game_frame_button, value:bool)
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @param {bool} value
|
||
|
/// @returns {void}
|
||
|
_this[@9/* enabled */] = _value;
|
||
|
}
|
||
|
|
||
|
function game_frame_button_get_enabled(_this) {
|
||
|
/// game_frame_button_get_enabled(this:game_frame_button)->bool
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @returns {bool}
|
||
|
return _this[9/* enabled */];
|
||
|
}
|
||
|
|
||
|
function game_frame_button_set_fade(_this, _value) {
|
||
|
/// game_frame_button_set_fade(this:game_frame_button, value:number)
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @param {number} value
|
||
|
/// @returns {void}
|
||
|
_this[@10/* fade */] = _value;
|
||
|
}
|
||
|
|
||
|
function game_frame_button_get_fade(_this) {
|
||
|
/// game_frame_button_get_fade(this:game_frame_button)->number
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @returns {number}
|
||
|
return _this[10/* fade */];
|
||
|
}
|
||
|
|
||
|
function game_frame_button_set_click(_this, _value) {
|
||
|
/// game_frame_button_set_click(this:game_frame_button, value:function<button:game_frame_button; void>)
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @param {function<button:game_frame_button; void>} value
|
||
|
/// @returns {void}
|
||
|
_this[@11/* click */] = _value;
|
||
|
}
|
||
|
|
||
|
function game_frame_button_get_click(_this) {
|
||
|
/// game_frame_button_get_click(this:game_frame_button)->function<button:game_frame_button; void>
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @returns {function<button:game_frame_button; void>}
|
||
|
return _this[11/* click */];
|
||
|
}
|
||
|
|
||
|
function game_frame_button_set_get_width(_this, _value) {
|
||
|
/// game_frame_button_set_get_width(this:game_frame_button, value:function<button:game_frame_button; int>)
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @param {function<button:game_frame_button; int>} value
|
||
|
/// @returns {void}
|
||
|
_this[@12/* get_width */] = _value;
|
||
|
}
|
||
|
|
||
|
function game_frame_button_get_get_width(_this) {
|
||
|
/// game_frame_button_get_get_width(this:game_frame_button)->function<button:game_frame_button; int>
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @returns {function<button:game_frame_button; int>}
|
||
|
return _this[12/* get_width */];
|
||
|
}
|
||
|
|
||
|
function game_frame_button_set_update(_this, _value) {
|
||
|
/// game_frame_button_set_update(this:game_frame_button, value:function<button:game_frame_button; void>)
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @param {function<button:game_frame_button; void>} value
|
||
|
/// @returns {void}
|
||
|
_this[@13/* update */] = _value;
|
||
|
}
|
||
|
|
||
|
function game_frame_button_get_update(_this) {
|
||
|
/// game_frame_button_get_update(this:game_frame_button)->function<button:game_frame_button; void>
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @returns {function<button:game_frame_button; void>}
|
||
|
return _this[13/* update */];
|
||
|
}
|
||
|
|
||
|
function game_frame_button_set_draw_underlay(_this, _value) {
|
||
|
/// game_frame_button_set_draw_underlay(this:game_frame_button, value:function<button:game_frame_button; x:number; y:number; width:number; height:number; void>)
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @param {function<button:game_frame_button; x:number; y:number; width:number; height:number; void>} value
|
||
|
/// @returns {void}
|
||
|
_this[@14/* draw_underlay */] = _value;
|
||
|
}
|
||
|
|
||
|
function game_frame_button_get_draw_underlay(_this) {
|
||
|
/// game_frame_button_get_draw_underlay(this:game_frame_button)->function<button:game_frame_button; x:number; y:number; width:number; height:number; void>
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @returns {function<button:game_frame_button; x:number; y:number; width:number; height:number; void>}
|
||
|
return _this[14/* draw_underlay */];
|
||
|
}
|
||
|
|
||
|
function game_frame_button_set_draw_icon(_this, _value) {
|
||
|
/// game_frame_button_set_draw_icon(this:game_frame_button, value:function<button:game_frame_button; x:number; y:number; width:number; height:number; void>)
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @param {function<button:game_frame_button; x:number; y:number; width:number; height:number; void>} value
|
||
|
/// @returns {void}
|
||
|
_this[@15/* draw_icon */] = _value;
|
||
|
}
|
||
|
|
||
|
function game_frame_button_get_draw_icon(_this) {
|
||
|
/// game_frame_button_get_draw_icon(this:game_frame_button)->function<button:game_frame_button; x:number; y:number; width:number; height:number; void>
|
||
|
/// @param {game_frame_button} this
|
||
|
/// @returns {function<button:game_frame_button; x:number; y:number; width:number; height:number; void>}
|
||
|
return _this[15/* draw_icon */];
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region gameframe_button
|
||
|
|
||
|
function gameframe_button_get_combined_width() {
|
||
|
/// gameframe_button_get_combined_width()->int
|
||
|
/// @returns {int}
|
||
|
var _w = 0;
|
||
|
var __g = 0;
|
||
|
var __g1 = gameframe_button_array;
|
||
|
while (__g < array_length(__g1)) {
|
||
|
var _b = __g1[__g];
|
||
|
__g++;
|
||
|
_w += _b[5/* margin_left */] + _b[12/* get_width */](_b) + _b[6/* margin_right */];
|
||
|
}
|
||
|
return ceil(_w * gameframe_effective_scale);
|
||
|
}
|
||
|
|
||
|
function gameframe_button_get_combined_offset(_windowWidth) {
|
||
|
/// gameframe_button_get_combined_offset(windowWidth:int)->int
|
||
|
/// @param {int} windowWidth
|
||
|
/// @returns {int}
|
||
|
return _windowWidth - ((gameframe_isMaximized_hx ? 0 : gameframe_border_width)) - gameframe_button_get_combined_width();
|
||
|
}
|
||
|
|
||
|
function gameframe_button_reset() {
|
||
|
/// gameframe_button_reset()
|
||
|
/// @returns {void}
|
||
|
var __g = 0;
|
||
|
var __g1 = gameframe_button_array;
|
||
|
while (__g < array_length(__g1)) {
|
||
|
var _b = __g1[__g];
|
||
|
__g++;
|
||
|
_b[@7/* hover */] = false;
|
||
|
_b[@10/* fade */] = 0.;
|
||
|
_b[@8/* pressed */] = false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function gameframe_button_update(_x, _y, _height, _mx, _my) {
|
||
|
// gameframe_button_update(x:number, y:number, height:int, mx:int, my:int)
|
||
|
var _over_row = _mx >= _y && _my < _y + _height;
|
||
|
if (_over_row) {
|
||
|
if (gameframe_has_native_extension) {
|
||
|
_over_row = gameframe_mouse_in_window();
|
||
|
} else {
|
||
|
var _wx = window_get_x();
|
||
|
var _wy = window_get_y();
|
||
|
var _dmx = display_mouse_get_x();
|
||
|
var _dmy = display_mouse_get_y();
|
||
|
_over_row = _dmx >= _wx && _dmy >= _wy && _dmx < _wx + window_get_width() && _dmy < _wy + window_get_height();
|
||
|
}
|
||
|
}
|
||
|
if (gameframe_button_wait_for_movement) {
|
||
|
if (_mx != gameframe_button_wait_for_movement_x || _my != gameframe_button_wait_for_movement_y) gameframe_button_wait_for_movement = false; else _over_row = false;
|
||
|
}
|
||
|
var _dpiScale = gameframe_effective_scale;
|
||
|
var _pressed = mouse_check_button_pressed(1);
|
||
|
var _released = mouse_check_button_released(1);
|
||
|
var _disable = gameframe_drag_flags != 0 || !gameframe_can_input;
|
||
|
var _i = 0;
|
||
|
for (var __g1 = array_length(gameframe_button_array); _i < __g1; _i++) {
|
||
|
var _button = gameframe_button_array[_i];
|
||
|
_button[13/* update */](_button);
|
||
|
_x += _button[5/* margin_left */] * _dpiScale;
|
||
|
var _width = _button[12/* get_width */](_button) * _dpiScale;
|
||
|
if (_disable || !_button[9/* enabled */]) {
|
||
|
_button[@7/* hover */] = false;
|
||
|
_button[@8/* pressed */] = false;
|
||
|
} else if (_over_row && _mx >= _x && _mx < _x + _width) {
|
||
|
_button[@7/* hover */] = true;
|
||
|
if (_pressed) _button[@8/* pressed */] = true;
|
||
|
} else _button[@7/* hover */] = false;
|
||
|
if (_released && _button[8/* pressed */] && _button[7/* hover */]) {
|
||
|
_button[@8/* pressed */] = false;
|
||
|
_button[11/* click */](_button);
|
||
|
}
|
||
|
_x += _width + _button[6/* margin_right */] * _dpiScale;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function gameframe_button_draw(_x, _y, _height) {
|
||
|
// gameframe_button_draw(x:number, y:number, height:int)
|
||
|
var _dpiScale = gameframe_effective_scale;
|
||
|
var _i = 0;
|
||
|
for (var __g1 = array_length(gameframe_button_array); _i < __g1; _i++) {
|
||
|
var _button = gameframe_button_array[_i];
|
||
|
_x += _button[5/* margin_left */] * _dpiScale;
|
||
|
var _width = _button[12/* get_width */](_button) * _dpiScale;
|
||
|
_button[14/* draw_underlay */](_button, _x, _y, _width, _height);
|
||
|
_button[15/* draw_icon */](_button, _x, _y, _width, _height);
|
||
|
_x += _width + _button[6/* margin_right */] * _dpiScale;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function gameframe_button_add_defaults() {
|
||
|
// gameframe_button_add_defaults()
|
||
|
gameframe_button_array = [];
|
||
|
var _minimize = game_frame_button_create("minimize", gameframe_spr_buttons, 0, function(_button) {
|
||
|
gameframe_minimize()
|
||
|
});
|
||
|
if (!gameframe_has_native_extension) _minimize[@9/* enabled */] = false;
|
||
|
array_push(gameframe_button_array, _minimize);
|
||
|
var _maxrest = game_frame_button_create("maxrest", gameframe_spr_buttons, 1, function(_button) {
|
||
|
if (gameframe_isMaximized_hx) gameframe_restore(); else gameframe_maximize();
|
||
|
gameframe_button_reset();
|
||
|
});
|
||
|
_maxrest[@13/* update */] = function(_b) {
|
||
|
_b[@4/* subimg */] = (gameframe_isMaximized_hx ? 2 : 1);
|
||
|
_b[@9/* enabled */] = gameframe_can_resize;
|
||
|
}
|
||
|
array_push(gameframe_button_array, _maxrest);
|
||
|
var _close = game_frame_button_create("close", gameframe_spr_buttons, 3, function(__) {
|
||
|
game_end()
|
||
|
});
|
||
|
_close[@14/* draw_underlay */] = function(_b, __x, __y, __width, __height) {
|
||
|
var __alpha = 0.;
|
||
|
if (_b[8/* pressed */]) {
|
||
|
__alpha = 0.7;
|
||
|
_b[@10/* fade */] = 1;
|
||
|
} else {
|
||
|
var _dt = delta_time / 1000000;
|
||
|
if (_b[7/* hover */]) {
|
||
|
if (_b[10/* fade */] < 1) {
|
||
|
_b[@10/* fade */] = max(_b[10/* fade */], 0.5);
|
||
|
_b[@10/* fade */] = min(_b[10/* fade */] + _dt / gameframe_button_fade_time, 1);
|
||
|
}
|
||
|
} else if (_b[10/* fade */] > 0) {
|
||
|
_b[@10/* fade */] = max(_b[10/* fade */] - _dt / gameframe_button_fade_time, 0);
|
||
|
}
|
||
|
__alpha = gameframe_alpha * _b[10/* fade */];
|
||
|
}
|
||
|
draw_sprite_stretched_ext(gameframe_spr_pixel, 0, __x, __y, __width, __height, 2298344, __alpha);
|
||
|
}
|
||
|
array_push(gameframe_button_array, _close);
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region gameframe_tools_rect
|
||
|
|
||
|
function gameframe_tools_rect__new(_x, _y, _w, _h) {
|
||
|
// gameframe_tools_rect__new(...:int)->gameframe_tools_rect
|
||
|
if (_x == undefined) _x = 0;
|
||
|
if (_y == undefined) _y = 0;
|
||
|
if (_w == undefined) _w = 0;
|
||
|
if (_h == undefined) _h = 0;
|
||
|
if (false) show_debug_message(argument[3]);
|
||
|
return [/* x: */_x, /* y: */_y, /* width: */_w, /* height: */_h];
|
||
|
}
|
||
|
|
||
|
function gameframe_tools_rect_get_window_rect(_this1) {
|
||
|
// gameframe_tools_rect_get_window_rect(this:tools_GfRectImpl)
|
||
|
_this1[@0/* x */] = window_get_x();
|
||
|
_this1[@1/* y */] = window_get_y();
|
||
|
_this1[@2/* width */] = window_get_width();
|
||
|
_this1[@3/* height */] = window_get_height();
|
||
|
}
|
||
|
|
||
|
function gameframe_tools_rect_set_window_rect(_this1) {
|
||
|
// gameframe_tools_rect_set_window_rect(this:tools_GfRectImpl)
|
||
|
window_set_rectangle(_this1[0/* x */], _this1[1/* y */], _this1[2/* width */], _this1[3/* height */]);
|
||
|
}
|
||
|
|
||
|
function gameframe_tools_rect_equals(_this1, _o) {
|
||
|
// gameframe_tools_rect_equals(this:tools_GfRectImpl, o:gameframe_tools_rect)->bool
|
||
|
return _this1[0/* x */] == _o[0/* x */] && _this1[1/* y */] == _o[1/* y */] && _this1[2/* width */] == _o[2/* width */] && _this1[3/* height */] == _o[3/* height */];
|
||
|
}
|
||
|
|
||
|
function gameframe_tools_rect_set_to(_this1, _o) {
|
||
|
// gameframe_tools_rect_set_to(this:tools_GfRectImpl, o:gameframe_tools_rect)
|
||
|
_this1[@0/* x */] = _o[0/* x */];
|
||
|
_this1[@1/* y */] = _o[1/* y */];
|
||
|
_this1[@2/* width */] = _o[2/* width */];
|
||
|
_this1[@3/* height */] = _o[3/* height */];
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region gameframe
|
||
|
|
||
|
function gameframe_minimize() {
|
||
|
/// gameframe_minimize()
|
||
|
/// @returns {void}
|
||
|
if (gameframe_is_natively_minimized()) exit;
|
||
|
gameframe_button_reset();
|
||
|
gameframe_delayed_call_impl(function() {
|
||
|
gameframe_button_wait_for_movement = true;
|
||
|
gameframe_button_wait_for_movement_x = window_mouse_get_x();
|
||
|
gameframe_button_wait_for_movement_y = window_mouse_get_y();
|
||
|
gameframe_syscommand(61472);
|
||
|
}, 1, undefined, undefined, undefined, undefined);
|
||
|
}
|
||
|
|
||
|
function gameframe_minimise() {
|
||
|
// gameframe_minimise()
|
||
|
if (!gameframe_is_natively_minimized()) {
|
||
|
gameframe_button_reset();
|
||
|
gameframe_delayed_call_impl(function() {
|
||
|
gameframe_button_wait_for_movement = true;
|
||
|
gameframe_button_wait_for_movement_x = window_mouse_get_x();
|
||
|
gameframe_button_wait_for_movement_y = window_mouse_get_y();
|
||
|
gameframe_syscommand(61472);
|
||
|
}, 1, undefined, undefined, undefined, undefined);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function gameframe_is_minimized() {
|
||
|
/// gameframe_is_minimized()->bool
|
||
|
/// @returns {bool}
|
||
|
return gameframe_is_natively_minimized();
|
||
|
}
|
||
|
|
||
|
function gameframe_is_minimised() {
|
||
|
// gameframe_is_minimised()->bool
|
||
|
return gameframe_is_natively_minimized();
|
||
|
}
|
||
|
|
||
|
function gameframe_maximize() {
|
||
|
/// gameframe_maximize()
|
||
|
/// @returns {void}
|
||
|
if (gameframe_isMaximized_hx || gameframe_isFullscreen_hx || window_get_fullscreen()) exit;
|
||
|
gameframe_isMaximized_hx = true;
|
||
|
gameframe_store_rect();
|
||
|
gameframe_maximize_1();
|
||
|
}
|
||
|
|
||
|
function gameframe_maximise() {
|
||
|
// gameframe_maximise()
|
||
|
if (!(gameframe_isMaximized_hx || gameframe_isFullscreen_hx || window_get_fullscreen())) {
|
||
|
gameframe_isMaximized_hx = true;
|
||
|
gameframe_store_rect();
|
||
|
gameframe_maximize_1();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function gameframe_is_maximized() {
|
||
|
/// gameframe_is_maximized()->bool
|
||
|
/// @returns {bool}
|
||
|
return gameframe_isMaximized_hx;
|
||
|
}
|
||
|
|
||
|
function gameframe_is_maximised() {
|
||
|
// gameframe_is_maximised()->bool
|
||
|
return gameframe_isMaximized_hx;
|
||
|
}
|
||
|
|
||
|
function gameframe_maximize_1() {
|
||
|
// gameframe_maximize_1()
|
||
|
var __work = gameframe_tools_mon_get_active()[1/* workspace */];
|
||
|
if (gameframe_debug) gameframe_log("maximize: ", __work);
|
||
|
gameframe_tools_rect_set_window_rect(__work);
|
||
|
gameframe_set_shadow(false);
|
||
|
}
|
||
|
|
||
|
function gameframe_store_rect() {
|
||
|
// gameframe_store_rect()
|
||
|
gameframe_tools_rect_get_window_rect(gameframe_restoreRect_hx);
|
||
|
if (gameframe_debug) gameframe_log("storeRect: ", gameframe_restoreRect_hx);
|
||
|
}
|
||
|
|
||
|
function gameframe_restore(__force) {
|
||
|
/// gameframe_restore(_force:bool = false)
|
||
|
/// @param {bool} [_force=false]
|
||
|
/// @returns {void}
|
||
|
if (__force == undefined) __force = false;
|
||
|
if (false) show_debug_message(argument[0]);
|
||
|
if (window_get_fullscreen()) {
|
||
|
window_set_fullscreen(false);
|
||
|
gameframe_delayed_call_impl(function() {
|
||
|
gameframe_restore()
|
||
|
}, 1, undefined, undefined, undefined, undefined);
|
||
|
exit;
|
||
|
}
|
||
|
if (!__force && !gameframe_isMaximized_hx && !gameframe_isFullscreen_hx) exit;
|
||
|
gameframe_isMaximized_hx = false;
|
||
|
gameframe_isFullscreen_hx = false;
|
||
|
var __rect = gameframe_restoreRect_hx;
|
||
|
if (gameframe_debug) gameframe_log("restore: ", __rect);
|
||
|
gameframe_tools_rect_set_window_rect(__rect);
|
||
|
gameframe_set_shadow(true);
|
||
|
}
|
||
|
|
||
|
function gameframe_set_fullscreen(_mode) {
|
||
|
/// gameframe_set_fullscreen(mode:int)
|
||
|
/// @param {int} mode
|
||
|
/// @returns {void}
|
||
|
gameframe_set_fullscreen_1(_mode);
|
||
|
}
|
||
|
|
||
|
function gameframe_get_fullscreen() {
|
||
|
/// gameframe_get_fullscreen()->int
|
||
|
/// @returns {int}
|
||
|
if (window_get_fullscreen()) return 1;
|
||
|
if (gameframe_isFullscreen_hx) return 2; else return 0;
|
||
|
}
|
||
|
|
||
|
function gameframe_is_fullscreen_window() {
|
||
|
/// gameframe_is_fullscreen_window()->bool
|
||
|
/// @returns {bool}
|
||
|
return !window_get_fullscreen() && gameframe_isFullscreen_hx;
|
||
|
}
|
||
|
|
||
|
function gameframe_set_fullscreen_1(__mode, __wasFullscreen) {
|
||
|
// gameframe_set_fullscreen_1(_mode:int, _wasFullscreen:bool = false)
|
||
|
if (__wasFullscreen == undefined) __wasFullscreen = false;
|
||
|
if (false) show_debug_message(argument[1]);
|
||
|
if (gameframe_debug) gameframe_log("setFullscreen(mode:", __mode, ", wasfs:", __wasFullscreen, ")");
|
||
|
if (__mode == 1 || __mode == 2) {
|
||
|
gameframe_button_reset();
|
||
|
gameframe_drag_stop();
|
||
|
}
|
||
|
switch (__mode) {
|
||
|
case 1:
|
||
|
if (window_get_fullscreen()) exit;
|
||
|
if (gameframe_isFullscreen_hx) {
|
||
|
gameframe_restore();
|
||
|
gameframe_delayed_call_impl(function() {
|
||
|
gameframe_set_fullscreen_1(1)
|
||
|
}, 1, undefined, undefined, undefined, undefined);
|
||
|
exit;
|
||
|
} else gameframe_store_rect();
|
||
|
window_set_fullscreen(true);
|
||
|
break;
|
||
|
case 2:
|
||
|
if (window_get_fullscreen()) {
|
||
|
window_set_fullscreen(false);
|
||
|
gameframe_delayed_call_impl(function() {
|
||
|
gameframe_set_fullscreen_1(2, true)
|
||
|
}, 10, undefined, undefined, undefined, undefined);
|
||
|
exit;
|
||
|
}
|
||
|
if (gameframe_isFullscreen_hx) exit;
|
||
|
gameframe_isFullscreen_hx = true;
|
||
|
if (!gameframe_isMaximized_hx && !__wasFullscreen) gameframe_store_rect();
|
||
|
gameframe_tools_rect_set_window_rect(gameframe_tools_mon_get_active()[0/* screen */]);
|
||
|
gameframe_set_shadow(false);
|
||
|
break;
|
||
|
default:
|
||
|
if (window_get_fullscreen() && gameframe_isFullscreen_hx) {
|
||
|
window_set_fullscreen(false);
|
||
|
gameframe_delayed_call_impl(function() {
|
||
|
gameframe_set_fullscreen_1(0)
|
||
|
}, 1, undefined, undefined, undefined, undefined);
|
||
|
exit;
|
||
|
}
|
||
|
if (window_get_fullscreen()) {
|
||
|
gameframe_restore();
|
||
|
} else if (gameframe_isMaximized_hx) {
|
||
|
gameframe_isFullscreen_hx = false;
|
||
|
gameframe_maximize_1();
|
||
|
} else gameframe_restore();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function gameframe_set_window_cursor(_cr1) {
|
||
|
// gameframe_set_window_cursor(cr:window_cursor)
|
||
|
gameframe_current_cursor = _cr1;
|
||
|
if (gameframe_set_cursor) {
|
||
|
if (window_get_cursor() != _cr1) window_set_cursor(_cr1);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function gameframe_get_border_width() {
|
||
|
// gameframe_get_border_width()->int
|
||
|
if (gameframe_isMaximized_hx) return 0; else return gameframe_border_width;
|
||
|
}
|
||
|
|
||
|
function gameframe_get_drag_flags() {
|
||
|
/// gameframe_get_drag_flags()->int
|
||
|
/// @returns {int}
|
||
|
return gameframe_drag_flags;
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region gameframe_caption
|
||
|
|
||
|
function gameframe_caption_get_height() {
|
||
|
/// gameframe_caption_get_height()->int
|
||
|
/// @returns {int}
|
||
|
var _h = (gameframe_isMaximized_hx ? gameframe_caption_height_maximized : gameframe_caption_height_normal);
|
||
|
if (_h > 0) return (_h | 0);
|
||
|
return round(-_h * sprite_get_height(gameframe_spr_caption) * gameframe_effective_scale);
|
||
|
}
|
||
|
|
||
|
function gameframe_caption_get_overlap() {
|
||
|
/// gameframe_caption_get_overlap()->number
|
||
|
/// @returns {number}
|
||
|
if (window_get_fullscreen() || gameframe_isFullscreen_hx) return 0.;
|
||
|
var _h = gameframe_caption_get_height();
|
||
|
var _rect = application_get_position();
|
||
|
return max(0, _h - _rect[1]) / ((_rect[2] - _rect[0]) / surface_get_width(application_surface));
|
||
|
}
|
||
|
|
||
|
function gameframe_caption_draw_border_default(__x, __y, __width, __height) {
|
||
|
// gameframe_caption_draw_border_default(_x:int, _y:int, _width:int, _height:int)
|
||
|
draw_sprite_stretched_ext(gameframe_spr_border, (window_has_focus() ? 1 : 0), __x, __y, __width, __height, gameframe_blend, gameframe_alpha);
|
||
|
}
|
||
|
|
||
|
function gameframe_caption_draw_caption_rect_default(__x, __y, __width, __height, __buttons_x) {
|
||
|
// gameframe_caption_draw_caption_rect_default(_x:int, _y:int, _width:int, _height:int, _buttons_x:int)
|
||
|
draw_sprite_stretched_ext(gameframe_spr_caption, (window_has_focus() ? 1 : 0), __x, __y, __width, __height, gameframe_blend, gameframe_alpha * gameframe_caption_alpha);
|
||
|
}
|
||
|
|
||
|
function gameframe_caption_draw_caption_text_default(__x, __y, __width, __height) {
|
||
|
// gameframe_caption_draw_caption_text_default(_x:number, _y:number, _width:number, _height:int)
|
||
|
var _dpiScale = gameframe_effective_scale;
|
||
|
var __right = __x + __width;
|
||
|
__x += gameframe_caption_margin * _dpiScale;
|
||
|
var _icon = gameframe_caption_icon;
|
||
|
if (_icon != -1) {
|
||
|
draw_sprite_ext(_icon, -1, (__x + sprite_get_xoffset(_icon) * _dpiScale | 0), __y + ((__height - sprite_get_height(_icon) * _dpiScale) div 2) + sprite_get_yoffset(_icon) * _dpiScale, _dpiScale, _dpiScale, 0, 16777215, gameframe_caption_alpha * gameframe_alpha);
|
||
|
__x += (sprite_get_width(_icon) + gameframe_caption_icon_margin) * _dpiScale;
|
||
|
}
|
||
|
var _text = gameframe_caption_text;
|
||
|
if (_text == "") exit;
|
||
|
var __newFont = gameframe_caption_font;
|
||
|
var __h = draw_get_halign();
|
||
|
var __v = draw_get_valign();
|
||
|
var __oldFont;
|
||
|
if (__newFont != -1) {
|
||
|
__oldFont = draw_get_font();
|
||
|
draw_set_font(__newFont);
|
||
|
} else __oldFont = -1;
|
||
|
draw_set_halign(gameframe_caption_text_align);
|
||
|
draw_set_valign(0);
|
||
|
var __alpha = draw_get_alpha();
|
||
|
var __textWidth = __right - __x;
|
||
|
draw_set_alpha((gameframe_alpha * gameframe_caption_alpha));
|
||
|
draw_text_ext_transformed((__x + ((gameframe_caption_text_align * __textWidth) div 2)), __y + ((__height - string_height_ext(_text, -1, __textWidth) * _dpiScale) div 2), _text, -1, __textWidth, _dpiScale, _dpiScale, 0);
|
||
|
draw_set_alpha(__alpha);
|
||
|
if (__newFont != -1) draw_set_font(__oldFont);
|
||
|
draw_set_halign(__h);
|
||
|
draw_set_valign(__v);
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region gameframe_cover
|
||
|
|
||
|
function gameframe_cover_ensure() {
|
||
|
// gameframe_cover_ensure()
|
||
|
var __just_changed = gameframe_cover_check_for_success;
|
||
|
if (__just_changed) gameframe_cover_check_for_success = false;
|
||
|
var __target_rect;
|
||
|
if (window_get_fullscreen()) {
|
||
|
gameframe_cover_can_ignore = false;
|
||
|
exit;
|
||
|
} else if (gameframe_isFullscreen_hx) {
|
||
|
__target_rect = gameframe_tools_mon_get_active()[0/* screen */];
|
||
|
} else if (gameframe_isMaximized_hx) {
|
||
|
__target_rect = gameframe_tools_mon_get_active()[1/* workspace */];
|
||
|
} else {
|
||
|
gameframe_cover_can_ignore = false;
|
||
|
exit;
|
||
|
}
|
||
|
gameframe_tools_rect_get_window_rect(gameframe_cover_curr_rect);
|
||
|
if (!gameframe_tools_rect_equals(gameframe_cover_curr_rect, __target_rect)) {
|
||
|
if (__just_changed) {
|
||
|
gameframe_cover_can_ignore = true;
|
||
|
gameframe_tools_rect_set_to(gameframe_cover_ignore_rect, __target_rect);
|
||
|
if (gameframe_debug) gameframe_log("[cover] Resize failed - ignoring");
|
||
|
exit;
|
||
|
}
|
||
|
if (gameframe_cover_can_ignore && gameframe_tools_rect_equals(__target_rect, gameframe_cover_ignore_rect)) exit;
|
||
|
if (gameframe_debug) gameframe_log("[cover] Adjusting window rectangle to", __target_rect);
|
||
|
gameframe_tools_rect_set_window_rect(__target_rect);
|
||
|
gameframe_cover_check_for_success = true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region gameframe_delayed
|
||
|
|
||
|
function gameframe_delayed_call_impl(_func, _delay, _arg0, _arg1, _arg2, _arg3) {
|
||
|
// gameframe_delayed_call_impl(func:any, delay:int, arg:any, arg:any, arg:any, arg:any)
|
||
|
var _item;
|
||
|
if (ds_stack_empty(gameframe_delayed_pool)) _item = gameframe_delayed_item_create(); else _item = ds_stack_pop(gameframe_delayed_pool);
|
||
|
_item[@1/* func */] = _func;
|
||
|
_item[@2/* time */] = gameframe_delayed_frame_index + _delay;
|
||
|
_item[@3/* arg0 */] = _arg0;
|
||
|
_item[@4/* arg1 */] = _arg1;
|
||
|
_item[@5/* arg2 */] = _arg2;
|
||
|
_item[@6/* arg3 */] = _arg3;
|
||
|
ds_queue_enqueue(gameframe_delayed_queue, _item);
|
||
|
}
|
||
|
|
||
|
function gameframe_delayed_update() {
|
||
|
// gameframe_delayed_update()
|
||
|
gameframe_delayed_frame_index += 1;
|
||
|
var _f;
|
||
|
while (!ds_queue_empty(gameframe_delayed_queue)) {
|
||
|
var _head = ds_queue_head(gameframe_delayed_queue);
|
||
|
if (_head[2/* time */] > gameframe_delayed_frame_index) break;
|
||
|
ds_queue_dequeue(gameframe_delayed_queue);
|
||
|
_f = _head[1/* func */];
|
||
|
_f(_head[3/* arg0 */], _head[4/* arg1 */], _head[5/* arg2 */], _head[6/* arg3 */]);
|
||
|
_head[@1/* func */] = undefined;
|
||
|
_head[@3/* arg0 */] = undefined;
|
||
|
_head[@4/* arg1 */] = undefined;
|
||
|
_head[@5/* arg2 */] = undefined;
|
||
|
_head[@6/* arg3 */] = undefined;
|
||
|
ds_stack_push(gameframe_delayed_pool, _head);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region gameframe_delayed_item
|
||
|
|
||
|
function gameframe_delayed_item_create() {
|
||
|
// gameframe_delayed_item_create()
|
||
|
var _this = [mt_gameframe_delayed_item];
|
||
|
array_copy(_this, 1, mq_gameframe_delayed_item, 1, 6);
|
||
|
/// @typedef {tuple<any,func:any,time:int,arg0:any,arg1:any,arg2:any,arg3:any>} gameframe_delayed_item
|
||
|
|
||
|
return _this;
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region gameframe_drag
|
||
|
|
||
|
function gameframe_drag_start(__flags) {
|
||
|
// gameframe_drag_start(_flags:int)
|
||
|
gameframe_drag_flags = __flags;
|
||
|
gameframe_drag_mx = (display_mouse_get_x() | 0);
|
||
|
gameframe_drag_my = (display_mouse_get_y() | 0);
|
||
|
gameframe_drag_left = window_get_x();
|
||
|
gameframe_drag_top = window_get_y();
|
||
|
gameframe_drag_right = gameframe_drag_left + window_get_width();
|
||
|
gameframe_drag_bottom = gameframe_drag_top + window_get_height();
|
||
|
}
|
||
|
|
||
|
function gameframe_drag_stop() {
|
||
|
// gameframe_drag_stop()
|
||
|
gameframe_drag_flags = 0;
|
||
|
}
|
||
|
|
||
|
function gameframe_drag_set_rect(_x, _y, _w, _h) {
|
||
|
// gameframe_drag_set_rect(x:int, y:int, w:int, h:int)
|
||
|
window_set_rectangle(_x, _y, _w, _h);
|
||
|
}
|
||
|
|
||
|
function gameframe_drag_update() {
|
||
|
// gameframe_drag_update()
|
||
|
if (gameframe_drag_flags == 0) exit;
|
||
|
var __mx = (display_mouse_get_x() | 0);
|
||
|
var __my = (display_mouse_get_y() | 0);
|
||
|
switch (gameframe_drag_flags) {
|
||
|
case 16: window_set_position(__mx - (gameframe_drag_mx - gameframe_drag_left), __my - (gameframe_drag_my - gameframe_drag_top)); break;
|
||
|
case 32:
|
||
|
if (point_distance(__mx, __my, gameframe_drag_mx, gameframe_drag_my) > 5) {
|
||
|
var __x;
|
||
|
var __y = gameframe_drag_my - gameframe_drag_top;
|
||
|
if (gameframe_drag_mx - gameframe_drag_left < (gameframe_drag_right - gameframe_drag_left) / 2) __x = min(gameframe_drag_mx - gameframe_drag_left, (gameframe_restoreRect_hx[2/* width */] >> 1)); else __x = max(gameframe_restoreRect_hx[2/* width */] + gameframe_drag_mx - gameframe_drag_right, (gameframe_restoreRect_hx[2/* width */] >> 1));
|
||
|
gameframe_isMaximized_hx = false;
|
||
|
window_set_rectangle(__mx - __x, __my - __y, gameframe_restoreRect_hx[2/* width */], gameframe_restoreRect_hx[3/* height */]);
|
||
|
gameframe_drag_start(16);
|
||
|
}
|
||
|
break;
|
||
|
case 1:
|
||
|
var __x = __mx - (gameframe_drag_mx - gameframe_drag_left);
|
||
|
window_set_rectangle(__x, gameframe_drag_top, gameframe_drag_right - __x, gameframe_drag_bottom - gameframe_drag_top);
|
||
|
break;
|
||
|
case 2:
|
||
|
var __y = __my - (gameframe_drag_my - gameframe_drag_top);
|
||
|
window_set_rectangle(gameframe_drag_left, __y, gameframe_drag_right - gameframe_drag_left, gameframe_drag_bottom - __y);
|
||
|
break;
|
||
|
case 4: window_set_rectangle(gameframe_drag_left, gameframe_drag_top, gameframe_drag_right - gameframe_drag_left - gameframe_drag_mx + __mx, gameframe_drag_bottom - gameframe_drag_top); break;
|
||
|
case 8: window_set_rectangle(gameframe_drag_left, gameframe_drag_top, gameframe_drag_right - gameframe_drag_left, gameframe_drag_bottom - gameframe_drag_top - gameframe_drag_my + __my); break;
|
||
|
case 3:
|
||
|
var __x = __mx - (gameframe_drag_mx - gameframe_drag_left);
|
||
|
var __y = __my - (gameframe_drag_my - gameframe_drag_top);
|
||
|
window_set_rectangle(__x, __y, gameframe_drag_right - __x, gameframe_drag_bottom - __y);
|
||
|
break;
|
||
|
case 9:
|
||
|
var __x = __mx - (gameframe_drag_mx - gameframe_drag_left);
|
||
|
window_set_rectangle(__x, gameframe_drag_top, gameframe_drag_right - __x, gameframe_drag_bottom - gameframe_drag_top - gameframe_drag_my + __my);
|
||
|
break;
|
||
|
case 6:
|
||
|
var __y = __my - (gameframe_drag_my - gameframe_drag_top);
|
||
|
window_set_rectangle(gameframe_drag_left, __y, gameframe_drag_right - gameframe_drag_left - gameframe_drag_mx + __mx, gameframe_drag_bottom - __y);
|
||
|
break;
|
||
|
case 12: window_set_rectangle(gameframe_drag_left, gameframe_drag_top, gameframe_drag_right - gameframe_drag_left - gameframe_drag_mx + __mx, gameframe_drag_bottom - gameframe_drag_top - gameframe_drag_my + __my); break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region gameframe.tools.keyctl
|
||
|
|
||
|
function gameframe_tools_keyctl_create_key(_keyCode) {
|
||
|
// gameframe_tools_keyctl_create_key(keyCode:gml_input_KeyCode)->GfKeyboardKey
|
||
|
return [/* keyCode: */_keyCode, /* down: */false, /* pressed: */false];
|
||
|
}
|
||
|
|
||
|
function gameframe_tools_keyctl_update_key(_key) {
|
||
|
// gameframe_tools_keyctl_update_key(key:GfKeyboardKey)
|
||
|
var _down0 = _key[1/* down */];
|
||
|
var _down1 = keyboard_check_direct(_key[0/* keyCode */]) != 0;
|
||
|
_key[@2/* pressed */] = !_down0 && _down1;
|
||
|
_key[@1/* down */] = _down1;
|
||
|
}
|
||
|
|
||
|
function gameframe_tools_keyctl_reset() {
|
||
|
// gameframe_tools_keyctl_reset()
|
||
|
var _i = 0;
|
||
|
for (var __g1 = array_length(gameframe_tools_keyctl_keys); _i < __g1; _i++) {
|
||
|
gameframe_tools_keyctl_keys[_i][@1/* down */] = false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function gameframe_tools_keyctl_update() {
|
||
|
// gameframe_tools_keyctl_update()
|
||
|
if (!(window_has_focus() && (keyboard_check_direct(91) != 0 || keyboard_check_direct(92) != 0))) {
|
||
|
gameframe_tools_keyctl_reset();
|
||
|
exit;
|
||
|
}
|
||
|
var _i = 0;
|
||
|
for (var __g1 = array_length(gameframe_tools_keyctl_keys); _i < __g1; _i++) {
|
||
|
gameframe_tools_keyctl_update_key(gameframe_tools_keyctl_keys[_i]);
|
||
|
}
|
||
|
if (gameframe_tools_keyctl_up[2/* pressed */]) {
|
||
|
if (gameframe_can_resize) gameframe_maximize();
|
||
|
} else if (gameframe_tools_keyctl_down[2/* pressed */]) {
|
||
|
if (gameframe_isMaximized_hx) {
|
||
|
if (gameframe_can_resize) gameframe_restore();
|
||
|
} else gameframe_minimize();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region gameframe_draw
|
||
|
|
||
|
function gameframe_draw() {
|
||
|
/// gameframe_draw()
|
||
|
/// @returns {void}
|
||
|
if (!gameframe_is_ready) exit;
|
||
|
if (window_get_fullscreen() || gameframe_isFullscreen_hx) exit;
|
||
|
var _gw = window_get_width();
|
||
|
var _gh = window_get_height();
|
||
|
__display_set_gui_maximise_base(browser_width / _gw, browser_height / _gh, _gw % 2 / -2, _gh % 2 / -2);
|
||
|
var __borderWidth = (gameframe_isMaximized_hx ? 0 : gameframe_border_width);
|
||
|
var __titlebarHeight = gameframe_caption_get_height();
|
||
|
var __buttons_x = gameframe_button_get_combined_offset(_gw);
|
||
|
if (!gameframe_isMaximized_hx) gameframe_caption_draw_border(0, 0, _gw, _gh);
|
||
|
gameframe_caption_draw_background(__borderWidth, __borderWidth, _gw - __borderWidth * 2, __titlebarHeight, __buttons_x);
|
||
|
gameframe_caption_draw_text(__borderWidth, __borderWidth, __buttons_x - __borderWidth, __titlebarHeight);
|
||
|
gameframe_button_draw(__buttons_x, __borderWidth, __titlebarHeight);
|
||
|
__display_gui_restore();
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region gameframe_std.Std
|
||
|
|
||
|
function gameframe_std_Std_stringify(_value) {
|
||
|
// gameframe_std_Std_stringify(value:any)->string
|
||
|
if (_value == undefined) return "null";
|
||
|
if (is_string(_value)) return _value;
|
||
|
var _n, _i, _s;
|
||
|
if (is_struct(_value)) {
|
||
|
var _e = _value[$"__enum__"];
|
||
|
if (_e == undefined) return string(_value);
|
||
|
var _ects = _e.constructors;
|
||
|
if (_ects != undefined) {
|
||
|
_i = _value.__enumIndex__;
|
||
|
if (_i >= 0 && _i < array_length(_ects)) _s = _ects[_i]; else _s = "?";
|
||
|
} else {
|
||
|
_s = instanceof(_value);
|
||
|
if (string_copy(_s, 1, 3) == "mc_") _s = string_delete(_s, 1, 3);
|
||
|
_n = string_length(_e.name);
|
||
|
if (string_copy(_s, 1, _n) == _e.name) _s = string_delete(_s, 1, _n + 1);
|
||
|
}
|
||
|
_s += "(";
|
||
|
var _fields = _value.__enumParams__;
|
||
|
_n = array_length(_fields);
|
||
|
for (_i = -1; ++_i < _n; _s += gameframe_std_Std_stringify(_value[$ _fields[_i]])) {
|
||
|
if (_i > 0) _s += ", ";
|
||
|
}
|
||
|
return _s + ")";
|
||
|
}
|
||
|
if (is_real(_value)) {
|
||
|
_s = string_format(_value, 0, 16);
|
||
|
if (os_browser != browser_not_a_browser) {
|
||
|
_n = string_length(_s);
|
||
|
_i = _n;
|
||
|
while (_i > 0) {
|
||
|
switch (string_ord_at(_s, _i)) {
|
||
|
case 48:
|
||
|
_i--;
|
||
|
continue;
|
||
|
case 46: _i--; break;
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
} else {
|
||
|
_n = string_byte_length(_s);
|
||
|
_i = _n;
|
||
|
while (_i > 0) {
|
||
|
switch (string_byte_at(_s, _i)) {
|
||
|
case 48:
|
||
|
_i--;
|
||
|
continue;
|
||
|
case 46: _i--; break;
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
return string_copy(_s, 1, _i);
|
||
|
}
|
||
|
return string(_value);
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region gameframe_std.haxe.class
|
||
|
|
||
|
function gameframe_std_haxe_class(_id, _name) constructor {
|
||
|
// gameframe_std_haxe_class(id:int, name:string)
|
||
|
static superClass = undefined; /// @is {haxe_class<any>}
|
||
|
static marker = undefined; /// @is {any}
|
||
|
static index = undefined; /// @is {int}
|
||
|
static name = undefined; /// @is {string}
|
||
|
self.superClass = undefined;
|
||
|
self.marker = gameframe_std_haxe_type_markerValue;
|
||
|
self.index = _id;
|
||
|
self.name = _name;
|
||
|
static __class__ = "class";
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region gameframe_tools_mon
|
||
|
|
||
|
function gameframe_tools_mon_get_active() {
|
||
|
// gameframe_tools_mon_get_active()->tools_GfMonInfo
|
||
|
var __list = gameframe_tools_mon_get_active_list;
|
||
|
if (__list == undefined) {
|
||
|
__list = ds_list_create();
|
||
|
gameframe_tools_mon_get_active_list = __list;
|
||
|
}
|
||
|
var __count = gameframe_get_monitors(__list);
|
||
|
var __cx1 = window_get_x() + (window_get_width() div 2);
|
||
|
var __cy1 = window_get_y() + (window_get_height() div 2);
|
||
|
var _i = 0;
|
||
|
for (var __g1 = __count; _i < __g1; _i++) {
|
||
|
var __item = __list[|_i];
|
||
|
var __mntr = __item[0/* screen */];
|
||
|
if (__cx1 >= __mntr[0/* x */] && __cy1 >= __mntr[1/* y */] && __cx1 < __mntr[0/* x */] + __mntr[2/* width */] && __cy1 < __mntr[1/* y */] + __mntr[3/* height */]) return __item;
|
||
|
}
|
||
|
var __item = __list[|0];
|
||
|
if (__item == undefined) {
|
||
|
__item = gameframe_tools_mon_dummy;
|
||
|
if (__item == undefined) {
|
||
|
__item = [/* screen: */gameframe_tools_rect__new(0, 0, display_get_width(), display_get_height()), /* workspace: */gameframe_tools_rect__new(0, 0, display_get_width(), display_get_height() - 40), /* flags: */0];
|
||
|
gameframe_tools_mon_dummy = __item;
|
||
|
}
|
||
|
__list[|0] = __item;
|
||
|
}
|
||
|
return __item;
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
// gameframe:
|
||
|
globalvar gameframe_is_ready; /// @is {bool}
|
||
|
gameframe_is_ready = false;
|
||
|
globalvar gameframe_double_click_time; /// @is {number}
|
||
|
globalvar gameframe_last_title_click_at; /// @is {int}
|
||
|
gameframe_last_title_click_at = -5000;
|
||
|
// gameframe_button:
|
||
|
globalvar gameframe_button_array; /// @is {array<game_frame_button>}
|
||
|
gameframe_button_array = [];
|
||
|
globalvar gameframe_button_fade_time; /// @is {number}
|
||
|
gameframe_button_fade_time = 0.2;
|
||
|
globalvar gameframe_button_wait_for_movement; /// @is {bool}
|
||
|
gameframe_button_wait_for_movement = false;
|
||
|
globalvar gameframe_button_wait_for_movement_x; /// @is {number}
|
||
|
gameframe_button_wait_for_movement_x = 0.;
|
||
|
globalvar gameframe_button_wait_for_movement_y; /// @is {number}
|
||
|
gameframe_button_wait_for_movement_y = 0.;
|
||
|
// gameframe:
|
||
|
globalvar gameframe_debug; /// @is {bool}
|
||
|
gameframe_debug = false;
|
||
|
globalvar gameframe_blend; /// @is {int}
|
||
|
gameframe_blend = 16777215;
|
||
|
globalvar gameframe_alpha; /// @is {number}
|
||
|
gameframe_alpha = 1.0;
|
||
|
globalvar gameframe_can_input; /// @is {bool}
|
||
|
gameframe_can_input = true;
|
||
|
globalvar gameframe_can_resize; /// @is {bool}
|
||
|
gameframe_can_resize = true;
|
||
|
globalvar gameframe_resize_padding; /// @is {int}
|
||
|
gameframe_resize_padding = 6;
|
||
|
globalvar gameframe_border_width; /// @is {int}
|
||
|
gameframe_border_width = 2;
|
||
|
globalvar gameframe_spr_border; /// @is {sprite}
|
||
|
gameframe_spr_border = asset_get_index("spr_gameframe_border");
|
||
|
globalvar gameframe_spr_caption; /// @is {sprite}
|
||
|
gameframe_spr_caption = asset_get_index("spr_gameframe_caption");
|
||
|
globalvar gameframe_spr_buttons; /// @is {sprite}
|
||
|
gameframe_spr_buttons = asset_get_index("spr_gameframe_buttons");
|
||
|
globalvar gameframe_spr_pixel; /// @is {sprite}
|
||
|
gameframe_spr_pixel = asset_get_index("spr_gameframe_pixel");
|
||
|
globalvar gameframe_default_cursor; /// @is {window_cursor}
|
||
|
gameframe_default_cursor = cr_arrow;
|
||
|
globalvar gameframe_set_cursor; /// @is {bool}
|
||
|
gameframe_set_cursor = true;
|
||
|
globalvar gameframe_current_cursor; /// @is {window_cursor}
|
||
|
gameframe_current_cursor = cr_arrow;
|
||
|
globalvar gameframe_dpi_scale; /// @is {number}
|
||
|
gameframe_dpi_scale = 1.;
|
||
|
// gameframe:
|
||
|
globalvar gameframe_effective_scale; /// @is {number}
|
||
|
gameframe_effective_scale = 1.;
|
||
|
globalvar gameframe_has_native_extension; /// @is {bool}
|
||
|
gameframe_has_native_extension = false;
|
||
|
globalvar gameframe_mouse_over_frame; /// @is {bool}
|
||
|
gameframe_mouse_over_frame = false;
|
||
|
globalvar gameframe_isMaximized_hx; /// @is {bool}
|
||
|
gameframe_isMaximized_hx = false;
|
||
|
globalvar gameframe_isFullscreen_hx; /// @is {bool}
|
||
|
gameframe_isFullscreen_hx = false;
|
||
|
globalvar gameframe_restoreRect_hx; /// @is {gameframe_tools_rect}
|
||
|
gameframe_restoreRect_hx = gameframe_tools_rect__new();
|
||
|
// gameframe_caption:
|
||
|
globalvar gameframe_caption_text; /// @is {string}
|
||
|
gameframe_caption_text = window_get_caption();
|
||
|
globalvar gameframe_caption_alpha; /// @is {number}
|
||
|
gameframe_caption_alpha = 1;
|
||
|
globalvar gameframe_caption_font; /// @is {font}
|
||
|
gameframe_caption_font = -1;
|
||
|
globalvar gameframe_caption_text_align; /// @is {gml_gpu_TextAlign}
|
||
|
gameframe_caption_text_align = 0;
|
||
|
globalvar gameframe_caption_icon; /// @is {sprite}
|
||
|
gameframe_caption_icon = -1;
|
||
|
globalvar gameframe_caption_margin; /// @is {int}
|
||
|
gameframe_caption_margin = 6;
|
||
|
globalvar gameframe_caption_icon_margin; /// @is {int}
|
||
|
gameframe_caption_icon_margin = 4;
|
||
|
globalvar gameframe_caption_height_normal; /// @is {number}
|
||
|
gameframe_caption_height_normal = -1;
|
||
|
globalvar gameframe_caption_height_maximized; /// @is {number}
|
||
|
gameframe_caption_height_maximized = -0.66667;
|
||
|
globalvar gameframe_caption_draw_border; /// @is {function<x:int; y:int; width:int; height:int; void>}
|
||
|
gameframe_caption_draw_border = gameframe_caption_draw_border_default;
|
||
|
globalvar gameframe_caption_draw_background; /// @is {function<x:int; y:int; width:int; height:int; buttonsX:int; void>}
|
||
|
gameframe_caption_draw_background = gameframe_caption_draw_caption_rect_default;
|
||
|
globalvar gameframe_caption_draw_text; /// @is {function<x:number; y:number; width:int; height:int; void>}
|
||
|
gameframe_caption_draw_text = gameframe_caption_draw_caption_text_default;
|
||
|
// gameframe_cover:
|
||
|
globalvar gameframe_cover_check_for_success; /// @is {bool}
|
||
|
gameframe_cover_check_for_success = false;
|
||
|
globalvar gameframe_cover_ignore_rect; /// @is {gameframe_tools_rect}
|
||
|
gameframe_cover_ignore_rect = gameframe_tools_rect__new();
|
||
|
globalvar gameframe_cover_can_ignore; /// @is {bool}
|
||
|
gameframe_cover_can_ignore = false;
|
||
|
globalvar gameframe_cover_curr_rect; /// @is {gameframe_tools_rect}
|
||
|
gameframe_cover_curr_rect = gameframe_tools_rect__new();
|
||
|
// gameframe_delayed:
|
||
|
globalvar gameframe_delayed_queue; /// @is {ds_queue<gameframe_delayed_item>}
|
||
|
gameframe_delayed_queue = ds_queue_create();
|
||
|
globalvar gameframe_delayed_pool; /// @is {ds_stack<gameframe_delayed_item>}
|
||
|
gameframe_delayed_pool = ds_stack_create();
|
||
|
globalvar gameframe_delayed_frame_index; /// @is {int}
|
||
|
gameframe_delayed_frame_index = 0;
|
||
|
// gameframe_drag:
|
||
|
globalvar gameframe_drag_flags; /// @is {int}
|
||
|
gameframe_drag_flags = 0;
|
||
|
globalvar gameframe_drag_mx; /// @is {int}
|
||
|
gameframe_drag_mx = 0;
|
||
|
globalvar gameframe_drag_my; /// @is {int}
|
||
|
gameframe_drag_my = 0;
|
||
|
globalvar gameframe_drag_left; /// @is {int}
|
||
|
gameframe_drag_left = 0;
|
||
|
globalvar gameframe_drag_top; /// @is {int}
|
||
|
gameframe_drag_top = 0;
|
||
|
globalvar gameframe_drag_right; /// @is {int}
|
||
|
gameframe_drag_right = 0;
|
||
|
globalvar gameframe_drag_bottom; /// @is {int}
|
||
|
gameframe_drag_bottom = 0;
|
||
|
// gameframe.tools.keyctl:
|
||
|
globalvar gameframe_tools_keyctl_up; /// @is {GfKeyboardKey}
|
||
|
gameframe_tools_keyctl_up = gameframe_tools_keyctl_create_key(38);
|
||
|
globalvar gameframe_tools_keyctl_down; /// @is {GfKeyboardKey}
|
||
|
gameframe_tools_keyctl_down = gameframe_tools_keyctl_create_key(40);
|
||
|
globalvar gameframe_tools_keyctl_keys; /// @is {array<GfKeyboardKey>}
|
||
|
gameframe_tools_keyctl_keys = [gameframe_tools_keyctl_up, gameframe_tools_keyctl_down];
|
||
|
// gameframe_tools_mon:
|
||
|
globalvar gameframe_tools_mon_get_active_list; /// @is {ds_list<tools_GfMonInfo>}
|
||
|
gameframe_tools_mon_get_active_list = undefined;
|
||
|
globalvar gameframe_tools_mon_dummy; /// @is {tools_GfMonInfo}
|
||
|
gameframe_tools_mon_dummy = undefined;
|
||
|
|
||
|
|
||
|
/// @typedef {any} tools_GfRectImpl
|
||
|
/// @typedef {any} gameframe_tools_rect
|
||
|
/// @typedef {any} tools_GfMonInfo
|
||
|
/// @typedef {any} GfKeyboardKey
|