<undefined> 0 -1 -5000002 -1 <undefined> <undefined> 1 603 7 0 0 -1 2 self 0 0 1 /// Initialize. scale = oControl.touch_scale; device_mouse_dbclick_enable(false); device_screen_size = sqrt(power(display_get_width() / display_get_dpi_x(), 2) + power(display_get_height() / display_get_dpi_y(), 2)); draw = 1; alpha = 0; st_radius = display_get_height() / oControl.touch_scale; // default 4, smaller is bigger st_offset = st_radius + 25; gui_x[0] = st_offset; gui_y[0] = display_get_height() - st_offset; gui_x[1] = display_get_width() - st_offset; gui_y[1] = display_get_height() - st_offset; stick_x[0] = gui_x[0]; stick_y[0] = gui_y[0]; stick_x[1] = gui_x[1]; stick_y[1] = gui_y[1]; st_pressed[0] = -1; st_pressed[1] = -1; jump_pressed[0] = -1; jump_pressed[1] = -1; fire_pressed[0] = -1; fire_pressed[1] = -1; aimupleft_pressed[0] = -1; aimupleft_pressed[1] = -1; aimdownleft_pressed[0] = -1; aimdownleft_pressed[1] = -1; aimupright_pressed[0] = -1; aimupright_pressed[1] = -1; aimdownright_pressed[0] = -1; aimdownright_pressed[1] = -1; missile_pressed[0] = -1; missile_pressed[1] = -1; morph_pressed[0] = -1; morph_pressed[1] = -1; pause_pressed[0] = -1; pause_pressed[1] = -1; up_pressed[0] = -1; up_pressed[1] = -1; down_pressed[0] = -1; down_pressed[1] = -1; right_pressed[0] = -1; right_pressed[1] = -1; left_pressed[0] = -1; left_pressed[1] = -1; vdir = 0; vdist = 0; rdist = 0; mx = 0; my = 0; joyx = 0; joyy = 0; 1 603 7 0 0 -1 2 self 0 0 1 /// Button calulations. gui_x[0] = st_offset; gui_y[0] = display_get_gui_height() - st_offset; gui_x[1] = display_get_gui_width() - st_offset; gui_y[1] = display_get_gui_height() - st_offset; btn_width = display_get_height() / oControl.touch_scale; // default 4, smaller is bigger btn_height = display_get_height() / oControl.touch_scale; btn_y = display_get_gui_height() - btn_height - 25; btn_x = display_get_gui_width() - 25; btn_jump_x = btn_x - btn_width * 2; btn_fire_x = btn_x - btn_width; btn_missile_x = btn_jump_x; btn_missile_y = btn_y - btn_height; btn_morph_x = btn_fire_x; btn_morph_y = btn_y - btn_height; btn_pause_x = mean(gui_x[0] + st_radius, btn_jump_x); btn_pause_y = gui_y[1] + st_radius; buttonScale = ((150*btn_width)/300)/150; // ((150*btn_width)/300)/150 pauseScale = ((50*btn_height/3)/85)/50; btn_jump[0] = btn_jump_x; btn_jump[1] = btn_y+10; btn_jump[2] = btn_jump_x + btn_width-10; btn_jump[3] = btn_y + btn_height; btn_fire[0] = btn_fire_x+10; btn_fire[1] = btn_y + 10; btn_fire[2] = btn_fire_x + btn_width; btn_fire[3] = btn_y + btn_height; btn_missile[0] = btn_missile_x; btn_missile[1] = btn_missile_y; btn_missile[2] = btn_missile_x + btn_width - 10; btn_missile[3] = btn_missile_y + btn_height - 10; btn_morph[0] = btn_morph_x + 10; btn_morph[1] = btn_morph_y; btn_morph[2] = btn_morph_x + btn_width; btn_morph[3] = btn_morph_y + btn_height - 10; btn_pause[0] = btn_pause_x - btn_width/4; btn_pause[1] = btn_pause_y - btn_height/3; btn_pause[2] = btn_pause_x + btn_width/4; btn_pause[3] = btn_pause_y; btn_pausearrow_y = btn_pause_y - btn_height/3/2; // Up Left btn_aimul[0] = gui_x[0] - st_radius; btn_aimul[1] = gui_y[0] - st_radius; btn_aimul[2] = (gui_x[0] - st_radius) + st_radius/2; btn_aimul[3] = (gui_y[0] - st_radius); btn_aimul[4] = (gui_x[0] - st_radius); btn_aimul[5] = (gui_y[0] - st_radius) + st_radius/2; // Down Left btn_aimdl[0] = gui_x[0] - st_radius; btn_aimdl[1] = gui_y[0] + st_radius; btn_aimdl[2] = (gui_x[0] - st_radius) + st_radius/2; btn_aimdl[3] = (gui_y[0] + st_radius); btn_aimdl[4] = (gui_x[0] - st_radius); btn_aimdl[5] = (gui_y[0] + st_radius) - st_radius/2; // Up Right btn_aimur[0] = gui_x[0] + st_radius; btn_aimur[1] = gui_y[0] - st_radius; btn_aimur[2] = (gui_x[0] + st_radius) - st_radius/2; btn_aimur[3] = (gui_y[0] - st_radius); btn_aimur[4] = (gui_x[0] + st_radius); btn_aimur[5] = (gui_y[0] - st_radius) + st_radius/2; // Down Right btn_aimdr[0] = gui_x[0] + st_radius; btn_aimdr[1] = gui_y[0] + st_radius; btn_aimdr[2] = (gui_x[0] + st_radius) - st_radius/2; btn_aimdr[3] = (gui_y[0] + st_radius); btn_aimdr[4] = (gui_x[0] + st_radius); btn_aimdr[5] = (gui_y[0] + st_radius) - st_radius/2; // Up Button btn_aimu[0] = gui_x[0]; btn_aimu[1] = gui_y[0] - st_radius/4; btn_aimu[2] = gui_x[0] - st_radius; btn_aimu[3] = gui_y[0] - st_radius; btn_aimu[4] = gui_x[0] + st_radius; btn_aimu[5] = gui_y[0] - st_radius; // Down Button btn_aimd[0] = gui_x[0]; btn_aimd[1] = gui_y[0] + st_radius/4; btn_aimd[2] = gui_x[0] - st_radius; btn_aimd[3] = gui_y[0] + st_radius; btn_aimd[4] = gui_x[0] + st_radius; btn_aimd[5] = gui_y[0] + st_radius; // Right Button btn_aimr[0] = gui_x[0] + st_radius/4; btn_aimr[1] = gui_y[0]; btn_aimr[2] = gui_x[0] + st_radius; btn_aimr[3] = gui_y[0] + st_radius; btn_aimr[4] = gui_x[0] + st_radius; btn_aimr[5] = gui_y[0] - st_radius; // Left Button btn_aiml[0] = gui_x[0] - st_radius/4; btn_aiml[1] = gui_y[0]; btn_aiml[2] = gui_x[0] - st_radius; btn_aiml[3] = gui_y[0] + st_radius; btn_aiml[4] = gui_x[0] - st_radius; btn_aiml[5] = gui_y[0] - st_radius; // Up Arrow btn_uparrow[0] = gui_x[0]; btn_uparrow[1] = gui_y[0] - st_radius/1.25; btn_uparrow[2] = gui_x[0] + st_radius/4; btn_uparrow[3] = gui_y[0] - st_radius/2; btn_uparrow[4] = gui_x[0] - st_radius/4; btn_uparrow[5] = gui_y[0] - st_radius/2; // Down Arrow btn_downarrow[0] = gui_x[0]; btn_downarrow[1] = gui_y[0] + st_radius/1.25; btn_downarrow[2] = gui_x[0] + st_radius/4; btn_downarrow[3] = gui_y[0] + st_radius/2; btn_downarrow[4] = gui_x[0] - st_radius/4; btn_downarrow[5] = gui_y[0] + st_radius/2; // Left Arrow btn_leftarrow[0] = gui_x[0] - st_radius/1.25; btn_leftarrow[1] = gui_y[0]; btn_leftarrow[2] = gui_x[0] - st_radius/2; btn_leftarrow[3] = gui_y[0] - st_radius/4; btn_leftarrow[4] = gui_x[0] - st_radius/2; btn_leftarrow[5] = gui_y[0] + st_radius/4; // Right Arrow btn_rightarrow[0] = gui_x[0] + st_radius/1.25; btn_rightarrow[1] = gui_y[0]; btn_rightarrow[2] = gui_x[0] + st_radius/2; btn_rightarrow[3] = gui_y[0] - st_radius/4; btn_rightarrow[4] = gui_x[0] + st_radius/2; btn_rightarrow[5] = gui_y[0] + st_radius/4; texture_set_interpolation(true); var surf = -1, spr; if (!surface_exists(surf)) surf = surface_create(300*buttonScale, 300*buttonScale); surface_set_target(surf); draw_clear_alpha(c_black, 0); draw_sprite_ext(sTouchButtonX, 0, surface_get_width(surf)/2, surface_get_height(surf)/2, buttonScale, buttonScale, 0, c_white, 1); surface_reset_target(); spr = sprite_create_from_surface(surf, 0, 0, surface_get_width(surf), surface_get_height(surf), 0, 0, surface_get_width(surf)/2, surface_get_height(surf)/2); sprite_assign(sTouchButtonX, spr); sprite_delete(spr); surface_set_target(surf); draw_clear_alpha(c_black, 0); draw_sprite_ext(sTouchButtonS, 0, surface_get_width(surf)/2, surface_get_height(surf)/2, buttonScale, buttonScale, 0, c_white, 1); surface_reset_target(); spr = sprite_create_from_surface(surf, 0, 0, surface_get_width(surf), surface_get_height(surf), 0, 0, surface_get_width(surf)/2, surface_get_height(surf)/2); sprite_assign(sTouchButtonS, spr); sprite_delete(spr); surface_set_target(surf); draw_clear_alpha(c_black, 0); draw_sprite_ext(sTouchButtonC, 0, surface_get_width(surf)/2, surface_get_height(surf)/2, buttonScale, buttonScale, 0, c_white, 1); surface_reset_target(); spr = sprite_create_from_surface(surf, 0, 0, surface_get_width(surf), surface_get_height(surf), 0, 0, surface_get_width(surf)/2, surface_get_height(surf)/2); sprite_assign(sTouchButtonC, spr); sprite_delete(spr); surface_set_target(surf); draw_clear_alpha(c_black, 0); draw_sprite_ext(sTouchButtonT, 0, surface_get_width(surf)/2, surface_get_height(surf)/2, buttonScale, buttonScale, 0, c_white, 1); surface_reset_target(); spr = sprite_create_from_surface(surf, 0, 0, surface_get_width(surf), surface_get_height(surf), 0, 0, surface_get_width(surf)/2, surface_get_height(surf)/2); sprite_assign(sTouchButtonT, spr); sprite_delete(spr); surface_free(surf); if (!surface_exists(surf)) surf = surface_create(85*pauseScale, 85*pauseScale); surface_set_target(surf); draw_clear_alpha(c_black, 0); draw_sprite_ext(sTouchButtonPause, 0, surface_get_width(surf)/2, surface_get_height(surf)/2, pauseScale, pauseScale, 0, c_white, 1); surface_reset_target(); spr = sprite_create_from_surface(surf, 0, 0, surface_get_width(surf), surface_get_height(surf), 0, 0, surface_get_width(surf)/2, surface_get_height(surf)/2); sprite_assign(sTouchButtonPause, spr); sprite_delete(spr); surface_free(surf); texture_set_interpolation(false); 1 603 7 0 0 -1 2 self 0 0 1 /// Reset options. /*global.opmslstyle = mis; global.opaimstyle = aim; global.opspdstyle = spd; io_clear(); 1 603 7 0 0 -1 2 self 0 0 1 /// Fade on-screen controls. if (alpha > 0) alpha -= 0.01; alarm[0] = 1; 1 603 7 0 0 -1 2 self 0 0 1 /// Touch input. if(global.joydetected == 1 && global.ingame) exit; // Touch UI visibility for (i = 0; i < 5; i += 1) { if (device_mouse_check_button(i, 1)) { alpha = 0.5; alarm[0] = 390; } } var tx, ty; joyx = 0; joyy = 0; stick_x[0] = gui_x[0]; stick_y[0] = gui_y[0]; if (os_is_paused()) mouse_clear(mb_any); // Joystick if (st_pressed[0] == -1) { for (i = 0; i < 5; i += 1) { if (device_mouse_check_button(i, 1)) { tx = scr_mouse_gui_x(device_mouse_raw_x(i)); ty = scr_mouse_gui_y(device_mouse_raw_y(i)); if (point_distance(tx, ty, gui_x[0], gui_y[0]) < st_radius) { if (st_pressed[1] != i) { st_pressed[0] = i; break; } } } } } if (device_mouse_check_button(st_pressed[0], 1)) { mx = scr_mouse_gui_x(device_mouse_raw_x(st_pressed[0])); my = scr_mouse_gui_y(device_mouse_raw_y(st_pressed[0])); vdist = min(st_radius, point_distance(mx, my, gui_x[0], gui_y[0])); rdist = vdist / st_radius; vdir = point_direction(gui_x[0], gui_y[0], mx, my); stick_x[0] = gui_x[0] + lengthdir_x(vdist, vdir); stick_y[0] = gui_y[0] + lengthdir_y(vdist, vdir); joyx = lengthdir_x(rdist, vdir); joyy = lengthdir_y(rdist, vdir); } else st_pressed[0] = -1; // Jump if (jump_pressed[0] == -1) { for (i = 0; i < 5; i += 1) { if (device_mouse_check_button(i, 1)) { tx = scr_mouse_gui_x(device_mouse_raw_x(i)); ty = scr_mouse_gui_y(device_mouse_raw_y(i)); if (point_in_rectangle(tx, ty, btn_jump[0], btn_jump[1], btn_jump[2], btn_jump[3])) { if (jump_pressed[1] != i) { jump_pressed[0] = i; break; } } } } } else { if (device_mouse_check_button(jump_pressed[0], 1)) { tx = scr_mouse_gui_x(device_mouse_raw_x(jump_pressed[0])); ty = scr_mouse_gui_y(device_mouse_raw_y(jump_pressed[0])); if (!point_in_rectangle(tx, ty, btn_jump[0], btn_jump[1], btn_jump[2], btn_jump[3])) { jump_pressed[0] = -1; } } else jump_pressed[0] = -1; } // Fire if (fire_pressed[0] == -1) { for (i = 0; i < 5; i += 1) { if (device_mouse_check_button(i, 1)) { tx = scr_mouse_gui_x(device_mouse_raw_x(i)); ty = scr_mouse_gui_y(device_mouse_raw_y(i)); if (point_in_rectangle(tx, ty, btn_fire[0], btn_fire[1], btn_fire[2], btn_fire[3])) { if (fire_pressed[1] != i) { fire_pressed[0] = i; break; } } } } } else { if (device_mouse_check_button(fire_pressed[0], 1)) { tx = scr_mouse_gui_x(device_mouse_raw_x(fire_pressed[0])); ty = scr_mouse_gui_y(device_mouse_raw_y(fire_pressed[0])); if (!point_in_rectangle(tx, ty, btn_fire[0], btn_fire[1], btn_fire[2], btn_fire[3])) { fire_pressed[0] = -1; } } else fire_pressed[0] = -1; } // Missile if (missile_pressed[0] == -1) { for (i = 0; i < 5; i += 1) { if (device_mouse_check_button(i, 1)) { tx = scr_mouse_gui_x(device_mouse_raw_x(i)); ty = scr_mouse_gui_y(device_mouse_raw_y(i)); if (point_in_rectangle(tx, ty, btn_missile[0], btn_missile[1], btn_missile[2], btn_missile[3])) { if (missile_pressed[1] != i) { missile_pressed[0] = i; break; } } } } } else { if (device_mouse_check_button(missile_pressed[0], 1)) { tx = scr_mouse_gui_x(device_mouse_raw_x(missile_pressed[0])); ty = scr_mouse_gui_y(device_mouse_raw_y(missile_pressed[0])); if (!point_in_rectangle(tx, ty, btn_missile[0], btn_missile[1], btn_missile[2], btn_missile[3])) { missile_pressed[0] = -1; } } else missile_pressed[0] = -1; } // Morph if (morph_pressed[0] == -1) { for (i = 0; i < 5; i += 1) { if (device_mouse_check_button(i, 1)) { tx = scr_mouse_gui_x(device_mouse_raw_x(i)); ty = scr_mouse_gui_y(device_mouse_raw_y(i)); if (point_in_rectangle(tx, ty, btn_morph[0], btn_morph[1], btn_morph[2], btn_morph[3])) { if (morph_pressed[1] != i) { morph_pressed[0] = i; break; } } } } } else { if (device_mouse_check_button(morph_pressed[0], 1)) { tx = scr_mouse_gui_x(device_mouse_raw_x(morph_pressed[0])); ty = scr_mouse_gui_y(device_mouse_raw_y(morph_pressed[0])); if (!point_in_rectangle(tx, ty, btn_morph[0], btn_morph[1], btn_morph[2], btn_morph[3])) { morph_pressed[0] = -1; } } else morph_pressed[0] = -1; } // Pause if (pause_pressed[0] == -1) { for (i = 0; i < 5; i += 1) { if (device_mouse_check_button(i, 1)) { tx = scr_mouse_gui_x(device_mouse_raw_x(i)); ty = scr_mouse_gui_y(device_mouse_raw_y(i)); if (point_in_rectangle(tx, ty, btn_pause[0], btn_pause[1], btn_pause[2], btn_pause[3])) { if (pause_pressed[1] != i) { pause_pressed[0] = i; break; } } } } } else { if (device_mouse_check_button(pause_pressed[0], 1)) { tx = scr_mouse_gui_x(device_mouse_raw_x(pause_pressed[0])); ty = scr_mouse_gui_y(device_mouse_raw_y(pause_pressed[0])); if (!point_in_rectangle(tx, ty, btn_pause[0], btn_pause[1], btn_pause[2], btn_pause[3])) { pause_pressed[0] = -1; } } else pause_pressed[0] = -1; } // Aim up left if (aimupleft_pressed[0] == -1 && aimdownleft_pressed[0] == -1 && aimupright_pressed[0] == -1 && aimdownright_pressed[0] == -1 && st_pressed[0] == -1) { for (i = 0; i < 5; i += 1) { if (device_mouse_check_button(i, 1)) { tx = scr_mouse_gui_x(device_mouse_raw_x(i)); ty = scr_mouse_gui_y(device_mouse_raw_y(i)); if (point_in_triangle(tx, ty, btn_aimul[0], btn_aimul[1], btn_aimul[2], btn_aimul[3], btn_aimul[4], btn_aimul[5])) { if (aimupleft_pressed[1] != i) { aimupleft_pressed[0] = i; break; } } } } } if (!device_mouse_check_button(aimupleft_pressed[0], 1) || st_pressed[0] != -1) aimupleft_pressed[0] = -1; // Aim down left if (aimupleft_pressed[0] == -1 && aimdownleft_pressed[0] == -1 && aimupright_pressed[0] == -1 && aimdownright_pressed[0] == -1 && st_pressed[0] == -1) { for (i = 0; i < 5; i += 1) { if (device_mouse_check_button(i, 1)) { tx = scr_mouse_gui_x(device_mouse_raw_x(i)); ty = scr_mouse_gui_y(device_mouse_raw_y(i)); if (point_in_triangle(tx, ty, btn_aimdl[0], btn_aimdl[1], btn_aimdl[2], btn_aimdl[3], btn_aimdl[4], btn_aimdl[5])) { if (aimdownleft_pressed[1] != i) { aimdownleft_pressed[0] = i; break; } } } } } if (!device_mouse_check_button(aimdownleft_pressed[0], 1) || st_pressed[0] != -1) aimdownleft_pressed[0] = -1; // Aim up right if (aimupleft_pressed[0] == -1 && aimdownleft_pressed[0] == -1 && aimupright_pressed[0] == -1 && aimdownright_pressed[0] == -1 && st_pressed[0] == -1) { for (i = 0; i < 5; i += 1) { if (device_mouse_check_button(i, 1)) { tx = scr_mouse_gui_x(device_mouse_raw_x(i)); ty = scr_mouse_gui_y(device_mouse_raw_y(i)); if (point_in_triangle(tx, ty, btn_aimur[0], btn_aimur[1], btn_aimur[2], btn_aimur[3], btn_aimur[4], btn_aimur[5])) { if (aimupright_pressed[1] != i) { aimupright_pressed[0] = i; break; } } } } } if (!device_mouse_check_button(aimupright_pressed[0], 1) || st_pressed[0] != -1) aimupright_pressed[0] = -1; // Aim down right if (aimupleft_pressed[0] == -1 && aimdownleft_pressed[0] == -1 && aimupright_pressed[0] == -1 && aimdownright_pressed[0] == -1 && st_pressed[0] == -1) { for (i = 0; i < 5; i += 1) { if (device_mouse_check_button(i, 1)) { tx = scr_mouse_gui_x(device_mouse_raw_x(i)); ty = scr_mouse_gui_y(device_mouse_raw_y(i)); if (point_in_triangle(tx, ty, btn_aimdr[0], btn_aimdr[1], btn_aimdr[2], btn_aimdr[3], btn_aimdr[4], btn_aimdr[5])) { if (aimdownright_pressed[1] != i) { aimdownright_pressed[0] = i; break; } } } } } if (!device_mouse_check_button(aimdownright_pressed[0], 1) || st_pressed[0] != -1) aimdownright_pressed[0] = -1; // Aim up if (up_pressed[0] == -1) { for (i = 0; i < 5; i += 1) { if (device_mouse_check_button(i, 1)) { tx = scr_mouse_gui_x(device_mouse_raw_x(i)); ty = scr_mouse_gui_y(device_mouse_raw_y(i)); if (point_in_triangle(tx, ty, btn_aimu[0], btn_aimu[1], btn_aimu[2], btn_aimu[3], btn_aimu[4], btn_aimu[5])) { if (up_pressed[1] != i) { up_pressed[0] = i; break; } } } } } else { if (device_mouse_check_button(up_pressed[0], 1)) { tx = scr_mouse_gui_x(device_mouse_raw_x(up_pressed[0])); ty = scr_mouse_gui_y(device_mouse_raw_y(up_pressed[0])); if (!point_in_triangle(tx, ty, btn_aimu[0], btn_aimu[1], btn_aimu[2], btn_aimu[3], btn_aimu[4], btn_aimu[5])) { up_pressed[0] = -1; } } else up_pressed[0] = -1; } // Aim down if (down_pressed[0] == -1) { for (i = 0; i < 5; i += 1) { if (device_mouse_check_button(i, 1)) { tx = scr_mouse_gui_x(device_mouse_raw_x(i)); ty = scr_mouse_gui_y(device_mouse_raw_y(i)); if (point_in_triangle(tx, ty, btn_aimd[0], btn_aimd[1], btn_aimd[2], btn_aimd[3], btn_aimd[4], btn_aimd[5])) { if (down_pressed[1] != i) { down_pressed[0] = i; break; } } } } } else { if (device_mouse_check_button(down_pressed[0], 1)) { tx = scr_mouse_gui_x(device_mouse_raw_x(down_pressed[0])); ty = scr_mouse_gui_y(device_mouse_raw_y(down_pressed[0])); if (!point_in_triangle(tx, ty, btn_aimd[0], btn_aimd[1], btn_aimd[2], btn_aimd[3], btn_aimd[4], btn_aimd[5])) { down_pressed[0] = -1; } } else down_pressed[0] = -1; } if(!global.ingame) { // Menu right if (right_pressed[0] == -1) { for (i = 0; i < 5; i += 1) { if (device_mouse_check_button(i, 1)) { tx = scr_mouse_gui_x(device_mouse_raw_x(i)); ty = scr_mouse_gui_y(device_mouse_raw_y(i)); if (point_in_triangle(tx, ty, btn_aimr[0], btn_aimr[1], btn_aimr[2], btn_aimr[3], btn_aimr[4], btn_aimr[5])) { if (right_pressed[1] != i) { right_pressed[0] = i; break; } } } } } else { if (device_mouse_check_button(right_pressed[0], 1)) { tx = scr_mouse_gui_x(device_mouse_raw_x(right_pressed[0])); ty = scr_mouse_gui_y(device_mouse_raw_y(right_pressed[0])); if (!point_in_triangle(tx, ty, btn_aimr[0], btn_aimr[1], btn_aimr[2], btn_aimr[3], btn_aimr[4], btn_aimr[5])) { right_pressed[0] = -1; } } else right_pressed[0] = -1; } // Menu left if (left_pressed[0] == -1) { for (i = 0; i < 5; i += 1) { if (device_mouse_check_button(i, 1)) { tx = scr_mouse_gui_x(device_mouse_raw_x(i)); ty = scr_mouse_gui_y(device_mouse_raw_y(i)); if (point_in_triangle(tx, ty, btn_aiml[0], btn_aiml[1], btn_aiml[2], btn_aiml[3], btn_aiml[4], btn_aiml[5])) { if (left_pressed[1] != i) { left_pressed[0] = i; break; } } } } } else { if (device_mouse_check_button(left_pressed[0], 1)) { tx = scr_mouse_gui_x(device_mouse_raw_x(left_pressed[0])); ty = scr_mouse_gui_y(device_mouse_raw_y(left_pressed[0])); if (!point_in_triangle(tx, ty, btn_aiml[0], btn_aiml[1], btn_aiml[2], btn_aiml[3], btn_aiml[4], btn_aiml[5])) { left_pressed[0] = -1; } } else left_pressed[0] = -1; } } else { right_pressed[0] = -1; right_pressed[1] = -1; left_pressed[0] = -1; left_pressed[1] = -1; } if (global.gamestarted == 0 || room == gameintroroom || room == rm_credits) { // Touch to Start if (pause_pressed[0] == -1) { for (i = 0; i < 5; i += 1) { if (device_mouse_check_button(i, 1)) { tx = scr_mouse_gui_x(device_mouse_raw_x(i)); ty = scr_mouse_gui_y(device_mouse_raw_y(i)); if (point_in_rectangle(tx, ty, 0, 0, display_get_width(), display_get_height())) { if (pause_pressed[1] != i) { pause_pressed[0] = i; break; } } } } } else { if (device_mouse_check_button(pause_pressed[0], 1)) { tx = scr_mouse_gui_x(device_mouse_raw_x(pause_pressed[0])); ty = scr_mouse_gui_y(device_mouse_raw_y(pause_pressed[0])); if (!point_in_rectangle(tx, ty, 0, 0, display_get_width(), display_get_width())) { pause_pressed[0] = -1; } } else pause_pressed[0] = -1; } } 1 603 7 0 0 -1 2 self 0 0 1 /// Prep /* if (surface_exists(surf)) { surface_free(surf) } 1 603 7 0 0 -1 2 self 0 0 1 /// Initialize. scale = oControl.touch_scale; device_mouse_dbclick_enable(false); device_screen_size = sqrt(power(display_get_width() / display_get_dpi_x(), 2) + power(display_get_height() / display_get_dpi_y(), 2)); draw = 1; //alpha = 0; st_radius = display_get_height() / oControl.touch_scale; // default 4, smaller is bigger st_offset = st_radius + 25; gui_x[0] = st_offset; gui_y[0] = display_get_height() - st_offset; gui_x[1] = display_get_width() - st_offset; gui_y[1] = display_get_height() - st_offset; stick_x[0] = gui_x[0]; stick_y[0] = gui_y[0]; stick_x[1] = gui_x[1]; stick_y[1] = gui_y[1]; /* st_pressed[0] = -1; st_pressed[1] = -1; jump_pressed[0] = -1; jump_pressed[1] = -1; fire_pressed[0] = -1; fire_pressed[1] = -1; aimupleft_pressed[0] = -1; aimupleft_pressed[1] = -1; aimdownleft_pressed[0] = -1; aimdownleft_pressed[1] = -1; aimupright_pressed[0] = -1; aimupright_pressed[1] = -1; aimdownright_pressed[0] = -1; aimdownright_pressed[1] = -1; missile_pressed[0] = -1; missile_pressed[1] = -1; morph_pressed[0] = -1; morph_pressed[1] = -1; pause_pressed[0] = -1; pause_pressed[1] = -1; up_pressed[0] = -1; up_pressed[1] = -1; down_pressed[0] = -1; down_pressed[1] = -1; right_pressed[0] = -1; right_pressed[1] = -1; left_pressed[0] = -1; left_pressed[1] = -1; vdir = 0; vdist = 0; rdist = 0; mx = 0; my = 0; joyx = 0; joyy = 0; 1 603 7 0 0 -1 2 self 0 0 1 /// Button calulations. gui_x[0] = st_offset; gui_y[0] = display_get_gui_height() - st_offset; gui_x[1] = display_get_gui_width() - st_offset; gui_y[1] = display_get_gui_height() - st_offset; btn_width = display_get_height() / oControl.touch_scale; // default 4, smaller is bigger btn_height = display_get_height() / oControl.touch_scale; btn_y = display_get_gui_height() - btn_height - 25; btn_x = display_get_gui_width() - 25; btn_jump_x = btn_x - btn_width * 2; btn_fire_x = btn_x - btn_width; btn_missile_x = btn_jump_x; btn_missile_y = btn_y - btn_height; btn_morph_x = btn_fire_x; btn_morph_y = btn_y - btn_height; btn_pause_x = mean(gui_x[0] + st_radius, btn_jump_x); btn_pause_y = gui_y[1] + st_radius; buttonScale = ((150*btn_width)/300)/150; // ((150*btn_width)/300)/150 pauseScale = ((50*btn_height/3)/85)/50; btn_jump[0] = btn_jump_x; btn_jump[1] = btn_y+10; btn_jump[2] = btn_jump_x + btn_width-10; btn_jump[3] = btn_y + btn_height; btn_fire[0] = btn_fire_x+10; btn_fire[1] = btn_y + 10; btn_fire[2] = btn_fire_x + btn_width; btn_fire[3] = btn_y + btn_height; btn_missile[0] = btn_missile_x; btn_missile[1] = btn_missile_y; btn_missile[2] = btn_missile_x + btn_width - 10; btn_missile[3] = btn_missile_y + btn_height - 10; btn_morph[0] = btn_morph_x + 10; btn_morph[1] = btn_morph_y; btn_morph[2] = btn_morph_x + btn_width; btn_morph[3] = btn_morph_y + btn_height - 10; btn_pause[0] = btn_pause_x - btn_width/4; btn_pause[1] = btn_pause_y - btn_height/3; btn_pause[2] = btn_pause_x + btn_width/4; btn_pause[3] = btn_pause_y; btn_pausearrow_y = btn_pause_y - btn_height/3/2; // Up Left btn_aimul[0] = gui_x[0] - st_radius; btn_aimul[1] = gui_y[0] - st_radius; btn_aimul[2] = (gui_x[0] - st_radius) + st_radius/2; btn_aimul[3] = (gui_y[0] - st_radius); btn_aimul[4] = (gui_x[0] - st_radius); btn_aimul[5] = (gui_y[0] - st_radius) + st_radius/2; // Down Left btn_aimdl[0] = gui_x[0] - st_radius; btn_aimdl[1] = gui_y[0] + st_radius; btn_aimdl[2] = (gui_x[0] - st_radius) + st_radius/2; btn_aimdl[3] = (gui_y[0] + st_radius); btn_aimdl[4] = (gui_x[0] - st_radius); btn_aimdl[5] = (gui_y[0] + st_radius) - st_radius/2; // Up Right btn_aimur[0] = gui_x[0] + st_radius; btn_aimur[1] = gui_y[0] - st_radius; btn_aimur[2] = (gui_x[0] + st_radius) - st_radius/2; btn_aimur[3] = (gui_y[0] - st_radius); btn_aimur[4] = (gui_x[0] + st_radius); btn_aimur[5] = (gui_y[0] - st_radius) + st_radius/2; // Down Right btn_aimdr[0] = gui_x[0] + st_radius; btn_aimdr[1] = gui_y[0] + st_radius; btn_aimdr[2] = (gui_x[0] + st_radius) - st_radius/2; btn_aimdr[3] = (gui_y[0] + st_radius); btn_aimdr[4] = (gui_x[0] + st_radius); btn_aimdr[5] = (gui_y[0] + st_radius) - st_radius/2; // Up Button btn_aimu[0] = gui_x[0]; btn_aimu[1] = gui_y[0] - st_radius/4; btn_aimu[2] = gui_x[0] - st_radius; btn_aimu[3] = gui_y[0] - st_radius; btn_aimu[4] = gui_x[0] + st_radius; btn_aimu[5] = gui_y[0] - st_radius; // Down Button btn_aimd[0] = gui_x[0]; btn_aimd[1] = gui_y[0] + st_radius/4; btn_aimd[2] = gui_x[0] - st_radius; btn_aimd[3] = gui_y[0] + st_radius; btn_aimd[4] = gui_x[0] + st_radius; btn_aimd[5] = gui_y[0] + st_radius; // Right Button btn_aimr[0] = gui_x[0] + st_radius/4; btn_aimr[1] = gui_y[0]; btn_aimr[2] = gui_x[0] + st_radius; btn_aimr[3] = gui_y[0] + st_radius; btn_aimr[4] = gui_x[0] + st_radius; btn_aimr[5] = gui_y[0] - st_radius; // Left Button btn_aiml[0] = gui_x[0] - st_radius/4; btn_aiml[1] = gui_y[0]; btn_aiml[2] = gui_x[0] - st_radius; btn_aiml[3] = gui_y[0] + st_radius; btn_aiml[4] = gui_x[0] - st_radius; btn_aiml[5] = gui_y[0] - st_radius; // Up Arrow btn_uparrow[0] = gui_x[0]; btn_uparrow[1] = gui_y[0] - st_radius/1.25; btn_uparrow[2] = gui_x[0] + st_radius/4; btn_uparrow[3] = gui_y[0] - st_radius/2; btn_uparrow[4] = gui_x[0] - st_radius/4; btn_uparrow[5] = gui_y[0] - st_radius/2; // Down Arrow btn_downarrow[0] = gui_x[0]; btn_downarrow[1] = gui_y[0] + st_radius/1.25; btn_downarrow[2] = gui_x[0] + st_radius/4; btn_downarrow[3] = gui_y[0] + st_radius/2; btn_downarrow[4] = gui_x[0] - st_radius/4; btn_downarrow[5] = gui_y[0] + st_radius/2; // Left Arrow btn_leftarrow[0] = gui_x[0] - st_radius/1.25; btn_leftarrow[1] = gui_y[0]; btn_leftarrow[2] = gui_x[0] - st_radius/2; btn_leftarrow[3] = gui_y[0] - st_radius/4; btn_leftarrow[4] = gui_x[0] - st_radius/2; btn_leftarrow[5] = gui_y[0] + st_radius/4; // Right Arrow btn_rightarrow[0] = gui_x[0] + st_radius/1.25; btn_rightarrow[1] = gui_y[0]; btn_rightarrow[2] = gui_x[0] + st_radius/2; btn_rightarrow[3] = gui_y[0] - st_radius/4; btn_rightarrow[4] = gui_x[0] + st_radius/2; btn_rightarrow[5] = gui_y[0] + st_radius/4; /* texture_set_interpolation(true); var surf = -1, spr; if (!surface_exists(surf)) surf = surface_create(300*buttonScale, 300*buttonScale); surface_set_target(surf); draw_clear_alpha(c_black, 0); draw_sprite_ext(sTouchButtonX, 0, surface_get_width(surf)/2, surface_get_height(surf)/2, buttonScale, buttonScale, 0, c_white, 1); surface_reset_target(); spr = sprite_create_from_surface(surf, 0, 0, surface_get_width(surf), surface_get_height(surf), 0, 0, surface_get_width(surf)/2, surface_get_height(surf)/2); sprite_assign(sTouchButtonX, spr); sprite_delete(spr); surface_set_target(surf); draw_clear_alpha(c_black, 0); draw_sprite_ext(sTouchButtonS, 0, surface_get_width(surf)/2, surface_get_height(surf)/2, buttonScale, buttonScale, 0, c_white, 1); surface_reset_target(); spr = sprite_create_from_surface(surf, 0, 0, surface_get_width(surf), surface_get_height(surf), 0, 0, surface_get_width(surf)/2, surface_get_height(surf)/2); sprite_assign(sTouchButtonS, spr); sprite_delete(spr); surface_set_target(surf); draw_clear_alpha(c_black, 0); draw_sprite_ext(sTouchButtonC, 0, surface_get_width(surf)/2, surface_get_height(surf)/2, buttonScale, buttonScale, 0, c_white, 1); surface_reset_target(); spr = sprite_create_from_surface(surf, 0, 0, surface_get_width(surf), surface_get_height(surf), 0, 0, surface_get_width(surf)/2, surface_get_height(surf)/2); sprite_assign(sTouchButtonC, spr); sprite_delete(spr); surface_set_target(surf); draw_clear_alpha(c_black, 0); draw_sprite_ext(sTouchButtonT, 0, surface_get_width(surf)/2, surface_get_height(surf)/2, buttonScale, buttonScale, 0, c_white, 1); surface_reset_target(); spr = sprite_create_from_surface(surf, 0, 0, surface_get_width(surf), surface_get_height(surf), 0, 0, surface_get_width(surf)/2, surface_get_height(surf)/2); sprite_assign(sTouchButtonT, spr); sprite_delete(spr); surface_free(surf); if (!surface_exists(surf)) surf = surface_create(85*pauseScale, 85*pauseScale); surface_set_target(surf); draw_clear_alpha(c_black, 0); draw_sprite_ext(sTouchButtonPause, 0, surface_get_width(surf)/2, surface_get_height(surf)/2, pauseScale, pauseScale, 0, c_white, 1); surface_reset_target(); spr = sprite_create_from_surface(surf, 0, 0, surface_get_width(surf), surface_get_height(surf), 0, 0, surface_get_width(surf)/2, surface_get_height(surf)/2); sprite_assign(sTouchButtonPause, spr); sprite_delete(spr); surface_free(surf); texture_set_interpolation(false); */ /// Extra alpha = 0.5; 1 603 7 0 0 -1 2 self 0 0 1 /// Draw on-screen controls. if((global.joydetected == 1 && global.ingame) || global.gamestarted == 0 || room == rm_credits || room == rm_score || room == rm_death || room == gameintroroom) exit; if (draw == 1 && alpha!=0) { draw_set_color(c_white); draw_set_alpha(alpha); draw_set_circle_precision(48); if(global.ingame || room == rm_subscreen || room == rm_secretEnding) { draw_sprite_ext(sTouchButtonPause, 0, btn_pause_x, btn_pausearrow_y, 4/scale, 4/scale, 0, c_white, alpha/3); draw_roundrect_ext(btn_pause[0], btn_pause[1], btn_pause[2], btn_pause[3], 30, 30, 1); } if (room != rm_secretEnding) { // Jump draw_roundrect(btn_jump[0], btn_jump[1], btn_jump[2], btn_jump[3], true); // Fire draw_roundrect(btn_fire[0], btn_fire[1], btn_fire[2], btn_fire[3], true); draw_sprite_ext(sTouchButtonX, 0, mean(btn_fire[0], btn_fire[2]), mean(btn_fire[1], btn_fire[3]), 4/scale, 4/scale, 0, c_white, alpha/3); draw_sprite_ext(sTouchButtonS, 0, mean(btn_jump[0], btn_jump[2]), mean(btn_jump[1], btn_jump[3]), 4/scale, 4/scale, 0, c_white, alpha/3); draw_circle(gui_x[0], gui_y[0], st_radius, 1); if (instance_exists(oSS_Fg) && global.ssmode == 0 && oSS_Fg.hidetext == 0 && oSS_Fg.itemcollunlock) { draw_roundrect(btn_missile[0], btn_missile[1], btn_missile[2], btn_missile[3], true); draw_sprite_ext(sTouchButtonT, 0, mean(btn_missile[0], btn_missile[2]), mean(btn_missile[1], btn_missile[3]), 1, 1, 0, c_white, alpha/3); } if ((global.ingame || room == itemroom) && !global.joydetected) { // Up Left draw_triangle(btn_aimul[0], btn_aimul[1], btn_aimul[2], btn_aimul[3], btn_aimul[4], btn_aimul[5], 1); // Down Left if (global.opaimstyle) draw_triangle(btn_aimdl[0], btn_aimdl[1], btn_aimdl[2], btn_aimdl[3], btn_aimdl[4], btn_aimdl[5], 1); // Up Right draw_triangle(btn_aimur[0], btn_aimur[1], btn_aimur[2], btn_aimur[3], btn_aimur[4], btn_aimur[5], 1); // Down Right if (global.opaimstyle) draw_triangle(btn_aimdr[0], btn_aimdr[1], btn_aimdr[2], btn_aimdr[3], btn_aimdr[4], btn_aimdr[5], 1); // Missile draw_roundrect(btn_missile[0], btn_missile[1], btn_missile[2], btn_missile[3], true); //Morph draw_roundrect(btn_morph[0], btn_morph[1], btn_morph[2], btn_morph[3], true); draw_sprite_ext(sTouchButtonT, 0, mean(btn_missile[0], btn_missile[2]), mean(btn_missile[1], btn_missile[3]), 4/scale, 4/scale, 0, c_white, alpha/3); draw_sprite_ext(sTouchButtonC, 0, mean(btn_morph[0], btn_morph[2]), mean(btn_morph[1], btn_morph[3]), 4/scale, 4/scale, 0, c_white, alpha/3); draw_set_alpha(alpha/3); draw_circle(stick_x[0], stick_y[0], 50, 0); } else { draw_set_alpha(alpha/3); // Up draw_triangle(btn_uparrow[0], btn_uparrow[1], btn_uparrow[2], btn_uparrow[3], btn_uparrow[4], btn_uparrow[5], 0); // Down draw_triangle(btn_downarrow[0], btn_downarrow[1], btn_downarrow[2], btn_downarrow[3], btn_downarrow[4], btn_downarrow[5], 0); // Left draw_triangle(btn_leftarrow[0], btn_leftarrow[1], btn_leftarrow[2], btn_leftarrow[3], btn_leftarrow[4], btn_leftarrow[5], 0); // Right draw_triangle(btn_rightarrow[0], btn_rightarrow[1], btn_rightarrow[2], btn_rightarrow[3], btn_rightarrow[4], btn_rightarrow[5], 0); } } draw_set_alpha(1); } 1 603 7 0 0 -1 2 self 0 0 1 /*oControl.showfps = !oControl.showfps; show_debug_overlay(oControl.showfps); /*if (global.ingame) { global.targetx = 48; global.targety = 1392; get_loadout(10); global.lavastate = 6; room_goto(rm_a0h11); } 0 0 0 0.5 0.100000001490116 0 0.100000001490116 0.100000001490116 0.200000002980232 -1 0