diff --git a/objects/__obj_stanncam_manager/Create_0.gml b/objects/__obj_stanncam_manager/Create_0.gml index 189fb71..c472ca9 100644 --- a/objects/__obj_stanncam_manager/Create_0.gml +++ b/objects/__obj_stanncam_manager/Create_0.gml @@ -3,3 +3,9 @@ resolution_w = 0; resolution_h = 0; number_of_cams = 0; keep_aspect_ratio = true; + +resize_width = 0; +resize_height = 0; + +__display_scale_x = 1; +__display_scale_y = 1; \ No newline at end of file diff --git a/objects/__obj_stanncam_manager/Other_4.gml b/objects/__obj_stanncam_manager/Other_4.gml index 4d0a49a..14ad1c7 100644 --- a/objects/__obj_stanncam_manager/Other_4.gml +++ b/objects/__obj_stanncam_manager/Other_4.gml @@ -3,4 +3,4 @@ for (var i = 0; i < array_length(global.stanncams); ++i) { if (global.stanncams[i] == -1) continue; global.stanncams[i].__check_viewports(); } -__stanncam_update_resolution(); +__stanncam_update_resolution(); \ No newline at end of file diff --git a/objects/__obj_stanncam_manager/Step_2.gml b/objects/__obj_stanncam_manager/Step_2.gml index 9bcb0e4..0cd607d 100644 --- a/objects/__obj_stanncam_manager/Step_2.gml +++ b/objects/__obj_stanncam_manager/Step_2.gml @@ -2,3 +2,10 @@ for (var i = 0; i < array_length(global.stanncams); ++i) { if (global.stanncams[i] == -1) continue; global.stanncams[i].__step(); } + +//constantly checks if the window is being resized and changes the resolution to match +if(global.window_mode == STANNCAM_WINDOW_MODE.windowed && (resize_width != window_get_width() || resize_height != window_get_height())){ + resize_width = window_get_width(); + resize_height = window_get_height(); + stanncam_set_resolution(resize_width,resize_height); +} \ No newline at end of file diff --git a/objects/obj_ball/obj_ball.yy b/objects/obj_ball/obj_ball.yy index 7812ffc..74ce0e2 100644 --- a/objects/obj_ball/obj_ball.yy +++ b/objects/obj_ball/obj_ball.yy @@ -8,8 +8,8 @@ "managed": true, "overriddenProperties": [], "parent": { - "name": "Objects", - "path": "folders/Objects.yy", + "name": "topdown", + "path": "folders/Objects/topdown.yy", }, "parentObjectId": null, "persistent": false, diff --git a/objects/obj_camera/Create_0.gml b/objects/obj_camera/Create_0.gml index 2e636d4..5fc9184 100644 --- a/objects/obj_camera/Create_0.gml +++ b/objects/obj_camera/Create_0.gml @@ -1,6 +1,6 @@ /// @description //camera -stanncam_init(320,240,1920,1080); +stanncam_init(320,180,1920,1080); cam1 = new stanncam(obj_player.x,obj_player.y,global.game_w,global.game_h); cam1.follow = obj_player; @@ -14,7 +14,7 @@ pointer_x = 0; pointer_y = 0; zoom_mode = 0; -zoom_text = "no zooming" +zoom_text = cam1.zoom_amount speed_mode = 1; diff --git a/objects/obj_camera/Draw_64.gml b/objects/obj_camera/Draw_64.gml index a364e68..eec6f32 100644 --- a/objects/obj_camera/Draw_64.gml +++ b/objects/obj_camera/Draw_64.gml @@ -22,18 +22,32 @@ var following = (cam1.follow != undefined) ? "following" : "not following" draw_text_outline(1,offset,"[space] " + following,outline_width,precision); draw_text_outline(1,offset*2,"[ALT] toggle hi-res GUI",outline_width,precision); draw_text_outline(1,offset*3,"[LMB] move cam to pos (when not following)",outline_width,precision); -draw_text_outline(1,offset*4,"[RMB] "+ zoom_text,outline_width,precision); +draw_text_outline(1,offset*4,"[RMB] Zoom amount: "+ string(zoom_text),outline_width,precision); var constrained = (cam1.room_constrain) ? "camera constrained to room" : "camera not constrained to room"; draw_text_outline(1,offset*5,"[CTRL] "+ constrained,outline_width,precision); draw_text_outline(1,offset*6,"[F] camera shake",outline_width,precision); draw_text_outline(1,offset*7,"[Tab] camera speed "+ string(cam1.spd),outline_width,precision); +draw_text_outline(1,offset*8,"[1 & 2] to switch between example rooms",outline_width,precision); //draw current resolution text draw_set_halign(fa_right) -draw_text_outline(global.gui_w-1,1,"game resolution: "+string(__obj_stanncam_manager.display_res_w)+" x "+string(__obj_stanncam_manager.display_res_h)+" [F1]",outline_width,precision); +draw_text_outline(global.gui_w-1,1,"game resolution: "+string(global.res_w)+" x "+string(global.res_h)+" [F1]",outline_width,precision); draw_text_outline(global.gui_w-1,offset,"GUI resolution: "+string(global.gui_w)+" x "+string(global.gui_h)+" [F2]",outline_width,precision); draw_text_outline(global.gui_w-1,offset*2,"Keep aspect ratio: "+string(stanncam_get_keep_aspect_ratio())+" [F3]",outline_width,precision); -draw_text_outline(global.gui_w-1,offset*3,"fullscreen: "+string(window_get_fullscreen())+" [F4]",outline_width,precision); +var window_mode_text = ""; +switch (global.window_mode) { + case STANNCAM_WINDOW_MODE.windowed: + window_mode_text = "windowed "; + break; + case STANNCAM_WINDOW_MODE.fullscreen: + window_mode_text = "fullscreen"; + break; + case STANNCAM_WINDOW_MODE.borderless: + window_mode_text = "borderless"; + break; +} + +draw_text_outline(global.gui_w-1,offset*3,$"window mode: {window_mode_text} [F4]",outline_width,precision); draw_text_outline(global.gui_w-1,offset*4,"split-screen: "+string(split_screen)+" [F5]",outline_width,precision); //point at player, when it's outside camera bounds diff --git a/objects/obj_camera/Keyboard_123.gml b/objects/obj_camera/Keyboard_123.gml new file mode 100644 index 0000000..57067e1 --- /dev/null +++ b/objects/obj_camera/Keyboard_123.gml @@ -0,0 +1,3 @@ +/// @description + + diff --git a/objects/obj_camera/Step_0.gml b/objects/obj_camera/Step_0.gml index 61b3a12..15d4afa 100644 --- a/objects/obj_camera/Step_0.gml +++ b/objects/obj_camera/Step_0.gml @@ -46,24 +46,22 @@ if(mouse_check_button_pressed(mb_right)){ switch (zoom_mode) { case 0: //no zooming - zoom_text = "no zooming"; cam1.zoom(1,room_speed*1); obj_tv.tv.zoom(1,room_speed*1); break; case 1: //zoom in - zoom_text = "zoomed in"; cam1.zoom(0.5,room_speed*1); obj_tv.tv.zoom(0.5,room_speed*1); break; case 2: //zoom out - zoom_text = "zoomed out"; cam1.zoom(2,room_speed*1); obj_tv.tv.zoom(2,room_speed*1); break; } } +zoom_text = cam1.zoom_amount; //toggle camera speed if(keyboard_check_pressed(vk_tab)){ @@ -118,8 +116,16 @@ if(keyboard_check_pressed(vk_f2)){ stanncam_set_gui_resolution(gui_w,gui_h); } -//toggle fullscreen -if(keyboard_check_pressed(vk_f3)) stanncam_toggle_keep_aspect_ratio(); +//toggle keep aspect ratio +if(keyboard_check_pressed(vk_f3)){ + stanncam_set_keep_aspect_ratio( !stanncam_get_keep_aspect_ratio() ); +} -//toggle fullscreen -if(keyboard_check_pressed(vk_f4)) stanncam_toggle_fullscreen(); \ No newline at end of file +//toggle between window modes +if(keyboard_check_pressed(vk_f4)){ + var window_mode = global.window_mode; + window_mode++; + if (window_mode == 3) window_mode = 0; + + stanncam_set_window_mode(window_mode) +} \ No newline at end of file diff --git a/objects/obj_camera/obj_camera.yy b/objects/obj_camera/obj_camera.yy index 8b8999c..f819e66 100644 --- a/objects/obj_camera/obj_camera.yy +++ b/objects/obj_camera/obj_camera.yy @@ -10,15 +10,16 @@ {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":64,"eventType":8,"isDnD":false,}, {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":60,"eventType":6,"isDnD":false,}, {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":61,"eventType":6,"isDnD":false,}, + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":123,"eventType":5,"isDnD":false,}, ], "managed": true, "overriddenProperties": [], "parent": { - "name": "Objects", - "path": "folders/Objects.yy", + "name": "topdown", + "path": "folders/Objects/topdown.yy", }, "parentObjectId": null, - "persistent": true, + "persistent": false, "physicsAngularDamping": 0.1, "physicsDensity": 0.5, "physicsFriction": 0.2, diff --git a/objects/obj_camera_sidescroller/Create_0.gml b/objects/obj_camera_sidescroller/Create_0.gml new file mode 100644 index 0000000..870762f --- /dev/null +++ b/objects/obj_camera_sidescroller/Create_0.gml @@ -0,0 +1,36 @@ +/// @description +//camera +stanncam_init(400,270,1920,1080); +cam1 = new stanncam(obj_player_sidescroller.x,obj_player_sidescroller.y,global.game_w,global.game_h); +cam1.follow = obj_player_sidescroller; +cam1.room_constrain = true; + +cam2 = cam1.clone(); +cam2.follow = obj_player_sidescroller2; +cam2.set_size(global.game_w/2,global.game_h,0); + +split_screen = false; + +//pointer +zoom_text = cam1.zoom_amount + +speed_mode = 1; +zoom_mode = 1; + +game_res = 2; +gui_hires = false; +gui_res = 0; + +resolutions = [ +{ w:400 , h:400 }, //1:1 +{ w:500 , h:250 }, //2:1 +{ w:320 , h:180 }, //16:9 +{ w:640 , h:360 }, +{ w:1280 , h:720 }, +{ w:1920 , h:1080 }, +{ w:2560 , h:1440 } +] + +lookahead = false; + +surface = -1; \ No newline at end of file diff --git a/objects/obj_camera_sidescroller/Draw_64.gml b/objects/obj_camera_sidescroller/Draw_64.gml new file mode 100644 index 0000000..04617a8 --- /dev/null +++ b/objects/obj_camera_sidescroller/Draw_64.gml @@ -0,0 +1,51 @@ +/// @description +//chooses pixel font or hires font +if(gui_hires){ + draw_set_font(f_hires); + var offset = 45; + var outline_width = 4; + var precision = 16; + draw_set_color(c_white) +} else { + draw_set_font(f_pixel); + var offset = 8; + var outline_width = 1; + var precision = 8; + draw_set_color(c_white) +} + +//draws helper text +draw_set_halign(fa_left); +draw_set_valign(fa_top); +draw_text_outline(1,1,"[arrow keys] move character",outline_width,precision); +draw_text_outline(1,offset*2,"[ALT] toggle hi-res GUI",outline_width,precision); +draw_text_outline(1,offset*4,"[RMB] / [SCRL WHEEL] "+ string(zoom_text),outline_width,precision); +var constrained = (cam1.room_constrain) ? "camera constrained to room" : "camera not constrained to room"; +draw_text_outline(1,offset*5,"[CTRL] "+ constrained,outline_width,precision); +var debug = (cam1.debug_draw) ? "debug draw on" : "debug draw off"; +draw_text_outline(1,offset*6,"[SHIFT] "+ debug,outline_width,precision); +draw_text_outline(1,offset*7,"[F] camera shake",outline_width,precision); +draw_text_outline(1,offset*8,"[Tab] camera speed "+ string(cam1.spd),outline_width,precision); +draw_text_outline(1,offset*9,"[1 & 2] to switch between example rooms",outline_width,precision); + +//draw current resolution text +draw_set_halign(fa_right) +draw_text_outline(global.gui_w-1,1,"game resolution: "+string(global.res_w)+" x "+string(global.res_h)+" [F1]",outline_width,precision); +draw_text_outline(global.gui_w-1,offset,"GUI resolution: "+string(global.gui_w)+" x "+string(global.gui_h)+" [F2]",outline_width,precision); +draw_text_outline(global.gui_w-1,offset*2,"Keep aspect ratio: "+string(stanncam_get_keep_aspect_ratio())+" [F3]",outline_width,precision); + +var window_mode_text = ""; +switch (global.window_mode) { + case STANNCAM_WINDOW_MODE.windowed: + window_mode_text = "windowed "; + break; + case STANNCAM_WINDOW_MODE.fullscreen: + window_mode_text = "fullscreen"; + break; + case STANNCAM_WINDOW_MODE.borderless: + window_mode_text = "borderless"; + break; +} + +draw_text_outline(global.gui_w-1,offset*3,$"window mode: {window_mode_text} [F4]",outline_width,precision); +draw_text_outline(global.gui_w-1,offset*4,"split-screen: "+string(split_screen)+" [F5]",outline_width,precision); \ No newline at end of file diff --git a/objects/obj_camera_sidescroller/Draw_77.gml b/objects/obj_camera_sidescroller/Draw_77.gml new file mode 100644 index 0000000..d50e7dc --- /dev/null +++ b/objects/obj_camera_sidescroller/Draw_77.gml @@ -0,0 +1,50 @@ +/// @description + +parralax_bg = function(cam_){ + + //the background is scaled up so it appears smooth when being parralaxed + + var scalex = stanncam_get_res_scale_x(); + var scaley = stanncam_get_res_scale_y(); + + //the offset the camera is from the middle of the room + var offset_x = (-cam_.get_x() -cam_.x_frac) * scalex; + var pos_x = -200 + cam_.x_frac; + var pos_y = 0 + cam_.y_frac; + + draw_sprite_ext_tiled(spr_underwater_layer00,0,pos_x + (offset_x * 0.0),pos_y,2,1,scalex,scaley); + draw_sprite_ext_tiled(spr_underwater_layer01,0,pos_x + (offset_x * 0.2),pos_y,2,1,scalex,scaley); + draw_sprite_ext_tiled(spr_underwater_layer02,0,pos_x + (offset_x * 0.4),pos_y,2,1,scalex,scaley); + draw_sprite_ext_tiled(spr_underwater_layer03,0,pos_x + (offset_x * 0.6),pos_y,2,1,scalex,scaley); + draw_sprite_ext_tiled(spr_underwater_layer04,0,pos_x + (offset_x * 0.8),pos_y,2,1,scalex,scaley); + draw_sprite_ext_tiled(spr_underwater_layer05,0,pos_x + (offset_x * 1.0),pos_y,2,1,scalex,scaley); +} + +parralax_bg1 = function(){ + parralax_bg(cam1); +} + +parralax_bg2 = function(){ + parralax_bg(cam2); +} + +//fancy splitscreen rendering +var width = global.res_w; +var height = global.res_h; + +//the parralax drawing is scaled down again +var scalex = 1/stanncam_get_res_scale_x(); +var scaley = 1/stanncam_get_res_scale_y(); + +if(!split_screen){ + cam1.draw_special(parralax_bg1,0,0,width,height,scalex,scaley); + cam1.draw(0,0); +} else { +//fancy splitscreen rendering + + cam1.draw_special(parralax_bg1,0,0,width/2,height,scalex,scaley); + cam1.draw(0,0); + + cam2.draw_special(parralax_bg2,global.game_w/2,0,width/2,height,scalex,scaley); + cam2.draw(global.game_w/2,0); +} \ No newline at end of file diff --git a/objects/obj_camera_sidescroller/Mouse_60.gml b/objects/obj_camera_sidescroller/Mouse_60.gml new file mode 100644 index 0000000..189177a --- /dev/null +++ b/objects/obj_camera_sidescroller/Mouse_60.gml @@ -0,0 +1,5 @@ +/// @description +var zoom_amount = cam1.zoom_amount; +zoom_amount-=0.05 +zoom_amount = clamp(zoom_amount,0.1,2); +cam1.zoom(zoom_amount,0); \ No newline at end of file diff --git a/objects/obj_camera_sidescroller/Mouse_61.gml b/objects/obj_camera_sidescroller/Mouse_61.gml new file mode 100644 index 0000000..703cbba --- /dev/null +++ b/objects/obj_camera_sidescroller/Mouse_61.gml @@ -0,0 +1,5 @@ +/// @description +var zoom_amount = cam1.zoom_amount; +zoom_amount+=0.05 +zoom_amount = clamp(zoom_amount,0.1,2); +cam1.zoom(zoom_amount,0); \ No newline at end of file diff --git a/objects/obj_camera_sidescroller/Step_0.gml b/objects/obj_camera_sidescroller/Step_0.gml new file mode 100644 index 0000000..bbfac0f --- /dev/null +++ b/objects/obj_camera_sidescroller/Step_0.gml @@ -0,0 +1,128 @@ +/// @description + +//toggle hires gui +if(keyboard_check_pressed(vk_alt)){ + gui_hires = !gui_hires; + if(gui_hires){ + stanncam_set_gui_resolution(1920,1080); + }else{ + stanncam_set_gui_resolution(global.game_w,global.game_h); + } +} + +//toggle zoom in +if(mouse_check_button_pressed(mb_right)){ + zoom_mode++; + if(zoom_mode > 2) zoom_mode = 0; + + switch (zoom_mode) { + case 0: + //no zooming + cam1.zoom(1,room_speed*1); + break; + case 1: + //zoom in + cam1.zoom(0.5,room_speed*1); + break; + case 2: + //zoom out + cam1.zoom(2,room_speed*1); + break; + } +} +zoom_text = cam1.zoom_amount; + +//toggle camera speed +if(keyboard_check_pressed(vk_tab)){ + speed_mode++; + if(speed_mode > 3) speed_mode = 0; + + switch (speed_mode) { + case 0: + //speed 0.5 + cam1.set_speed(0.5,50); + break; + case 1: + //speed 2 + cam1.set_speed(1,50); + break; + case 2: + //speed 10 + cam1.set_speed(2,50); + break; + case 3: + //speed 10 + cam1.set_speed(10,50); + break; + } +} + +//toggle if the camera is constrained to the room size +if(keyboard_check_pressed(vk_control)){ + if(cam1.room_constrain) cam1.room_constrain = false; + else cam1.room_constrain = true; +} + +//toggle debug drawing +if(keyboard_check_pressed(vk_shift)){ + cam1.debug_draw = !cam1.debug_draw; +} + +//do a screenshake +if(keyboard_check_pressed(ord("F"))){ + cam1.shake_screen(30,room_speed*1); +} + +//switch resolutions +if(keyboard_check_pressed(vk_f1)) +{ + game_res++; + if(game_res > 6) game_res = 0; + stanncam_set_resolution(resolutions[game_res].w,resolutions[game_res].h); +} + +//switch gui resolutions +if(keyboard_check_pressed(vk_f2)){ + gui_res++ + if(gui_res > 6) gui_res = 0; + var gui_w = resolutions[gui_res].w; + var gui_h = resolutions[gui_res].h; + stanncam_set_gui_resolution(gui_w,gui_h); +} + +//toggle keep aspect ratio +if(keyboard_check_pressed(vk_f3)){ + stanncam_set_keep_aspect_ratio( !stanncam_get_keep_aspect_ratio() ); +} + +//toggle between window modes +if(keyboard_check_pressed(vk_f4)){ + var window_mode = global.window_mode; + window_mode++; + if (window_mode == 3) window_mode = 0; + + stanncam_set_window_mode(window_mode) +} + +//toggle split-screen +if(keyboard_check_pressed(vk_f5)){ + split_screen = !split_screen; + + if(split_screen){ + + cam1.set_size(global.game_w/2,global.game_h,room_speed*0.5); + + } else { + cam1.follow = obj_player_sidescroller; + cam2.follow = obj_player_sidescroller2; + cam1.set_size(global.game_w,global.game_h,room_speed*0.5); + } +} + +//makes the camera look ahead in the direction the player is going +if(cam1.bounds_dist_w != 0){ + if(!lookahead){ + cam1.offset(60*sign(cam1.bounds_dist_w),0,room_speed*0.5); + lookahead = true; + } +} else lookahead = false; \ No newline at end of file diff --git a/objects/obj_camera_sidescroller/Step_2.gml b/objects/obj_camera_sidescroller/Step_2.gml new file mode 100644 index 0000000..2dbba54 --- /dev/null +++ b/objects/obj_camera_sidescroller/Step_2.gml @@ -0,0 +1,17 @@ +/// @description + +//fancy split screen +//x = lerp(obj_player_sidescroller.x,obj_player_sidescroller2.x,0.5); +//y = lerp(obj_player_sidescroller.y,obj_player_sidescroller2.y,0.5); +//player_dist = point_distance(obj_player_sidescroller.x,obj_player_sidescroller.y,obj_player_sidescroller2.x,obj_player_sidescroller2.y); + +//when the players are close together the camera follows the middle point between them +//if(split_screen){ +// if(player_dist > 100){ +// cam1.follow = obj_player_sidescroller; +// cam2.follow = obj_player_sidescroller2; +// } else { +// cam1.follow = self; +// cam2.follow = self; +// } +//} \ No newline at end of file diff --git a/objects/obj_camera_sidescroller/obj_camera_sidescroller.yy b/objects/obj_camera_sidescroller/obj_camera_sidescroller.yy new file mode 100644 index 0000000..a4f7597 --- /dev/null +++ b/objects/obj_camera_sidescroller/obj_camera_sidescroller.yy @@ -0,0 +1,39 @@ +{ + "resourceType": "GMObject", + "resourceVersion": "1.0", + "name": "obj_camera_sidescroller", + "eventList": [ + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,}, + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":0,"eventType":3,"isDnD":false,}, + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":77,"eventType":8,"isDnD":false,}, + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":64,"eventType":8,"isDnD":false,}, + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":60,"eventType":6,"isDnD":false,}, + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":61,"eventType":6,"isDnD":false,}, + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":2,"eventType":3,"isDnD":false,}, + ], + "managed": true, + "overriddenProperties": [], + "parent": { + "name": "sidescroller", + "path": "folders/Objects/sidescroller.yy", + }, + "parentObjectId": null, + "persistent": false, + "physicsAngularDamping": 0.1, + "physicsDensity": 0.5, + "physicsFriction": 0.2, + "physicsGroup": 1, + "physicsKinematic": false, + "physicsLinearDamping": 0.1, + "physicsObject": false, + "physicsRestitution": 0.1, + "physicsSensor": false, + "physicsShape": 1, + "physicsShapePoints": [], + "physicsStartAwake": true, + "properties": [], + "solid": false, + "spriteId": null, + "spriteMaskId": null, + "visible": true, +} \ No newline at end of file diff --git a/objects/obj_collision/obj_collision.yy b/objects/obj_collision/obj_collision.yy new file mode 100644 index 0000000..6e65f8e --- /dev/null +++ b/objects/obj_collision/obj_collision.yy @@ -0,0 +1,34 @@ +{ + "resourceType": "GMObject", + "resourceVersion": "1.0", + "name": "obj_collision", + "eventList": [], + "managed": true, + "overriddenProperties": [], + "parent": { + "name": "sidescroller", + "path": "folders/Objects/sidescroller.yy", + }, + "parentObjectId": null, + "persistent": false, + "physicsAngularDamping": 0.1, + "physicsDensity": 0.5, + "physicsFriction": 0.2, + "physicsGroup": 1, + "physicsKinematic": false, + "physicsLinearDamping": 0.1, + "physicsObject": false, + "physicsRestitution": 0.1, + "physicsSensor": false, + "physicsShape": 1, + "physicsShapePoints": [], + "physicsStartAwake": true, + "properties": [], + "solid": false, + "spriteId": { + "name": "spr_collision", + "path": "sprites/spr_collision/spr_collision.yy", + }, + "spriteMaskId": null, + "visible": false, +} \ No newline at end of file diff --git a/objects/obj_game_controller/Create_0.gml b/objects/obj_game_controller/Create_0.gml new file mode 100644 index 0000000..4137603 --- /dev/null +++ b/objects/obj_game_controller/Create_0.gml @@ -0,0 +1,2 @@ +/// @description +room_goto_next(); \ No newline at end of file diff --git a/objects/obj_game_controller/KeyPress_49.gml b/objects/obj_game_controller/KeyPress_49.gml new file mode 100644 index 0000000..fe322b8 --- /dev/null +++ b/objects/obj_game_controller/KeyPress_49.gml @@ -0,0 +1,3 @@ +/// @description go to first room +room_goto(rm_test); + diff --git a/objects/obj_game_controller/KeyPress_50.gml b/objects/obj_game_controller/KeyPress_50.gml new file mode 100644 index 0000000..5f273a3 --- /dev/null +++ b/objects/obj_game_controller/KeyPress_50.gml @@ -0,0 +1,3 @@ +/// @description go to sidescroller room +room_goto(rm_sidescroller); + diff --git a/objects/obj_game_controller/KeyPress_82.gml b/objects/obj_game_controller/KeyPress_82.gml new file mode 100644 index 0000000..733d03a --- /dev/null +++ b/objects/obj_game_controller/KeyPress_82.gml @@ -0,0 +1,2 @@ +/// @description Restart +game_restart(); \ No newline at end of file diff --git a/objects/obj_game_controller/obj_game_controller.yy b/objects/obj_game_controller/obj_game_controller.yy new file mode 100644 index 0000000..2c9805f --- /dev/null +++ b/objects/obj_game_controller/obj_game_controller.yy @@ -0,0 +1,36 @@ +{ + "resourceType": "GMObject", + "resourceVersion": "1.0", + "name": "obj_game_controller", + "eventList": [ + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,}, + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":49,"eventType":9,"isDnD":false,}, + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":50,"eventType":9,"isDnD":false,}, + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":82,"eventType":9,"isDnD":false,}, + ], + "managed": true, + "overriddenProperties": [], + "parent": { + "name": "Objects", + "path": "folders/Objects.yy", + }, + "parentObjectId": null, + "persistent": true, + "physicsAngularDamping": 0.1, + "physicsDensity": 0.5, + "physicsFriction": 0.2, + "physicsGroup": 1, + "physicsKinematic": false, + "physicsLinearDamping": 0.1, + "physicsObject": false, + "physicsRestitution": 0.1, + "physicsSensor": false, + "physicsShape": 1, + "physicsShapePoints": [], + "physicsStartAwake": true, + "properties": [], + "solid": false, + "spriteId": null, + "spriteMaskId": null, + "visible": true, +} \ No newline at end of file diff --git a/objects/obj_player/Step_0.gml b/objects/obj_player/Step_0.gml index 1b87e58..a93c53f 100644 --- a/objects/obj_player/Step_0.gml +++ b/objects/obj_player/Step_0.gml @@ -6,8 +6,4 @@ x+= hspd; y+= vspd; x = clamp(x,0,room_width); -y = clamp(y,0,room_height); - - -//Restart -if(keyboard_check_pressed(ord("R"))) game_restart(); \ No newline at end of file +y = clamp(y,0,room_height); \ No newline at end of file diff --git a/objects/obj_player/obj_player.yy b/objects/obj_player/obj_player.yy index 48ee8cf..8c49693 100644 --- a/objects/obj_player/obj_player.yy +++ b/objects/obj_player/obj_player.yy @@ -10,8 +10,8 @@ "managed": true, "overriddenProperties": [], "parent": { - "name": "Objects", - "path": "folders/Objects.yy", + "name": "topdown", + "path": "folders/Objects/topdown.yy", }, "parentObjectId": null, "persistent": false, diff --git a/objects/obj_player2/obj_player2.yy b/objects/obj_player2/obj_player2.yy index 260af1e..1ed0de5 100644 --- a/objects/obj_player2/obj_player2.yy +++ b/objects/obj_player2/obj_player2.yy @@ -11,8 +11,8 @@ "managed": true, "overriddenProperties": [], "parent": { - "name": "Objects", - "path": "folders/Objects.yy", + "name": "topdown", + "path": "folders/Objects/topdown.yy", }, "parentObjectId": null, "persistent": false, diff --git a/objects/obj_player_sidescroller/Create_0.gml b/objects/obj_player_sidescroller/Create_0.gml new file mode 100644 index 0000000..d49a1a8 --- /dev/null +++ b/objects/obj_player_sidescroller/Create_0.gml @@ -0,0 +1,29 @@ +/// @description +//player +hinput = 0; + +hspd = 0; +vspd = 0; +acc = 0.4; +top_spd = 6; + +grounded = false; +jump_count = 0; +jump_max = 2; + + +scale_x = 1; +scale_y = 1; + +lookahead = false; + + +left = function(){ + return keyboard_check_direct(vk_left); +}; +right = function(){ + return keyboard_check_direct(vk_right); +}; +jump = function(){ + return keyboard_check_pressed(vk_up); +}; \ No newline at end of file diff --git a/objects/obj_player_sidescroller/Draw_0.gml b/objects/obj_player_sidescroller/Draw_0.gml new file mode 100644 index 0000000..3534d0f --- /dev/null +++ b/objects/obj_player_sidescroller/Draw_0.gml @@ -0,0 +1,2 @@ +/// @description +draw_sprite_ext(sprite_index,image_index,x,y,image_xscale*scale_x,image_yscale*scale_y,0,-1,1); \ No newline at end of file diff --git a/objects/obj_player_sidescroller/Step_0.gml b/objects/obj_player_sidescroller/Step_0.gml new file mode 100644 index 0000000..3434b7f --- /dev/null +++ b/objects/obj_player_sidescroller/Step_0.gml @@ -0,0 +1,57 @@ +/// @description +hinput = right() - left(); + +//horizontal movement +if(hinput != 0){ + image_xscale = sign(hinput); + hspd+=acc*hinput; + hspd = clamp(hspd,-top_spd,top_spd); +} else if(hspd != 0){ + hspd-= acc*sign(hspd); + if(abs(hspd) < acc) hspd = 0; +} + +//vertical movement +if(jump() && jump_count < jump_max){ + vspd=-8; + scale_x = 0.4; + scale_y = 1.6; + jump_count++; +} +vspd+=acc +vspd = clamp(vspd,-20,20); + +//collissions +//horizontal +if(place_meeting(x + hspd, y, obj_collision)){ + var hspd_ = hspd; + while( abs(hspd_) > 0.1){ + hspd_ *=0.5; + if (!place_meeting(x+hspd_,y,obj_collision)) x+=hspd_; + } + hspd = 0; +} +x+= hspd; + +//vertical +if(place_meeting(x, y+vspd, obj_collision)){ + var vspd_ = vspd; + if(vspd > 0 && !grounded){ + grounded = true; + jump_count = 0; + scale_x = 1.6; + scale_y = 0.4; + + } + while( abs(vspd_) > 0.1){ + vspd_ *=0.5; + if (!place_meeting(x,y+vspd_,obj_collision)) y+=vspd_; + } + if(abs(vspd) < 1) vspd = 0; + vspd = 0; +} +else grounded = false; +y+= vspd; + +scale_x = lerp(scale_x,1,0.15); +scale_y = lerp(scale_y,1,0.15); diff --git a/objects/obj_player_sidescroller/obj_player_sidescroller.yy b/objects/obj_player_sidescroller/obj_player_sidescroller.yy new file mode 100644 index 0000000..ea885b7 --- /dev/null +++ b/objects/obj_player_sidescroller/obj_player_sidescroller.yy @@ -0,0 +1,38 @@ +{ + "resourceType": "GMObject", + "resourceVersion": "1.0", + "name": "obj_player_sidescroller", + "eventList": [ + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,}, + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":0,"eventType":8,"isDnD":false,}, + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":0,"eventType":3,"isDnD":false,}, + ], + "managed": true, + "overriddenProperties": [], + "parent": { + "name": "sidescroller", + "path": "folders/Objects/sidescroller.yy", + }, + "parentObjectId": null, + "persistent": false, + "physicsAngularDamping": 0.1, + "physicsDensity": 0.5, + "physicsFriction": 0.2, + "physicsGroup": 1, + "physicsKinematic": false, + "physicsLinearDamping": 0.1, + "physicsObject": false, + "physicsRestitution": 0.1, + "physicsSensor": false, + "physicsShape": 1, + "physicsShapePoints": [], + "physicsStartAwake": true, + "properties": [], + "solid": false, + "spriteId": { + "name": "spr_pengu", + "path": "sprites/spr_pengu/spr_pengu.yy", + }, + "spriteMaskId": null, + "visible": true, +} \ No newline at end of file diff --git a/objects/obj_player_sidescroller2/Create_0.gml b/objects/obj_player_sidescroller2/Create_0.gml new file mode 100644 index 0000000..3fc65a4 --- /dev/null +++ b/objects/obj_player_sidescroller2/Create_0.gml @@ -0,0 +1,14 @@ +/// @description +// Inherit the parent event +event_inherited(); + +left = function(){ + return keyboard_check_direct(ord("A")); +}; +right = function(){ + return keyboard_check_direct(ord("D")); +}; +jump = function(){ + return keyboard_check_pressed(ord("W")); +}; + diff --git a/objects/obj_player_sidescroller2/obj_player_sidescroller2.yy b/objects/obj_player_sidescroller2/obj_player_sidescroller2.yy new file mode 100644 index 0000000..81a10c4 --- /dev/null +++ b/objects/obj_player_sidescroller2/obj_player_sidescroller2.yy @@ -0,0 +1,39 @@ +{ + "resourceType": "GMObject", + "resourceVersion": "1.0", + "name": "obj_player_sidescroller2", + "eventList": [ + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,}, + ], + "managed": true, + "overriddenProperties": [], + "parent": { + "name": "sidescroller", + "path": "folders/Objects/sidescroller.yy", + }, + "parentObjectId": { + "name": "obj_player_sidescroller", + "path": "objects/obj_player_sidescroller/obj_player_sidescroller.yy", + }, + "persistent": false, + "physicsAngularDamping": 0.1, + "physicsDensity": 0.5, + "physicsFriction": 0.2, + "physicsGroup": 1, + "physicsKinematic": false, + "physicsLinearDamping": 0.1, + "physicsObject": false, + "physicsRestitution": 0.1, + "physicsSensor": false, + "physicsShape": 1, + "physicsShapePoints": [], + "physicsStartAwake": true, + "properties": [], + "solid": false, + "spriteId": { + "name": "spr_pengu2", + "path": "sprites/spr_pengu2/spr_pengu2.yy", + }, + "spriteMaskId": null, + "visible": true, +} \ No newline at end of file diff --git a/objects/obj_tv/obj_tv.yy b/objects/obj_tv/obj_tv.yy index 17dc750..3dd8b15 100644 --- a/objects/obj_tv/obj_tv.yy +++ b/objects/obj_tv/obj_tv.yy @@ -9,8 +9,8 @@ "managed": true, "overriddenProperties": [], "parent": { - "name": "Objects", - "path": "folders/Objects.yy", + "name": "topdown", + "path": "folders/Objects/topdown.yy", }, "parentObjectId": null, "persistent": false, diff --git a/options/windows/options_windows.yy b/options/windows/options_windows.yy index 0321be2..ecdaf52 100644 --- a/options/windows/options_windows.yy +++ b/options/windows/options_windows.yy @@ -10,7 +10,7 @@ "option_windows_description_info": "A GameMaker Game", "option_windows_disable_sandbox": false, "option_windows_display_cursor": true, - "option_windows_display_name": "Created with GameMaker", + "option_windows_display_name": "STANNcam example project", "option_windows_enable_steam": false, "option_windows_executable_name": "${project_name}.exe", "option_windows_icon": "${base_options_dir}/windows/icons/icon.ico", @@ -20,7 +20,7 @@ "option_windows_license": "${base_options_dir}/windows/installer/license.txt", "option_windows_nsis_file": "${base_options_dir}/windows/installer/nsis_script.nsi", "option_windows_product_info": "Created with GameMaker", - "option_windows_resize_window": false, + "option_windows_resize_window": true, "option_windows_save_location": 0, "option_windows_scale": 0, "option_windows_sleep_margin": 10, diff --git a/readme.md b/readme.md index c04cfbd..6a9cfa3 100644 --- a/readme.md +++ b/readme.md @@ -3,21 +3,24 @@

-STANNcam 2.1.1 +STANNcam 2.2.0🎥

-STANNcam is a pixel-perfect camera and resolution manager system for GameMaker-LTS (and onwards) +STANNcam is a pixel-perfect camera and resolution manager system for GameMaker (and onwards) It foregoes gamemakers viewports and application_surface, and instead gives full control on where and in which order to draw your different camera's contents to the screen. https://user-images.githubusercontent.com/46312671/224503356-25316aab-1c77-422b-b994-b0013da303d0.mp4 +https://github.com/jack27121/STANNcam/assets/46312671/d8bde347-346c-48de-88a5-86bfb75c3ecb.mp4 + # Features * Ability to add/clone/remove up to 8 cameras at runtime easily * Camera following options -* Functions for moving/zooming/shaking the camera +* Functions for moving/zooming/shaking/resizing the camera * Independent game and GUI resolution (can be identical as well) -* Change display resolution, fullscreen, keep aspect-ratio. at runtime +* Change display resolution, keep aspect-ratio. at runtime +* Switch between windowed / borderless windowed / fullscreen * Ability to draw camera contents directly on an object in a level (can be used for TV/Monitor/portal effects) * Easily apply shaders to everything drawn * Draw stuff before and after the camera is drawn (useful for dynamic backgrounds/foregrounds) diff --git a/rooms/rm_init/rm_init.yy b/rooms/rm_init/rm_init.yy new file mode 100644 index 0000000..f6bf576 --- /dev/null +++ b/rooms/rm_init/rm_init.yy @@ -0,0 +1,55 @@ +{ + "resourceType": "GMRoom", + "resourceVersion": "1.0", + "name": "rm_init", + "creationCodeFile": "", + "inheritCode": false, + "inheritCreationOrder": false, + "inheritLayers": false, + "instanceCreationOrder": [ + {"name":"inst_775365B7","path":"rooms/rm_init/rm_init.yy",}, + ], + "isDnd": false, + "layers": [ + {"resourceType":"GMRInstanceLayer","resourceVersion":"1.0","name":"Instances","depth":0,"effectEnabled":true,"effectType":null,"gridX":16,"gridY":16,"hierarchyFrozen":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"inheritSubLayers":true,"inheritVisibility":true,"instances":[ + {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_775365B7","colour":4294967295,"frozen":false,"hasCreationCode":false,"ignore":false,"imageIndex":0,"imageSpeed":1.0,"inheritCode":false,"inheritedItemId":null,"inheritItemSettings":false,"isDnd":false,"objectId":{"name":"obj_game_controller","path":"objects/obj_game_controller/obj_game_controller.yy",},"properties":[],"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"x":16.0,"y":16.0,}, + ],"layers":[],"properties":[],"userdefinedDepth":false,"visible":true,}, + {"resourceType":"GMRBackgroundLayer","resourceVersion":"1.0","name":"Background","animationFPS":15.0,"animationSpeedType":0,"colour":4033242726,"depth":100,"effectEnabled":true,"effectType":null,"gridX":16,"gridY":16,"hierarchyFrozen":false,"hspeed":0.0,"htiled":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"inheritSubLayers":true,"inheritVisibility":true,"layers":[],"properties":[],"spriteId":null,"stretch":false,"userdefinedAnimFPS":false,"userdefinedDepth":false,"visible":true,"vspeed":0.0,"vtiled":false,"x":0,"y":0,}, + ], + "parent": { + "name": "Rooms", + "path": "folders/Rooms.yy", + }, + "parentRoom": null, + "physicsSettings": { + "inheritPhysicsSettings": false, + "PhysicsWorld": false, + "PhysicsWorldGravityX": 0.0, + "PhysicsWorldGravityY": 10.0, + "PhysicsWorldPixToMetres": 0.1, + }, + "roomSettings": { + "Height": 80, + "inheritRoomSettings": false, + "persistent": false, + "Width": 80, + }, + "sequenceId": null, + "views": [ + {"hborder":32,"hport":240,"hspeed":-1,"hview":240,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":420,"wview":420,"xport":0,"xview":0,"yport":0,"yview":0,}, + {"hborder":32,"hport":240,"hspeed":-1,"hview":240,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":420,"wview":420,"xport":0,"xview":0,"yport":0,"yview":0,}, + {"hborder":32,"hport":240,"hspeed":-1,"hview":240,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":420,"wview":420,"xport":0,"xview":0,"yport":0,"yview":0,}, + {"hborder":32,"hport":240,"hspeed":-1,"hview":240,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":420,"wview":420,"xport":0,"xview":0,"yport":0,"yview":0,}, + {"hborder":32,"hport":240,"hspeed":-1,"hview":240,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":420,"wview":420,"xport":0,"xview":0,"yport":0,"yview":0,}, + {"hborder":32,"hport":240,"hspeed":-1,"hview":240,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":420,"wview":420,"xport":0,"xview":0,"yport":0,"yview":0,}, + {"hborder":32,"hport":240,"hspeed":-1,"hview":240,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":420,"wview":420,"xport":0,"xview":0,"yport":0,"yview":0,}, + {"hborder":32,"hport":240,"hspeed":-1,"hview":240,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":420,"wview":420,"xport":0,"xview":0,"yport":0,"yview":0,}, + ], + "viewSettings": { + "clearDisplayBuffer": true, + "clearViewBackground": false, + "enableViews": false, + "inheritViewSettings": false, + }, + "volume": 1.0, +} \ No newline at end of file diff --git a/rooms/rm_sidescroller/rm_sidescroller.yy b/rooms/rm_sidescroller/rm_sidescroller.yy new file mode 100644 index 0000000..1986f63 --- /dev/null +++ b/rooms/rm_sidescroller/rm_sidescroller.yy @@ -0,0 +1,90 @@ +{ + "resourceType": "GMRoom", + "resourceVersion": "1.0", + "name": "rm_sidescroller", + "creationCodeFile": "", + "inheritCode": false, + "inheritCreationOrder": false, + "inheritLayers": false, + "instanceCreationOrder": [ + {"name":"inst_25469891","path":"rooms/rm_sidescroller/rm_sidescroller.yy",}, + {"name":"inst_38912525","path":"rooms/rm_sidescroller/rm_sidescroller.yy",}, + {"name":"inst_43F6B6EE","path":"rooms/rm_sidescroller/rm_sidescroller.yy",}, + {"name":"inst_28A7422B","path":"rooms/rm_sidescroller/rm_sidescroller.yy",}, + {"name":"inst_6F3597CA","path":"rooms/rm_sidescroller/rm_sidescroller.yy",}, + {"name":"inst_1D3444A7","path":"rooms/rm_sidescroller/rm_sidescroller.yy",}, + {"name":"inst_330D94B4","path":"rooms/rm_sidescroller/rm_sidescroller.yy",}, + {"name":"inst_52A3B4D0","path":"rooms/rm_sidescroller/rm_sidescroller.yy",}, + {"name":"inst_3DFDFCE0","path":"rooms/rm_sidescroller/rm_sidescroller.yy",}, + {"name":"inst_4538CAB8","path":"rooms/rm_sidescroller/rm_sidescroller.yy",}, + {"name":"inst_7AF44202","path":"rooms/rm_sidescroller/rm_sidescroller.yy",}, + {"name":"inst_3F03D43","path":"rooms/rm_sidescroller/rm_sidescroller.yy",}, + {"name":"inst_3C1837A1","path":"rooms/rm_sidescroller/rm_sidescroller.yy",}, + ], + "isDnd": false, + "layers": [ + {"resourceType":"GMRInstanceLayer","resourceVersion":"1.0","name":"collisions","depth":0,"effectEnabled":true,"effectType":null,"gridX":16,"gridY":16,"hierarchyFrozen":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"inheritSubLayers":true,"inheritVisibility":true,"instances":[ + {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_25469891","colour":4294967295,"frozen":false,"hasCreationCode":false,"ignore":false,"imageIndex":0,"imageSpeed":1.0,"inheritCode":false,"inheritedItemId":null,"inheritItemSettings":false,"isDnd":false,"objectId":{"name":"obj_collision","path":"objects/obj_collision/obj_collision.yy",},"properties":[],"rotation":0.0,"scaleX":1.0,"scaleY":9.0,"x":0.0,"y":0.0,}, + {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_38912525","colour":4294967295,"frozen":false,"hasCreationCode":false,"ignore":false,"imageIndex":0,"imageSpeed":1.0,"inheritCode":false,"inheritedItemId":null,"inheritItemSettings":false,"isDnd":false,"objectId":{"name":"obj_collision","path":"objects/obj_collision/obj_collision.yy",},"properties":[],"rotation":0.0,"scaleX":3.0,"scaleY":1.0,"x":0.0,"y":288.0,}, + {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_43F6B6EE","colour":4294967295,"frozen":false,"hasCreationCode":false,"ignore":false,"imageIndex":0,"imageSpeed":1.0,"inheritCode":false,"inheritedItemId":null,"inheritItemSettings":false,"isDnd":false,"objectId":{"name":"obj_collision","path":"objects/obj_collision/obj_collision.yy",},"properties":[],"rotation":0.0,"scaleX":5.0,"scaleY":2.0,"x":0.0,"y":320.0,}, + {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_28A7422B","colour":4294967295,"frozen":false,"hasCreationCode":false,"ignore":false,"imageIndex":0,"imageSpeed":1.0,"inheritCode":false,"inheritedItemId":null,"inheritItemSettings":false,"isDnd":false,"objectId":{"name":"obj_collision","path":"objects/obj_collision/obj_collision.yy",},"properties":[],"rotation":0.0,"scaleX":27.0,"scaleY":3.0,"x":0.0,"y":384.0,}, + {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_6F3597CA","colour":4294967295,"frozen":false,"hasCreationCode":false,"ignore":false,"imageIndex":0,"imageSpeed":1.0,"inheritCode":false,"inheritedItemId":null,"inheritItemSettings":false,"isDnd":false,"objectId":{"name":"obj_collision","path":"objects/obj_collision/obj_collision.yy",},"properties":[],"rotation":0.0,"scaleX":3.0,"scaleY":0.84375,"x":736.0,"y":256.0,}, + {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_1D3444A7","colour":4294967295,"frozen":false,"hasCreationCode":false,"ignore":false,"imageIndex":0,"imageSpeed":1.0,"inheritCode":false,"inheritedItemId":null,"inheritItemSettings":false,"isDnd":false,"objectId":{"name":"obj_collision","path":"objects/obj_collision/obj_collision.yy",},"properties":[],"rotation":0.0,"scaleX":1.0,"scaleY":12.0,"x":832.0,"y":0.0,}, + {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_330D94B4","colour":4294967295,"frozen":false,"hasCreationCode":false,"ignore":false,"imageIndex":0,"imageSpeed":1.0,"inheritCode":false,"inheritedItemId":null,"inheritItemSettings":false,"isDnd":false,"objectId":{"name":"obj_collision","path":"objects/obj_collision/obj_collision.yy",},"properties":[],"rotation":0.0,"scaleX":6.0,"scaleY":0.78125,"x":448.0,"y":320.0,}, + {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_52A3B4D0","colour":4294967295,"frozen":false,"hasCreationCode":false,"ignore":false,"imageIndex":0,"imageSpeed":1.0,"inheritCode":false,"inheritedItemId":null,"inheritItemSettings":false,"isDnd":false,"objectId":{"name":"obj_collision","path":"objects/obj_collision/obj_collision.yy",},"properties":[],"rotation":0.0,"scaleX":4.0,"scaleY":0.8125,"x":256.0,"y":192.0,}, + {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_3DFDFCE0","colour":4294967295,"frozen":false,"hasCreationCode":false,"ignore":false,"imageIndex":0,"imageSpeed":1.0,"inheritCode":false,"inheritedItemId":null,"inheritItemSettings":false,"isDnd":false,"objectId":{"name":"obj_collision","path":"objects/obj_collision/obj_collision.yy",},"properties":[],"rotation":0.0,"scaleX":5.0,"scaleY":0.8125,"x":480.0,"y":96.0,}, + {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_4538CAB8","colour":4294967295,"frozen":false,"hasCreationCode":false,"ignore":false,"imageIndex":0,"imageSpeed":1.0,"inheritCode":false,"inheritedItemId":null,"inheritItemSettings":false,"isDnd":false,"objectId":{"name":"obj_collision","path":"objects/obj_collision/obj_collision.yy",},"properties":[],"rotation":0.0,"scaleX":27.0,"scaleY":1.0,"x":0.0,"y":-32.0,}, + ],"layers":[],"properties":[],"userdefinedDepth":false,"visible":true,}, + {"resourceType":"GMRInstanceLayer","resourceVersion":"1.0","name":"Instances","depth":100,"effectEnabled":true,"effectType":null,"gridX":16,"gridY":16,"hierarchyFrozen":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"inheritSubLayers":true,"inheritVisibility":true,"instances":[ + {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_7AF44202","colour":4294967295,"frozen":false,"hasCreationCode":false,"ignore":false,"imageIndex":0,"imageSpeed":1.0,"inheritCode":false,"inheritedItemId":null,"inheritItemSettings":false,"isDnd":false,"objectId":{"name":"obj_camera_sidescroller","path":"objects/obj_camera_sidescroller/obj_camera_sidescroller.yy",},"properties":[],"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"x":48.0,"y":16.0,}, + {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_3F03D43","colour":4294967295,"frozen":false,"hasCreationCode":false,"ignore":false,"imageIndex":0,"imageSpeed":1.0,"inheritCode":false,"inheritedItemId":null,"inheritItemSettings":false,"isDnd":false,"objectId":{"name":"obj_player_sidescroller","path":"objects/obj_player_sidescroller/obj_player_sidescroller.yy",},"properties":[],"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"x":80.0,"y":288.0,}, + {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_3C1837A1","colour":4294967295,"frozen":false,"hasCreationCode":false,"ignore":false,"imageIndex":0,"imageSpeed":1.0,"inheritCode":false,"inheritedItemId":null,"inheritItemSettings":false,"isDnd":false,"objectId":{"name":"obj_player_sidescroller2","path":"objects/obj_player_sidescroller2/obj_player_sidescroller2.yy",},"properties":[],"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"x":496.0,"y":304.0,}, + ],"layers":[],"properties":[],"userdefinedDepth":false,"visible":true,}, + {"resourceType":"GMRTileLayer","resourceVersion":"1.1","name":"Tiles_1","depth":200,"effectEnabled":true,"effectType":null,"gridX":16,"gridY":16,"hierarchyFrozen":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"inheritSubLayers":true,"inheritVisibility":true,"layers":[],"properties":[],"tiles":{"SerialiseHeight":15,"SerialiseWidth":27,"TileCompressedData":[ +1,25,-13,0,-12,-2147483648,2,17,25,-13,0,-12,-2147483648,2,17,25,-13,0,-12,-2147483648,2,17,25,-10,0,-3,1879048192, +6,-2147483648,44,34,34,24,46,-6,-2147483648,2,17,25,-12,0,1,1879048192,-4,-2147483648,1,33,-7,-2147483648,2,17,25,-10,0, +-3,1879048192,-4,-2147483648,1,45,-7,-2147483648,2,17,25,-7,0,6,44,24,34,46,1879048192,1879048192,-12,-2147483648,2,17,25,-8,0, +1,33,-6,0,-10,-2147483648,2,17,25,-8,0,2,45,0,-3,1879048192,1,0,-6,-2147483648,-2,0,7,44,24,34,10, +3,21,37,-13,0,-8,-2147483648,8,33,-2147483648,17,1,1,3,21,37,-9,0,1,36,-4,34,1,38,-4,-2147483648,3, +33,-2147483648,17,-4,1,1,25,-6,0,-3,-2147483648,1,33,-4,-2147483648,1,33,-4,-2147483648,3,33,-2147483648,17,-4,1,1,3, +-9,21,1,4,-4,21,10,4,21,21,22,34,32,34,10,1,5,-4,29,1,13,-7,29,1,13,-4,29, +4,9,1,1,25,-3,0,3,17,1,25,-4,0,1,33,-7,0,1,33,-4,0,4,17,1,1,25,-3, +0,1,17,],"TileDataFormat":1,},"tilesetId":{"name":"ts_pixel_side_Underwater","path":"tilesets/ts_pixel_side_Underwater/ts_pixel_side_Underwater.yy",},"userdefinedDepth":false,"visible":true,"x":0,"y":0,}, + ], + "parent": { + "name": "Rooms", + "path": "folders/Rooms.yy", + }, + "parentRoom": null, + "physicsSettings": { + "inheritPhysicsSettings": false, + "PhysicsWorld": false, + "PhysicsWorldGravityX": 0.0, + "PhysicsWorldGravityY": 10.0, + "PhysicsWorldPixToMetres": 0.1, + }, + "roomSettings": { + "Height": 480, + "inheritRoomSettings": false, + "persistent": false, + "Width": 864, + }, + "sequenceId": null, + "views": [ + {"hborder":32,"hport":240,"hspeed":-1,"hview":240,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":420,"wview":420,"xport":0,"xview":0,"yport":0,"yview":0,}, + {"hborder":32,"hport":240,"hspeed":-1,"hview":240,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":420,"wview":420,"xport":0,"xview":0,"yport":0,"yview":0,}, + {"hborder":32,"hport":240,"hspeed":-1,"hview":240,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":420,"wview":420,"xport":0,"xview":0,"yport":0,"yview":0,}, + {"hborder":32,"hport":240,"hspeed":-1,"hview":240,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":420,"wview":420,"xport":0,"xview":0,"yport":0,"yview":0,}, + {"hborder":32,"hport":240,"hspeed":-1,"hview":240,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":420,"wview":420,"xport":0,"xview":0,"yport":0,"yview":0,}, + {"hborder":32,"hport":240,"hspeed":-1,"hview":240,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":420,"wview":420,"xport":0,"xview":0,"yport":0,"yview":0,}, + {"hborder":32,"hport":240,"hspeed":-1,"hview":240,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":420,"wview":420,"xport":0,"xview":0,"yport":0,"yview":0,}, + {"hborder":32,"hport":240,"hspeed":-1,"hview":240,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":420,"wview":420,"xport":0,"xview":0,"yport":0,"yview":0,}, + ], + "viewSettings": { + "clearDisplayBuffer": true, + "clearViewBackground": false, + "enableViews": false, + "inheritViewSettings": false, + }, + "volume": 1.0, +} \ No newline at end of file diff --git a/rooms/rm_test/rm_test.yy b/rooms/rm_test/rm_test.yy index b03c8e1..8f8d78f 100644 --- a/rooms/rm_test/rm_test.yy +++ b/rooms/rm_test/rm_test.yy @@ -7,7 +7,7 @@ "inheritCreationOrder": false, "inheritLayers": false, "instanceCreationOrder": [ - {"name":"inst_6B735959","path":"rooms/rm_test/rm_test.yy",}, + {"name":"inst_28868B2A","path":"rooms/rm_test/rm_test.yy",}, {"name":"inst_4BF294D5","path":"rooms/rm_test/rm_test.yy",}, {"name":"inst_BEB4411","path":"rooms/rm_test/rm_test.yy",}, {"name":"inst_606FE50A","path":"rooms/rm_test/rm_test.yy",}, @@ -20,7 +20,7 @@ {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_BEB4411","colour":4294967295,"frozen":false,"hasCreationCode":false,"ignore":false,"imageIndex":0,"imageSpeed":1.0,"inheritCode":false,"inheritedItemId":null,"inheritItemSettings":false,"isDnd":false,"objectId":{"name":"obj_player","path":"objects/obj_player/obj_player.yy",},"properties":[],"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"x":160.0,"y":160.0,}, {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_606FE50A","colour":4294967295,"frozen":false,"hasCreationCode":false,"ignore":false,"imageIndex":0,"imageSpeed":1.0,"inheritCode":false,"inheritedItemId":null,"inheritItemSettings":false,"isDnd":false,"objectId":{"name":"obj_player2","path":"objects/obj_player2/obj_player2.yy",},"properties":[],"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"x":272.0,"y":144.0,}, {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_15296A95","colour":4294967295,"frozen":false,"hasCreationCode":false,"ignore":false,"imageIndex":0,"imageSpeed":1.0,"inheritCode":false,"inheritedItemId":null,"inheritItemSettings":false,"isDnd":false,"objectId":{"name":"obj_tv","path":"objects/obj_tv/obj_tv.yy",},"properties":[],"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"x":304.0,"y":48.0,}, - {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_6B735959","colour":4294967295,"frozen":false,"hasCreationCode":false,"ignore":false,"imageIndex":0,"imageSpeed":1.0,"inheritCode":false,"inheritedItemId":null,"inheritItemSettings":false,"isDnd":false,"objectId":{"name":"obj_camera","path":"objects/obj_camera/obj_camera.yy",},"properties":[],"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"x":208.0,"y":112.0,}, + {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_28868B2A","colour":4294967295,"frozen":false,"hasCreationCode":false,"ignore":false,"imageIndex":0,"imageSpeed":1.0,"inheritCode":false,"inheritedItemId":null,"inheritItemSettings":false,"isDnd":false,"objectId":{"name":"obj_camera","path":"objects/obj_camera/obj_camera.yy",},"properties":[],"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"x":16.0,"y":16.0,}, ],"layers":[],"properties":[],"userdefinedDepth":false,"visible":true,}, {"resourceType":"GMRTileLayer","resourceVersion":"1.1","name":"Tiles_1","depth":100,"effectEnabled":true,"effectType":null,"gridX":16,"gridY":16,"hierarchyFrozen":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"inheritSubLayers":true,"inheritVisibility":true,"layers":[],"properties":[],"tiles":{"SerialiseHeight":8,"SerialiseWidth":14,"TileCompressedData":[ -112,1,],"TileDataFormat":1,},"tilesetId":{"name":"TileSet1","path":"tilesets/TileSet1/TileSet1.yy",},"userdefinedDepth":false,"visible":true,"x":0,"y":0,}, @@ -46,7 +46,7 @@ }, "sequenceId": null, "views": [ - {"hborder":32,"hport":10,"hspeed":-1,"hview":10,"inherit":false,"objectId":null,"vborder":32,"visible":true,"vspeed":-1,"wport":10,"wview":10,"xport":0,"xview":0,"yport":0,"yview":0,}, + {"hborder":32,"hport":10,"hspeed":-1,"hview":10,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":10,"wview":10,"xport":0,"xview":0,"yport":0,"yview":0,}, {"hborder":32,"hport":240,"hspeed":-1,"hview":240,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":420,"wview":420,"xport":0,"xview":0,"yport":0,"yview":0,}, {"hborder":32,"hport":240,"hspeed":-1,"hview":240,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":420,"wview":420,"xport":0,"xview":0,"yport":0,"yview":0,}, {"hborder":32,"hport":240,"hspeed":-1,"hview":240,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":420,"wview":420,"xport":0,"xview":0,"yport":0,"yview":0,}, @@ -57,8 +57,8 @@ ], "viewSettings": { "clearDisplayBuffer": true, - "clearViewBackground": true, - "enableViews": true, + "clearViewBackground": false, + "enableViews": false, "inheritViewSettings": false, }, "volume": 1.0, diff --git a/scripts/draw_sprite_ext_tiled/draw_sprite_ext_tiled.gml b/scripts/draw_sprite_ext_tiled/draw_sprite_ext_tiled.gml new file mode 100644 index 0000000..b5da504 --- /dev/null +++ b/scripts/draw_sprite_ext_tiled/draw_sprite_ext_tiled.gml @@ -0,0 +1,15 @@ +///@description does draw_sprite_ext tiled x times on the horizontal and vertical axis +///@function draw_sprite_ext_tiled(sprite_,subimg_,x_,y_,tile_h=1,tile_v=1,xscale_=1,yscale_=1,col_=-1,alpha_=1) +function draw_sprite_ext_tiled(sprite_,subimg_,x_,y_,tile_h=1,tile_v=1,xscale_=1,yscale_=1,col_=-1,alpha_=1){ + + //horizontal + for (var h = 0; h < tile_h; ++h) { + // vertical + for (var v = 0; v < tile_v; ++v) { + var x_offset = sprite_get_width(sprite_)*xscale_; + var y_offset = sprite_get_height(sprite_)*yscale_; + draw_sprite_ext(sprite_,subimg_,x_+(x_offset*h),y_+(y_offset*v),xscale_,yscale_,0,col_,alpha_); + } + } + +} \ No newline at end of file diff --git a/scripts/draw_sprite_ext_tiled/draw_sprite_ext_tiled.yy b/scripts/draw_sprite_ext_tiled/draw_sprite_ext_tiled.yy new file mode 100644 index 0000000..dd4fb6b --- /dev/null +++ b/scripts/draw_sprite_ext_tiled/draw_sprite_ext_tiled.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "draw_sprite_ext_tiled", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "Scripts", + "path": "folders/Scripts.yy", + }, +} \ No newline at end of file diff --git a/scripts/stanncam/stanncam.gml b/scripts/stanncam/stanncam.gml index bb5a639..552ae4f 100644 --- a/scripts/stanncam/stanncam.gml +++ b/scripts/stanncam/stanncam.gml @@ -22,7 +22,7 @@ function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, __obj_stanncam_manager.number_of_cams++; array_set(global.stanncams,cam_id,self); - #endregion +#endregion #region variables x = x_; @@ -31,37 +31,50 @@ function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, width = width_; height = height_; + //offset the camera from whatever it's looking at + offset_x = 0; + offset_y = 0; + + follow = -1; + + //The extra surface is only neccesary if you are drawing the camera recursively in the room + //Like a tv screen, where it can capture itself surface_extra_on = surface_extra_on_; - spd = 10; //how fast the camera follows an object + spd = 10; //how fast the camera follows an instance spd_threshold = 50; //the minimum distance the camera is away, for the speed to be in full effect + room_constrain = false; //if camera should be constrained to the room size - //the camera bounding box, for the followed object to leave before the camera starts moving + //the camera bounding box, for the followed instance to leave before the camera starts moving bounds_w = 20; bounds_h = 20; + bounds_dist_w = 0; + bounds_dist_h = 0; //wether to use the fractional camera position when drawing the camera contents. Else it will be snapped to nearest integer smooth_draw = smooth_draw_; smooth_zoom = smooth_zoom_; - __x_frac = 0; - __y_frac = 0; + x_frac = 0; + y_frac = 0; //which animation curve to use for moving/zooming the camera anim_curve = stanncam_ac_ease; anim_curve_zoom = stanncam_ac_ease; + anim_curve_size = stanncam_ac_ease; + anim_curve_offset = stanncam_ac_ease; surface = -1; - surface_extra = -1; - follow = -1; + debug_draw = false; __destroyed = false; #region animation variables //moving + __moving = false; __xStart = x; __yStart = y; __xTo = x; @@ -69,11 +82,30 @@ function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, __duration = 0; __t = 0; + //width & height + __size_change = false; + __wStart = width; + __hStart = height; + __wTo = width; + __hTo = height; + __dimen_duration = 0; + __dimen_t = 0; + + //offset + __offset = false; + __offset_xStart = 0; + __offset_yStart = 0; + __offset_xTo = 0; + __offset_yTo = 0; + __offset_duration = 0; + __offset_t = 0; + //zoom zoom_amount = 1; - __zoom_x = 0; - __zoom_y = 0; + __zooming = false; + zoom_x = 0; + zoom_y = 0; __t_zoom = 0; __zoomStart = 0; __zoomTo = 0; @@ -86,40 +118,42 @@ function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, __shake_x = 0; __shake_y = 0; - __moving = false; - __check_surface(); __check_viewports(); - __update_resolution(); + set_size(width,height); #endregion #endregion #region Step + + /// @function __step /// @description gets called every step /// @ignore static __step = function(){ + #region moving if (instance_exists(follow)){ //update destination __xTo = follow.x; __yTo = follow.y; - var dist_w = max(bounds_w,abs(__xTo - x)) - bounds_w; - var dist_h = max(bounds_h,abs(__yTo - y)) - bounds_h; + var x_dist = (__xTo - x); + var y_dist = (__yTo - y); + + bounds_dist_w = (max(bounds_w,abs(x_dist)) - bounds_w) * sign(x_dist); + bounds_dist_h = (max(bounds_h,abs(y_dist)) - bounds_h) * sign(y_dist); //update camera position if (abs(__xTo - x) > bounds_w){ - var _spd = (dist_w/spd_threshold)*spd; - if (x < __xTo) x+=_spd; - else if (x > __xTo) x-=_spd; + var _spd = (bounds_dist_w/spd_threshold)*spd; + x+=_spd; } if (abs(y - __yTo) > bounds_h){ - var _spd = (dist_h/spd_threshold)*spd; - if (y < __yTo) y+=_spd; - else if (y > __yTo) y-=_spd; + var _spd = (bounds_dist_h/spd_threshold)*spd; + y+=_spd; } } else if(__moving){ @@ -130,6 +164,18 @@ function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, __t++; if(x == __xTo && y == __yTo) __moving = false; } + #endregion + + #region offset + if(__offset){ + //gradually offsets camera based on duration + offset_x = stanncam_animcurve(__offset_t,__offset_xStart,__offset_xTo,__offset_duration,anim_curve_offset); + offset_y = stanncam_animcurve(__offset_t,__offset_yStart,__offset_yTo,__offset_duration,anim_curve_offset); + + __offset_t++; + if(x == __offset_xTo && y == __offset_yTo) __offset = false; + } + #endregion #region screen-shake var stanncam_shake_x = stanncam_shake(__shake_time,__shake_magnitude,__shake_length); @@ -139,93 +185,226 @@ function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, __shake_time++; #endregion - #region constrains camera to room bounds - if(room_constrain){ - x = clamp(x,(width/2),room_width -(width/2)); - y = clamp(y,(height/2),room_height-(height/2)); - } - #endregion - - #region zooming - if(__zooming){ - //gradually zooms camera - zoom_amount = stanncam_animcurve(__t_zoom,__zoomStart,__zoomTo,__zoom_duration,anim_curve_zoom); - __t_zoom++; - - // if smooth zoom is off maintains pixel perfection even when zooming in and out - // if on it is handled by the draw events - if(smooth_zoom){ - //When zooming in, the surface will be shrinked when the zooming is done - //When zooming out, the surface will be enlarged immedietly - if(__zoomTo >= zoom_amount){ - var ceiled_zoom = ceil(__zoomTo); //ensures the new surface size is a whole number - surface_resize(surface,width*ceiled_zoom,height*ceiled_zoom); - camera_set_view_size(view_camera[cam_id],width*ceiled_zoom,height*ceiled_zoom); - - __update_resolution(); - } + #region update camera dimensions + if(__zooming || __size_change){ + if(__size_change){ + //gradually resizes camera + width = stanncam_animcurve(__dimen_t,__wStart,__wTo,__dimen_duration,anim_curve_size); + height = stanncam_animcurve(__dimen_t,__hStart,__hTo,__dimen_duration,anim_curve_size); + + __dimen_t++; + + if(width == __wTo && height == __hTo) __size_change = false; } - else camera_set_view_size(view_camera[cam_id],width*zoom_amount,height*zoom_amount); - - __zoom_x = ((width *zoom_amount) - width)/2; - __zoom_y = ((height*zoom_amount) - height)/2; - if(zoom_amount == __zoomTo) __zooming = false; + if(__zooming){ + //gradually zooms camera + zoom_amount = stanncam_animcurve(__t_zoom,__zoomStart,__zoomTo,__zoom_duration,anim_curve_zoom); + __t_zoom++; + + if(zoom_amount == __zoomTo) __zooming = false; + } + zoom_x = ((width *zoom_amount) - width)/2; + zoom_y = ((height*zoom_amount) - height)/2; + } + + //if smooth zoom is off maintains pixel perfection even when zooming in and out + //if on it is handled by the draw events + if(smooth_zoom){ + var ceiled_zoom = ceil(zoom_amount); //ensures the new surface size is a whole number + var new_width = width *ceiled_zoom; + var new_height = height*ceiled_zoom; + } else { + var new_width = width *zoom_amount; + var new_height = height*zoom_amount; + } + + //only runs if the size has changed + if(surface_get_width(surface) != new_width || surface_get_height(surface) != new_height){ + __check_surface(); + surface_resize(surface, new_width,new_height); + camera_set_view_size(view_camera[cam_id],new_width,new_height); } #endregion + #region update camera position //update camera view - var new_x = x - (width / 2) - __zoom_x + __shake_x; - var new_y = y - (height / 2) - __zoom_y + __shake_y; + var new_x = x + offset_x - (width / 2) + __shake_x; + var new_y = y + offset_y - (height / 2) + __shake_y; + + //Constrains camera to room + if(room_constrain){ + constrain_offset_x = (clamp(new_x,0,room_width -width) - new_x) * clamp(zoom_amount,0,1); + constrain_offset_y = (clamp(new_y,0,room_height-height) - new_y) * clamp(zoom_amount,0,1); + + new_x += constrain_offset_x; + new_y += constrain_offset_y; + } else { + constrain_offset_x = 0; + constrain_offset_y = 0; + } + + //apply zoom offset + new_x -= zoom_x; + new_y -= zoom_y; //seperates position into whole and fractional parts if(smooth_draw == true){ - __x_frac = frac(new_x); - __y_frac = frac(new_y); + x_frac = frac(new_x); + y_frac = frac(new_y); } else { - __x_frac = 0; - __y_frac = 0; + x_frac = 0; + y_frac = 0; } new_x = floor(abs(new_x)) * sign(new_x); new_y = floor(abs(new_y)) * sign(new_y); camera_set_view_pos(view_camera[cam_id], new_x, new_y); + #endregion } #endregion #region Drawing functions + + /// @function __debug_draw + /// @description draws debug information + /// @ignore + static __debug_draw = function(){ + if(debug_draw){ + //draws camera bounding box + if(follow != -1){ + surface_set_target(surface); + + var pre_color = draw_get_color(); + + var x1 = (width /2) - bounds_w - offset_x - constrain_offset_x + zoom_x; + var x2 = (width /2) + bounds_w - offset_x - constrain_offset_x + zoom_x; + var y1 = (height/2) - bounds_h - offset_y - constrain_offset_y + zoom_y; + var y2 = (height/2) + bounds_h - offset_y - constrain_offset_y + zoom_y; + draw_set_color(c_white); + draw_rectangle(x1,y1,x2,y2,true); + + + draw_set_color(c_red); + + //top + if(bounds_dist_h != 0){ + if(bounds_dist_h < 0) { + draw_line(x1,y1,x2,y1); + //bottom + } else { + draw_line(x1,y2,x2,y2); + } + } + + //left + if(bounds_dist_w != 0){ + if(bounds_dist_w < 0) { + draw_line(x1,y1,x1,y2); + //right + } else { + draw_line(x2,y1,x2,y2); + } + } + + draw_set_color(pre_color); + surface_reset_target(); + } + } + } + /// @function draw + /// @description draws stanncam /// @param {Real} x_ /// @param {Real} y_ /// @param {Real} [scale_x_=1] /// @param {Real} [scale_y_=1] + /// @ignore static draw = function(x_,y_,scale_x_ = 1, scale_y_ = 1){ __check_surface(); - //offsets position to match with display resoultion - x_ *= (__obj_stanncam_manager.display_res_w / global.game_w); - y_ *= (__obj_stanncam_manager.display_res_h / global.game_h); + __debug_draw(); + draw_surf(surface,x_,y_,scale_x_,scale_y_,0,0,width*zoom_amount,height*zoom_amount); + } + + /// @function draw_part + /// @description draws part of stanncam + /// @param {Real} x_ + /// @param {Real} y_ + /// @param {Real} [scale_x_=1] + /// @param {Real} [scale_y_=1] + /// @ignore + static draw_part = function(x_,y_,scale_x_ = 1, scale_y_ = 1,left_,top_,width_,height_){ + __check_surface(); + __debug_draw(); + draw_surf(surface,x_,y_,scale_x_,scale_y_,left_,top_,width_,height_); + } + + /// @function draw_special + /// @description pass in draw commands, and have them be scaled to match the stanncam + /// @param {function} draw_func + /// @param {Real} x_ + /// @param {Real} y_ + /// @param {Real} [width of special surface] + /// @param {Real} [height of special surface] + /// @param {Real} [scale_x_=1] + /// @param {Real} [scale_y_=1] + /// @ignore + static draw_special = function(draw_func,x_,y_,surf_width_=width,surf_height_=height,scale_x_ = 1, scale_y_ = 1){ + + var surface_special = surface_create(surf_width_,surf_height_); + surface_set_target(surface_special); + draw_clear_alpha(c_black,0); + draw_func(); - x_ += stanncam_fullscreen_ratio_compensate(); + surface_reset_target(); + var part_width_ = min(surface_get_width(surface_special),width*zoom_amount/scale_x_); + var part_height_ = min(surface_get_height(surface_special),height*zoom_amount/scale_y_); + draw_surf(surface_special,x_,y_,scale_x_,scale_y_,0,0,part_width_,part_height_); + surface_free(surface_special); + } + + /// @function draw_surf + /// @description draws the supplied surface with the proper size and scaling + /// @param {surface} surface_ + /// @param {Real} x_ + /// @param {Real} y_ + /// @param {Real} [scale_x_=1] + /// @param {Real} [scale_y_=1] + /// @param {Real} [left_=0] + /// @param {Real} [top_=0] + /// @param {Real} [width_=surface width] + /// @param {Real} [height_=surface height] + /// @ignore + static draw_surf = function(surface_,x_,y_,scale_x_ = 1,scale_y_ = 1,left_ = 0, top_ = 0, width_ = surface_get_width(surface_),height_ = surface_get_height(surface_)){ - var w_ = surface_get_width(surface); - var h_ = surface_get_height(surface); + //offsets position to match with display resoultion + x_ *= (global.res_w / global.game_w); + y_ *= (global.res_h / global.game_h); + x_ += stanncam_fullscreen_ratio_compensate_x(); + y_ += stanncam_fullscreen_ratio_compensate_y(); + if(smooth_zoom){ //if smooth zoom is on, it scales the entire surface when drawn scale_x_/= zoom_amount; scale_y_/= zoom_amount; } - draw_surface_part_ext(surface,__x_frac,__y_frac,w_,h_,x_,y_,__display_scale_x*scale_x_,__display_scale_y*scale_y_,-1,1); + draw_surface_part_ext(surface_,x_frac+left_,y_frac+top_,width_,height_,x_,y_,__obj_stanncam_manager.__display_scale_x*scale_x_,__obj_stanncam_manager.__display_scale_y*scale_y_,-1,1); } #endregion #region Dynamic functions + /// @function clone /// @description returns a clone of the stanncam /// @returns {Struct.stanncam} + /// @ignore static clone = function(){ var clone = new stanncam(x,y,width,height); + clone.surface_extra_on = surface_extra_on; + clone.offset_x = offset_x; + clone.offset_y = offset_y; clone.spd = spd; clone.spd_threshold = spd_threshold; clone.room_constrain = room_constrain; @@ -235,111 +414,159 @@ function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, clone.smooth_draw = smooth_draw; clone.smooth_zoom = smooth_zoom; clone.anim_curve = anim_curve; - clone.anim_curve_zoom= anim_curve_zoom; + clone.anim_curve_zoom = anim_curve_zoom; + clone.anim_curve_offset =anim_curve_offset; + clone.anim_curve_size = anim_curve_size; return clone; } - /// @description sets the camera size - /// @param {Real} _width - /// @param {Real} _height - static set_size = function(_width,_height){ - width = _width; - height = _height; - surface_resize(surface,width,height); - __update_resolution(); - camera_set_view_size(view_camera[cam_id],width*zoom_amount,height*zoom_amount); - } - - /// @description makes the camera shake - /// @param {Real} magnitude - /// @param {Real} duration - duration in frames - static shake_screen = function(magnitude, duration) { - __shake_magnitude =+ magnitude; - __shake_length =+ duration; - __shake_time = 0; - } - + /// @function move /// @description moves the camera to a position over a duration /// @param {Real} _x /// @param {Real} _y /// @param {Real} [_duration=0] + /// @ignore static move = function(_x, _y, _duration = 0){ + __moving = true; + __t = 0; + __xStart = x; + __yStart = y; + + __xTo = _x; + __yTo = _y; + __duration = _duration; + } + + /// @function set_size + /// @description sets the camera dimensions + /// @param {Real} _width + /// @param {Real} _height + /// @param {Real} _duration + /// @ignore + static set_size = function(_width,_height, _duration = 0){ if(_duration == 0){ - x = _x; - y = _y; - - var new_x = x - ((width / 2) + __shake_x + __zoom_x); - var new_y = y - ((height / 2) + __shake_y + __zoom_y); - - camera_set_view_pos(view_camera[cam_id], new_x, new_y); - }else{ - __moving = true; - __t = 0; - __xStart = x; - __yStart = y; + width = _width; + height = _height; + zoom_x = ((width *zoom_amount) - width)/2; + zoom_y = ((height*zoom_amount) - height)/2; + } else { + __size_change = true; + __dimen_t = 0; + __wStart = width; + __hStart = height; - __xTo = _x; - __yTo = _y; - __duration = _duration; + __wTo = _width; + __hTo = _height; + __dimen_duration = _duration; } } + /// @function offset + /// @description offsets the camera over a duration + /// @param {Real} _offset_x + /// @param {Real} _offset_y + /// @param {Real} [_duration=0] + /// @ignore + static offset = function(_offset_x, _offset_y, _duration = 0){ + __offset = true; + __offset_t = 0; + __offset_xStart = offset_x; + __offset_yStart = offset_y; + + __offset_xTo = _offset_x; + __offset_yTo = _offset_y; + __offset_duration = _duration; + } + + /// @function zoom /// @description zooms the camera over a duration /// @param {Real} _zoom /// @param {Real} _duration + /// @ignore static zoom = function(_zoom, _duration){ - __zooming = true; - __t_zoom = 0; - __zoomStart = zoom_amount; - __zoomTo = _zoom; - __zoom_duration = _duration; + if(_duration == 0){ + zoom_amount = _zoom; + zoom_x = ((width *zoom_amount) - width)/2; + zoom_y = ((height*zoom_amount) - height)/2; + } else { + __zooming = true; + __t_zoom = 0; + __zoomStart = zoom_amount; + __zoomTo = _zoom; + __zoom_duration = _duration; + } + } + + /// @function shake_screen + /// @description makes the camera shake + /// @param {Real} magnitude + /// @param {Real} duration - duration in frames + /// @ignore + static shake_screen = function(magnitude, duration) { + __shake_magnitude =+ magnitude; + __shake_length =+ duration; + __shake_time = 0; } + /// @function set_speed /// @description changes the speed of the camera /// @param {Real} _spd - how fast the camera can move /// @param {Real} threshold - minimum distance for the speed to have full effect + /// @ignore static set_speed = function(_spd,threshold){ spd = _spd; spd_threshold = threshold; } + /// @function get_x /// @description get camera corner x position. if need the middle of the camera use x /// @returns {Real} + /// @ignore static get_x = function(){ return camera_get_view_x(view_camera[cam_id]); } + /// @function get_y /// @description get camera corner y position. if need the middle of the camera use y /// @returns {Real} + /// @ignore static get_y = function(){ return camera_get_view_y(view_camera[cam_id]); } + /// @function get_mouse_x /// @description gets the mouse x position within room relative to the camera /// @returns {Real} + /// @ignore static get_mouse_x = function(){ - return (((display_mouse_get_x() - window_get_x() - stanncam_fullscreen_ratio_compensate()) / (__display_scale_x * width)) * width * zoom_amount) + get_x(); + return (((display_mouse_get_x() - window_get_x() - stanncam_fullscreen_ratio_compensate_x()) / (__obj_stanncam_manager.__display_scale_x * width)) * width * zoom_amount) + get_x(); } + /// @function get_mouse_y /// @description gets the mouse y position within room relative to the camera /// @returns {Real} + /// @ignore static get_mouse_y = function(){ - return (((display_mouse_get_y() - window_get_y()) / (__display_scale_y * height)) * height * zoom_amount) + get_y(); + return (((display_mouse_get_y() - window_get_y() - stanncam_fullscreen_ratio_compensate_y()) / (__obj_stanncam_manager.__display_scale_y * height)) * height * zoom_amount) + get_y(); } + /// @function room_to_gui_x /// @description returns the room x position as the position on the gui relative to camera /// @param {Real} x_ /// @returns {Real} + /// @ignore static room_to_gui_x = function(x_){ - return (x_-get_x()-__x_frac)*stanncam_get_gui_scale_x()/zoom_amount; + return (x_-get_x()-x_frac)*stanncam_get_gui_scale_x()/zoom_amount; } + /// @function room_to_gui_y /// @description returns the room y position as the position on the gui relative to camera /// @param {Real} y_ /// @returns {Real} + /// @ignore static room_to_gui_y = function(y_){ - return (y_-get_y()-__y_frac)*stanncam_get_gui_scale_y()/zoom_amount; + return (y_-get_y()-y_frac)*stanncam_get_gui_scale_y()/zoom_amount; } /// @description returns the room x position as the position on the display relative to camera @@ -356,11 +583,13 @@ function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, // return (y_-get_y())*stanncam_get_res_scale_y()/zoom_amount; //} + /// @function out_of_bounds /// @description returns if the position is outside camera bounds /// @param {Real} x_ /// @param {Real} y_ /// @param {Real} [margin=0] the margin for the camera bounds /// @returns {Bool} + /// @ignore static out_of_bounds = function(x_,y_,margin = 0){ var col = ( //uses bounding box to see if it's within the camera view @@ -373,6 +602,9 @@ function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, return col; } + /// @function destroy + /// @description marks the stanncam as destroyed + /// @ignore static destroy = function(){ follow = -1; array_set(global.stanncams,cam_id,-1); @@ -381,7 +613,9 @@ function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, __destroyed = true; } + /// @function is_destroyed /// @returns {Bool} + /// @ignore static is_destroyed = function(){ return __destroyed; } @@ -389,14 +623,18 @@ function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, #region Internal functions + /// @function __check_viewports /// @description enables viewports and sets viewports size /// @ignore static __check_viewports = function(){ view_visible[cam_id] = true; - set_size(width,height); + __check_surface(); + surface_resize(surface, width*zoom_amount,height*zoom_amount); + camera_set_view_size(view_camera[cam_id],width*zoom_amount,height*zoom_amount); } - /// @descriptionchecks if surface_extra exists and else creates it and attaches it + /// @function __check_surface + /// @description checks if surface_extra exists and else creates it and attaches it /// @ignore static __check_surface = function(){ if (!surface_exists(surface)){ @@ -408,15 +646,7 @@ function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, } } - /// @description updates cameras drawing resolution - /// @ignore - static __update_resolution = function(){ - __display_scale_x = __obj_stanncam_manager.display_res_w / global.game_w; - __display_scale_y = __obj_stanncam_manager.display_res_h / global.game_h; - - view_set_camera(cam_id, view_camera[cam_id]); - } - + /// @function __predraw /// @description clears the surface /// @ignore static __predraw = function(){ @@ -430,4 +660,4 @@ function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, view_set_surface_id(cam_id,surface); } #endregion -} +} \ No newline at end of file diff --git a/scripts/stanncam_manager/stanncam_manager.gml b/scripts/stanncam_manager/stanncam_manager.gml index eadbf02..1358fa9 100644 --- a/scripts/stanncam_manager/stanncam_manager.gml +++ b/scripts/stanncam_manager/stanncam_manager.gml @@ -1,3 +1,9 @@ +enum STANNCAM_WINDOW_MODE{ + windowed, + fullscreen, + borderless +} + /// @function stanncam_init /// @description set game dimensions, display resolution, and gui dimensions, it's the same as game scale by default /// @param {Real} game_w @@ -6,7 +12,12 @@ /// @param {Real} [resolution_h=game_h] /// @param {Real} [gui_w=game_w] /// @param {Real} [gui_h=game_h] -function stanncam_init(game_w,game_h,resolution_w=game_w,resolution_h=game_h,gui_w=game_w,gui_h=game_h){ +/// @param {STANNCAM_WINDOW_MODE} [window_mode=windowed] +function stanncam_init(game_w,game_h,resolution_w=game_w,resolution_h=game_h,gui_w=game_w,gui_h=game_h,window_mode = STANNCAM_WINDOW_MODE.windowed){ + + //if one already exists it is destroyed + if(instance_exists(__obj_stanncam_manager)) instance_destroy(__obj_stanncam_manager); + instance_create_layer(0,0,"instances",__obj_stanncam_manager); global.stanncams = array_create(8,-1); global.game_w = game_w; @@ -15,36 +26,84 @@ function stanncam_init(game_w,game_h,resolution_w=game_w,resolution_h=game_h,gui global.gui_h = gui_h; global.res_w = resolution_w; global.res_h = resolution_h; + global.window_mode = window_mode; for (var i = 0; i < array_length(view_camera); ++i) { camera_destroy(view_camera[i]); } application_surface_draw_enable(false); - __stanncam_update_resolution(); + + __obj_stanncam_manager.display_res_w = resolution_w; + __obj_stanncam_manager.display_res_h = resolution_h; + stanncam_set_window_mode(window_mode); + + __obj_stanncam_manager.resize_width = window_get_width(); + __obj_stanncam_manager.resize_height = window_get_height(); } /// @function stanncam_set_resolution -/// @description updates the camera resolution +/// @description updates the camera resolution, has no visible effect when fullscreened /// @param {Real} resolution_w /// @param {Real} resolution_h function stanncam_set_resolution(resolution_w,resolution_h){ - global.res_w = resolution_w; - global.res_h = resolution_h; + __obj_stanncam_manager.display_res_w = resolution_w; + __obj_stanncam_manager.display_res_h = resolution_h; + window_set_size(resolution_w, resolution_h); __stanncam_update_resolution(); } -/// @function stanncam_toggle_fullscreen -/// @description toggle fullscreen on/off -function stanncam_toggle_fullscreen(){ - window_set_fullscreen(!window_get_fullscreen()); - __stanncam_update_resolution(); +/// @function stanncam_set_window_mode(window_mode) +/// @param {STANNCAM_WINDOW_MODE} window_mode +/// @description set game to be windowed/fullscreen/borderless +function stanncam_set_window_mode(window_mode){ + global.window_mode = window_mode; + switch (window_mode) { + case STANNCAM_WINDOW_MODE.windowed: + window_set_fullscreen(false); + window_set_showborder(true); + + window_set_size(__obj_stanncam_manager.display_res_w, __obj_stanncam_manager.display_res_h); + __stanncam_center(20,20); + + break; + case STANNCAM_WINDOW_MODE.fullscreen: + window_set_fullscreen(true); + window_set_showborder(false); + break; + case STANNCAM_WINDOW_MODE.borderless: + window_set_fullscreen(false); + window_set_showborder(false); + break; + } + call_later(10,time_source_units_frames,function(){ + __stanncam_update_resolution(); + }); } -/// @function stanncam_toggle_keep_aspect_ratio -/// @description toggle display keep_aspect_ratio -function stanncam_toggle_keep_aspect_ratio(){ - __obj_stanncam_manager.keep_aspect_ratio = !__obj_stanncam_manager.keep_aspect_ratio; +/// @function stanncam_set_windowed() +/// @description set windowed +function stanncam_set_windowed(){ + stanncam_set_window_mode(STANNCAM_WINDOW_MODE.windowed); +} + +/// @function stanncam_set_fullscreen() +/// @description set fullscreen +function stanncam_set_fullscreen(){ + stanncam_set_window_mode(STANNCAM_WINDOW_MODE.fullscreen); +} + +/// @function stanncam_set_borderless() +/// @description set borderless +function stanncam_set_borderless(){ + stanncam_set_window_mode(STANNCAM_WINDOW_MODE.borderless); +} + +/// @function stanncam_set_keep_aspect_ratio(on_off) +/// @param {boolean} on_off +/// @description set display keep_aspect_ratio +function stanncam_set_keep_aspect_ratio(on_off){ + __obj_stanncam_manager.keep_aspect_ratio = on_off; __stanncam_update_resolution(); } @@ -55,12 +114,21 @@ function stanncam_get_keep_aspect_ratio(){ return __obj_stanncam_manager.keep_aspect_ratio; } -/// @function stanncam_fullscreen_ratio_compensate +/// @function stanncam_fullscreen_ratio_compensate_x /// @description if fullscreen keep_aspect_ratio is on it offsets the x value so the render is in the middle /// @returns {Real} -function stanncam_fullscreen_ratio_compensate(){ - if(stanncam_get_keep_aspect_ratio() && window_get_fullscreen()){ - return (display_get_width() - __obj_stanncam_manager.display_res_w)/2; +function stanncam_fullscreen_ratio_compensate_x(){ + if(stanncam_get_keep_aspect_ratio()){ + return (window_get_width() - (global.game_w*__obj_stanncam_manager.__display_scale_x))/2; + } else return 0; +} + +/// @function stanncam_fullscreen_ratio_compensate_y +/// @description if fullscreen keep_aspect_ratio is on it offsets the y value so the render is in the middle +/// @returns {Real} +function stanncam_fullscreen_ratio_compensate_y(){ + if(stanncam_get_keep_aspect_ratio()){ + return (window_get_height() - (global.game_h*__obj_stanncam_manager.__display_scale_y))/2; } else return 0; } @@ -92,50 +160,131 @@ function stanncam_get_gui_scale_y(){ /// @description gets how much bigger res is from game /// @returns {Real} function stanncam_get_res_scale_x(){ - return __obj_stanncam_manager.display_res_w / global.game_w; + return global.res_w / global.game_w; } /// @function stanncam_get_res_scale_y /// @description gets how much bigger res is from game /// @returns {Real} function stanncam_get_res_scale_y(){ - return __obj_stanncam_manager.display_res_h / global.game_h; + return global.res_h / global.game_h; } /// @function __stanncam_update_resolution /// @description updates the camera resolution /// @ignore function __stanncam_update_resolution(){ - if(window_get_fullscreen()) { - if(__obj_stanncam_manager.keep_aspect_ratio){ - var ratio = global.game_w / global.game_h; - __obj_stanncam_manager.display_res_w = display_get_height() * ratio; - __obj_stanncam_manager.display_res_h = display_get_height(); - } else { - __obj_stanncam_manager.display_res_w = display_get_width(); - __obj_stanncam_manager.display_res_h = display_get_height(); - } - } else { - if(__obj_stanncam_manager.keep_aspect_ratio){ - var ratio = global.game_w / global.game_h; - __obj_stanncam_manager.display_res_w = global.res_h * ratio; - __obj_stanncam_manager.display_res_h = global.res_h; + + switch (global.window_mode) { + //fullscreen + case STANNCAM_WINDOW_MODE.fullscreen: + if(__obj_stanncam_manager.keep_aspect_ratio){ + var ratio = global.game_w / global.game_h; + global.res_w = display_get_height() * ratio; + global.res_h = display_get_height(); + } else { + global.res_w = display_get_width(); + global.res_h = display_get_height(); + } + window_set_size(display_get_width(), display_get_height()); + __stanncam_center(); + break; + //borderless windowed + case STANNCAM_WINDOW_MODE.borderless: + if(__obj_stanncam_manager.keep_aspect_ratio){ + var ratio = global.game_w / global.game_h; + global.res_w = display_get_height() * ratio; + global.res_h = display_get_height(); + } else { + global.res_w = display_get_width(); + global.res_h = display_get_height(); + } + + window_set_size(display_get_width(), display_get_height()); + __stanncam_center(); + break; + + //windowed + case STANNCAM_WINDOW_MODE.windowed: + + if(__obj_stanncam_manager.keep_aspect_ratio){ + var res_ratio = (__obj_stanncam_manager.display_res_w / __obj_stanncam_manager.display_res_h) / (global.game_w / global.game_h); + var game_ratio = global.game_w / global.game_h; + if(res_ratio > 1){ + global.res_w = __obj_stanncam_manager.display_res_h * game_ratio; + global.res_h = __obj_stanncam_manager.display_res_h; + } else { + global.res_w = __obj_stanncam_manager.display_res_w; + global.res_h = __obj_stanncam_manager.display_res_w * game_ratio; + } + } else { + global.res_w = __obj_stanncam_manager.display_res_w; + global.res_h = __obj_stanncam_manager.display_res_h; + } + break; + } + + with(__obj_stanncam_manager){ + if(stanncam_get_keep_aspect_ratio()){ + var ratio = (global.res_w / global.res_h) / (global.game_w / global.game_h); + if(ratio > 1){ + __display_scale_x = global.res_h / global.game_h; + __display_scale_y = __display_scale_x; + var gui_x_scale = global.res_h / global.gui_h; + var gui_y_scale = gui_x_scale; + } else { + __display_scale_x = global.res_w / global.game_w; + __display_scale_y = __display_scale_x; + var gui_x_scale = global.res_w / global.gui_w; + var gui_y_scale = gui_x_scale; + } } else { - __obj_stanncam_manager.display_res_w = global.res_w; - __obj_stanncam_manager.display_res_h = global.res_h; + __display_scale_x = global.res_w / global.game_w; + __display_scale_y = global.res_h / global.game_h; + var gui_x_scale = global.res_w / global.gui_w; + var gui_y_scale = global.res_h / global.gui_h; } - - window_set_size(__obj_stanncam_manager.display_res_w, __obj_stanncam_manager.display_res_h); + display_set_gui_maximize(gui_x_scale,gui_y_scale,stanncam_fullscreen_ratio_compensate_x(),stanncam_fullscreen_ratio_compensate_y()); } +} + +/// @function __stanncam_center +/// @description moves the window to the center of whichever window it's within +/// @param {int} x_ offset +/// @param {int} y_ offset +/// @ignore +function __stanncam_center(x_ = 0,y_ = 0){ + var wx = window_get_x(); + var wy = window_get_y(); + var ww = window_get_width(); + var wh = window_get_height(); + var display_data = window_get_visible_rects(wx, wy, wx + ww, wy + wh); + var display_num = array_length(display_data) / 8; - var gui_x_scale = __obj_stanncam_manager.display_res_w / global.gui_w; - var gui_y_scale = __obj_stanncam_manager.display_res_h / global.gui_h; + //deletes all the overlay data as it's not needed + for (var i = 0; i < display_num; ++i) { + array_delete(display_data,i*4,4) + } - display_set_gui_maximize(gui_x_scale,gui_y_scale,stanncam_fullscreen_ratio_compensate()); - //surface_resize(application_surface, display_get_gui_width(), display_get_gui_height()) + var middle_x = wx + (ww/2); + var middle_y = wy + (wh/2); - for (var i = 0; i < array_length(global.stanncams); ++i) { - if (global.stanncams[i] == -1) continue; - global.stanncams[i].__update_resolution(); + var outside_view = true; + //checks which monitor the window is within + for (var i = 0; i < display_num; ++i) { + var x1 = display_data[(i*4)+0]; + var y1 = display_data[(i*4)+1]; + var x2 = display_data[(i*4)+2]; + var y2 = display_data[(i*4)+3]; + + if(middle_x > x1 && middle_x < x2 && middle_y > y1 && middle_y < y2){ + window_set_position(x1+x_,y1+y_); + outside_view = false; + break; + } } -} + //in case it somehow appears outside any of the monitors views it will go back to the first monitor + if(outside_view){ + window_set_position(x_,y_); + } +} \ No newline at end of file diff --git a/sprites/spr_arrow/spr_arrow.yy b/sprites/spr_arrow/spr_arrow.yy index 1a65770..55580fc 100644 --- a/sprites/spr_arrow/spr_arrow.yy +++ b/sprites/spr_arrow/spr_arrow.yy @@ -27,8 +27,8 @@ "nineSlice": null, "origin": 1, "parent": { - "name": "Sprites", - "path": "folders/Sprites.yy", + "name": "gui", + "path": "folders/Sprites/gui.yy", }, "preMultiplyAlpha": false, "sequence": { diff --git a/sprites/spr_arrow_small/spr_arrow_small.yy b/sprites/spr_arrow_small/spr_arrow_small.yy index 12d1890..3cc437a 100644 --- a/sprites/spr_arrow_small/spr_arrow_small.yy +++ b/sprites/spr_arrow_small/spr_arrow_small.yy @@ -26,8 +26,8 @@ "nineSlice": null, "origin": 1, "parent": { - "name": "Sprites", - "path": "folders/Sprites.yy", + "name": "gui", + "path": "folders/Sprites/gui.yy", }, "preMultiplyAlpha": false, "sequence": { diff --git a/sprites/spr_bg/spr_bg.yy b/sprites/spr_bg/spr_bg.yy index 2136090..2d24bd1 100644 --- a/sprites/spr_bg/spr_bg.yy +++ b/sprites/spr_bg/spr_bg.yy @@ -26,8 +26,8 @@ "nineSlice": null, "origin": 0, "parent": { - "name": "Sprites", - "path": "folders/Sprites.yy", + "name": "tile", + "path": "folders/Sprites/tile.yy", }, "preMultiplyAlpha": false, "sequence": { diff --git a/sprites/spr_collision/a365953c-c44b-4b88-90e8-ef1d5b51a19e.png b/sprites/spr_collision/a365953c-c44b-4b88-90e8-ef1d5b51a19e.png new file mode 100644 index 0000000..dfcb4f3 Binary files /dev/null and b/sprites/spr_collision/a365953c-c44b-4b88-90e8-ef1d5b51a19e.png differ diff --git a/sprites/spr_collision/b5e8d5bb-c127-4d8b-8514-dca5179f5af3.png b/sprites/spr_collision/b5e8d5bb-c127-4d8b-8514-dca5179f5af3.png new file mode 100644 index 0000000..b406634 Binary files /dev/null and b/sprites/spr_collision/b5e8d5bb-c127-4d8b-8514-dca5179f5af3.png differ diff --git a/sprites/spr_collision/cfa456cb-3dc7-444f-adfe-20f18d1fc6d3.png b/sprites/spr_collision/cfa456cb-3dc7-444f-adfe-20f18d1fc6d3.png new file mode 100644 index 0000000..2fc341a Binary files /dev/null and b/sprites/spr_collision/cfa456cb-3dc7-444f-adfe-20f18d1fc6d3.png differ diff --git a/sprites/spr_collision/layers/a365953c-c44b-4b88-90e8-ef1d5b51a19e/4a98bca5-875b-452d-9fec-1b80c036d5f2.png b/sprites/spr_collision/layers/a365953c-c44b-4b88-90e8-ef1d5b51a19e/4a98bca5-875b-452d-9fec-1b80c036d5f2.png new file mode 100644 index 0000000..920930d Binary files /dev/null and b/sprites/spr_collision/layers/a365953c-c44b-4b88-90e8-ef1d5b51a19e/4a98bca5-875b-452d-9fec-1b80c036d5f2.png differ diff --git a/sprites/spr_collision/layers/a365953c-c44b-4b88-90e8-ef1d5b51a19e/79bf20b2-e262-4265-8a1a-d57f21af8b6a.png b/sprites/spr_collision/layers/a365953c-c44b-4b88-90e8-ef1d5b51a19e/79bf20b2-e262-4265-8a1a-d57f21af8b6a.png new file mode 100644 index 0000000..0fb6d15 Binary files /dev/null and b/sprites/spr_collision/layers/a365953c-c44b-4b88-90e8-ef1d5b51a19e/79bf20b2-e262-4265-8a1a-d57f21af8b6a.png differ diff --git a/sprites/spr_collision/layers/b5e8d5bb-c127-4d8b-8514-dca5179f5af3/1424c1da-6011-424b-b805-a58db26d7bcc.png b/sprites/spr_collision/layers/b5e8d5bb-c127-4d8b-8514-dca5179f5af3/1424c1da-6011-424b-b805-a58db26d7bcc.png new file mode 100644 index 0000000..6d5054f Binary files /dev/null and b/sprites/spr_collision/layers/b5e8d5bb-c127-4d8b-8514-dca5179f5af3/1424c1da-6011-424b-b805-a58db26d7bcc.png differ diff --git a/sprites/spr_collision/layers/cfa456cb-3dc7-444f-adfe-20f18d1fc6d3/4a98bca5-875b-452d-9fec-1b80c036d5f2.png b/sprites/spr_collision/layers/cfa456cb-3dc7-444f-adfe-20f18d1fc6d3/4a98bca5-875b-452d-9fec-1b80c036d5f2.png new file mode 100644 index 0000000..918253c Binary files /dev/null and b/sprites/spr_collision/layers/cfa456cb-3dc7-444f-adfe-20f18d1fc6d3/4a98bca5-875b-452d-9fec-1b80c036d5f2.png differ diff --git a/sprites/spr_collision/layers/cfa456cb-3dc7-444f-adfe-20f18d1fc6d3/79bf20b2-e262-4265-8a1a-d57f21af8b6a.png b/sprites/spr_collision/layers/cfa456cb-3dc7-444f-adfe-20f18d1fc6d3/79bf20b2-e262-4265-8a1a-d57f21af8b6a.png new file mode 100644 index 0000000..0fb6d15 Binary files /dev/null and b/sprites/spr_collision/layers/cfa456cb-3dc7-444f-adfe-20f18d1fc6d3/79bf20b2-e262-4265-8a1a-d57f21af8b6a.png differ diff --git a/sprites/spr_collision/spr_collision.yy b/sprites/spr_collision/spr_collision.yy new file mode 100644 index 0000000..cc314b2 --- /dev/null +++ b/sprites/spr_collision/spr_collision.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "spr_collision", + "bbox_bottom": 31, + "bbox_left": 0, + "bbox_right": 31, + "bbox_top": 0, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"b5e8d5bb-c127-4d8b-8514-dca5179f5af3",}, + ], + "gridX": 0, + "gridY": 0, + "height": 32, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"1424c1da-6011-424b-b805-a58db26d7bcc","blendMode":0,"displayName":"default","isLocked":false,"opacity":50.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 0, + "parent": { + "name": "tile", + "path": "folders/Sprites/tile.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "spr_collision", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "playback": 1, + "playbackSpeed": 1.0, + "playbackSpeedType": 1, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"b5e8d5bb-c127-4d8b-8514-dca5179f5af3","path":"sprites/spr_collision/spr_collision.yy",},},},"Disabled":false,"id":"b812eb00-8d23-447a-9c1b-e024f98aeb23","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, + ], + "visibleRange": null, + "volume": 1.0, + "xorigin": 0, + "yorigin": 0, + }, + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "type": 0, + "VTile": false, + "width": 32, +} \ No newline at end of file diff --git a/sprites/spr_pengu/a2ef49bc-93ae-4ff2-8bb0-6be755f719dd.png b/sprites/spr_pengu/a2ef49bc-93ae-4ff2-8bb0-6be755f719dd.png new file mode 100644 index 0000000..b8b475b Binary files /dev/null and b/sprites/spr_pengu/a2ef49bc-93ae-4ff2-8bb0-6be755f719dd.png differ diff --git a/sprites/spr_pengu/d2c4810f-6b41-442f-948d-d7f65df25f8c.png b/sprites/spr_pengu/d2c4810f-6b41-442f-948d-d7f65df25f8c.png new file mode 100644 index 0000000..8e4b72a Binary files /dev/null and b/sprites/spr_pengu/d2c4810f-6b41-442f-948d-d7f65df25f8c.png differ diff --git a/sprites/spr_pengu/e0044597-6d8c-42ff-8743-1457e853bed7.png b/sprites/spr_pengu/e0044597-6d8c-42ff-8743-1457e853bed7.png new file mode 100644 index 0000000..eedca22 Binary files /dev/null and b/sprites/spr_pengu/e0044597-6d8c-42ff-8743-1457e853bed7.png differ diff --git a/sprites/spr_pengu/layers/a2ef49bc-93ae-4ff2-8bb0-6be755f719dd/ba51ab86-230f-4f17-a833-3a46bbc810c5.png b/sprites/spr_pengu/layers/a2ef49bc-93ae-4ff2-8bb0-6be755f719dd/ba51ab86-230f-4f17-a833-3a46bbc810c5.png new file mode 100644 index 0000000..b8b475b Binary files /dev/null and b/sprites/spr_pengu/layers/a2ef49bc-93ae-4ff2-8bb0-6be755f719dd/ba51ab86-230f-4f17-a833-3a46bbc810c5.png differ diff --git a/sprites/spr_pengu/layers/d2c4810f-6b41-442f-948d-d7f65df25f8c/ba51ab86-230f-4f17-a833-3a46bbc810c5.png b/sprites/spr_pengu/layers/d2c4810f-6b41-442f-948d-d7f65df25f8c/ba51ab86-230f-4f17-a833-3a46bbc810c5.png new file mode 100644 index 0000000..8e4b72a Binary files /dev/null and b/sprites/spr_pengu/layers/d2c4810f-6b41-442f-948d-d7f65df25f8c/ba51ab86-230f-4f17-a833-3a46bbc810c5.png differ diff --git a/sprites/spr_pengu/layers/e0044597-6d8c-42ff-8743-1457e853bed7/23a9db87-2942-40f9-bc8c-45ad600e50c3.png b/sprites/spr_pengu/layers/e0044597-6d8c-42ff-8743-1457e853bed7/23a9db87-2942-40f9-bc8c-45ad600e50c3.png new file mode 100644 index 0000000..eedca22 Binary files /dev/null and b/sprites/spr_pengu/layers/e0044597-6d8c-42ff-8743-1457e853bed7/23a9db87-2942-40f9-bc8c-45ad600e50c3.png differ diff --git a/sprites/spr_pengu/spr_pengu.yy b/sprites/spr_pengu/spr_pengu.yy new file mode 100644 index 0000000..b4c7b56 --- /dev/null +++ b/sprites/spr_pengu/spr_pengu.yy @@ -0,0 +1,76 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "spr_pengu", + "bbox_bottom": 31, + "bbox_left": 6, + "bbox_right": 28, + "bbox_top": 6, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"d2c4810f-6b41-442f-948d-d7f65df25f8c",}, + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"a2ef49bc-93ae-4ff2-8bb0-6be755f719dd",}, + ], + "gridX": 0, + "gridY": 0, + "height": 32, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"ba51ab86-230f-4f17-a833-3a46bbc810c5","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 7, + "parent": { + "name": "players", + "path": "folders/Sprites/players.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "spr_pengu", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 2.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "playback": 1, + "playbackSpeed": 0.05, + "playbackSpeedType": 1, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"d2c4810f-6b41-442f-948d-d7f65df25f8c","path":"sprites/spr_pengu/spr_pengu.yy",},},},"Disabled":false,"id":"9a2727f6-c707-4b39-bba5-f2646b5b68c9","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"a2ef49bc-93ae-4ff2-8bb0-6be755f719dd","path":"sprites/spr_pengu/spr_pengu.yy",},},},"Disabled":false,"id":"7ed66149-6f80-4f79-ace9-a2e809179eee","IsCreationKey":false,"Key":1.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, + ], + "visibleRange": null, + "volume": 1.0, + "xorigin": 16, + "yorigin": 32, + }, + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "type": 0, + "VTile": false, + "width": 32, +} \ No newline at end of file diff --git a/sprites/spr_pengu2/a2ef49bc-93ae-4ff2-8bb0-6be755f719dd.png b/sprites/spr_pengu2/a2ef49bc-93ae-4ff2-8bb0-6be755f719dd.png new file mode 100644 index 0000000..515bce4 Binary files /dev/null and b/sprites/spr_pengu2/a2ef49bc-93ae-4ff2-8bb0-6be755f719dd.png differ diff --git a/sprites/spr_pengu2/d2c4810f-6b41-442f-948d-d7f65df25f8c.png b/sprites/spr_pengu2/d2c4810f-6b41-442f-948d-d7f65df25f8c.png new file mode 100644 index 0000000..e50843b Binary files /dev/null and b/sprites/spr_pengu2/d2c4810f-6b41-442f-948d-d7f65df25f8c.png differ diff --git a/sprites/spr_pengu2/e0044597-6d8c-42ff-8743-1457e853bed7.png b/sprites/spr_pengu2/e0044597-6d8c-42ff-8743-1457e853bed7.png new file mode 100644 index 0000000..eedca22 Binary files /dev/null and b/sprites/spr_pengu2/e0044597-6d8c-42ff-8743-1457e853bed7.png differ diff --git a/sprites/spr_pengu2/layers/a2ef49bc-93ae-4ff2-8bb0-6be755f719dd/ba51ab86-230f-4f17-a833-3a46bbc810c5.png b/sprites/spr_pengu2/layers/a2ef49bc-93ae-4ff2-8bb0-6be755f719dd/ba51ab86-230f-4f17-a833-3a46bbc810c5.png new file mode 100644 index 0000000..515bce4 Binary files /dev/null and b/sprites/spr_pengu2/layers/a2ef49bc-93ae-4ff2-8bb0-6be755f719dd/ba51ab86-230f-4f17-a833-3a46bbc810c5.png differ diff --git a/sprites/spr_pengu2/layers/d2c4810f-6b41-442f-948d-d7f65df25f8c/ba51ab86-230f-4f17-a833-3a46bbc810c5.png b/sprites/spr_pengu2/layers/d2c4810f-6b41-442f-948d-d7f65df25f8c/ba51ab86-230f-4f17-a833-3a46bbc810c5.png new file mode 100644 index 0000000..e50843b Binary files /dev/null and b/sprites/spr_pengu2/layers/d2c4810f-6b41-442f-948d-d7f65df25f8c/ba51ab86-230f-4f17-a833-3a46bbc810c5.png differ diff --git a/sprites/spr_pengu2/layers/e0044597-6d8c-42ff-8743-1457e853bed7/23a9db87-2942-40f9-bc8c-45ad600e50c3.png b/sprites/spr_pengu2/layers/e0044597-6d8c-42ff-8743-1457e853bed7/23a9db87-2942-40f9-bc8c-45ad600e50c3.png new file mode 100644 index 0000000..eedca22 Binary files /dev/null and b/sprites/spr_pengu2/layers/e0044597-6d8c-42ff-8743-1457e853bed7/23a9db87-2942-40f9-bc8c-45ad600e50c3.png differ diff --git a/sprites/spr_pengu2/spr_pengu2.yy b/sprites/spr_pengu2/spr_pengu2.yy new file mode 100644 index 0000000..27fd20d --- /dev/null +++ b/sprites/spr_pengu2/spr_pengu2.yy @@ -0,0 +1,76 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "spr_pengu2", + "bbox_bottom": 31, + "bbox_left": 6, + "bbox_right": 28, + "bbox_top": 6, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"d2c4810f-6b41-442f-948d-d7f65df25f8c",}, + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"a2ef49bc-93ae-4ff2-8bb0-6be755f719dd",}, + ], + "gridX": 0, + "gridY": 0, + "height": 32, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"ba51ab86-230f-4f17-a833-3a46bbc810c5","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 7, + "parent": { + "name": "players", + "path": "folders/Sprites/players.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "spr_pengu2", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 2.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "playback": 1, + "playbackSpeed": 0.05, + "playbackSpeedType": 1, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"d2c4810f-6b41-442f-948d-d7f65df25f8c","path":"sprites/spr_pengu2/spr_pengu2.yy",},},},"Disabled":false,"id":"73a5d111-32c8-4638-a0ef-fce2b0bc3ded","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"a2ef49bc-93ae-4ff2-8bb0-6be755f719dd","path":"sprites/spr_pengu2/spr_pengu2.yy",},},},"Disabled":false,"id":"3c8a641d-c754-4eae-a3ea-c7322fac6b87","IsCreationKey":false,"Key":1.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, + ], + "visibleRange": null, + "volume": 1.0, + "xorigin": 16, + "yorigin": 32, + }, + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "type": 0, + "VTile": false, + "width": 32, +} \ No newline at end of file diff --git a/sprites/spr_pixel_side_Underwater/dae6def4-3e97-477c-a99d-ee6e4037420d.png b/sprites/spr_pixel_side_Underwater/dae6def4-3e97-477c-a99d-ee6e4037420d.png new file mode 100644 index 0000000..134a1fc Binary files /dev/null and b/sprites/spr_pixel_side_Underwater/dae6def4-3e97-477c-a99d-ee6e4037420d.png differ diff --git a/sprites/spr_pixel_side_Underwater/layers/dae6def4-3e97-477c-a99d-ee6e4037420d/6387e633-22c3-45c9-a755-caf8be645935.png b/sprites/spr_pixel_side_Underwater/layers/dae6def4-3e97-477c-a99d-ee6e4037420d/6387e633-22c3-45c9-a755-caf8be645935.png new file mode 100644 index 0000000..134a1fc Binary files /dev/null and b/sprites/spr_pixel_side_Underwater/layers/dae6def4-3e97-477c-a99d-ee6e4037420d/6387e633-22c3-45c9-a755-caf8be645935.png differ diff --git a/sprites/spr_pixel_side_Underwater/spr_pixel_side_Underwater.yy b/sprites/spr_pixel_side_Underwater/spr_pixel_side_Underwater.yy new file mode 100644 index 0000000..1cdcdf0 --- /dev/null +++ b/sprites/spr_pixel_side_Underwater/spr_pixel_side_Underwater.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "spr_pixel_side_Underwater", + "bbox_bottom": 191, + "bbox_left": 0, + "bbox_right": 255, + "bbox_top": 0, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"dae6def4-3e97-477c-a99d-ee6e4037420d",}, + ], + "gridX": 0, + "gridY": 0, + "height": 192, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"6387e633-22c3-45c9-a755-caf8be645935","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 0, + "parent": { + "name": "tile", + "path": "folders/Sprites/tile.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "spr_pixel_side_Underwater", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"dae6def4-3e97-477c-a99d-ee6e4037420d","path":"sprites/spr_pixel_side_Underwater/spr_pixel_side_Underwater.yy",},},},"Disabled":false,"id":"9e895299-c397-4f7c-8828-db101507df2a","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, + ], + "visibleRange": null, + "volume": 1.0, + "xorigin": 0, + "yorigin": 0, + }, + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "type": 0, + "VTile": false, + "width": 256, +} \ No newline at end of file diff --git a/sprites/spr_player2_idle/spr_player2_idle.yy b/sprites/spr_player2_idle/spr_player2_idle.yy index 01c4226..e432976 100644 --- a/sprites/spr_player2_idle/spr_player2_idle.yy +++ b/sprites/spr_player2_idle/spr_player2_idle.yy @@ -25,8 +25,8 @@ "nineSlice": null, "origin": 7, "parent": { - "name": "Sprites", - "path": "folders/Sprites.yy", + "name": "players", + "path": "folders/Sprites/players.yy", }, "preMultiplyAlpha": false, "sequence": { diff --git a/sprites/spr_player2_moving/spr_player2_moving.yy b/sprites/spr_player2_moving/spr_player2_moving.yy index 93a1414..ed8d56c 100644 --- a/sprites/spr_player2_moving/spr_player2_moving.yy +++ b/sprites/spr_player2_moving/spr_player2_moving.yy @@ -26,8 +26,8 @@ "nineSlice": null, "origin": 7, "parent": { - "name": "Sprites", - "path": "folders/Sprites.yy", + "name": "players", + "path": "folders/Sprites/players.yy", }, "preMultiplyAlpha": false, "sequence": { diff --git a/sprites/spr_player_idle/spr_player_idle.yy b/sprites/spr_player_idle/spr_player_idle.yy index ad453e1..fe8a3e0 100644 --- a/sprites/spr_player_idle/spr_player_idle.yy +++ b/sprites/spr_player_idle/spr_player_idle.yy @@ -25,8 +25,8 @@ "nineSlice": null, "origin": 7, "parent": { - "name": "Sprites", - "path": "folders/Sprites.yy", + "name": "players", + "path": "folders/Sprites/players.yy", }, "preMultiplyAlpha": false, "sequence": { diff --git a/sprites/spr_player_moving/spr_player_moving.yy b/sprites/spr_player_moving/spr_player_moving.yy index 8760ede..8bd48ed 100644 --- a/sprites/spr_player_moving/spr_player_moving.yy +++ b/sprites/spr_player_moving/spr_player_moving.yy @@ -26,8 +26,8 @@ "nineSlice": null, "origin": 7, "parent": { - "name": "Sprites", - "path": "folders/Sprites.yy", + "name": "players", + "path": "folders/Sprites/players.yy", }, "preMultiplyAlpha": false, "sequence": { diff --git a/sprites/spr_tile_bg/spr_tile_bg.yy b/sprites/spr_tile_bg/spr_tile_bg.yy index 3b010df..7393cbf 100644 --- a/sprites/spr_tile_bg/spr_tile_bg.yy +++ b/sprites/spr_tile_bg/spr_tile_bg.yy @@ -25,8 +25,8 @@ "nineSlice": null, "origin": 0, "parent": { - "name": "Sprites", - "path": "folders/Sprites.yy", + "name": "tile", + "path": "folders/Sprites/tile.yy", }, "preMultiplyAlpha": false, "sequence": { diff --git a/sprites/spr_underwater/39fd8e7b-11b6-44f2-a59e-3ad4c70ede07.png b/sprites/spr_underwater/39fd8e7b-11b6-44f2-a59e-3ad4c70ede07.png new file mode 100644 index 0000000..b14306f Binary files /dev/null and b/sprites/spr_underwater/39fd8e7b-11b6-44f2-a59e-3ad4c70ede07.png differ diff --git a/sprites/spr_underwater/layers/39fd8e7b-11b6-44f2-a59e-3ad4c70ede07/2ec2b468-5ef8-40ea-9006-501db8b069af.png b/sprites/spr_underwater/layers/39fd8e7b-11b6-44f2-a59e-3ad4c70ede07/2ec2b468-5ef8-40ea-9006-501db8b069af.png new file mode 100644 index 0000000..b14306f Binary files /dev/null and b/sprites/spr_underwater/layers/39fd8e7b-11b6-44f2-a59e-3ad4c70ede07/2ec2b468-5ef8-40ea-9006-501db8b069af.png differ diff --git a/sprites/spr_underwater/spr_underwater.yy b/sprites/spr_underwater/spr_underwater.yy new file mode 100644 index 0000000..3150bd8 --- /dev/null +++ b/sprites/spr_underwater/spr_underwater.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "spr_underwater", + "bbox_bottom": 1079, + "bbox_left": 0, + "bbox_right": 1919, + "bbox_top": 0, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"39fd8e7b-11b6-44f2-a59e-3ad4c70ede07",}, + ], + "gridX": 0, + "gridY": 0, + "height": 1080, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"2ec2b468-5ef8-40ea-9006-501db8b069af","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 0, + "parent": { + "name": "BG", + "path": "folders/Sprites/BG.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "spr_underwater", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"39fd8e7b-11b6-44f2-a59e-3ad4c70ede07","path":"sprites/spr_underwater/spr_underwater.yy",},},},"Disabled":false,"id":"2757aea5-6d65-4d6c-8894-b1b5527463b0","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, + ], + "visibleRange": null, + "volume": 1.0, + "xorigin": 0, + "yorigin": 0, + }, + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "type": 0, + "VTile": false, + "width": 1920, +} \ No newline at end of file diff --git a/sprites/spr_underwater_layer00/d4e3f691-4316-4ce9-9a6d-ddc9d577c075.png b/sprites/spr_underwater_layer00/d4e3f691-4316-4ce9-9a6d-ddc9d577c075.png new file mode 100644 index 0000000..dd53f28 Binary files /dev/null and b/sprites/spr_underwater_layer00/d4e3f691-4316-4ce9-9a6d-ddc9d577c075.png differ diff --git a/sprites/spr_underwater_layer00/layers/d4e3f691-4316-4ce9-9a6d-ddc9d577c075/ca428743-36ed-4f30-a586-e0ce80685662.png b/sprites/spr_underwater_layer00/layers/d4e3f691-4316-4ce9-9a6d-ddc9d577c075/ca428743-36ed-4f30-a586-e0ce80685662.png new file mode 100644 index 0000000..dd53f28 Binary files /dev/null and b/sprites/spr_underwater_layer00/layers/d4e3f691-4316-4ce9-9a6d-ddc9d577c075/ca428743-36ed-4f30-a586-e0ce80685662.png differ diff --git a/sprites/spr_underwater_layer00/spr_underwater_layer00.yy b/sprites/spr_underwater_layer00/spr_underwater_layer00.yy new file mode 100644 index 0000000..6c3012e --- /dev/null +++ b/sprites/spr_underwater_layer00/spr_underwater_layer00.yy @@ -0,0 +1,97 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "spr_underwater_layer00", + "bbox_bottom": 269, + "bbox_left": 0, + "bbox_right": 479, + "bbox_top": 0, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"d4e3f691-4316-4ce9-9a6d-ddc9d577c075",}, + ], + "gridX": 0, + "gridY": 0, + "height": 270, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"ca428743-36ed-4f30-a586-e0ce80685662","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": { + "resourceType": "GMNineSliceData", + "resourceVersion": "1.0", + "bottom": 0, + "enabled": false, + "guideColour": [ + 4294902015, + 4294902015, + 4294902015, + 4294902015, + ], + "highlightColour": 1728023040, + "highlightStyle": 0, + "left": 0, + "right": 0, + "tileMode": [ + 0, + 0, + 0, + 0, + 1, + ], + "top": 0, + }, + "origin": 0, + "parent": { + "name": "Layers", + "path": "folders/Sprites/BG/Layers.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "spr_underwater_layer00", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"d4e3f691-4316-4ce9-9a6d-ddc9d577c075","path":"sprites/spr_underwater_layer00/spr_underwater_layer00.yy",},},},"Disabled":false,"id":"80c73f58-1fa7-4b93-b802-ccac1b7e9d5e","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, + ], + "visibleRange": null, + "volume": 1.0, + "xorigin": 0, + "yorigin": 0, + }, + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "type": 0, + "VTile": false, + "width": 480, +} \ No newline at end of file diff --git a/sprites/spr_underwater_layer01/4b447b47-ddae-4ba9-8ffb-eaf4b1557c6f.png b/sprites/spr_underwater_layer01/4b447b47-ddae-4ba9-8ffb-eaf4b1557c6f.png new file mode 100644 index 0000000..7d181b3 Binary files /dev/null and b/sprites/spr_underwater_layer01/4b447b47-ddae-4ba9-8ffb-eaf4b1557c6f.png differ diff --git a/sprites/spr_underwater_layer01/layers/4b447b47-ddae-4ba9-8ffb-eaf4b1557c6f/c16629aa-b897-4fc8-a7a4-528254e93169.png b/sprites/spr_underwater_layer01/layers/4b447b47-ddae-4ba9-8ffb-eaf4b1557c6f/c16629aa-b897-4fc8-a7a4-528254e93169.png new file mode 100644 index 0000000..7d181b3 Binary files /dev/null and b/sprites/spr_underwater_layer01/layers/4b447b47-ddae-4ba9-8ffb-eaf4b1557c6f/c16629aa-b897-4fc8-a7a4-528254e93169.png differ diff --git a/sprites/spr_underwater_layer01/spr_underwater_layer01.yy b/sprites/spr_underwater_layer01/spr_underwater_layer01.yy new file mode 100644 index 0000000..8f8edd0 --- /dev/null +++ b/sprites/spr_underwater_layer01/spr_underwater_layer01.yy @@ -0,0 +1,97 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "spr_underwater_layer01", + "bbox_bottom": 269, + "bbox_left": 0, + "bbox_right": 479, + "bbox_top": 22, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"4b447b47-ddae-4ba9-8ffb-eaf4b1557c6f",}, + ], + "gridX": 0, + "gridY": 0, + "height": 270, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"c16629aa-b897-4fc8-a7a4-528254e93169","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": { + "resourceType": "GMNineSliceData", + "resourceVersion": "1.0", + "bottom": 0, + "enabled": false, + "guideColour": [ + 4294902015, + 4294902015, + 4294902015, + 4294902015, + ], + "highlightColour": 1728023040, + "highlightStyle": 0, + "left": 0, + "right": 0, + "tileMode": [ + 0, + 0, + 0, + 0, + 1, + ], + "top": 0, + }, + "origin": 0, + "parent": { + "name": "Layers", + "path": "folders/Sprites/BG/Layers.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "spr_underwater_layer01", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"4b447b47-ddae-4ba9-8ffb-eaf4b1557c6f","path":"sprites/spr_underwater_layer01/spr_underwater_layer01.yy",},},},"Disabled":false,"id":"0de0f00a-ef83-47e1-aa82-df5efdbcf2c2","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, + ], + "visibleRange": null, + "volume": 1.0, + "xorigin": 0, + "yorigin": 0, + }, + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "type": 0, + "VTile": false, + "width": 480, +} \ No newline at end of file diff --git a/sprites/spr_underwater_layer02/4bcdea5c-3c14-4829-95a4-2e776dac0116.png b/sprites/spr_underwater_layer02/4bcdea5c-3c14-4829-95a4-2e776dac0116.png new file mode 100644 index 0000000..3f94b94 Binary files /dev/null and b/sprites/spr_underwater_layer02/4bcdea5c-3c14-4829-95a4-2e776dac0116.png differ diff --git a/sprites/spr_underwater_layer02/layers/4bcdea5c-3c14-4829-95a4-2e776dac0116/3a4ac70a-7236-44a1-85bf-da8e5a8c645c.png b/sprites/spr_underwater_layer02/layers/4bcdea5c-3c14-4829-95a4-2e776dac0116/3a4ac70a-7236-44a1-85bf-da8e5a8c645c.png new file mode 100644 index 0000000..3f94b94 Binary files /dev/null and b/sprites/spr_underwater_layer02/layers/4bcdea5c-3c14-4829-95a4-2e776dac0116/3a4ac70a-7236-44a1-85bf-da8e5a8c645c.png differ diff --git a/sprites/spr_underwater_layer02/spr_underwater_layer02.yy b/sprites/spr_underwater_layer02/spr_underwater_layer02.yy new file mode 100644 index 0000000..5ac9831 --- /dev/null +++ b/sprites/spr_underwater_layer02/spr_underwater_layer02.yy @@ -0,0 +1,97 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "spr_underwater_layer02", + "bbox_bottom": 117, + "bbox_left": 20, + "bbox_right": 465, + "bbox_top": 48, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"4bcdea5c-3c14-4829-95a4-2e776dac0116",}, + ], + "gridX": 0, + "gridY": 0, + "height": 270, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"3a4ac70a-7236-44a1-85bf-da8e5a8c645c","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": { + "resourceType": "GMNineSliceData", + "resourceVersion": "1.0", + "bottom": 0, + "enabled": false, + "guideColour": [ + 4294902015, + 4294902015, + 4294902015, + 4294902015, + ], + "highlightColour": 1728023040, + "highlightStyle": 0, + "left": 0, + "right": 0, + "tileMode": [ + 0, + 0, + 0, + 0, + 1, + ], + "top": 0, + }, + "origin": 0, + "parent": { + "name": "Layers", + "path": "folders/Sprites/BG/Layers.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "spr_underwater_layer02", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"4bcdea5c-3c14-4829-95a4-2e776dac0116","path":"sprites/spr_underwater_layer02/spr_underwater_layer02.yy",},},},"Disabled":false,"id":"84f4358c-ee75-4894-9d0a-aa7ac842e1da","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, + ], + "visibleRange": null, + "volume": 1.0, + "xorigin": 0, + "yorigin": 0, + }, + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "type": 0, + "VTile": false, + "width": 480, +} \ No newline at end of file diff --git a/sprites/spr_underwater_layer03/d5e06d27-9b8f-4fc6-b978-629fd04f0a32.png b/sprites/spr_underwater_layer03/d5e06d27-9b8f-4fc6-b978-629fd04f0a32.png new file mode 100644 index 0000000..f817bcd Binary files /dev/null and b/sprites/spr_underwater_layer03/d5e06d27-9b8f-4fc6-b978-629fd04f0a32.png differ diff --git a/sprites/spr_underwater_layer03/layers/d5e06d27-9b8f-4fc6-b978-629fd04f0a32/b2b66523-fdbc-4201-8bdf-7e1f64151767.png b/sprites/spr_underwater_layer03/layers/d5e06d27-9b8f-4fc6-b978-629fd04f0a32/b2b66523-fdbc-4201-8bdf-7e1f64151767.png new file mode 100644 index 0000000..f817bcd Binary files /dev/null and b/sprites/spr_underwater_layer03/layers/d5e06d27-9b8f-4fc6-b978-629fd04f0a32/b2b66523-fdbc-4201-8bdf-7e1f64151767.png differ diff --git a/sprites/spr_underwater_layer03/spr_underwater_layer03.yy b/sprites/spr_underwater_layer03/spr_underwater_layer03.yy new file mode 100644 index 0000000..891347b --- /dev/null +++ b/sprites/spr_underwater_layer03/spr_underwater_layer03.yy @@ -0,0 +1,97 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "spr_underwater_layer03", + "bbox_bottom": 269, + "bbox_left": 0, + "bbox_right": 479, + "bbox_top": 84, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"d5e06d27-9b8f-4fc6-b978-629fd04f0a32",}, + ], + "gridX": 0, + "gridY": 0, + "height": 270, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"b2b66523-fdbc-4201-8bdf-7e1f64151767","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": { + "resourceType": "GMNineSliceData", + "resourceVersion": "1.0", + "bottom": 0, + "enabled": false, + "guideColour": [ + 4294902015, + 4294902015, + 4294902015, + 4294902015, + ], + "highlightColour": 1728023040, + "highlightStyle": 0, + "left": 0, + "right": 0, + "tileMode": [ + 0, + 0, + 0, + 0, + 1, + ], + "top": 0, + }, + "origin": 0, + "parent": { + "name": "Layers", + "path": "folders/Sprites/BG/Layers.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "spr_underwater_layer03", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"d5e06d27-9b8f-4fc6-b978-629fd04f0a32","path":"sprites/spr_underwater_layer03/spr_underwater_layer03.yy",},},},"Disabled":false,"id":"d735136d-c3e3-46cf-879c-8c198de3863f","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, + ], + "visibleRange": null, + "volume": 1.0, + "xorigin": 0, + "yorigin": 0, + }, + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "type": 0, + "VTile": false, + "width": 480, +} \ No newline at end of file diff --git a/sprites/spr_underwater_layer04/e75f2776-0535-42b1-9db1-ec75b507bb7a.png b/sprites/spr_underwater_layer04/e75f2776-0535-42b1-9db1-ec75b507bb7a.png new file mode 100644 index 0000000..72ec834 Binary files /dev/null and b/sprites/spr_underwater_layer04/e75f2776-0535-42b1-9db1-ec75b507bb7a.png differ diff --git a/sprites/spr_underwater_layer04/layers/e75f2776-0535-42b1-9db1-ec75b507bb7a/1b096359-df3e-414e-826a-43e1b91e6eae.png b/sprites/spr_underwater_layer04/layers/e75f2776-0535-42b1-9db1-ec75b507bb7a/1b096359-df3e-414e-826a-43e1b91e6eae.png new file mode 100644 index 0000000..72ec834 Binary files /dev/null and b/sprites/spr_underwater_layer04/layers/e75f2776-0535-42b1-9db1-ec75b507bb7a/1b096359-df3e-414e-826a-43e1b91e6eae.png differ diff --git a/sprites/spr_underwater_layer04/spr_underwater_layer04.yy b/sprites/spr_underwater_layer04/spr_underwater_layer04.yy new file mode 100644 index 0000000..745a68c --- /dev/null +++ b/sprites/spr_underwater_layer04/spr_underwater_layer04.yy @@ -0,0 +1,97 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "spr_underwater_layer04", + "bbox_bottom": 269, + "bbox_left": 0, + "bbox_right": 479, + "bbox_top": 105, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"e75f2776-0535-42b1-9db1-ec75b507bb7a",}, + ], + "gridX": 0, + "gridY": 0, + "height": 270, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"1b096359-df3e-414e-826a-43e1b91e6eae","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": { + "resourceType": "GMNineSliceData", + "resourceVersion": "1.0", + "bottom": 0, + "enabled": false, + "guideColour": [ + 4294902015, + 4294902015, + 4294902015, + 4294902015, + ], + "highlightColour": 1728023040, + "highlightStyle": 0, + "left": 0, + "right": 0, + "tileMode": [ + 0, + 0, + 0, + 0, + 1, + ], + "top": 0, + }, + "origin": 0, + "parent": { + "name": "Layers", + "path": "folders/Sprites/BG/Layers.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "spr_underwater_layer04", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"e75f2776-0535-42b1-9db1-ec75b507bb7a","path":"sprites/spr_underwater_layer04/spr_underwater_layer04.yy",},},},"Disabled":false,"id":"e495b2b3-173c-4677-9409-2680870fcd51","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, + ], + "visibleRange": null, + "volume": 1.0, + "xorigin": 0, + "yorigin": 0, + }, + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "type": 0, + "VTile": false, + "width": 480, +} \ No newline at end of file diff --git a/sprites/spr_underwater_layer05/b737a9c8-8f1e-4c64-ae64-398dec4c5f7e.png b/sprites/spr_underwater_layer05/b737a9c8-8f1e-4c64-ae64-398dec4c5f7e.png new file mode 100644 index 0000000..9ee50b4 Binary files /dev/null and b/sprites/spr_underwater_layer05/b737a9c8-8f1e-4c64-ae64-398dec4c5f7e.png differ diff --git a/sprites/spr_underwater_layer05/layers/b737a9c8-8f1e-4c64-ae64-398dec4c5f7e/40bfaf72-0526-41f2-8f80-97caf05c5274.png b/sprites/spr_underwater_layer05/layers/b737a9c8-8f1e-4c64-ae64-398dec4c5f7e/40bfaf72-0526-41f2-8f80-97caf05c5274.png new file mode 100644 index 0000000..9ee50b4 Binary files /dev/null and b/sprites/spr_underwater_layer05/layers/b737a9c8-8f1e-4c64-ae64-398dec4c5f7e/40bfaf72-0526-41f2-8f80-97caf05c5274.png differ diff --git a/sprites/spr_underwater_layer05/spr_underwater_layer05.yy b/sprites/spr_underwater_layer05/spr_underwater_layer05.yy new file mode 100644 index 0000000..ad3653f --- /dev/null +++ b/sprites/spr_underwater_layer05/spr_underwater_layer05.yy @@ -0,0 +1,97 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "spr_underwater_layer05", + "bbox_bottom": 269, + "bbox_left": 0, + "bbox_right": 479, + "bbox_top": 108, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"b737a9c8-8f1e-4c64-ae64-398dec4c5f7e",}, + ], + "gridX": 0, + "gridY": 0, + "height": 270, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"40bfaf72-0526-41f2-8f80-97caf05c5274","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": { + "resourceType": "GMNineSliceData", + "resourceVersion": "1.0", + "bottom": 0, + "enabled": false, + "guideColour": [ + 4294902015, + 4294902015, + 4294902015, + 4294902015, + ], + "highlightColour": 1728023040, + "highlightStyle": 0, + "left": 0, + "right": 0, + "tileMode": [ + 0, + 0, + 0, + 0, + 1, + ], + "top": 0, + }, + "origin": 0, + "parent": { + "name": "Layers", + "path": "folders/Sprites/BG/Layers.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "spr_underwater_layer05", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"b737a9c8-8f1e-4c64-ae64-398dec4c5f7e","path":"sprites/spr_underwater_layer05/spr_underwater_layer05.yy",},},},"Disabled":false,"id":"06a15665-e101-405e-bb42-cde890d716f0","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, + ], + "visibleRange": null, + "volume": 1.0, + "xorigin": 0, + "yorigin": 0, + }, + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "type": 0, + "VTile": false, + "width": 480, +} \ No newline at end of file diff --git a/stanncam.resource_order b/stanncam.resource_order index f7cb374..3a05f3f 100644 --- a/stanncam.resource_order +++ b/stanncam.resource_order @@ -1,28 +1,51 @@ { "FolderOrderSettings": [ + {"name":"sidescroller","order":11,"path":"folders/Objects/sidescroller.yy",}, + {"name":"topdown","order":10,"path":"folders/Objects/topdown.yy",}, + {"name":"BG","order":16,"path":"folders/Sprites/BG.yy",}, + {"name":"Layers","order":1,"path":"folders/Sprites/BG/Layers.yy",}, + {"name":"gui","order":13,"path":"folders/Sprites/gui.yy",}, + {"name":"players","order":15,"path":"folders/Sprites/players.yy",}, + {"name":"tile","order":14,"path":"folders/Sprites/tile.yy",}, {"name":"Animation_curves - add more if needed","order":5,"path":"folders/STANNcam/Animation_curves - add more if needed.yy",}, ], "ResourceOrderSettings": [ + {"name":"spr_underwater","order":2,"path":"sprites/spr_underwater/spr_underwater.yy",}, + {"name":"spr_underwater_layer03","order":3,"path":"sprites/spr_underwater_layer03/spr_underwater_layer03.yy",}, + {"name":"spr_pengu2","order":5,"path":"sprites/spr_pengu2/spr_pengu2.yy",}, + {"name":"rm_sidescroller","order":1,"path":"rooms/rm_sidescroller/rm_sidescroller.yy",}, {"name":"f_pixel","order":1,"path":"fonts/f_pixel/f_pixel.yy",}, + {"name":"obj_player_sidescroller2","order":3,"path":"objects/obj_player_sidescroller2/obj_player_sidescroller2.yy",}, + {"name":"rm_init","order":2,"path":"rooms/rm_init/rm_init.yy",}, {"name":"obj_player","order":2,"path":"objects/obj_player/obj_player.yy",}, {"name":"spr_arrow_small","order":1,"path":"sprites/spr_arrow_small/spr_arrow_small.yy",}, + {"name":"obj_player_sidescroller","order":2,"path":"objects/obj_player_sidescroller/obj_player_sidescroller.yy",}, {"name":"spr_tv","order":9,"path":"sprites/spr_tv/spr_tv.yy",}, {"name":"stanncam","order":3,"path":"scripts/stanncam/stanncam.yy",}, {"name":"stanncam_animcurve","order":1,"path":"scripts/stanncam_animcurve/stanncam_animcurve.yy",}, + {"name":"spr_underwater_layer01","order":1,"path":"sprites/spr_underwater_layer01/spr_underwater_layer01.yy",}, {"name":"obj_camera","order":1,"path":"objects/obj_camera/obj_camera.yy",}, + {"name":"spr_underwater_layer04","order":4,"path":"sprites/spr_underwater_layer04/spr_underwater_layer04.yy",}, + {"name":"draw_sprite_ext_tiled","order":1,"path":"scripts/draw_sprite_ext_tiled/draw_sprite_ext_tiled.yy",}, {"name":"obj_player2","order":3,"path":"objects/obj_player2/obj_player2.yy",}, + {"name":"spr_pengu","order":4,"path":"sprites/spr_pengu/spr_pengu.yy",}, {"name":"stanncam_ac_ease","order":1,"path":"animcurves/stanncam_ac_ease/stanncam_ac_ease.yy",}, {"name":"stanncam_manager","order":4,"path":"scripts/stanncam_manager/stanncam_manager.yy",}, - {"name":"spr_tile_bg","order":8,"path":"sprites/spr_tile_bg/spr_tile_bg.yy",}, + {"name":"ts_pixel_side_Underwater","order":2,"path":"tilesets/ts_pixel_side_Underwater/ts_pixel_side_Underwater.yy",}, + {"name":"spr_tile_bg","order":2,"path":"sprites/spr_tile_bg/spr_tile_bg.yy",}, {"name":"obj_tv","order":4,"path":"objects/obj_tv/obj_tv.yy",}, - {"name":"spr_bg","order":3,"path":"sprites/spr_bg/spr_bg.yy",}, - {"name":"spr_player_idle","order":4,"path":"sprites/spr_player_idle/spr_player_idle.yy",}, + {"name":"obj_collision","order":1,"path":"objects/obj_collision/obj_collision.yy",}, + {"name":"spr_bg","order":1,"path":"sprites/spr_bg/spr_bg.yy",}, + {"name":"spr_underwater_layer05","order":5,"path":"sprites/spr_underwater_layer05/spr_underwater_layer05.yy",}, {"name":"spr_ball","order":2,"path":"sprites/spr_ball/spr_ball.yy",}, {"name":"stanncam_shake","order":2,"path":"scripts/stanncam_shake/stanncam_shake.yy",}, - {"name":"TileSet1","order":10,"path":"tilesets/TileSet1/TileSet1.yy",}, - {"name":"spr_player2_moving","order":7,"path":"sprites/spr_player2_moving/spr_player2_moving.yy",}, - {"name":"spr_player_moving","order":5,"path":"sprites/spr_player_moving/spr_player_moving.yy",}, + {"name":"TileSet1","order":1,"path":"tilesets/TileSet1/TileSet1.yy",}, + {"name":"spr_player2_moving","order":3,"path":"sprites/spr_player2_moving/spr_player2_moving.yy",}, + {"name":"spr_collision","order":3,"path":"sprites/spr_collision/spr_collision.yy",}, + {"name":"spr_player_moving","order":1,"path":"sprites/spr_player_moving/spr_player_moving.yy",}, + {"name":"obj_game_controller","order":6,"path":"objects/obj_game_controller/obj_game_controller.yy",}, {"name":"stanncam_ac_bouncy","order":2,"path":"animcurves/stanncam_ac_bouncy/stanncam_ac_bouncy.yy",}, - {"name":"spr_player2_idle","order":6,"path":"sprites/spr_player2_idle/spr_player2_idle.yy",}, + {"name":"spr_underwater_layer02","order":2,"path":"sprites/spr_underwater_layer02/spr_underwater_layer02.yy",}, + {"name":"spr_player2_idle","order":2,"path":"sprites/spr_player2_idle/spr_player2_idle.yy",}, ], } \ No newline at end of file diff --git a/stanncam.yyp b/stanncam.yyp index f18f308..78551ca 100644 --- a/stanncam.yyp +++ b/stanncam.yyp @@ -13,13 +13,20 @@ "Folders": [ {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Fonts","folderPath":"folders/Fonts.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Objects","folderPath":"folders/Objects.yy",}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"sidescroller","folderPath":"folders/Objects/sidescroller.yy",}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"topdown","folderPath":"folders/Objects/topdown.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Rooms","folderPath":"folders/Rooms.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Scripts","folderPath":"folders/Scripts.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Sprites","folderPath":"folders/Sprites.yy",}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"BG","folderPath":"folders/Sprites/BG.yy",}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Layers","folderPath":"folders/Sprites/BG/Layers.yy",}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"gui","folderPath":"folders/Sprites/gui.yy",}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"players","folderPath":"folders/Sprites/players.yy",}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"tile","folderPath":"folders/Sprites/tile.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"STANNcam","folderPath":"folders/STANNcam.yy",}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Animation_curves - add more if needed","folderPath":"folders/STANNcam/Animation_curves - add more if needed.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Miscellaneous","folderPath":"folders/STANNcam/Miscellaneous.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Tile Sets","folderPath":"folders/Tile Sets.yy",}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Animation_curves - add more if needed","folderPath":"folders/STANNcam/Animation_curves - add more if needed.yy",}, ], "IncludedFiles": [], "isEcma": false, @@ -28,37 +35,59 @@ "IDEVersion": "2023.6.0.92", }, "resources": [ + {"id":{"name":"spr_underwater","path":"sprites/spr_underwater/spr_underwater.yy",},}, + {"id":{"name":"spr_underwater_layer03","path":"sprites/spr_underwater_layer03/spr_underwater_layer03.yy",},}, + {"id":{"name":"spr_pengu2","path":"sprites/spr_pengu2/spr_pengu2.yy",},}, + {"id":{"name":"rm_sidescroller","path":"rooms/rm_sidescroller/rm_sidescroller.yy",},}, {"id":{"name":"f_pixel","path":"fonts/f_pixel/f_pixel.yy",},}, + {"id":{"name":"obj_player_sidescroller2","path":"objects/obj_player_sidescroller2/obj_player_sidescroller2.yy",},}, + {"id":{"name":"rm_init","path":"rooms/rm_init/rm_init.yy",},}, + {"id":{"name":"spr_underwater_layer00","path":"sprites/spr_underwater_layer00/spr_underwater_layer00.yy",},}, {"id":{"name":"obj_player","path":"objects/obj_player/obj_player.yy",},}, {"id":{"name":"spr_arrow_small","path":"sprites/spr_arrow_small/spr_arrow_small.yy",},}, + {"id":{"name":"obj_player_sidescroller","path":"objects/obj_player_sidescroller/obj_player_sidescroller.yy",},}, {"id":{"name":"spr_tv","path":"sprites/spr_tv/spr_tv.yy",},}, {"id":{"name":"rm_test","path":"rooms/rm_test/rm_test.yy",},}, {"id":{"name":"stanncam","path":"scripts/stanncam/stanncam.yy",},}, {"id":{"name":"stanncam_animcurve","path":"scripts/stanncam_animcurve/stanncam_animcurve.yy",},}, + {"id":{"name":"spr_underwater_layer01","path":"sprites/spr_underwater_layer01/spr_underwater_layer01.yy",},}, {"id":{"name":"draw_text_outline","path":"scripts/draw_text_outline/draw_text_outline.yy",},}, {"id":{"name":"obj_camera","path":"objects/obj_camera/obj_camera.yy",},}, + {"id":{"name":"spr_underwater_layer04","path":"sprites/spr_underwater_layer04/spr_underwater_layer04.yy",},}, + {"id":{"name":"draw_sprite_ext_tiled","path":"scripts/draw_sprite_ext_tiled/draw_sprite_ext_tiled.yy",},}, {"id":{"name":"obj_ball","path":"objects/obj_ball/obj_ball.yy",},}, {"id":{"name":"spr_arrow","path":"sprites/spr_arrow/spr_arrow.yy",},}, {"id":{"name":"obj_player2","path":"objects/obj_player2/obj_player2.yy",},}, + {"id":{"name":"spr_pengu","path":"sprites/spr_pengu/spr_pengu.yy",},}, {"id":{"name":"stanncam_ac_ease","path":"animcurves/stanncam_ac_ease/stanncam_ac_ease.yy",},}, {"id":{"name":"stanncam_manager","path":"scripts/stanncam_manager/stanncam_manager.yy",},}, + {"id":{"name":"ts_pixel_side_Underwater","path":"tilesets/ts_pixel_side_Underwater/ts_pixel_side_Underwater.yy",},}, {"id":{"name":"spr_tile_bg","path":"sprites/spr_tile_bg/spr_tile_bg.yy",},}, {"id":{"name":"stanncam_ac_linear","path":"animcurves/stanncam_ac_linear/stanncam_ac_linear.yy",},}, {"id":{"name":"obj_tv","path":"objects/obj_tv/obj_tv.yy",},}, + {"id":{"name":"obj_collision","path":"objects/obj_collision/obj_collision.yy",},}, {"id":{"name":"spr_bg","path":"sprites/spr_bg/spr_bg.yy",},}, {"id":{"name":"spr_player_idle","path":"sprites/spr_player_idle/spr_player_idle.yy",},}, + {"id":{"name":"obj_camera_sidescroller","path":"objects/obj_camera_sidescroller/obj_camera_sidescroller.yy",},}, + {"id":{"name":"spr_underwater_layer05","path":"sprites/spr_underwater_layer05/spr_underwater_layer05.yy",},}, {"id":{"name":"spr_ball","path":"sprites/spr_ball/spr_ball.yy",},}, {"id":{"name":"stanncam_shake","path":"scripts/stanncam_shake/stanncam_shake.yy",},}, {"id":{"name":"TileSet1","path":"tilesets/TileSet1/TileSet1.yy",},}, + {"id":{"name":"spr_pixel_side_Underwater","path":"sprites/spr_pixel_side_Underwater/spr_pixel_side_Underwater.yy",},}, {"id":{"name":"spr_player2_moving","path":"sprites/spr_player2_moving/spr_player2_moving.yy",},}, + {"id":{"name":"spr_collision","path":"sprites/spr_collision/spr_collision.yy",},}, {"id":{"name":"spr_player_moving","path":"sprites/spr_player_moving/spr_player_moving.yy",},}, {"id":{"name":"__obj_stanncam_manager","path":"objects/__obj_stanncam_manager/__obj_stanncam_manager.yy",},}, + {"id":{"name":"obj_game_controller","path":"objects/obj_game_controller/obj_game_controller.yy",},}, {"id":{"name":"stanncam_ac_bouncy","path":"animcurves/stanncam_ac_bouncy/stanncam_ac_bouncy.yy",},}, + {"id":{"name":"spr_underwater_layer02","path":"sprites/spr_underwater_layer02/spr_underwater_layer02.yy",},}, {"id":{"name":"spr_player2_idle","path":"sprites/spr_player2_idle/spr_player2_idle.yy",},}, {"id":{"name":"f_hires","path":"fonts/f_hires/f_hires.yy",},}, ], "RoomOrderNodes": [ + {"roomId":{"name":"rm_init","path":"rooms/rm_init/rm_init.yy",},}, {"roomId":{"name":"rm_test","path":"rooms/rm_test/rm_test.yy",},}, + {"roomId":{"name":"rm_sidescroller","path":"rooms/rm_sidescroller/rm_sidescroller.yy",},}, ], "TextureGroups": [ {"resourceType":"GMTextureGroup","resourceVersion":"1.3","name":"Default","autocrop":true,"border":2,"compressFormat":"bz2","directory":"","groupParent":null,"isScaled":true,"loadType":"default","mipsToGenerate":0,"targets":-1,}, diff --git a/tilesets/TileSet1/TileSet1.yy b/tilesets/TileSet1/TileSet1.yy index 05e7ea3..77d6c95 100644 --- a/tilesets/TileSet1/TileSet1.yy +++ b/tilesets/TileSet1/TileSet1.yy @@ -12,8 +12,8 @@ "out_tilehborder": 2, "out_tilevborder": 2, "parent": { - "name": "Sprites", - "path": "folders/Sprites.yy", + "name": "Tile Sets", + "path": "folders/Tile Sets.yy", }, "spriteId": { "name": "spr_tile_bg", diff --git a/tilesets/TileSet1/output_tileset.png b/tilesets/TileSet1/output_tileset.png index 3274692..68b83bb 100644 Binary files a/tilesets/TileSet1/output_tileset.png and b/tilesets/TileSet1/output_tileset.png differ diff --git a/tilesets/ts_pixel_side_Underwater/output_tileset.png b/tilesets/ts_pixel_side_Underwater/output_tileset.png new file mode 100644 index 0000000..980ec48 Binary files /dev/null and b/tilesets/ts_pixel_side_Underwater/output_tileset.png differ diff --git a/tilesets/ts_pixel_side_Underwater/ts_pixel_side_Underwater.yy b/tilesets/ts_pixel_side_Underwater/ts_pixel_side_Underwater.yy new file mode 100644 index 0000000..20ca92c --- /dev/null +++ b/tilesets/ts_pixel_side_Underwater/ts_pixel_side_Underwater.yy @@ -0,0 +1,139 @@ +{ + "resourceType": "GMTileSet", + "resourceVersion": "1.0", + "name": "ts_pixel_side_Underwater", + "autoTileSets": [ + {"resourceType":"GMAutoTileSet","resourceVersion":"1.0","name":"47 Tile Side Underwater","closed_edge":false,"tiles":[ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + ],}, + ], + "macroPageTiles": { + "SerialiseHeight": 0, + "SerialiseWidth": 0, + "TileSerialiseData": [], + }, + "out_columns": 7, + "out_tilehborder": 2, + "out_tilevborder": 2, + "parent": { + "name": "Tile Sets", + "path": "folders/Tile Sets.yy", + }, + "spriteId": { + "name": "spr_pixel_side_Underwater", + "path": "sprites/spr_pixel_side_Underwater/spr_pixel_side_Underwater.yy", + }, + "spriteNoExport": true, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "tile_count": 48, + "tileAnimation": { + "FrameData": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + ], + "SerialiseFrameCount": 1, + }, + "tileAnimationFrames": [], + "tileAnimationSpeed": 15.0, + "tileHeight": 32, + "tilehsep": 0, + "tilevsep": 0, + "tileWidth": 32, + "tilexoff": 0, + "tileyoff": 0, +} \ No newline at end of file