From 5472fc30376683d2b1c640f629a847942b0230ab Mon Sep 17 00:00:00 2001 From: jack Date: Wed, 8 Feb 2023 14:46:07 +0100 Subject: [PATCH 1/6] struct based rewrite --- .../{obj_stanncam => obj_stanncam_old}/Create_0.gml | 0 .../{obj_stanncam => obj_stanncam_old}/Draw_77.gml | 0 .../{obj_stanncam => obj_stanncam_old}/Other_4.gml | 0 objects/{obj_stanncam => obj_stanncam_old}/Step_2.gml | 0 .../obj_stanncam_old.yy} | 2 +- scripts/stanncam/stanncam.gml | 9 +++++++++ .../stanncam_functions.yy => stanncam/stanncam.yy} | 2 +- .../stanncam_functions_old.gml} | 2 +- .../stanncam_functions_old/stanncam_functions_old.yy | 11 +++++++++++ stanncam.yyp | 5 +++-- 10 files changed, 26 insertions(+), 5 deletions(-) rename objects/{obj_stanncam => obj_stanncam_old}/Create_0.gml (100%) rename objects/{obj_stanncam => obj_stanncam_old}/Draw_77.gml (100%) rename objects/{obj_stanncam => obj_stanncam_old}/Other_4.gml (100%) rename objects/{obj_stanncam => obj_stanncam_old}/Step_2.gml (100%) rename objects/{obj_stanncam/obj_stanncam.yy => obj_stanncam_old/obj_stanncam_old.yy} (97%) create mode 100644 scripts/stanncam/stanncam.gml rename scripts/{stanncam_functions/stanncam_functions.yy => stanncam/stanncam.yy} (85%) rename scripts/{stanncam_functions/stanncam_functions.gml => stanncam_functions_old/stanncam_functions_old.gml} (99%) create mode 100644 scripts/stanncam_functions_old/stanncam_functions_old.yy diff --git a/objects/obj_stanncam/Create_0.gml b/objects/obj_stanncam_old/Create_0.gml similarity index 100% rename from objects/obj_stanncam/Create_0.gml rename to objects/obj_stanncam_old/Create_0.gml diff --git a/objects/obj_stanncam/Draw_77.gml b/objects/obj_stanncam_old/Draw_77.gml similarity index 100% rename from objects/obj_stanncam/Draw_77.gml rename to objects/obj_stanncam_old/Draw_77.gml diff --git a/objects/obj_stanncam/Other_4.gml b/objects/obj_stanncam_old/Other_4.gml similarity index 100% rename from objects/obj_stanncam/Other_4.gml rename to objects/obj_stanncam_old/Other_4.gml diff --git a/objects/obj_stanncam/Step_2.gml b/objects/obj_stanncam_old/Step_2.gml similarity index 100% rename from objects/obj_stanncam/Step_2.gml rename to objects/obj_stanncam_old/Step_2.gml diff --git a/objects/obj_stanncam/obj_stanncam.yy b/objects/obj_stanncam_old/obj_stanncam_old.yy similarity index 97% rename from objects/obj_stanncam/obj_stanncam.yy rename to objects/obj_stanncam_old/obj_stanncam_old.yy index 638251d..6572895 100644 --- a/objects/obj_stanncam/obj_stanncam.yy +++ b/objects/obj_stanncam_old/obj_stanncam_old.yy @@ -1,7 +1,7 @@ { "resourceType": "GMObject", "resourceVersion": "1.0", - "name": "obj_stanncam", + "name": "obj_stanncam_old", "spriteId": null, "solid": false, "visible": true, diff --git a/scripts/stanncam/stanncam.gml b/scripts/stanncam/stanncam.gml new file mode 100644 index 0000000..90f10ba --- /dev/null +++ b/scripts/stanncam/stanncam.gml @@ -0,0 +1,9 @@ + + +///function stanncam() +///desc creates a new stanncam +function stanncam() constructor{ + +} + +cam1 = new stanncam() \ No newline at end of file diff --git a/scripts/stanncam_functions/stanncam_functions.yy b/scripts/stanncam/stanncam.yy similarity index 85% rename from scripts/stanncam_functions/stanncam_functions.yy rename to scripts/stanncam/stanncam.yy index 4b21e58..d94fa3f 100644 --- a/scripts/stanncam_functions/stanncam_functions.yy +++ b/scripts/stanncam/stanncam.yy @@ -1,7 +1,7 @@ { "resourceType": "GMScript", "resourceVersion": "1.0", - "name": "stanncam_functions", + "name": "stanncam", "isDnD": false, "isCompatibility": false, "parent": { diff --git a/scripts/stanncam_functions/stanncam_functions.gml b/scripts/stanncam_functions_old/stanncam_functions_old.gml similarity index 99% rename from scripts/stanncam_functions/stanncam_functions.gml rename to scripts/stanncam_functions_old/stanncam_functions_old.gml index 9adeefa..0f37954 100644 --- a/scripts/stanncam_functions/stanncam_functions.gml +++ b/scripts/stanncam_functions_old/stanncam_functions_old.gml @@ -1,5 +1,5 @@ //spawns the camera into the first room, you can remove this line if you don't want that -gml_pragma("global", "stanncam_init()"); +//gml_pragma("global", "stanncam_init()"); /// @description spawns stanncam into the first room function stanncam_init(){ diff --git a/scripts/stanncam_functions_old/stanncam_functions_old.yy b/scripts/stanncam_functions_old/stanncam_functions_old.yy new file mode 100644 index 0000000..8612ffb --- /dev/null +++ b/scripts/stanncam_functions_old/stanncam_functions_old.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "stanncam_functions_old", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Scripts", + "path": "folders/Scripts.yy", + }, +} \ No newline at end of file diff --git a/stanncam.yyp b/stanncam.yyp index 7bbfae0..300bcf5 100644 --- a/stanncam.yyp +++ b/stanncam.yyp @@ -7,14 +7,15 @@ {"id":{"name":"draw_text_outline","path":"scripts/draw_text_outline/draw_text_outline.yy",},"order":5,}, {"id":{"name":"spr_bg","path":"sprites/spr_bg/spr_bg.yy",},"order":9,}, {"id":{"name":"spr_arrow_small","path":"sprites/spr_arrow_small/spr_arrow_small.yy",},"order":7,}, - {"id":{"name":"stanncam_functions","path":"scripts/stanncam_functions/stanncam_functions.yy",},"order":2,}, + {"id":{"name":"stanncam_functions_old","path":"scripts/stanncam_functions_old/stanncam_functions_old.yy",},"order":2,}, {"id":{"name":"TileSet1","path":"tilesets/TileSet1/TileSet1.yy",},"order":13,}, {"id":{"name":"demo_f_pixel","path":"fonts/demo_f_pixel/demo_f_pixel.yy",},"order":1,}, + {"id":{"name":"stanncam","path":"scripts/stanncam/stanncam.yy",},"order":5,}, {"id":{"name":"spr_ball","path":"sprites/spr_ball/spr_ball.yy",},"order":8,}, {"id":{"name":"spr_player_moving","path":"sprites/spr_player_moving/spr_player_moving.yy",},"order":11,}, {"id":{"name":"demo_obj_player","path":"objects/demo_obj_player/demo_obj_player.yy",},"order":2,}, {"id":{"name":"shake","path":"scripts/shake/shake.yy",},"order":3,}, - {"id":{"name":"obj_stanncam","path":"objects/obj_stanncam/obj_stanncam.yy",},"order":2,}, + {"id":{"name":"obj_stanncam_old","path":"objects/obj_stanncam_old/obj_stanncam_old.yy",},"order":2,}, {"id":{"name":"demo_f_hires","path":"fonts/demo_f_hires/demo_f_hires.yy",},"order":0,}, {"id":{"name":"spr_player_idle","path":"sprites/spr_player_idle/spr_player_idle.yy",},"order":10,}, {"id":{"name":"spr_arrow","path":"sprites/spr_arrow/spr_arrow.yy",},"order":6,}, From 3847eaf84729407f0b4a36dc4a10d3b2b61c85d4 Mon Sep 17 00:00:00 2001 From: jack Date: Thu, 9 Feb 2023 18:29:58 +0100 Subject: [PATCH 2/6] First draft of struct based system --- objects/demo_obj_player/Draw_64.gml | 4 +- objects/demo_obj_player/Step_0.gml | 6 +- objects/demo_obj_player2/Alarm_0.gml | 8 + objects/demo_obj_player2/Create_0.gml | 9 + objects/demo_obj_player2/Draw_0.gml | 5 + objects/demo_obj_player2/Step_0.gml | 9 + objects/demo_obj_player2/demo_obj_player2.yy | 39 +++ objects/obj_init/Create_0.gml | 9 + objects/obj_init/Draw_77.gml | 5 + objects/obj_init/KeyPress_122.gml | 2 + objects/obj_init/obj_init.yy | 35 +++ objects/obj_stanncam_manager/Create_0.gml | 3 + objects/obj_stanncam_manager/Other_4.gml | 6 + objects/obj_stanncam_manager/Step_2.gml | 4 + .../obj_stanncam_manager.yy} | 5 +- objects/obj_stanncam_old/Create_0.gml | 41 --- objects/obj_stanncam_old/Draw_77.gml | 6 - objects/obj_stanncam_old/Other_4.gml | 4 - objects/obj_stanncam_old/Step_2.gml | 64 ---- rooms/Room1/Room1.yy | 16 +- rooms/Room1/RoomCreationCode.gml | 2 +- scripts/stanncam/stanncam.gml | 275 +++++++++++++++++- .../stanncam_functions_old.gml | 176 ----------- .../stanncam_manager_functions.gml | 38 +++ .../stanncam_manager_functions.yy} | 2 +- .../d6d0b87b-5a28-4c24-ad6e-27cd148e7b09.png | Bin 0 -> 122 bytes .../cee7bc7a-8d99-4793-a7d2-7c83a4178460.png | Bin 0 -> 122 bytes sprites/spr_player2_idle/spr_player2_idle.yy | 74 +++++ .../9685cde2-1c2c-40d5-85bb-bb36c1f0d672.png | Bin 0 -> 126 bytes .../d6d0b87b-5a28-4c24-ad6e-27cd148e7b09.png | Bin 0 -> 126 bytes .../cee7bc7a-8d99-4793-a7d2-7c83a4178460.png | Bin 0 -> 126 bytes .../cee7bc7a-8d99-4793-a7d2-7c83a4178460.png | Bin 0 -> 126 bytes .../spr_player2_moving/spr_player2_moving.yy | 76 +++++ stanncam.yyp | 10 +- 34 files changed, 618 insertions(+), 315 deletions(-) create mode 100644 objects/demo_obj_player2/Alarm_0.gml create mode 100644 objects/demo_obj_player2/Create_0.gml create mode 100644 objects/demo_obj_player2/Draw_0.gml create mode 100644 objects/demo_obj_player2/Step_0.gml create mode 100644 objects/demo_obj_player2/demo_obj_player2.yy create mode 100644 objects/obj_init/Create_0.gml create mode 100644 objects/obj_init/Draw_77.gml create mode 100644 objects/obj_init/KeyPress_122.gml create mode 100644 objects/obj_init/obj_init.yy create mode 100644 objects/obj_stanncam_manager/Create_0.gml create mode 100644 objects/obj_stanncam_manager/Other_4.gml create mode 100644 objects/obj_stanncam_manager/Step_2.gml rename objects/{obj_stanncam_old/obj_stanncam_old.yy => obj_stanncam_manager/obj_stanncam_manager.yy} (86%) delete mode 100644 objects/obj_stanncam_old/Create_0.gml delete mode 100644 objects/obj_stanncam_old/Draw_77.gml delete mode 100644 objects/obj_stanncam_old/Other_4.gml delete mode 100644 objects/obj_stanncam_old/Step_2.gml delete mode 100644 scripts/stanncam_functions_old/stanncam_functions_old.gml create mode 100644 scripts/stanncam_manager_functions/stanncam_manager_functions.gml rename scripts/{stanncam_functions_old/stanncam_functions_old.yy => stanncam_manager_functions/stanncam_manager_functions.yy} (82%) create mode 100644 sprites/spr_player2_idle/d6d0b87b-5a28-4c24-ad6e-27cd148e7b09.png create mode 100644 sprites/spr_player2_idle/layers/d6d0b87b-5a28-4c24-ad6e-27cd148e7b09/cee7bc7a-8d99-4793-a7d2-7c83a4178460.png create mode 100644 sprites/spr_player2_idle/spr_player2_idle.yy create mode 100644 sprites/spr_player2_moving/9685cde2-1c2c-40d5-85bb-bb36c1f0d672.png create mode 100644 sprites/spr_player2_moving/d6d0b87b-5a28-4c24-ad6e-27cd148e7b09.png create mode 100644 sprites/spr_player2_moving/layers/9685cde2-1c2c-40d5-85bb-bb36c1f0d672/cee7bc7a-8d99-4793-a7d2-7c83a4178460.png create mode 100644 sprites/spr_player2_moving/layers/d6d0b87b-5a28-4c24-ad6e-27cd148e7b09/cee7bc7a-8d99-4793-a7d2-7c83a4178460.png create mode 100644 sprites/spr_player2_moving/spr_player2_moving.yy diff --git a/objects/demo_obj_player/Draw_64.gml b/objects/demo_obj_player/Draw_64.gml index f546c96..4fff8a1 100644 --- a/objects/demo_obj_player/Draw_64.gml +++ b/objects/demo_obj_player/Draw_64.gml @@ -1,5 +1,7 @@ /// @description +/* + //chooses pixel font or hires font if(obj_stanncam.gui_hires){ draw_set_font(demo_f_hires); @@ -72,6 +74,6 @@ if(pointer){ } - +*/ diff --git a/objects/demo_obj_player/Step_0.gml b/objects/demo_obj_player/Step_0.gml index bba88ee..3349a21 100644 --- a/objects/demo_obj_player/Step_0.gml +++ b/objects/demo_obj_player/Step_0.gml @@ -8,6 +8,8 @@ y+= vspd; x = clamp(x,0,room_width); y = clamp(y,0,room_height); +/* + //toggle following player if(keyboard_check_pressed(vk_space)){ if(global.camera_follow != undefined) global.camera_follow = undefined; @@ -123,4 +125,6 @@ if(keyboard_check_pressed(vk_f4)) stanncam_toggle_fullscreen(); //Restart -if(keyboard_check_pressed(ord("R"))) game_restart(); \ No newline at end of file +if(keyboard_check_pressed(ord("R"))) game_restart(); + +*/ \ No newline at end of file diff --git a/objects/demo_obj_player2/Alarm_0.gml b/objects/demo_obj_player2/Alarm_0.gml new file mode 100644 index 0000000..86666c9 --- /dev/null +++ b/objects/demo_obj_player2/Alarm_0.gml @@ -0,0 +1,8 @@ +/// @description +pointer = false; + + + + + + diff --git a/objects/demo_obj_player2/Create_0.gml b/objects/demo_obj_player2/Create_0.gml new file mode 100644 index 0000000..4fa0b2d --- /dev/null +++ b/objects/demo_obj_player2/Create_0.gml @@ -0,0 +1,9 @@ +/// @description +hspd = 0; +vspd = 0; + +spd = 1.5; + +anim_spd = sprite_get_speed(spr_player_moving); + +subimg = 0; \ No newline at end of file diff --git a/objects/demo_obj_player2/Draw_0.gml b/objects/demo_obj_player2/Draw_0.gml new file mode 100644 index 0000000..c2f660f --- /dev/null +++ b/objects/demo_obj_player2/Draw_0.gml @@ -0,0 +1,5 @@ +/// @description +if(hspd != 0 || vspd != 0){ + draw_sprite(spr_player2_moving,subimg,x,y); +} else draw_sprite(spr_player2_idle,image_index,x,y); +subimg += anim_spd; \ No newline at end of file diff --git a/objects/demo_obj_player2/Step_0.gml b/objects/demo_obj_player2/Step_0.gml new file mode 100644 index 0000000..b8092e1 --- /dev/null +++ b/objects/demo_obj_player2/Step_0.gml @@ -0,0 +1,9 @@ +/// @description +hspd = (keyboard_check_direct(ord("D")) - keyboard_check_direct(ord("A"))) * spd; +vspd = (keyboard_check_direct(ord("S")) - keyboard_check_direct(ord("W"))) * spd; + +x+= hspd; +y+= vspd; + +x = clamp(x,0,room_width); +y = clamp(y,0,room_height); \ No newline at end of file diff --git a/objects/demo_obj_player2/demo_obj_player2.yy b/objects/demo_obj_player2/demo_obj_player2.yy new file mode 100644 index 0000000..a1e4d98 --- /dev/null +++ b/objects/demo_obj_player2/demo_obj_player2.yy @@ -0,0 +1,39 @@ +{ + "resourceType": "GMObject", + "resourceVersion": "1.0", + "name": "demo_obj_player2", + "spriteId": { + "name": "spr_player2_idle", + "path": "sprites/spr_player2_idle/spr_player2_idle.yy", + }, + "solid": false, + "visible": true, + "managed": true, + "spriteMaskId": null, + "persistent": false, + "parentObjectId": null, + "physicsObject": false, + "physicsSensor": false, + "physicsShape": 1, + "physicsGroup": 1, + "physicsDensity": 0.5, + "physicsRestitution": 0.1, + "physicsLinearDamping": 0.1, + "physicsAngularDamping": 0.1, + "physicsFriction": 0.2, + "physicsStartAwake": true, + "physicsKinematic": false, + "physicsShapePoints": [], + "eventList": [ + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,}, + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":8,"collisionObjectId":null,}, + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":3,"collisionObjectId":null,}, + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":2,"collisionObjectId":null,}, + ], + "properties": [], + "overriddenProperties": [], + "parent": { + "name": "demonstration", + "path": "folders/demonstration.yy", + }, +} \ No newline at end of file diff --git a/objects/obj_init/Create_0.gml b/objects/obj_init/Create_0.gml new file mode 100644 index 0000000..7500c68 --- /dev/null +++ b/objects/obj_init/Create_0.gml @@ -0,0 +1,9 @@ +/// @description +stanncam_init(320,240,1920,1080); +cam1 = new stanncam(demo_obj_player.x,demo_obj_player.y,320,240); + +cam1.follow = demo_obj_player; + +cam2 = new stanncam(demo_obj_player2.x,demo_obj_player2.y,320,240); + +cam2.follow = demo_obj_player2; \ No newline at end of file diff --git a/objects/obj_init/Draw_77.gml b/objects/obj_init/Draw_77.gml new file mode 100644 index 0000000..94fea7e --- /dev/null +++ b/objects/obj_init/Draw_77.gml @@ -0,0 +1,5 @@ +/// @description +//cam1.draw_fill(); + +cam1.draw_stretched(0,0,global.game_w/2,global.game_h); +cam2.draw_stretched(global.game_w/2,0,global.game_w/2,global.game_h); \ No newline at end of file diff --git a/objects/obj_init/KeyPress_122.gml b/objects/obj_init/KeyPress_122.gml new file mode 100644 index 0000000..92f729f --- /dev/null +++ b/objects/obj_init/KeyPress_122.gml @@ -0,0 +1,2 @@ +/// @description +stanncam_toggle_fullscreen() \ No newline at end of file diff --git a/objects/obj_init/obj_init.yy b/objects/obj_init/obj_init.yy new file mode 100644 index 0000000..320af22 --- /dev/null +++ b/objects/obj_init/obj_init.yy @@ -0,0 +1,35 @@ +{ + "resourceType": "GMObject", + "resourceVersion": "1.0", + "name": "obj_init", + "spriteId": null, + "solid": false, + "visible": true, + "managed": true, + "spriteMaskId": null, + "persistent": false, + "parentObjectId": null, + "physicsObject": false, + "physicsSensor": false, + "physicsShape": 1, + "physicsGroup": 1, + "physicsDensity": 0.5, + "physicsRestitution": 0.1, + "physicsLinearDamping": 0.1, + "physicsAngularDamping": 0.1, + "physicsFriction": 0.2, + "physicsStartAwake": true, + "physicsKinematic": false, + "physicsShapePoints": [], + "eventList": [ + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,}, + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":122,"eventType":9,"collisionObjectId":null,}, + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":77,"eventType":8,"collisionObjectId":null,}, + ], + "properties": [], + "overriddenProperties": [], + "parent": { + "name": "demonstration", + "path": "folders/demonstration.yy", + }, +} \ No newline at end of file diff --git a/objects/obj_stanncam_manager/Create_0.gml b/objects/obj_stanncam_manager/Create_0.gml new file mode 100644 index 0000000..e4dd106 --- /dev/null +++ b/objects/obj_stanncam_manager/Create_0.gml @@ -0,0 +1,3 @@ +/// @description +resolution_w = 0; +resolution_h = 0; \ No newline at end of file diff --git a/objects/obj_stanncam_manager/Other_4.gml b/objects/obj_stanncam_manager/Other_4.gml new file mode 100644 index 0000000..972159d --- /dev/null +++ b/objects/obj_stanncam_manager/Other_4.gml @@ -0,0 +1,6 @@ +/// @description +view_enabled = true; +for (var i = 0; i < array_length(global.stanncams); ++i) { + global.stanncams[i].check_viewports(); +} +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 new file mode 100644 index 0000000..37a4486 --- /dev/null +++ b/objects/obj_stanncam_manager/Step_2.gml @@ -0,0 +1,4 @@ +/// @description +for (var i = 0; i < array_length(global.stanncams); ++i) { + global.stanncams[i].step(); +} \ No newline at end of file diff --git a/objects/obj_stanncam_old/obj_stanncam_old.yy b/objects/obj_stanncam_manager/obj_stanncam_manager.yy similarity index 86% rename from objects/obj_stanncam_old/obj_stanncam_old.yy rename to objects/obj_stanncam_manager/obj_stanncam_manager.yy index 6572895..56d66bc 100644 --- a/objects/obj_stanncam_old/obj_stanncam_old.yy +++ b/objects/obj_stanncam_manager/obj_stanncam_manager.yy @@ -1,7 +1,7 @@ { "resourceType": "GMObject", "resourceVersion": "1.0", - "name": "obj_stanncam_old", + "name": "obj_stanncam_manager", "spriteId": null, "solid": false, "visible": true, @@ -22,10 +22,9 @@ "physicsKinematic": false, "physicsShapePoints": [], "eventList": [ + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":4,"eventType":7,"collisionObjectId":null,}, {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,}, {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":2,"eventType":3,"collisionObjectId":null,}, - {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":4,"eventType":7,"collisionObjectId":null,}, - {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":77,"eventType":8,"collisionObjectId":null,}, ], "properties": [], "overriddenProperties": [], diff --git a/objects/obj_stanncam_old/Create_0.gml b/objects/obj_stanncam_old/Create_0.gml deleted file mode 100644 index fe14dd2..0000000 --- a/objects/obj_stanncam_old/Create_0.gml +++ /dev/null @@ -1,41 +0,0 @@ -/// @description -#macro cam view_camera[0] - -#region change these global variables to whatever you need. -//if you change resolution or scale at runtime, run stanncam_update_resolution() after -global.view_w = 320; //game resolution width -global.view_h = 180; //game resolution height -global.gui_w = 1280; //gui resolution width -global.gui_h = 720; //gui resolution height -global.upscale = 4; //how much the game should be upscaled - -global.camera_follow = undefined; //what object the camera should follow -spd = 1; //how fast the camera follows an object -spd_threshold = 50; //the minimum distance the camera is away, for the speed to be in full effect -gui_hires = true; //if the gui should be independant of the game resolution -camera_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 -bounds_w = 20; -bounds_h = 20; -#endregion - -#region inits neccesary variables -//zoom -zoom = 1; -zoom_x = 0; -zoom_y = 0; -zooming = false; - -//screen shake -shake_length = 0; -shake_magnitude = 0; -shake_time = 0; -shake_x = 0; -shake_y = 0; - -moving = false; -#endregion - -application_surface_draw_enable(false); - -stanncam_update_resolution(); \ No newline at end of file diff --git a/objects/obj_stanncam_old/Draw_77.gml b/objects/obj_stanncam_old/Draw_77.gml deleted file mode 100644 index 186cc76..0000000 --- a/objects/obj_stanncam_old/Draw_77.gml +++ /dev/null @@ -1,6 +0,0 @@ -/// @description draws the actual game - -//if you want a special background or foreground drawn, you can draw them with stretched surfaces before and after the application surface -//or if you want to use specific shaders, you can wrap the application surface inside it - -draw_surface_stretched(application_surface,0,0,display_width,display_height); \ No newline at end of file diff --git a/objects/obj_stanncam_old/Other_4.gml b/objects/obj_stanncam_old/Other_4.gml deleted file mode 100644 index dcb856d..0000000 --- a/objects/obj_stanncam_old/Other_4.gml +++ /dev/null @@ -1,4 +0,0 @@ -/// @description -view_enabled = true; -view_visible[0] = true; -camera_set_view_size(cam,global.view_w*zoom,global.view_h*zoom); \ No newline at end of file diff --git a/objects/obj_stanncam_old/Step_2.gml b/objects/obj_stanncam_old/Step_2.gml deleted file mode 100644 index 42a8d70..0000000 --- a/objects/obj_stanncam_old/Step_2.gml +++ /dev/null @@ -1,64 +0,0 @@ -/// @description -if (!is_undefined(global.camera_follow)){ - //update destination - xTo = global.camera_follow.x; - yTo = global.camera_follow.y; - - var dist_w = max(bounds_w,abs(xTo - x)) - bounds_w; - var dist_h = max(bounds_h,abs(yTo - y)) - bounds_h; - - //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; - } - - if (abs(y - yTo) > bounds_h) - { - var _spd = (dist_h/spd_threshold)*spd; - if (y < yTo) y+=_spd; - else if (y > yTo) y-=_spd; - } -} else if(moving){ - //gradually moves camera into position based on duration - x = ease_in_out(t,xStart,xTo-xStart,duration); - y = ease_in_out(t,yStart,yTo-yStart,duration); - - t++; - if(x == xTo && y == yTo) moving = false; -} - -#region screen-shake -var stanncam_shake_ = shake(shake_time++,shake_magnitude,shake_length); -shake_x = stanncam_shake_; -shake_y = stanncam_shake_; -var vibration = stanncam_shake_ / 20; -gamepad_set_vibration(0,vibration,vibration); -#endregion - -#region constrains camera to room bounds -if(camera_constrain){ - x = clamp(x,(global.view_w/2),room_width -(global.view_w/2)); - y = clamp(y,(global.view_h/2),room_height-(global.view_h/2)); -} -#endregion - -#region zooming -if(zooming){ - //gradually zooms camera - zoom = ease_in_out(t_zoom,zoomStart,zoomTo-zoomStart,zoom_duration); - t_zoom++; - if(zoom == zoomTo) zooming = false; - camera_set_view_size(cam,global.view_w*zoom,global.view_h*zoom); - zoom_x = ((global.view_w*zoom) - global.view_w)/2; - zoom_y = ((global.view_h*zoom) - global.view_h)/2; -} -#endregion - -//update camera view -var new_x = x - (global.view_w / 2 + shake_x + zoom_x); -var new_y = y - (global.view_h / 2 + shake_y + zoom_y); - -camera_set_view_pos(cam, new_x, new_y); diff --git a/rooms/Room1/Room1.yy b/rooms/Room1/Room1.yy index 49ce28a..084de10 100644 --- a/rooms/Room1/Room1.yy +++ b/rooms/Room1/Room1.yy @@ -6,7 +6,7 @@ "volume": 1.0, "parentRoom": null, "views": [ - {"inherit":false,"visible":true,"xview":0,"yview":0,"wview":420,"hview":240,"xport":0,"yport":0,"wport":420,"hport":240,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,}, + {"inherit":false,"visible":true,"xview":0,"yview":0,"wview":10,"hview":10,"xport":0,"yport":0,"wport":10,"hport":10,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,}, {"inherit":false,"visible":false,"xview":0,"yview":0,"wview":420,"hview":240,"xport":0,"yport":0,"wport":420,"hport":240,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,}, {"inherit":false,"visible":false,"xview":0,"yview":0,"wview":420,"hview":240,"xport":0,"yport":0,"wport":420,"hport":240,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,}, {"inherit":false,"visible":false,"xview":0,"yview":0,"wview":420,"hview":240,"xport":0,"yport":0,"wport":420,"hport":240,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,}, @@ -17,19 +17,23 @@ ], "layers": [ {"resourceType":"GMRInstanceLayer","resourceVersion":"1.0","name":"Instances","instances":[ - {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_57DB5783","properties":[],"isDnd":false,"objectId":{"name":"demo_obj_player","path":"objects/demo_obj_player/demo_obj_player.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":176.0,"y":112.0,}, {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_4BF294D5","properties":[],"isDnd":false,"objectId":{"name":"obj_ball","path":"objects/obj_ball/obj_ball.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":256.0,"y":80.0,}, - ],"visible":true,"depth":0,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"gridX":16,"gridY":16,"layers":[],"hierarchyFrozen":false,"effectEnabled":true,"effectType":null,"properties":[],}, + {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_432E7188","properties":[],"isDnd":false,"objectId":{"name":"obj_init","path":"objects/obj_init/obj_init.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":144.0,"y":112.0,}, + {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_BEB4411","properties":[],"isDnd":false,"objectId":{"name":"demo_obj_player","path":"objects/demo_obj_player/demo_obj_player.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":160.0,"y":160.0,}, + {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_606FE50A","properties":[],"isDnd":false,"objectId":{"name":"demo_obj_player2","path":"objects/demo_obj_player2/demo_obj_player2.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":272.0,"y":144.0,}, + ],"visible":true,"depth":0,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"inheritVisibility":true,"inheritSubLayers":true,"gridX":16,"gridY":16,"layers":[],"hierarchyFrozen":false,"effectEnabled":true,"effectType":null,"properties":[],}, {"resourceType":"GMRTileLayer","resourceVersion":"1.1","name":"Tiles_1","tilesetId":{"name":"TileSet1","path":"tilesets/TileSet1/TileSet1.yy",},"x":0,"y":0,"tiles":{"TileDataFormat":1,"SerialiseWidth":14,"SerialiseHeight":8,"TileCompressedData":[ --112,1,],},"visible":true,"depth":100,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"gridX":16,"gridY":16,"layers":[],"hierarchyFrozen":false,"effectEnabled":true,"effectType":null,"properties":[],}, - {"resourceType":"GMRBackgroundLayer","resourceVersion":"1.0","name":"Backgrounds_1","spriteId":{"name":"spr_bg","path":"sprites/spr_bg/spr_bg.yy",},"colour":4294967295,"x":0,"y":0,"htiled":true,"vtiled":true,"hspeed":0.0,"vspeed":0.0,"stretch":false,"animationFPS":1.0,"animationSpeedType":1,"userdefinedAnimFPS":false,"visible":true,"depth":200,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"gridX":16,"gridY":16,"layers":[],"hierarchyFrozen":false,"effectEnabled":true,"effectType":null,"properties":[],}, +-112,1,],},"visible":true,"depth":100,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"inheritVisibility":true,"inheritSubLayers":true,"gridX":16,"gridY":16,"layers":[],"hierarchyFrozen":false,"effectEnabled":true,"effectType":null,"properties":[],}, + {"resourceType":"GMRBackgroundLayer","resourceVersion":"1.0","name":"Backgrounds_1","spriteId":{"name":"spr_bg","path":"sprites/spr_bg/spr_bg.yy",},"colour":4294967295,"x":0,"y":0,"htiled":true,"vtiled":true,"hspeed":0.0,"vspeed":0.0,"stretch":false,"animationFPS":1.0,"animationSpeedType":1,"userdefinedAnimFPS":false,"visible":true,"depth":200,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"inheritVisibility":true,"inheritSubLayers":true,"gridX":16,"gridY":16,"layers":[],"hierarchyFrozen":false,"effectEnabled":true,"effectType":null,"properties":[],}, ], "inheritLayers": false, "creationCodeFile": "${project_dir}/rooms/Room1/RoomCreationCode.gml", "inheritCode": false, "instanceCreationOrder": [ - {"name":"inst_57DB5783","path":"rooms/Room1/Room1.yy",}, {"name":"inst_4BF294D5","path":"rooms/Room1/Room1.yy",}, + {"name":"inst_432E7188","path":"rooms/Room1/Room1.yy",}, + {"name":"inst_BEB4411","path":"rooms/Room1/Room1.yy",}, + {"name":"inst_606FE50A","path":"rooms/Room1/Room1.yy",}, ], "inheritCreationOrder": false, "sequenceId": null, diff --git a/rooms/Room1/RoomCreationCode.gml b/rooms/Room1/RoomCreationCode.gml index e4a5d0c..787f176 100644 --- a/rooms/Room1/RoomCreationCode.gml +++ b/rooms/Room1/RoomCreationCode.gml @@ -1 +1 @@ -global.camera_follow = demo_obj_player; \ No newline at end of file +//global.camera_follow = demo_obj_player; \ No newline at end of file diff --git a/scripts/stanncam/stanncam.gml b/scripts/stanncam/stanncam.gml index 90f10ba..299bfb3 100644 --- a/scripts/stanncam/stanncam.gml +++ b/scripts/stanncam/stanncam.gml @@ -1,9 +1,268 @@ +/// @function stanncam() +/// @description creates a new stanncam +function stanncam(x_ = 0,y_ = 0,width_ = 1920,height_ = 1080) constructor{ + #region init + //whenever a new cam is created number_of_cams gets incremented + static number_of_cams = 0; + cam_id = number_of_cams; + + //checks if there's already 8 cameras + if(cam_id == 8){ + show_error("There can maximum be 8 cameras",true); + } + number_of_cams++; + array_push(global.stanncams,self); + #endregion + + #region variables + x = x_; + y = y_; + width = width_; + height = height_; + + spd = 10; //how fast the camera follows an object + spd_threshold = 50; //the minimum distance the camera is away, for the speed to be in full effect + camera_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 + bounds_w = 20; + bounds_h = 20; + + surf = -1; + + check_surface(); + check_viewports(); + update_resolution(); + + #region animation variables + + //moving + xStart = x; + yStart = y; + xTo = x; + yTo = y; + follow = -1; + duration = 0; + t = 0; + + //zoom + zoom = 1; + zoom_x = 0; + zoom_y = 0; + zooming = false; + t_zoom = 0; + zoomStart = 0; + zoomTo = 0; + zoom_duration = 0; + + //screen shake + shake_length = 0; + shake_magnitude = 0; + shake_time = 0; + shake_x = 0; + shake_y = 0; + + moving = false; + #endregion + + #endregion - -///function stanncam() -///desc creates a new stanncam -function stanncam() constructor{ - -} - -cam1 = new stanncam() \ No newline at end of file + #region Step + //gets called every step + static step = function(){ + 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; + + //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; + } + + if (abs(y - yTo) > bounds_h){ + var _spd = (dist_h/spd_threshold)*spd; + if (y < yTo) y+=_spd; + else if (y > yTo) y-=_spd; + } + + } else if(moving){ + //gradually moves camera into position based on duration + x = ease_in_out(t,xStart,xTo-xStart,duration); + y = ease_in_out(t,yStart,yTo-yStart,duration); + + t++; + if(x == xTo && y == yTo) moving = false; + } + + #region screen-shake + var stanncam_shake_ = shake(shake_time++,shake_magnitude,shake_length); + shake_x = stanncam_shake_; + shake_y = stanncam_shake_; + #endregion + + #region constrains camera to room bounds + if(camera_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 = ease_in_out(t_zoom,zoomStart,zoomTo-zoomStart,zoom_duration); + t_zoom++; + if(zoom == zoomTo) zooming = false; + camera_set_view_size(view_camera[cam_id],width*zoom,height*zoom); + zoom_x = ((width*zoom) - width)/2; + zoom_y = ((height*zoom) - height)/2; + } + #endregion + + //update camera view + 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); + } + #endregion + + #region Drawing functions + + /// @function draw() + /// @param x_ position + /// @param y_ position + /// @description draws camera + static draw = function(x_,y_){ + check_surface(); + x_ *= (global.res_w / global.game_w); + y_ *= (global.res_h / global.game_h); + draw_surface_stretched(surf,x_,y_,display_width,display_height); + } + + /// @function draw_stretched() + /// @param x_ position + /// @param y_ position + /// @param w_ width + /// @param h_ height + /// @description draws camera stretched + static draw_stretched = function(x_,y_,w,h){ + check_surface(); + x_ *= (global.res_w / global.game_w); + y_ *= (global.res_h / global.game_h); + w *= (global.res_w / global.game_w); + h *= (global.res_h / global.game_h); + draw_surface_stretched(surf,x_,y_,w,h); + } + + /// @function draw_fill() + /// @description draws camera to fill the entire game window + static draw_fill = function(){ + check_surface(); + draw_surface_stretched(surf,0,0,global.res_w,global.res_h); + } + #endregion + + #region Dynamic functions + + /// @function shake(magnitude, duration); + /// @description makes the camera shake + /// @param magnitude + /// @param duration in frames + shake = function(magnitude, duration) { + shake_magnitude =+ magnitude; + shake_length =+ duration; + shake_time = 0; + } + + /// @function move(_x,_y,duration) + /// @description moves the camera to x y + /// @param _x + /// @param _y + /// @param _duration + move = function(_x, _y, _duration){ + if(_duration == 0){ + x = _x; + y = _y; + }else{ + moving = true; + t = 0; + xStart = x; + yStart = y; + + xTo = _x; + yTo = _y; + duration = _duration; + } + } + + /// @function zoom(_zoom,zoom_duration) + /// @description zooms the camera + /// @param _zoom + /// @param duration + zoom = function(_zoom, _duration){ + if(_duration == 0){ + zoom = _zoom; + camera_set_view_size(view_camera[cam_id],width*_zoom,height*_zoom); + + } else { + zooming = true; + t_zoom = 0; + zoomStart = zoom; + } + zoomTo = _zoom; + zoom_duration = _duration; + } + + /// @function set_speed(spd,threshold) + /// @description changes the speed of the camera + /// @param spd how fast the camera can move + /// @param threshold minimum distance for the speed to have full effect + set_speed = function(spd,threshold){ + spd = spd; + spd_threshold = threshold; + } + + /// @function pos_x() + /// @description get camera corner x position. if need the middle of the camera use x + pos_x = function(){ + return camera_get_view_x(view_camera[cam_id]); + } + + /// @function pos_y() + /// @description get camera corner y position. if need the middle of the camera use y + pos_y = function(){ + return camera_get_view_y(view_camera[cam_id]); + } + #endregion + + + + #region Internal functions + //enables viewports and sets viewports size + static check_viewports = function(){ + view_visible[cam_id] = true; + camera_set_view_size(view_camera[cam_id],width,height); + } + + //checks if surface exists and else creates it and attaches it + static check_surface = function(){ + if (!surface_exists(surf)){ + surf = surface_create(width,height); + view_set_surface_id(cam_id,surf); + } + } + + //updates cameras drawing resolution + static update_resolution = function(){ + display_width = width * (global.res_w / global.game_w); + display_height = height * (global.res_h / global.game_h); + } + #endregion +} \ No newline at end of file diff --git a/scripts/stanncam_functions_old/stanncam_functions_old.gml b/scripts/stanncam_functions_old/stanncam_functions_old.gml deleted file mode 100644 index 0f37954..0000000 --- a/scripts/stanncam_functions_old/stanncam_functions_old.gml +++ /dev/null @@ -1,176 +0,0 @@ -//spawns the camera into the first room, you can remove this line if you don't want that -//gml_pragma("global", "stanncam_init()"); - -/// @description spawns stanncam into the first room -function stanncam_init(){ - room_instance_add(room_first,0,0,obj_stanncam); -} - -/// @function stanncam_toggle_fullscreen -/// @description toggle fullscreen on off -function stanncam_toggle_fullscreen(){ - window_set_fullscreen(!window_get_fullscreen()); - stanncam_update_resolution(); -} - -/// @function stanncam_update_resolution(); -/// @description updates the camera resolution, change view_w view_h and upscale to see changes -function stanncam_update_resolution(){ - camera_set_view_size(cam,global.view_w*obj_stanncam.zoom,global.view_h*obj_stanncam.zoom); - window_set_size(global.view_w*global.upscale, global.view_h*global.upscale); - - display_set_gui_size(global.gui_w,global.gui_h); - - surface_resize(application_surface, global.view_w,global.view_h); - display_reset(0, false); - - view_wport[0] = global.view_w; - view_hport[0] = global.view_h; - - with(obj_stanncam){ - //var ratio = display_width / display_height; - - if(window_get_fullscreen()) { - display_width = display_get_width(); - display_height = display_get_height(); - } else { - display_width = global.view_w * global.upscale; - display_height = global.view_h* global.upscale; - } - } -} - -/// @function stanncam_shake(magnitude, duration); -/// @description makes the screen shake -/// @param magnitude -/// @param duration in frames -function stanncam_shake(magnitude, duration) { - obj_stanncam.shake_magnitude =+ magnitude; - obj_stanncam.shake_length =+ duration; - obj_stanncam.shake_time = 0; -} - -/// @function stanncam_move(_x,_y,duration) -/// @description moves the camera to x y -/// @param _x -/// @param _y -/// @param _duration -function stanncam_move(_x, _y, duration){ - if(duration == 0){ - obj_stanncam.x = _x; - obj_stanncam.y = _y; - }else{ - with (obj_stanncam){ - moving = true; - t = 0; - xStart = x; - yStart = y; - } - obj_stanncam.xTo = _x; - obj_stanncam.yTo = _y; - obj_stanncam.duration = duration; - } -} - -/// @function stanncam_zoom(_zoom,zoom_duration) -/// @description zooms the camera -/// @param _zoom -/// @param duration -function stanncam_zoom(_zoom, duration){ - if(duration == 0){ - obj_stanncam.zoom = _zoom; - camera_set_view_size(cam,global.view_w*_zoom,global.view_h*_zoom); - - } else with (obj_stanncam){ - zooming = true; - t_zoom = 0; - zoomStart = zoom; - } - obj_stanncam.zoomTo = _zoom; - obj_stanncam.zoom_duration = duration; -} - -/// @function stanncam_speed(spd,threshold) -/// @description changes the speed of the camera -/// @param spd how fast the camera can move -/// @param threshold minimum distance for the speed to have full effect -function stanncam_speed(spd,threshold){ - obj_stanncam.spd = spd; - obj_stanncam.spd_threshold = threshold; -} - -/// @function stanncam_x() -/// @description get camera x position. if need the middle of the screen use obj_stanncam.x -function stanncam_x(){ - return camera_get_view_x(cam); -} - -/// @function stanncam_y() -/// @description get camera y position. if need the middle of the screen use obj_stanncam.y -function stanncam_y(){ - return camera_get_view_y(cam); -} - -/// @function stanncam_out_of_bounds() -/// @param x_ position the object is temporarily moved to -/// @param y_ position the object is temporarily moved to -/// @param margin the margin for the camera bounds -/// @param ignore_zoom check bounds depending on zoom level -/// @description returns if the object is outside cam bounds -function stanncam_out_of_bounds(x_,y_,margin = 0, ignore_zoom = false){ - var x_delta = x; - var y_delta = y; - - x = x_; - y = y_; - - if(!ignore_zoom){ - - } - - var col = ( //uses bounding box to see if it's within the camera view - bbox_left < stanncam_x() + margin || - bbox_top < stanncam_y() + margin || - bbox_right > (stanncam_x() + (global.view_w * obj_stanncam.zoom)) - margin || - bbox_bottom > (stanncam_y() + (global.view_h * obj_stanncam.zoom)) - margin - ) - - x = x_delta; - y = y_delta; - - if(col)return true - else return false; -} - -/// @func stanncam_point_in_rectangle(pos_x,pos_y,x1,y1,x2,y2) -/// @description checks if point is within rectangle relative to camera, default is full view -/// @param pos_x -/// @param pos_y -/// @param x1 -/// @param y1 -/// @param x2 -/// @param y2 -function stanncam_point_in_rectangle(pos_x,pos_y,x1=0,y1=0,x2=global.view_w,y2=global.view_h) { - var stanncam_x = stanncam_x(); - var stanncam_y = stanncam_y(); - return point_in_rectangle(pos_x,pos_y,stanncam_x+x1,stanncam_y+y1,stanncam_x+x2,stanncam_y+y2); -} - -/// @func stanncam_room_to_gui_x(x_) -/// @description returns the room x position as the position on the gui -/// @param x_ -function stanncam_room_to_gui_x(x_){ - x_ = x_ - stanncam_x(); - x_ = x_*(1+((global.gui_w-global.view_w)/global.view_w)); - - return x_/obj_stanncam.zoom; -} - -/// @func stanncam_room_to_gui_y(y_) -/// @description returns the room y position as the position on the gui -/// @param y_ -function stanncam_room_to_gui_y(y_){ - y_ = y_ - stanncam_y(); - y_ = y_*(1+((global.gui_h-global.view_h)/global.view_h)); - return y_/obj_stanncam.zoom; -} diff --git a/scripts/stanncam_manager_functions/stanncam_manager_functions.gml b/scripts/stanncam_manager_functions/stanncam_manager_functions.gml new file mode 100644 index 0000000..45f56da --- /dev/null +++ b/scripts/stanncam_manager_functions/stanncam_manager_functions.gml @@ -0,0 +1,38 @@ +function stanncam_init(game_w,game_h,resolution_w=game_w,resolution_h=game_h){ //stanncam manager gets created automatically + instance_create_layer(0,0,"instances",obj_stanncam_manager); + global.stanncams = []; + global.game_w = game_w; + global.game_h = game_h; + obj_stanncam_manager.resolution_w = resolution_w; + obj_stanncam_manager.resolution_h = resolution_h; + application_surface_draw_enable(false); + 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_update_resolution(); +/// @description updates the camera resolution, change view_w view_h and upscale to see changes +function stanncam_update_resolution(){ + if(window_get_fullscreen()) { + global.res_w = display_get_width(); + global.res_h = display_get_height(); + } else { + global.res_w = obj_stanncam_manager.resolution_w; + global.res_h = obj_stanncam_manager.resolution_h; + + window_set_size(global.res_w, global.res_h); + call_later(1,time_source_units_frames,function(){ + window_center(); + }); + } + + for (var i = 0; i < array_length(global.stanncams); ++i) { + global.stanncams[i].update_resolution(); + } +} \ No newline at end of file diff --git a/scripts/stanncam_functions_old/stanncam_functions_old.yy b/scripts/stanncam_manager_functions/stanncam_manager_functions.yy similarity index 82% rename from scripts/stanncam_functions_old/stanncam_functions_old.yy rename to scripts/stanncam_manager_functions/stanncam_manager_functions.yy index 8612ffb..5456f9a 100644 --- a/scripts/stanncam_functions_old/stanncam_functions_old.yy +++ b/scripts/stanncam_manager_functions/stanncam_manager_functions.yy @@ -1,7 +1,7 @@ { "resourceType": "GMScript", "resourceVersion": "1.0", - "name": "stanncam_functions_old", + "name": "stanncam_manager_functions", "isDnD": false, "isCompatibility": false, "parent": { diff --git a/sprites/spr_player2_idle/d6d0b87b-5a28-4c24-ad6e-27cd148e7b09.png b/sprites/spr_player2_idle/d6d0b87b-5a28-4c24-ad6e-27cd148e7b09.png new file mode 100644 index 0000000000000000000000000000000000000000..3138a8edf04ccfc735f6b146df74a9319e89b9e8 GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CN!3HF~3v%Ltl%uDMV@SoEu4oU?@;l1^-6U|2I- W^2vOszUM&07(8A5T-G@yGywpOwu4oU?@;l1^-6U|2I- W^2vOszUM&07(8A5T-G@yGywpOw",}, + "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[ + {"id":"f4086892-5bd8-4310-a65a-ca7ad42739c2","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"d6d0b87b-5a28-4c24-ad6e-27cd148e7b09","path":"sprites/spr_player2_idle/spr_player2_idle.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],}, + ], + "visibleRange": null, + "lockOrigin": false, + "showBackdrop": true, + "showBackdropImage": false, + "backdropImagePath": "", + "backdropImageOpacity": 0.5, + "backdropWidth": 1366, + "backdropHeight": 768, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "xorigin": 6, + "yorigin": 11, + "eventToFunction": {}, + "eventStubScript": null, + }, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"cee7bc7a-8d99-4793-a7d2-7c83a4178460","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",}, + ], + "nineSlice": null, + "parent": { + "name": "demonstration", + "path": "folders/demonstration.yy", + }, +} \ No newline at end of file diff --git a/sprites/spr_player2_moving/9685cde2-1c2c-40d5-85bb-bb36c1f0d672.png b/sprites/spr_player2_moving/9685cde2-1c2c-40d5-85bb-bb36c1f0d672.png new file mode 100644 index 0000000000000000000000000000000000000000..2c17e8f113f52898ad9339f62b7a1f415734d510 GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CN!3HF~3v%Ltl&hzUV@SoE?HpB>?~c literal 0 HcmV?d00001 diff --git a/sprites/spr_player2_moving/d6d0b87b-5a28-4c24-ad6e-27cd148e7b09.png b/sprites/spr_player2_moving/d6d0b87b-5a28-4c24-ad6e-27cd148e7b09.png new file mode 100644 index 0000000000000000000000000000000000000000..47977ceaa1da05eb8dbdd5f3b1d8128b1e3eb778 GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CN!3HF~3v%Ltl&hzUV@SoE?weB_IF* literal 0 HcmV?d00001 diff --git a/sprites/spr_player2_moving/layers/9685cde2-1c2c-40d5-85bb-bb36c1f0d672/cee7bc7a-8d99-4793-a7d2-7c83a4178460.png b/sprites/spr_player2_moving/layers/9685cde2-1c2c-40d5-85bb-bb36c1f0d672/cee7bc7a-8d99-4793-a7d2-7c83a4178460.png new file mode 100644 index 0000000000000000000000000000000000000000..2c17e8f113f52898ad9339f62b7a1f415734d510 GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CN!3HF~3v%Ltl&hzUV@SoE?HpB>?~c literal 0 HcmV?d00001 diff --git a/sprites/spr_player2_moving/layers/d6d0b87b-5a28-4c24-ad6e-27cd148e7b09/cee7bc7a-8d99-4793-a7d2-7c83a4178460.png b/sprites/spr_player2_moving/layers/d6d0b87b-5a28-4c24-ad6e-27cd148e7b09/cee7bc7a-8d99-4793-a7d2-7c83a4178460.png new file mode 100644 index 0000000000000000000000000000000000000000..47977ceaa1da05eb8dbdd5f3b1d8128b1e3eb778 GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CN!3HF~3v%Ltl&hzUV@SoE?weB_IF* literal 0 HcmV?d00001 diff --git a/sprites/spr_player2_moving/spr_player2_moving.yy b/sprites/spr_player2_moving/spr_player2_moving.yy new file mode 100644 index 0000000..9757445 --- /dev/null +++ b/sprites/spr_player2_moving/spr_player2_moving.yy @@ -0,0 +1,76 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "spr_player2_moving", + "bboxMode": 0, + "collisionKind": 1, + "type": 0, + "origin": 7, + "preMultiplyAlpha": false, + "edgeFiltering": false, + "collisionTolerance": 0, + "swfPrecision": 2.525, + "bbox_left": 1, + "bbox_right": 10, + "bbox_top": 1, + "bbox_bottom": 10, + "HTile": false, + "VTile": false, + "For3D": false, + "DynamicTexturePage": false, + "width": 12, + "height": 11, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "swatchColours": null, + "gridX": 0, + "gridY": 0, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"d6d0b87b-5a28-4c24-ad6e-27cd148e7b09",}, + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"9685cde2-1c2c-40d5-85bb-bb36c1f0d672",}, + ], + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "spr_player2_moving", + "timeUnits": 1, + "playback": 1, + "playbackSpeed": 0.1, + "playbackSpeedType": 1, + "autoRecord": true, + "volume": 1.0, + "length": 2.0, + "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[ + {"id":"df5daded-5d7c-47cc-9099-87a5c13bffae","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"d6d0b87b-5a28-4c24-ad6e-27cd148e7b09","path":"sprites/spr_player2_moving/spr_player2_moving.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + {"id":"9807de71-eb91-48eb-ae37-abde603ed83a","Key":1.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"9685cde2-1c2c-40d5-85bb-bb36c1f0d672","path":"sprites/spr_player2_moving/spr_player2_moving.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],}, + ], + "visibleRange": null, + "lockOrigin": false, + "showBackdrop": true, + "showBackdropImage": false, + "backdropImagePath": "", + "backdropImageOpacity": 0.5, + "backdropWidth": 1366, + "backdropHeight": 768, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "xorigin": 6, + "yorigin": 11, + "eventToFunction": {}, + "eventStubScript": null, + }, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"cee7bc7a-8d99-4793-a7d2-7c83a4178460","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",}, + ], + "nineSlice": null, + "parent": { + "name": "demonstration", + "path": "folders/demonstration.yy", + }, +} \ No newline at end of file diff --git a/stanncam.yyp b/stanncam.yyp index 300bcf5..f266a71 100644 --- a/stanncam.yyp +++ b/stanncam.yyp @@ -3,23 +3,27 @@ "resourceVersion": "1.6", "name": "stanncam", "resources": [ + {"id":{"name":"stanncam","path":"scripts/stanncam/stanncam.yy",},"order":6,}, + {"id":{"name":"demo_obj_player2","path":"objects/demo_obj_player2/demo_obj_player2.yy",},"order":15,}, + {"id":{"name":"obj_init","path":"objects/obj_init/obj_init.yy",},"order":14,}, {"id":{"name":"ease_in_out","path":"scripts/ease_in_out/ease_in_out.yy",},"order":4,}, + {"id":{"name":"spr_player2_idle","path":"sprites/spr_player2_idle/spr_player2_idle.yy",},"order":17,}, {"id":{"name":"draw_text_outline","path":"scripts/draw_text_outline/draw_text_outline.yy",},"order":5,}, {"id":{"name":"spr_bg","path":"sprites/spr_bg/spr_bg.yy",},"order":9,}, {"id":{"name":"spr_arrow_small","path":"sprites/spr_arrow_small/spr_arrow_small.yy",},"order":7,}, - {"id":{"name":"stanncam_functions_old","path":"scripts/stanncam_functions_old/stanncam_functions_old.yy",},"order":2,}, {"id":{"name":"TileSet1","path":"tilesets/TileSet1/TileSet1.yy",},"order":13,}, {"id":{"name":"demo_f_pixel","path":"fonts/demo_f_pixel/demo_f_pixel.yy",},"order":1,}, - {"id":{"name":"stanncam","path":"scripts/stanncam/stanncam.yy",},"order":5,}, + {"id":{"name":"spr_player2_moving","path":"sprites/spr_player2_moving/spr_player2_moving.yy",},"order":16,}, + {"id":{"name":"stanncam_manager_functions","path":"scripts/stanncam_manager_functions/stanncam_manager_functions.yy",},"order":5,}, {"id":{"name":"spr_ball","path":"sprites/spr_ball/spr_ball.yy",},"order":8,}, {"id":{"name":"spr_player_moving","path":"sprites/spr_player_moving/spr_player_moving.yy",},"order":11,}, {"id":{"name":"demo_obj_player","path":"objects/demo_obj_player/demo_obj_player.yy",},"order":2,}, {"id":{"name":"shake","path":"scripts/shake/shake.yy",},"order":3,}, - {"id":{"name":"obj_stanncam_old","path":"objects/obj_stanncam_old/obj_stanncam_old.yy",},"order":2,}, {"id":{"name":"demo_f_hires","path":"fonts/demo_f_hires/demo_f_hires.yy",},"order":0,}, {"id":{"name":"spr_player_idle","path":"sprites/spr_player_idle/spr_player_idle.yy",},"order":10,}, {"id":{"name":"spr_arrow","path":"sprites/spr_arrow/spr_arrow.yy",},"order":6,}, {"id":{"name":"obj_ball","path":"objects/obj_ball/obj_ball.yy",},"order":3,}, + {"id":{"name":"obj_stanncam_manager","path":"objects/obj_stanncam_manager/obj_stanncam_manager.yy",},"order":0,}, {"id":{"name":"spr_tile_bg","path":"sprites/spr_tile_bg/spr_tile_bg.yy",},"order":12,}, {"id":{"name":"Room1","path":"rooms/Room1/Room1.yy",},"order":4,}, ], From e836da1728055b39ac2bcbf2d07de5ca27621930 Mon Sep 17 00:00:00 2001 From: jack Date: Fri, 10 Feb 2023 05:06:01 +0100 Subject: [PATCH 3/6] stanncam ready --- fonts/demo_f_hires/demo_f_hires.old.png | Bin 9723 -> 22484 bytes fonts/demo_f_hires/demo_f_hires.old.yy | 278 +++++--------- fonts/demo_f_hires/demo_f_hires.png | Bin 22484 -> 33318 bytes fonts/demo_f_hires/demo_f_hires.yy | 196 +++++----- objects/demo_obj_player/Create_0.gml | 15 +- objects/demo_obj_player/Draw_64.gml | 83 ++-- objects/demo_obj_player/Draw_77.gml | 7 + objects/demo_obj_player/Step_0.gml | 85 +++-- objects/demo_obj_player/demo_obj_player.yy | 1 + objects/obj_init/Create_0.gml | 9 - objects/obj_init/Draw_77.gml | 5 - objects/obj_init/KeyPress_122.gml | 2 - objects/obj_stanncam_manager/Create_0.gml | 3 +- objects/obj_stanncam_manager/Draw_76.gml | 5 + objects/obj_stanncam_manager/Other_4.gml | 5 +- objects/obj_stanncam_manager/Step_2.gml | 3 +- .../obj_stanncam_manager.yy | 1 + objects/obj_tv/Create_0.gml | 9 + objects/obj_tv/Draw_0.gml | 3 + .../obj_init.yy => obj_tv/obj_tv.yy} | 10 +- rooms/Room1/Room1.yy | 6 +- scripts/stanncam/stanncam.gml | 359 ++++++++++++------ scripts/stanncam_manager/stanncam_manager.gml | 82 ++++ .../stanncam_manager.yy} | 2 +- .../stanncam_manager_functions.gml | 38 -- .../ca68646b-1689-4d76-b7ab-b0c225cc8d31.png | Bin 0 -> 305 bytes .../9bc939da-2fec-4e13-aa9c-105eb44921f3.png | Bin 0 -> 305 bytes sprites/spr_tv/spr_tv.yy | 74 ++++ stanncam.yyp | 5 +- 29 files changed, 745 insertions(+), 541 deletions(-) create mode 100644 objects/demo_obj_player/Draw_77.gml delete mode 100644 objects/obj_init/Create_0.gml delete mode 100644 objects/obj_init/Draw_77.gml delete mode 100644 objects/obj_init/KeyPress_122.gml create mode 100644 objects/obj_stanncam_manager/Draw_76.gml create mode 100644 objects/obj_tv/Create_0.gml create mode 100644 objects/obj_tv/Draw_0.gml rename objects/{obj_init/obj_init.yy => obj_tv/obj_tv.yy} (77%) create mode 100644 scripts/stanncam_manager/stanncam_manager.gml rename scripts/{stanncam_manager_functions/stanncam_manager_functions.yy => stanncam_manager/stanncam_manager.yy} (82%) delete mode 100644 scripts/stanncam_manager_functions/stanncam_manager_functions.gml create mode 100644 sprites/spr_tv/ca68646b-1689-4d76-b7ab-b0c225cc8d31.png create mode 100644 sprites/spr_tv/layers/ca68646b-1689-4d76-b7ab-b0c225cc8d31/9bc939da-2fec-4e13-aa9c-105eb44921f3.png create mode 100644 sprites/spr_tv/spr_tv.yy diff --git a/fonts/demo_f_hires/demo_f_hires.old.png b/fonts/demo_f_hires/demo_f_hires.old.png index e3cfcd54e490e5e80e8d67fc7601dc8453ebf9a4..7f01f2b636d827678c0803a187ace140a8f99d26 100644 GIT binary patch literal 22484 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 literal 9723 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 diff --git a/fonts/demo_f_hires/demo_f_hires.old.yy b/fonts/demo_f_hires/demo_f_hires.old.yy index 11e5df4..cf37962 100644 --- a/fonts/demo_f_hires/demo_f_hires.old.yy +++ b/fonts/demo_f_hires/demo_f_hires.old.yy @@ -7,9 +7,9 @@ "interpreter": 0, "pointRounding": 0, "applyKerning": 0, - "fontName": "Arial", - "styleName": "Regular", - "size": 12.0, + "fontName": "Atkinson Hyperlegible", + "styleName": "Bold", + "size": 24.0, "bold": false, "italic": false, "charset": 0, @@ -24,178 +24,106 @@ "path": "texturegroups/Default", }, "ascenderOffset": 0, - "ascender": 14, + "ascender": 27, "glyphs": { - "32": {"x":2,"y":2,"w":4,"h":18,"character":32,"shift":4,"offset":0,}, - "33": {"x":165,"y":42,"w":3,"h":18,"character":33,"shift":4,"offset":1,}, - "34": {"x":158,"y":42,"w":5,"h":18,"character":34,"shift":6,"offset":0,}, - "35": {"x":147,"y":42,"w":9,"h":18,"character":35,"shift":9,"offset":0,}, - "36": {"x":136,"y":42,"w":9,"h":18,"character":36,"shift":9,"offset":0,}, - "37": {"x":120,"y":42,"w":14,"h":18,"character":37,"shift":14,"offset":0,}, - "38": {"x":107,"y":42,"w":11,"h":18,"character":38,"shift":11,"offset":0,}, - "39": {"x":102,"y":42,"w":3,"h":18,"character":39,"shift":3,"offset":0,}, - "40": {"x":95,"y":42,"w":5,"h":18,"character":40,"shift":5,"offset":0,}, - "41": {"x":88,"y":42,"w":5,"h":18,"character":41,"shift":5,"offset":0,}, - "42": {"x":170,"y":42,"w":6,"h":18,"character":42,"shift":6,"offset":0,}, - "43": {"x":77,"y":42,"w":9,"h":18,"character":43,"shift":9,"offset":0,}, - "44": {"x":61,"y":42,"w":3,"h":18,"character":44,"shift":4,"offset":1,}, - "45": {"x":54,"y":42,"w":5,"h":18,"character":45,"shift":5,"offset":0,}, - "46": {"x":49,"y":42,"w":3,"h":18,"character":46,"shift":4,"offset":1,}, - "47": {"x":42,"y":42,"w":5,"h":18,"character":47,"shift":4,"offset":0,}, - "48": {"x":31,"y":42,"w":9,"h":18,"character":48,"shift":9,"offset":0,}, - "49": {"x":24,"y":42,"w":5,"h":18,"character":49,"shift":9,"offset":1,}, - "50": {"x":13,"y":42,"w":9,"h":18,"character":50,"shift":9,"offset":0,}, - "51": {"x":2,"y":42,"w":9,"h":18,"character":51,"shift":9,"offset":0,}, - "52": {"x":240,"y":22,"w":9,"h":18,"character":52,"shift":9,"offset":0,}, - "53": {"x":66,"y":42,"w":9,"h":18,"character":53,"shift":9,"offset":0,}, - "54": {"x":178,"y":42,"w":9,"h":18,"character":54,"shift":9,"offset":0,}, - "55": {"x":189,"y":42,"w":9,"h":18,"character":55,"shift":9,"offset":0,}, - "56": {"x":200,"y":42,"w":9,"h":18,"character":56,"shift":9,"offset":0,}, - "57": {"x":186,"y":62,"w":9,"h":18,"character":57,"shift":9,"offset":0,}, - "58": {"x":181,"y":62,"w":3,"h":18,"character":58,"shift":4,"offset":1,}, - "59": {"x":176,"y":62,"w":3,"h":18,"character":59,"shift":4,"offset":1,}, - "60": {"x":165,"y":62,"w":9,"h":18,"character":60,"shift":9,"offset":0,}, - "61": {"x":154,"y":62,"w":9,"h":18,"character":61,"shift":9,"offset":0,}, - "62": {"x":143,"y":62,"w":9,"h":18,"character":62,"shift":9,"offset":0,}, - "63": {"x":132,"y":62,"w":9,"h":18,"character":63,"shift":9,"offset":0,}, - "64": {"x":114,"y":62,"w":16,"h":18,"character":64,"shift":16,"offset":0,}, - "65": {"x":100,"y":62,"w":12,"h":18,"character":65,"shift":11,"offset":-1,}, - "66": {"x":89,"y":62,"w":9,"h":18,"character":66,"shift":11,"offset":1,}, - "67": {"x":76,"y":62,"w":11,"h":18,"character":67,"shift":12,"offset":0,}, - "68": {"x":64,"y":62,"w":10,"h":18,"character":68,"shift":12,"offset":1,}, - "69": {"x":53,"y":62,"w":9,"h":18,"character":69,"shift":11,"offset":1,}, - "70": {"x":42,"y":62,"w":9,"h":18,"character":70,"shift":10,"offset":1,}, - "71": {"x":28,"y":62,"w":12,"h":18,"character":71,"shift":12,"offset":0,}, - "72": {"x":16,"y":62,"w":10,"h":18,"character":72,"shift":12,"offset":1,}, - "73": {"x":11,"y":62,"w":3,"h":18,"character":73,"shift":4,"offset":1,}, - "74": {"x":2,"y":62,"w":7,"h":18,"character":74,"shift":8,"offset":0,}, - "75": {"x":235,"y":42,"w":10,"h":18,"character":75,"shift":11,"offset":1,}, - "76": {"x":225,"y":42,"w":8,"h":18,"character":76,"shift":9,"offset":1,}, - "77": {"x":211,"y":42,"w":12,"h":18,"character":77,"shift":13,"offset":1,}, - "78": {"x":228,"y":22,"w":10,"h":18,"character":78,"shift":12,"offset":1,}, - "79": {"x":214,"y":22,"w":12,"h":18,"character":79,"shift":12,"offset":0,}, - "80": {"x":203,"y":22,"w":9,"h":18,"character":80,"shift":11,"offset":1,}, - "81": {"x":232,"y":2,"w":12,"h":18,"character":81,"shift":12,"offset":0,}, - "82": {"x":213,"y":2,"w":11,"h":18,"character":82,"shift":12,"offset":1,}, - "83": {"x":201,"y":2,"w":10,"h":18,"character":83,"shift":11,"offset":0,}, - "84": {"x":189,"y":2,"w":10,"h":18,"character":84,"shift":10,"offset":0,}, - "85": {"x":177,"y":2,"w":10,"h":18,"character":85,"shift":12,"offset":1,}, - "86": {"x":164,"y":2,"w":11,"h":18,"character":86,"shift":11,"offset":0,}, - "87": {"x":147,"y":2,"w":15,"h":18,"character":87,"shift":15,"offset":0,}, - "88": {"x":134,"y":2,"w":11,"h":18,"character":88,"shift":11,"offset":0,}, - "89": {"x":121,"y":2,"w":11,"h":18,"character":89,"shift":11,"offset":0,}, - "90": {"x":109,"y":2,"w":10,"h":18,"character":90,"shift":10,"offset":0,}, - "91": {"x":226,"y":2,"w":4,"h":18,"character":91,"shift":4,"offset":1,}, - "92": {"x":102,"y":2,"w":5,"h":18,"character":92,"shift":4,"offset":0,}, - "93": {"x":89,"y":2,"w":4,"h":18,"character":93,"shift":4,"offset":0,}, - "94": {"x":79,"y":2,"w":8,"h":18,"character":94,"shift":8,"offset":0,}, - "95": {"x":66,"y":2,"w":11,"h":18,"character":95,"shift":9,"offset":-1,}, - "96": {"x":60,"y":2,"w":4,"h":18,"character":96,"shift":5,"offset":0,}, - "97": {"x":49,"y":2,"w":9,"h":18,"character":97,"shift":9,"offset":0,}, - "98": {"x":39,"y":2,"w":8,"h":18,"character":98,"shift":9,"offset":1,}, - "99": {"x":29,"y":2,"w":8,"h":18,"character":99,"shift":8,"offset":0,}, - "100": {"x":19,"y":2,"w":8,"h":18,"character":100,"shift":9,"offset":0,}, - "101": {"x":8,"y":2,"w":9,"h":18,"character":101,"shift":9,"offset":0,}, - "102": {"x":95,"y":2,"w":5,"h":18,"character":102,"shift":4,"offset":0,}, - "103": {"x":2,"y":22,"w":8,"h":18,"character":103,"shift":9,"offset":0,}, - "104": {"x":97,"y":22,"w":7,"h":18,"character":104,"shift":9,"offset":1,}, - "105": {"x":12,"y":22,"w":2,"h":18,"character":105,"shift":4,"offset":1,}, - "106": {"x":187,"y":22,"w":4,"h":18,"character":106,"shift":4,"offset":-1,}, - "107": {"x":178,"y":22,"w":7,"h":18,"character":107,"shift":8,"offset":1,}, - "108": {"x":174,"y":22,"w":2,"h":18,"character":108,"shift":4,"offset":1,}, - "109": {"x":160,"y":22,"w":12,"h":18,"character":109,"shift":13,"offset":1,}, - "110": {"x":151,"y":22,"w":7,"h":18,"character":110,"shift":9,"offset":1,}, - "111": {"x":140,"y":22,"w":9,"h":18,"character":111,"shift":9,"offset":0,}, - "112": {"x":130,"y":22,"w":8,"h":18,"character":112,"shift":9,"offset":1,}, - "113": {"x":120,"y":22,"w":8,"h":18,"character":113,"shift":9,"offset":0,}, - "114": {"x":113,"y":22,"w":5,"h":18,"character":114,"shift":5,"offset":1,}, - "115": {"x":193,"y":22,"w":8,"h":18,"character":115,"shift":8,"offset":0,}, - "116": {"x":106,"y":22,"w":5,"h":18,"character":116,"shift":4,"offset":0,}, - "117": {"x":88,"y":22,"w":7,"h":18,"character":117,"shift":9,"offset":1,}, - "118": {"x":78,"y":22,"w":8,"h":18,"character":118,"shift":8,"offset":0,}, - "119": {"x":64,"y":22,"w":12,"h":18,"character":119,"shift":12,"offset":0,}, - "120": {"x":54,"y":22,"w":8,"h":18,"character":120,"shift":8,"offset":0,}, - "121": {"x":44,"y":22,"w":8,"h":18,"character":121,"shift":8,"offset":0,}, - "122": {"x":34,"y":22,"w":8,"h":18,"character":122,"shift":8,"offset":0,}, - "123": {"x":27,"y":22,"w":5,"h":18,"character":123,"shift":5,"offset":0,}, - "124": {"x":23,"y":22,"w":2,"h":18,"character":124,"shift":4,"offset":1,}, - "125": {"x":16,"y":22,"w":5,"h":18,"character":125,"shift":5,"offset":0,}, - "126": {"x":197,"y":62,"w":9,"h":18,"character":126,"shift":9,"offset":0,}, - "9647": {"x":208,"y":62,"w":10,"h":18,"character":9647,"shift":16,"offset":3,}, + "32": {"x":2,"y":2,"w":10,"h":38,"character":32,"shift":10,"offset":0,}, + "33": {"x":240,"y":82,"w":7,"h":38,"character":33,"shift":9,"offset":1,}, + "34": {"x":227,"y":82,"w":11,"h":38,"character":34,"shift":13,"offset":1,}, + "35": {"x":200,"y":82,"w":25,"h":38,"character":35,"shift":25,"offset":0,}, + "36": {"x":178,"y":82,"w":20,"h":38,"character":36,"shift":20,"offset":0,}, + "37": {"x":145,"y":82,"w":31,"h":38,"character":37,"shift":31,"offset":0,}, + "38": {"x":120,"y":82,"w":23,"h":38,"character":38,"shift":22,"offset":0,}, + "39": {"x":113,"y":82,"w":5,"h":38,"character":39,"shift":7,"offset":1,}, + "40": {"x":101,"y":82,"w":10,"h":38,"character":40,"shift":12,"offset":1,}, + "41": {"x":89,"y":82,"w":10,"h":38,"character":41,"shift":12,"offset":1,}, + "42": {"x":249,"y":82,"w":12,"h":38,"character":42,"shift":14,"offset":1,}, + "43": {"x":69,"y":82,"w":18,"h":38,"character":43,"shift":20,"offset":1,}, + "44": {"x":40,"y":82,"w":7,"h":38,"character":44,"shift":9,"offset":1,}, + "45": {"x":27,"y":82,"w":11,"h":38,"character":45,"shift":13,"offset":1,}, + "46": {"x":18,"y":82,"w":7,"h":38,"character":46,"shift":9,"offset":1,}, + "47": {"x":2,"y":82,"w":14,"h":38,"character":47,"shift":14,"offset":0,}, + "48": {"x":479,"y":42,"w":19,"h":38,"character":48,"shift":21,"offset":1,}, + "49": {"x":466,"y":42,"w":11,"h":38,"character":49,"shift":14,"offset":1,}, + "50": {"x":447,"y":42,"w":17,"h":38,"character":50,"shift":19,"offset":1,}, + "51": {"x":428,"y":42,"w":17,"h":38,"character":51,"shift":19,"offset":1,}, + "52": {"x":407,"y":42,"w":19,"h":38,"character":52,"shift":20,"offset":0,}, + "53": {"x":49,"y":82,"w":18,"h":38,"character":53,"shift":20,"offset":1,}, + "54": {"x":263,"y":82,"w":18,"h":38,"character":54,"shift":20,"offset":1,}, + "55": {"x":283,"y":82,"w":17,"h":38,"character":55,"shift":17,"offset":0,}, + "56": {"x":302,"y":82,"w":18,"h":38,"character":56,"shift":20,"offset":1,}, + "57": {"x":211,"y":122,"w":16,"h":38,"character":57,"shift":18,"offset":1,}, + "58": {"x":202,"y":122,"w":7,"h":38,"character":58,"shift":9,"offset":1,}, + "59": {"x":193,"y":122,"w":7,"h":38,"character":59,"shift":9,"offset":1,}, + "60": {"x":174,"y":122,"w":17,"h":38,"character":60,"shift":18,"offset":1,}, + "61": {"x":154,"y":122,"w":18,"h":38,"character":61,"shift":20,"offset":1,}, + "62": {"x":135,"y":122,"w":17,"h":38,"character":62,"shift":18,"offset":1,}, + "63": {"x":115,"y":122,"w":18,"h":38,"character":63,"shift":20,"offset":1,}, + "64": {"x":91,"y":122,"w":22,"h":38,"character":64,"shift":24,"offset":1,}, + "65": {"x":67,"y":122,"w":22,"h":38,"character":65,"shift":22,"offset":0,}, + "66": {"x":46,"y":122,"w":19,"h":38,"character":66,"shift":21,"offset":1,}, + "67": {"x":24,"y":122,"w":20,"h":38,"character":67,"shift":22,"offset":1,}, + "68": {"x":2,"y":122,"w":20,"h":38,"character":68,"shift":22,"offset":1,}, + "69": {"x":485,"y":82,"w":17,"h":38,"character":69,"shift":19,"offset":1,}, + "70": {"x":467,"y":82,"w":16,"h":38,"character":70,"shift":17,"offset":1,}, + "71": {"x":444,"y":82,"w":21,"h":38,"character":71,"shift":23,"offset":1,}, + "72": {"x":422,"y":82,"w":20,"h":38,"character":72,"shift":22,"offset":1,}, + "73": {"x":408,"y":82,"w":12,"h":38,"character":73,"shift":15,"offset":1,}, + "74": {"x":389,"y":82,"w":17,"h":38,"character":74,"shift":18,"offset":0,}, + "75": {"x":367,"y":82,"w":20,"h":38,"character":75,"shift":21,"offset":1,}, + "76": {"x":349,"y":82,"w":16,"h":38,"character":76,"shift":17,"offset":1,}, + "77": {"x":322,"y":82,"w":25,"h":38,"character":77,"shift":27,"offset":1,}, + "78": {"x":385,"y":42,"w":20,"h":38,"character":78,"shift":22,"offset":1,}, + "79": {"x":360,"y":42,"w":23,"h":38,"character":79,"shift":24,"offset":1,}, + "80": {"x":339,"y":42,"w":19,"h":38,"character":80,"shift":20,"offset":1,}, + "81": {"x":418,"y":2,"w":24,"h":38,"character":81,"shift":25,"offset":1,}, + "82": {"x":385,"y":2,"w":20,"h":38,"character":82,"shift":21,"offset":1,}, + "83": {"x":363,"y":2,"w":20,"h":38,"character":83,"shift":20,"offset":0,}, + "84": {"x":341,"y":2,"w":20,"h":38,"character":84,"shift":20,"offset":0,}, + "85": {"x":320,"y":2,"w":19,"h":38,"character":85,"shift":21,"offset":1,}, + "86": {"x":297,"y":2,"w":21,"h":38,"character":86,"shift":21,"offset":0,}, + "87": {"x":267,"y":2,"w":28,"h":38,"character":87,"shift":28,"offset":0,}, + "88": {"x":242,"y":2,"w":23,"h":38,"character":88,"shift":22,"offset":0,}, + "89": {"x":218,"y":2,"w":22,"h":38,"character":89,"shift":22,"offset":0,}, + "90": {"x":198,"y":2,"w":18,"h":38,"character":90,"shift":20,"offset":1,}, + "91": {"x":407,"y":2,"w":9,"h":38,"character":91,"shift":11,"offset":1,}, + "92": {"x":182,"y":2,"w":14,"h":38,"character":92,"shift":14,"offset":0,}, + "93": {"x":157,"y":2,"w":9,"h":38,"character":93,"shift":11,"offset":1,}, + "94": {"x":138,"y":2,"w":17,"h":38,"character":94,"shift":19,"offset":1,}, + "95": {"x":122,"y":2,"w":14,"h":38,"character":95,"shift":14,"offset":0,}, + "96": {"x":112,"y":2,"w":8,"h":38,"character":96,"shift":10,"offset":1,}, + "97": {"x":93,"y":2,"w":17,"h":38,"character":97,"shift":18,"offset":0,}, + "98": {"x":73,"y":2,"w":18,"h":38,"character":98,"shift":19,"offset":1,}, + "99": {"x":54,"y":2,"w":17,"h":38,"character":99,"shift":17,"offset":0,}, + "100": {"x":34,"y":2,"w":18,"h":38,"character":100,"shift":19,"offset":0,}, + "101": {"x":14,"y":2,"w":18,"h":38,"character":101,"shift":18,"offset":0,}, + "102": {"x":168,"y":2,"w":12,"h":38,"character":102,"shift":12,"offset":0,}, + "103": {"x":444,"y":2,"w":18,"h":38,"character":103,"shift":19,"offset":0,}, + "104": {"x":122,"y":42,"w":16,"h":38,"character":104,"shift":18,"offset":1,}, + "105": {"x":464,"y":2,"w":10,"h":38,"character":105,"shift":10,"offset":0,}, + "106": {"x":307,"y":42,"w":11,"h":38,"character":106,"shift":8,"offset":-3,}, + "107": {"x":288,"y":42,"w":17,"h":38,"character":107,"shift":18,"offset":1,}, + "108": {"x":277,"y":42,"w":9,"h":38,"character":108,"shift":10,"offset":1,}, + "109": {"x":249,"y":42,"w":26,"h":38,"character":109,"shift":28,"offset":1,}, + "110": {"x":231,"y":42,"w":16,"h":38,"character":110,"shift":18,"offset":1,}, + "111": {"x":211,"y":42,"w":18,"h":38,"character":111,"shift":18,"offset":0,}, + "112": {"x":191,"y":42,"w":18,"h":38,"character":112,"shift":19,"offset":1,}, + "113": {"x":167,"y":42,"w":22,"h":38,"character":113,"shift":19,"offset":0,}, + "114": {"x":154,"y":42,"w":11,"h":38,"character":114,"shift":12,"offset":1,}, + "115": {"x":320,"y":42,"w":17,"h":38,"character":115,"shift":17,"offset":0,}, + "116": {"x":140,"y":42,"w":12,"h":38,"character":116,"shift":12,"offset":0,}, + "117": {"x":104,"y":42,"w":16,"h":38,"character":117,"shift":18,"offset":1,}, + "118": {"x":85,"y":42,"w":17,"h":38,"character":118,"shift":17,"offset":0,}, + "119": {"x":59,"y":42,"w":24,"h":38,"character":119,"shift":23,"offset":0,}, + "120": {"x":39,"y":42,"w":18,"h":38,"character":120,"shift":17,"offset":0,}, + "121": {"x":20,"y":42,"w":17,"h":38,"character":121,"shift":17,"offset":0,}, + "122": {"x":2,"y":42,"w":16,"h":38,"character":122,"shift":17,"offset":0,}, + "123": {"x":497,"y":2,"w":11,"h":38,"character":123,"shift":12,"offset":0,}, + "124": {"x":489,"y":2,"w":6,"h":38,"character":124,"shift":7,"offset":1,}, + "125": {"x":476,"y":2,"w":11,"h":38,"character":125,"shift":12,"offset":1,}, + "126": {"x":229,"y":122,"w":15,"h":38,"character":126,"shift":17,"offset":1,}, + "9647": {"x":246,"y":122,"w":19,"h":38,"character":9647,"shift":31,"offset":6,}, }, - "kerningPairs": [ - {"first":32,"second":65,"amount":-1,}, - {"first":32,"second":902,"amount":-1,}, - {"first":32,"second":913,"amount":-1,}, - {"first":32,"second":916,"amount":-1,}, - {"first":32,"second":923,"amount":-1,}, - {"first":49,"second":49,"amount":-1,}, - {"first":65,"second":32,"amount":-1,}, - {"first":65,"second":84,"amount":-1,}, - {"first":65,"second":86,"amount":-1,}, - {"first":65,"second":89,"amount":-1,}, - {"first":65,"second":160,"amount":-1,}, - {"first":65,"second":8217,"amount":-1,}, - {"first":70,"second":44,"amount":-1,}, - {"first":70,"second":46,"amount":-1,}, - {"first":70,"second":65,"amount":-1,}, - {"first":76,"second":84,"amount":-1,}, - {"first":76,"second":86,"amount":-1,}, - {"first":76,"second":87,"amount":-1,}, - {"first":76,"second":89,"amount":-1,}, - {"first":76,"second":8217,"amount":-1,}, - {"first":80,"second":44,"amount":-1,}, - {"first":80,"second":46,"amount":-1,}, - {"first":80,"second":65,"amount":-1,}, - {"first":84,"second":44,"amount":-1,}, - {"first":84,"second":45,"amount":-1,}, - {"first":84,"second":46,"amount":-1,}, - {"first":84,"second":58,"amount":-1,}, - {"first":84,"second":59,"amount":-1,}, - {"first":84,"second":65,"amount":-1,}, - {"first":84,"second":97,"amount":-1,}, - {"first":84,"second":99,"amount":-1,}, - {"first":84,"second":101,"amount":-1,}, - {"first":84,"second":111,"amount":-1,}, - {"first":84,"second":115,"amount":-1,}, - {"first":84,"second":119,"amount":-1,}, - {"first":84,"second":121,"amount":-1,}, - {"first":84,"second":173,"amount":-1,}, - {"first":84,"second":894,"amount":-1,}, - {"first":86,"second":44,"amount":-1,}, - {"first":86,"second":45,"amount":-1,}, - {"first":86,"second":46,"amount":-1,}, - {"first":86,"second":65,"amount":-1,}, - {"first":86,"second":97,"amount":-1,}, - {"first":86,"second":101,"amount":-1,}, - {"first":86,"second":111,"amount":-1,}, - {"first":86,"second":173,"amount":-1,}, - {"first":87,"second":44,"amount":-1,}, - {"first":87,"second":46,"amount":-1,}, - {"first":89,"second":44,"amount":-1,}, - {"first":89,"second":45,"amount":-1,}, - {"first":89,"second":46,"amount":-1,}, - {"first":89,"second":58,"amount":-1,}, - {"first":89,"second":59,"amount":-1,}, - {"first":89,"second":65,"amount":-1,}, - {"first":89,"second":97,"amount":-1,}, - {"first":89,"second":101,"amount":-1,}, - {"first":89,"second":111,"amount":-1,}, - {"first":89,"second":112,"amount":-1,}, - {"first":89,"second":113,"amount":-1,}, - {"first":89,"second":117,"amount":-1,}, - {"first":89,"second":118,"amount":-1,}, - {"first":89,"second":173,"amount":-1,}, - {"first":89,"second":894,"amount":-1,}, - {"first":114,"second":44,"amount":-1,}, - {"first":114,"second":46,"amount":-1,}, - {"first":118,"second":44,"amount":-1,}, - {"first":118,"second":46,"amount":-1,}, - {"first":119,"second":44,"amount":-1,}, - {"first":119,"second":46,"amount":-1,}, - {"first":121,"second":44,"amount":-1,}, - {"first":121,"second":46,"amount":-1,}, - ], + "kerningPairs": [], "ranges": [ {"lower":32,"upper":127,}, {"lower":9647,"upper":9647,}, @@ -204,7 +132,7 @@ "canGenerateBitmap": true, "maintainGms1Font": false, "parent": { - "name": "demo_Fonts", - "path": "folders/demo_Fonts.yy", + "name": "demonstration", + "path": "folders/demonstration.yy", }, } \ No newline at end of file diff --git a/fonts/demo_f_hires/demo_f_hires.png b/fonts/demo_f_hires/demo_f_hires.png index 7f01f2b636d827678c0803a187ace140a8f99d26..f16bdf69b6883a5c45c0d0017205633e2216a855 100644 GIT binary patch literal 33318 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 KrD`OMgZ~#2e+J3` literal 22484 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 diff --git a/fonts/demo_f_hires/demo_f_hires.yy b/fonts/demo_f_hires/demo_f_hires.yy index cf37962..e1ce5f2 100644 --- a/fonts/demo_f_hires/demo_f_hires.yy +++ b/fonts/demo_f_hires/demo_f_hires.yy @@ -9,7 +9,7 @@ "applyKerning": 0, "fontName": "Atkinson Hyperlegible", "styleName": "Bold", - "size": 24.0, + "size": 34.0, "bold": false, "italic": false, "charset": 0, @@ -24,104 +24,104 @@ "path": "texturegroups/Default", }, "ascenderOffset": 0, - "ascender": 27, + "ascender": 39, "glyphs": { - "32": {"x":2,"y":2,"w":10,"h":38,"character":32,"shift":10,"offset":0,}, - "33": {"x":240,"y":82,"w":7,"h":38,"character":33,"shift":9,"offset":1,}, - "34": {"x":227,"y":82,"w":11,"h":38,"character":34,"shift":13,"offset":1,}, - "35": {"x":200,"y":82,"w":25,"h":38,"character":35,"shift":25,"offset":0,}, - "36": {"x":178,"y":82,"w":20,"h":38,"character":36,"shift":20,"offset":0,}, - "37": {"x":145,"y":82,"w":31,"h":38,"character":37,"shift":31,"offset":0,}, - "38": {"x":120,"y":82,"w":23,"h":38,"character":38,"shift":22,"offset":0,}, - "39": {"x":113,"y":82,"w":5,"h":38,"character":39,"shift":7,"offset":1,}, - "40": {"x":101,"y":82,"w":10,"h":38,"character":40,"shift":12,"offset":1,}, - "41": {"x":89,"y":82,"w":10,"h":38,"character":41,"shift":12,"offset":1,}, - "42": {"x":249,"y":82,"w":12,"h":38,"character":42,"shift":14,"offset":1,}, - "43": {"x":69,"y":82,"w":18,"h":38,"character":43,"shift":20,"offset":1,}, - "44": {"x":40,"y":82,"w":7,"h":38,"character":44,"shift":9,"offset":1,}, - "45": {"x":27,"y":82,"w":11,"h":38,"character":45,"shift":13,"offset":1,}, - "46": {"x":18,"y":82,"w":7,"h":38,"character":46,"shift":9,"offset":1,}, - "47": {"x":2,"y":82,"w":14,"h":38,"character":47,"shift":14,"offset":0,}, - "48": {"x":479,"y":42,"w":19,"h":38,"character":48,"shift":21,"offset":1,}, - "49": {"x":466,"y":42,"w":11,"h":38,"character":49,"shift":14,"offset":1,}, - "50": {"x":447,"y":42,"w":17,"h":38,"character":50,"shift":19,"offset":1,}, - "51": {"x":428,"y":42,"w":17,"h":38,"character":51,"shift":19,"offset":1,}, - "52": {"x":407,"y":42,"w":19,"h":38,"character":52,"shift":20,"offset":0,}, - "53": {"x":49,"y":82,"w":18,"h":38,"character":53,"shift":20,"offset":1,}, - "54": {"x":263,"y":82,"w":18,"h":38,"character":54,"shift":20,"offset":1,}, - "55": {"x":283,"y":82,"w":17,"h":38,"character":55,"shift":17,"offset":0,}, - "56": {"x":302,"y":82,"w":18,"h":38,"character":56,"shift":20,"offset":1,}, - "57": {"x":211,"y":122,"w":16,"h":38,"character":57,"shift":18,"offset":1,}, - "58": {"x":202,"y":122,"w":7,"h":38,"character":58,"shift":9,"offset":1,}, - "59": {"x":193,"y":122,"w":7,"h":38,"character":59,"shift":9,"offset":1,}, - "60": {"x":174,"y":122,"w":17,"h":38,"character":60,"shift":18,"offset":1,}, - "61": {"x":154,"y":122,"w":18,"h":38,"character":61,"shift":20,"offset":1,}, - "62": {"x":135,"y":122,"w":17,"h":38,"character":62,"shift":18,"offset":1,}, - "63": {"x":115,"y":122,"w":18,"h":38,"character":63,"shift":20,"offset":1,}, - "64": {"x":91,"y":122,"w":22,"h":38,"character":64,"shift":24,"offset":1,}, - "65": {"x":67,"y":122,"w":22,"h":38,"character":65,"shift":22,"offset":0,}, - "66": {"x":46,"y":122,"w":19,"h":38,"character":66,"shift":21,"offset":1,}, - "67": {"x":24,"y":122,"w":20,"h":38,"character":67,"shift":22,"offset":1,}, - "68": {"x":2,"y":122,"w":20,"h":38,"character":68,"shift":22,"offset":1,}, - "69": {"x":485,"y":82,"w":17,"h":38,"character":69,"shift":19,"offset":1,}, - "70": {"x":467,"y":82,"w":16,"h":38,"character":70,"shift":17,"offset":1,}, - "71": {"x":444,"y":82,"w":21,"h":38,"character":71,"shift":23,"offset":1,}, - "72": {"x":422,"y":82,"w":20,"h":38,"character":72,"shift":22,"offset":1,}, - "73": {"x":408,"y":82,"w":12,"h":38,"character":73,"shift":15,"offset":1,}, - "74": {"x":389,"y":82,"w":17,"h":38,"character":74,"shift":18,"offset":0,}, - "75": {"x":367,"y":82,"w":20,"h":38,"character":75,"shift":21,"offset":1,}, - "76": {"x":349,"y":82,"w":16,"h":38,"character":76,"shift":17,"offset":1,}, - "77": {"x":322,"y":82,"w":25,"h":38,"character":77,"shift":27,"offset":1,}, - "78": {"x":385,"y":42,"w":20,"h":38,"character":78,"shift":22,"offset":1,}, - "79": {"x":360,"y":42,"w":23,"h":38,"character":79,"shift":24,"offset":1,}, - "80": {"x":339,"y":42,"w":19,"h":38,"character":80,"shift":20,"offset":1,}, - "81": {"x":418,"y":2,"w":24,"h":38,"character":81,"shift":25,"offset":1,}, - "82": {"x":385,"y":2,"w":20,"h":38,"character":82,"shift":21,"offset":1,}, - "83": {"x":363,"y":2,"w":20,"h":38,"character":83,"shift":20,"offset":0,}, - "84": {"x":341,"y":2,"w":20,"h":38,"character":84,"shift":20,"offset":0,}, - "85": {"x":320,"y":2,"w":19,"h":38,"character":85,"shift":21,"offset":1,}, - "86": {"x":297,"y":2,"w":21,"h":38,"character":86,"shift":21,"offset":0,}, - "87": {"x":267,"y":2,"w":28,"h":38,"character":87,"shift":28,"offset":0,}, - "88": {"x":242,"y":2,"w":23,"h":38,"character":88,"shift":22,"offset":0,}, - "89": {"x":218,"y":2,"w":22,"h":38,"character":89,"shift":22,"offset":0,}, - "90": {"x":198,"y":2,"w":18,"h":38,"character":90,"shift":20,"offset":1,}, - "91": {"x":407,"y":2,"w":9,"h":38,"character":91,"shift":11,"offset":1,}, - "92": {"x":182,"y":2,"w":14,"h":38,"character":92,"shift":14,"offset":0,}, - "93": {"x":157,"y":2,"w":9,"h":38,"character":93,"shift":11,"offset":1,}, - "94": {"x":138,"y":2,"w":17,"h":38,"character":94,"shift":19,"offset":1,}, - "95": {"x":122,"y":2,"w":14,"h":38,"character":95,"shift":14,"offset":0,}, - "96": {"x":112,"y":2,"w":8,"h":38,"character":96,"shift":10,"offset":1,}, - "97": {"x":93,"y":2,"w":17,"h":38,"character":97,"shift":18,"offset":0,}, - "98": {"x":73,"y":2,"w":18,"h":38,"character":98,"shift":19,"offset":1,}, - "99": {"x":54,"y":2,"w":17,"h":38,"character":99,"shift":17,"offset":0,}, - "100": {"x":34,"y":2,"w":18,"h":38,"character":100,"shift":19,"offset":0,}, - "101": {"x":14,"y":2,"w":18,"h":38,"character":101,"shift":18,"offset":0,}, - "102": {"x":168,"y":2,"w":12,"h":38,"character":102,"shift":12,"offset":0,}, - "103": {"x":444,"y":2,"w":18,"h":38,"character":103,"shift":19,"offset":0,}, - "104": {"x":122,"y":42,"w":16,"h":38,"character":104,"shift":18,"offset":1,}, - "105": {"x":464,"y":2,"w":10,"h":38,"character":105,"shift":10,"offset":0,}, - "106": {"x":307,"y":42,"w":11,"h":38,"character":106,"shift":8,"offset":-3,}, - "107": {"x":288,"y":42,"w":17,"h":38,"character":107,"shift":18,"offset":1,}, - "108": {"x":277,"y":42,"w":9,"h":38,"character":108,"shift":10,"offset":1,}, - "109": {"x":249,"y":42,"w":26,"h":38,"character":109,"shift":28,"offset":1,}, - "110": {"x":231,"y":42,"w":16,"h":38,"character":110,"shift":18,"offset":1,}, - "111": {"x":211,"y":42,"w":18,"h":38,"character":111,"shift":18,"offset":0,}, - "112": {"x":191,"y":42,"w":18,"h":38,"character":112,"shift":19,"offset":1,}, - "113": {"x":167,"y":42,"w":22,"h":38,"character":113,"shift":19,"offset":0,}, - "114": {"x":154,"y":42,"w":11,"h":38,"character":114,"shift":12,"offset":1,}, - "115": {"x":320,"y":42,"w":17,"h":38,"character":115,"shift":17,"offset":0,}, - "116": {"x":140,"y":42,"w":12,"h":38,"character":116,"shift":12,"offset":0,}, - "117": {"x":104,"y":42,"w":16,"h":38,"character":117,"shift":18,"offset":1,}, - "118": {"x":85,"y":42,"w":17,"h":38,"character":118,"shift":17,"offset":0,}, - "119": {"x":59,"y":42,"w":24,"h":38,"character":119,"shift":23,"offset":0,}, - "120": {"x":39,"y":42,"w":18,"h":38,"character":120,"shift":17,"offset":0,}, - "121": {"x":20,"y":42,"w":17,"h":38,"character":121,"shift":17,"offset":0,}, - "122": {"x":2,"y":42,"w":16,"h":38,"character":122,"shift":17,"offset":0,}, - "123": {"x":497,"y":2,"w":11,"h":38,"character":123,"shift":12,"offset":0,}, - "124": {"x":489,"y":2,"w":6,"h":38,"character":124,"shift":7,"offset":1,}, - "125": {"x":476,"y":2,"w":11,"h":38,"character":125,"shift":12,"offset":1,}, - "126": {"x":229,"y":122,"w":15,"h":38,"character":126,"shift":17,"offset":1,}, - "9647": {"x":246,"y":122,"w":19,"h":38,"character":9647,"shift":31,"offset":6,}, + "32": {"x":2,"y":2,"w":15,"h":54,"character":32,"shift":15,"offset":0,}, + "33": {"x":189,"y":170,"w":10,"h":54,"character":33,"shift":13,"offset":1,}, + "34": {"x":171,"y":170,"w":16,"h":54,"character":34,"shift":19,"offset":1,}, + "35": {"x":135,"y":170,"w":34,"h":54,"character":35,"shift":35,"offset":1,}, + "36": {"x":106,"y":170,"w":27,"h":54,"character":36,"shift":28,"offset":1,}, + "37": {"x":61,"y":170,"w":43,"h":54,"character":37,"shift":44,"offset":1,}, + "38": {"x":28,"y":170,"w":31,"h":54,"character":38,"shift":32,"offset":1,}, + "39": {"x":18,"y":170,"w":8,"h":54,"character":39,"shift":10,"offset":1,}, + "40": {"x":2,"y":170,"w":14,"h":54,"character":40,"shift":17,"offset":1,}, + "41": {"x":485,"y":114,"w":14,"h":54,"character":41,"shift":17,"offset":1,}, + "42": {"x":201,"y":170,"w":16,"h":54,"character":42,"shift":20,"offset":2,}, + "43": {"x":459,"y":114,"w":24,"h":54,"character":43,"shift":28,"offset":2,}, + "44": {"x":420,"y":114,"w":10,"h":54,"character":44,"shift":13,"offset":1,}, + "45": {"x":402,"y":114,"w":16,"h":54,"character":45,"shift":19,"offset":1,}, + "46": {"x":390,"y":114,"w":10,"h":54,"character":46,"shift":13,"offset":1,}, + "47": {"x":368,"y":114,"w":20,"h":54,"character":47,"shift":20,"offset":0,}, + "48": {"x":339,"y":114,"w":27,"h":54,"character":48,"shift":30,"offset":2,}, + "49": {"x":323,"y":114,"w":14,"h":54,"character":49,"shift":20,"offset":2,}, + "50": {"x":297,"y":114,"w":24,"h":54,"character":50,"shift":27,"offset":1,}, + "51": {"x":270,"y":114,"w":25,"h":54,"character":51,"shift":27,"offset":1,}, + "52": {"x":242,"y":114,"w":26,"h":54,"character":52,"shift":28,"offset":1,}, + "53": {"x":432,"y":114,"w":25,"h":54,"character":53,"shift":28,"offset":1,}, + "54": {"x":219,"y":170,"w":25,"h":54,"character":54,"shift":29,"offset":2,}, + "55": {"x":246,"y":170,"w":24,"h":54,"character":55,"shift":25,"offset":0,}, + "56": {"x":272,"y":170,"w":26,"h":54,"character":56,"shift":28,"offset":1,}, + "57": {"x":342,"y":226,"w":23,"h":54,"character":57,"shift":25,"offset":1,}, + "58": {"x":330,"y":226,"w":10,"h":54,"character":58,"shift":13,"offset":1,}, + "59": {"x":318,"y":226,"w":10,"h":54,"character":59,"shift":13,"offset":1,}, + "60": {"x":292,"y":226,"w":24,"h":54,"character":60,"shift":26,"offset":1,}, + "61": {"x":266,"y":226,"w":24,"h":54,"character":61,"shift":28,"offset":2,}, + "62": {"x":240,"y":226,"w":24,"h":54,"character":62,"shift":26,"offset":1,}, + "63": {"x":213,"y":226,"w":25,"h":54,"character":63,"shift":28,"offset":1,}, + "64": {"x":179,"y":226,"w":32,"h":54,"character":64,"shift":34,"offset":1,}, + "65": {"x":145,"y":226,"w":32,"h":54,"character":65,"shift":31,"offset":0,}, + "66": {"x":116,"y":226,"w":27,"h":54,"character":66,"shift":29,"offset":1,}, + "67": {"x":85,"y":226,"w":29,"h":54,"character":67,"shift":31,"offset":1,}, + "68": {"x":54,"y":226,"w":29,"h":54,"character":68,"shift":31,"offset":1,}, + "69": {"x":27,"y":226,"w":25,"h":54,"character":69,"shift":26,"offset":1,}, + "70": {"x":2,"y":226,"w":23,"h":54,"character":70,"shift":25,"offset":1,}, + "71": {"x":469,"y":170,"w":30,"h":54,"character":71,"shift":33,"offset":1,}, + "72": {"x":439,"y":170,"w":28,"h":54,"character":72,"shift":31,"offset":1,}, + "73": {"x":420,"y":170,"w":17,"h":54,"character":73,"shift":21,"offset":2,}, + "74": {"x":394,"y":170,"w":24,"h":54,"character":74,"shift":25,"offset":0,}, + "75": {"x":363,"y":170,"w":29,"h":54,"character":75,"shift":30,"offset":1,}, + "76": {"x":338,"y":170,"w":23,"h":54,"character":76,"shift":24,"offset":1,}, + "77": {"x":300,"y":170,"w":36,"h":54,"character":77,"shift":38,"offset":1,}, + "78": {"x":211,"y":114,"w":29,"h":54,"character":78,"shift":32,"offset":1,}, + "79": {"x":176,"y":114,"w":33,"h":54,"character":79,"shift":35,"offset":1,}, + "80": {"x":147,"y":114,"w":27,"h":54,"character":80,"shift":29,"offset":1,}, + "81": {"x":76,"y":58,"w":35,"h":54,"character":81,"shift":35,"offset":1,}, + "82": {"x":31,"y":58,"w":28,"h":54,"character":82,"shift":30,"offset":1,}, + "83": {"x":2,"y":58,"w":27,"h":54,"character":83,"shift":28,"offset":1,}, + "84": {"x":461,"y":2,"w":28,"h":54,"character":84,"shift":28,"offset":0,}, + "85": {"x":432,"y":2,"w":27,"h":54,"character":85,"shift":30,"offset":1,}, + "86": {"x":400,"y":2,"w":30,"h":54,"character":86,"shift":30,"offset":0,}, + "87": {"x":358,"y":2,"w":40,"h":54,"character":87,"shift":40,"offset":0,}, + "88": {"x":324,"y":2,"w":32,"h":54,"character":88,"shift":32,"offset":0,}, + "89": {"x":291,"y":2,"w":31,"h":54,"character":89,"shift":31,"offset":0,}, + "90": {"x":263,"y":2,"w":26,"h":54,"character":90,"shift":28,"offset":1,}, + "91": {"x":61,"y":58,"w":13,"h":54,"character":91,"shift":15,"offset":1,}, + "92": {"x":241,"y":2,"w":20,"h":54,"character":92,"shift":20,"offset":0,}, + "93": {"x":208,"y":2,"w":13,"h":54,"character":93,"shift":15,"offset":1,}, + "94": {"x":183,"y":2,"w":23,"h":54,"character":94,"shift":27,"offset":2,}, + "95": {"x":161,"y":2,"w":20,"h":54,"character":95,"shift":19,"offset":0,}, + "96": {"x":149,"y":2,"w":10,"h":54,"character":96,"shift":14,"offset":2,}, + "97": {"x":123,"y":2,"w":24,"h":54,"character":97,"shift":25,"offset":0,}, + "98": {"x":97,"y":2,"w":24,"h":54,"character":98,"shift":27,"offset":2,}, + "99": {"x":73,"y":2,"w":22,"h":54,"character":99,"shift":24,"offset":1,}, + "100": {"x":46,"y":2,"w":25,"h":54,"character":100,"shift":27,"offset":1,}, + "101": {"x":19,"y":2,"w":25,"h":54,"character":101,"shift":26,"offset":1,}, + "102": {"x":223,"y":2,"w":16,"h":54,"character":102,"shift":17,"offset":0,}, + "103": {"x":113,"y":58,"w":24,"h":54,"character":103,"shift":27,"offset":1,}, + "104": {"x":359,"y":58,"w":22,"h":54,"character":104,"shift":26,"offset":2,}, + "105": {"x":139,"y":58,"w":12,"h":54,"character":105,"shift":14,"offset":1,}, + "106": {"x":105,"y":114,"w":15,"h":54,"character":106,"shift":12,"offset":-4,}, + "107": {"x":79,"y":114,"w":24,"h":54,"character":107,"shift":26,"offset":2,}, + "108": {"x":64,"y":114,"w":13,"h":54,"character":108,"shift":14,"offset":2,}, + "109": {"x":26,"y":114,"w":36,"h":54,"character":109,"shift":40,"offset":2,}, + "110": {"x":2,"y":114,"w":22,"h":54,"character":110,"shift":26,"offset":2,}, + "111": {"x":477,"y":58,"w":24,"h":54,"character":111,"shift":26,"offset":1,}, + "112": {"x":451,"y":58,"w":24,"h":54,"character":112,"shift":27,"offset":2,}, + "113": {"x":419,"y":58,"w":30,"h":54,"character":113,"shift":27,"offset":1,}, + "114": {"x":402,"y":58,"w":15,"h":54,"character":114,"shift":17,"offset":2,}, + "115": {"x":122,"y":114,"w":23,"h":54,"character":115,"shift":24,"offset":0,}, + "116": {"x":383,"y":58,"w":17,"h":54,"character":116,"shift":17,"offset":0,}, + "117": {"x":335,"y":58,"w":22,"h":54,"character":117,"shift":26,"offset":2,}, + "118": {"x":309,"y":58,"w":24,"h":54,"character":118,"shift":24,"offset":0,}, + "119": {"x":274,"y":58,"w":33,"h":54,"character":119,"shift":33,"offset":0,}, + "120": {"x":247,"y":58,"w":25,"h":54,"character":120,"shift":24,"offset":0,}, + "121": {"x":221,"y":58,"w":24,"h":54,"character":121,"shift":23,"offset":0,}, + "122": {"x":197,"y":58,"w":22,"h":54,"character":122,"shift":23,"offset":1,}, + "123": {"x":180,"y":58,"w":15,"h":54,"character":123,"shift":17,"offset":1,}, + "124": {"x":170,"y":58,"w":8,"h":54,"character":124,"shift":11,"offset":1,}, + "125": {"x":153,"y":58,"w":15,"h":54,"character":125,"shift":17,"offset":1,}, + "126": {"x":367,"y":226,"w":22,"h":54,"character":126,"shift":24,"offset":1,}, + "9647": {"x":391,"y":226,"w":26,"h":54,"character":9647,"shift":44,"offset":9,}, }, "kerningPairs": [], "ranges": [ diff --git a/objects/demo_obj_player/Create_0.gml b/objects/demo_obj_player/Create_0.gml index cb45683..de38111 100644 --- a/objects/demo_obj_player/Create_0.gml +++ b/objects/demo_obj_player/Create_0.gml @@ -1,4 +1,14 @@ /// @description + +//camera +stanncam_init(320,240,1920,1080); +cam1 = new stanncam(demo_obj_player.x,demo_obj_player.y,global.game_w,global.game_h); +cam1.follow = demo_obj_player; + +cam2 = -1; + + +//player hspd = 0; vspd = 0; @@ -8,6 +18,8 @@ anim_spd = sprite_get_speed(spr_player_moving); subimg = 0; +split_screen = false; + //pointer pointer = false; pointer_x = 0; @@ -19,7 +31,8 @@ zoom_text = "no zooming" speed_mode = 1; game_res = 2; -gui_res = 4; +gui_hires = false; +gui_res = 0; resolutions = [ { w:400 , h:400 }, //1:1 diff --git a/objects/demo_obj_player/Draw_64.gml b/objects/demo_obj_player/Draw_64.gml index 4fff8a1..b77e668 100644 --- a/objects/demo_obj_player/Draw_64.gml +++ b/objects/demo_obj_player/Draw_64.gml @@ -1,79 +1,78 @@ /// @description -/* - //chooses pixel font or hires font -if(obj_stanncam.gui_hires){ +if(gui_hires){ draw_set_font(demo_f_hires); - var offset = 32; + var offset = 45; var outline_width = 4; draw_set_color(c_white) } else { - draw_set_font(demo_f_pixel); - var offset = 8; - var outline_width = 0; - draw_set_color(c_black) + draw_set_font(demo_f_pixel); + var offset = 8; + var outline_width = 0; + draw_set_color(c_black) } //draws helper text draw_set_halign(fa_left); draw_set_valign(fa_top); draw_text_outline(1,1,"[arrow keys] move character",outline_width); -var following = (global.camera_follow != undefined) ? "following" : "not following" +var following = (cam1.follow != undefined) ? "following" : "not following" draw_text_outline(1,offset,"[space] " + following,outline_width); draw_text_outline(1,offset*2,"[ALT] toggle hi-res GUI",outline_width); draw_text_outline(1,offset*3,"[LMB] move cam to pos (when not following)",outline_width); draw_text_outline(1,offset*4,"[RMB] "+ zoom_text,outline_width); -var constrained = (obj_stanncam.camera_constrain) ? "camera constrained to room" : "camera not constrained to room"; +var constrained = (cam1.room_constrain) ? "camera constrained to room" : "camera not constrained to room"; draw_text_outline(1,offset*5,"[CTRL] "+ constrained,outline_width); -draw_text_outline(1,offset*6,"[S] camera shake",outline_width); -draw_text_outline(1,offset*7,"[Tab] camera speed "+ string(obj_stanncam.spd),outline_width); +draw_text_outline(1,offset*6,"[F] camera shake",outline_width); +draw_text_outline(1,offset*7,"[Tab] camera speed "+ string(cam1.spd),outline_width); //draw current resolution text draw_set_halign(fa_right) -draw_text_outline(display_get_gui_width()-1,1,"game resolution: "+string(global.view_w)+" x "+string(global.view_h)+" [F1]",outline_width); -draw_text_outline(display_get_gui_width()-1,offset,"GUI resolution: "+string(display_get_gui_width())+" x "+string(display_get_gui_height())+" [F2]",outline_width); -draw_text_outline(display_get_gui_width()-1,offset*2,"upscale: "+string(global.upscale)+" [F3]",outline_width); -draw_text_outline(display_get_gui_width()-1,offset*3,"fullscreen: "+string(window_get_fullscreen())+" [F4]",outline_width); - - -//draws pointer over players head -if(obj_stanncam.gui_hires){ - draw_sprite_ext(spr_arrow,1,stanncam_room_to_gui_x(x),stanncam_room_to_gui_y(y)-64,0.5,0.5,180,-1,1); -} else { - draw_sprite_ext(spr_arrow_small,1,stanncam_room_to_gui_x(x),stanncam_room_to_gui_y(y)-12,1,1,180,-1,1); -} - +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); +draw_text_outline(global.gui_w-1,offset,"GUI resolution: "+string(global.gui_w)+" x "+string(global.gui_h)+" [F2]",outline_width); +draw_text_outline(global.gui_w-1,offset*3,"fullscreen: "+string(window_get_fullscreen())+" [F4]",outline_width); +draw_text_outline(global.gui_w-1,offset*4,"split-screen: "+string(split_screen)+" [F5]",outline_width); //point at player, when it's outside camera bounds -if(stanncam_out_of_bounds(x,y,8)){ - var _x = stanncam_room_to_gui_x(x); - var _y = stanncam_room_to_gui_y(y); +if(cam1.out_of_bounds(x,y,8)){ + var _x = cam1.room_to_gui_x(x); + var _y = cam1.room_to_gui_y(y); - var margin = (obj_stanncam.gui_hires) ? 50 : 20; + var margin = (gui_hires) ? 50 : 20; - _x = clamp(_x,margin,display_get_gui_width() -margin); - _y = clamp(_y,margin,display_get_gui_height()-margin); + var gui_scale_x = stanncam_get_gui_scale_x(); + var gui_scale_y = stanncam_get_gui_scale_y(); - var dir = point_direction(_x,_y,stanncam_room_to_gui_x(x),stanncam_room_to_gui_y(y)); + _x = clamp(_x,margin,cam1.width * gui_scale_x -margin); + _y = clamp(_y,margin,cam1.height * gui_scale_y -margin); + + var dir = point_direction(_x,_y,cam1.room_to_gui_x(x),cam1.room_to_gui_y(y)); - if(obj_stanncam.gui_hires){ + if(gui_hires){ draw_sprite_ext(spr_arrow,0,_x,_y,1,1,dir-90,-1,1); }else{ draw_sprite_ext(spr_arrow_small,0,_x,_y,1,1,dir-90,-1,1); } +} else { + //draws pointer over players head + var arrow_x = cam1.room_to_gui_x(x); + var arrow_y = cam1.room_to_gui_y(y); + if(gui_hires){ + draw_sprite_ext(spr_arrow,1,arrow_x,arrow_y-64,0.5,0.5,180,-1,1); + } else { + draw_sprite_ext(spr_arrow_small,1,arrow_x,arrow_y-12,1,1,180,-1,1); + } } + //draw pointer on mouse location if(pointer){ - if(obj_stanncam.gui_hires){ - draw_sprite_ext(spr_arrow,0,stanncam_room_to_gui_x(pointer_x),stanncam_room_to_gui_y(pointer_y),1,1,180,-1,1); + var arrow_x = cam1.room_to_gui_x( pointer_x ); + var arrow_y = cam1.room_to_gui_y( pointer_y ); + if(gui_hires){ + draw_sprite_ext(spr_arrow,0,arrow_x,arrow_y,1,1,180,-1,1); } else { - draw_sprite_ext(spr_arrow_small,0,stanncam_room_to_gui_x(pointer_x),stanncam_room_to_gui_y(pointer_y),1,1,180,-1,1); + draw_sprite_ext(spr_arrow_small,0,arrow_x,arrow_y,1,1,180,-1,1); } -} - - -*/ - - +} \ No newline at end of file diff --git a/objects/demo_obj_player/Draw_77.gml b/objects/demo_obj_player/Draw_77.gml new file mode 100644 index 0000000..e75a25c --- /dev/null +++ b/objects/demo_obj_player/Draw_77.gml @@ -0,0 +1,7 @@ +/// @description +if(split_screen){ + cam1.draw(0,0); + cam2.draw(global.game_w/2,0); +}else{ + cam1.draw(0,0); +} \ No newline at end of file diff --git a/objects/demo_obj_player/Step_0.gml b/objects/demo_obj_player/Step_0.gml index 3349a21..9e960e6 100644 --- a/objects/demo_obj_player/Step_0.gml +++ b/objects/demo_obj_player/Step_0.gml @@ -8,28 +8,43 @@ y+= vspd; x = clamp(x,0,room_width); y = clamp(y,0,room_height); -/* - //toggle following player if(keyboard_check_pressed(vk_space)){ - if(global.camera_follow != undefined) global.camera_follow = undefined; - else global.camera_follow = demo_obj_player; + if(cam1.follow != undefined) cam1.follow = undefined; + else cam1.follow = demo_obj_player; +} + +//toggle splitscreen +if(keyboard_check_pressed(vk_f5)){ + split_screen = !split_screen; + if(split_screen){ + cam1.set_size(global.game_w/2,global.game_h); + + cam2 = cam1.clone(); + cam2.follow = demo_obj_player2; + }else{ + if(!cam2.is_destroyed()) cam2.destroy(); + cam1.set_size(global.game_w,global.game_h); + } } //toggle hires gui if(keyboard_check_pressed(vk_alt)){ - if(obj_stanncam.gui_hires) obj_stanncam.gui_hires = false - else obj_stanncam.gui_hires = true; - stanncam_update_resolution(); + gui_hires = !gui_hires; + if(gui_hires){ + stanncam_set_gui_resolution(1920,1080); + }else{ + stanncam_set_gui_resolution(global.game_w,global.game_h); + } } //moves camera to mouse press location if(mouse_check_button_pressed(mb_left)){ - stanncam_move(mouse_x,mouse_y,room_speed*1); + cam1.move(cam1.get_mouse_x(),cam1.get_mouse_y(),room_speed*1); alarm[0] = room_speed*1.1; pointer = true; - pointer_x = mouse_x; - pointer_y = mouse_y; + pointer_x = cam1.get_mouse_x(); + pointer_y = cam1.get_mouse_y(); } //toggle zoom in @@ -41,17 +56,20 @@ if(mouse_check_button_pressed(mb_right)){ case 0: //no zooming zoom_text = "no zooming"; - stanncam_zoom(1,room_speed*1); + cam1.zoom(1,room_speed*1); + obj_tv.tv.zoom(1,room_speed*1); break; case 1: //zoom in zoom_text = "zoomed in"; - stanncam_zoom(0.5,room_speed*1); + 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"; - stanncam_zoom(2,room_speed*1); + cam1.zoom(2,room_speed*1); + obj_tv.tv.zoom(2,room_speed*1); break; } } @@ -64,60 +82,49 @@ if(keyboard_check_pressed(vk_tab)){ switch (speed_mode) { case 0: //speed 0.5 - stanncam_speed(0.5,50); + cam1.set_speed(0.5,50); break; case 1: //speed 2 - stanncam_speed(1,50); + cam1.set_speed(1,50); break; case 2: //speed 10 - stanncam_speed(2,50); + cam1.set_speed(2,50); break; case 3: //speed 10 - stanncam_speed(10,50); + cam1.set_speed(10,50); break; } } //toggle if the camera is constrained to the room size if(keyboard_check_pressed(vk_control)){ - if(obj_stanncam.camera_constrain) obj_stanncam.camera_constrain = false; - else obj_stanncam.camera_constrain = true; - + if(cam1.room_constrain) cam1.room_constrain = false; + else cam1.room_constrain = true; } //do a screenshake -if(keyboard_check_pressed(ord("S"))){ - stanncam_shake(30,room_speed*1); - +if(keyboard_check_pressed(ord("F"))){ + cam1.shake_screen(30,room_speed*1); } //switch resolutions if(keyboard_check_pressed(vk_f1)) { - game_res++ + game_res++; if(game_res > 6) game_res = 0; - global.view_w = resolutions[game_res].w; - global.view_h = resolutions[game_res].h; - stanncam_update_resolution(); + 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; - global.gui_w = resolutions[gui_res].w; - global.gui_h = resolutions[gui_res].h; - stanncam_update_resolution(); -} - -//switch upscaling -if(keyboard_check_pressed(vk_f3)) { - global.upscale++; - if(global.upscale > 4) global.upscale = 1; - stanncam_update_resolution(); + var gui_w = resolutions[gui_res].w; + var gui_h = resolutions[gui_res].h; + stanncam_set_gui_resolution(gui_w,gui_h); } //toggle fullscreen @@ -125,6 +132,4 @@ if(keyboard_check_pressed(vk_f4)) stanncam_toggle_fullscreen(); //Restart -if(keyboard_check_pressed(ord("R"))) game_restart(); - -*/ \ No newline at end of file +if(keyboard_check_pressed(ord("R"))) game_restart(); \ No newline at end of file diff --git a/objects/demo_obj_player/demo_obj_player.yy b/objects/demo_obj_player/demo_obj_player.yy index 3d7c40f..ab5e7d7 100644 --- a/objects/demo_obj_player/demo_obj_player.yy +++ b/objects/demo_obj_player/demo_obj_player.yy @@ -30,6 +30,7 @@ {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":3,"collisionObjectId":null,}, {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":64,"eventType":8,"collisionObjectId":null,}, {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":2,"collisionObjectId":null,}, + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":77,"eventType":8,"collisionObjectId":null,}, ], "properties": [], "overriddenProperties": [], diff --git a/objects/obj_init/Create_0.gml b/objects/obj_init/Create_0.gml deleted file mode 100644 index 7500c68..0000000 --- a/objects/obj_init/Create_0.gml +++ /dev/null @@ -1,9 +0,0 @@ -/// @description -stanncam_init(320,240,1920,1080); -cam1 = new stanncam(demo_obj_player.x,demo_obj_player.y,320,240); - -cam1.follow = demo_obj_player; - -cam2 = new stanncam(demo_obj_player2.x,demo_obj_player2.y,320,240); - -cam2.follow = demo_obj_player2; \ No newline at end of file diff --git a/objects/obj_init/Draw_77.gml b/objects/obj_init/Draw_77.gml deleted file mode 100644 index 94fea7e..0000000 --- a/objects/obj_init/Draw_77.gml +++ /dev/null @@ -1,5 +0,0 @@ -/// @description -//cam1.draw_fill(); - -cam1.draw_stretched(0,0,global.game_w/2,global.game_h); -cam2.draw_stretched(global.game_w/2,0,global.game_w/2,global.game_h); \ No newline at end of file diff --git a/objects/obj_init/KeyPress_122.gml b/objects/obj_init/KeyPress_122.gml deleted file mode 100644 index 92f729f..0000000 --- a/objects/obj_init/KeyPress_122.gml +++ /dev/null @@ -1,2 +0,0 @@ -/// @description -stanncam_toggle_fullscreen() \ No newline at end of file diff --git a/objects/obj_stanncam_manager/Create_0.gml b/objects/obj_stanncam_manager/Create_0.gml index e4dd106..c9fac38 100644 --- a/objects/obj_stanncam_manager/Create_0.gml +++ b/objects/obj_stanncam_manager/Create_0.gml @@ -1,3 +1,4 @@ /// @description resolution_w = 0; -resolution_h = 0; \ No newline at end of file +resolution_h = 0; +number_of_cams = 0; \ No newline at end of file diff --git a/objects/obj_stanncam_manager/Draw_76.gml b/objects/obj_stanncam_manager/Draw_76.gml new file mode 100644 index 0000000..190ae8a --- /dev/null +++ b/objects/obj_stanncam_manager/Draw_76.gml @@ -0,0 +1,5 @@ +/// @description +for (var i = 0; i < array_length(global.stanncams); ++i) { + if (global.stanncams[i] == -1) continue; + global.stanncams[i].__predraw(); +} \ 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 972159d..b8d1f80 100644 --- a/objects/obj_stanncam_manager/Other_4.gml +++ b/objects/obj_stanncam_manager/Other_4.gml @@ -1,6 +1,7 @@ /// @description view_enabled = true; for (var i = 0; i < array_length(global.stanncams); ++i) { - global.stanncams[i].check_viewports(); + if (global.stanncams[i] == -1) continue; + global.stanncams[i].__check_viewports(); } -stanncam_update_resolution(); \ No newline at end of file +__stanncam_update_resolution(); diff --git a/objects/obj_stanncam_manager/Step_2.gml b/objects/obj_stanncam_manager/Step_2.gml index 37a4486..a7b55e6 100644 --- a/objects/obj_stanncam_manager/Step_2.gml +++ b/objects/obj_stanncam_manager/Step_2.gml @@ -1,4 +1,5 @@ /// @description for (var i = 0; i < array_length(global.stanncams); ++i) { - global.stanncams[i].step(); + if (global.stanncams[i] == -1) continue; + global.stanncams[i].__step(); } \ No newline at end of file diff --git a/objects/obj_stanncam_manager/obj_stanncam_manager.yy b/objects/obj_stanncam_manager/obj_stanncam_manager.yy index 56d66bc..6f2795e 100644 --- a/objects/obj_stanncam_manager/obj_stanncam_manager.yy +++ b/objects/obj_stanncam_manager/obj_stanncam_manager.yy @@ -25,6 +25,7 @@ {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":4,"eventType":7,"collisionObjectId":null,}, {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,}, {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":2,"eventType":3,"collisionObjectId":null,}, + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":76,"eventType":8,"collisionObjectId":null,}, ], "properties": [], "overriddenProperties": [], diff --git a/objects/obj_tv/Create_0.gml b/objects/obj_tv/Create_0.gml new file mode 100644 index 0000000..9681466 --- /dev/null +++ b/objects/obj_tv/Create_0.gml @@ -0,0 +1,9 @@ +/// @description +tv = new stanncam(0,0,56,56,1); + +tv.follow = demo_obj_player2; +tv.bounds_h = 1; +tv.bounds_w = 1; +tv.zoom(0.5,0); + +depth = depth+10; \ No newline at end of file diff --git a/objects/obj_tv/Draw_0.gml b/objects/obj_tv/Draw_0.gml new file mode 100644 index 0000000..6bc8cda --- /dev/null +++ b/objects/obj_tv/Draw_0.gml @@ -0,0 +1,3 @@ +/// @description +draw_self(); +draw_surface(tv.surface,x+4,y+4); diff --git a/objects/obj_init/obj_init.yy b/objects/obj_tv/obj_tv.yy similarity index 77% rename from objects/obj_init/obj_init.yy rename to objects/obj_tv/obj_tv.yy index 320af22..9016464 100644 --- a/objects/obj_init/obj_init.yy +++ b/objects/obj_tv/obj_tv.yy @@ -1,8 +1,11 @@ { "resourceType": "GMObject", "resourceVersion": "1.0", - "name": "obj_init", - "spriteId": null, + "name": "obj_tv", + "spriteId": { + "name": "spr_tv", + "path": "sprites/spr_tv/spr_tv.yy", + }, "solid": false, "visible": true, "managed": true, @@ -23,8 +26,7 @@ "physicsShapePoints": [], "eventList": [ {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,}, - {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":122,"eventType":9,"collisionObjectId":null,}, - {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":77,"eventType":8,"collisionObjectId":null,}, + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":8,"collisionObjectId":null,}, ], "properties": [], "overriddenProperties": [], diff --git a/rooms/Room1/Room1.yy b/rooms/Room1/Room1.yy index 084de10..d88a419 100644 --- a/rooms/Room1/Room1.yy +++ b/rooms/Room1/Room1.yy @@ -17,10 +17,10 @@ ], "layers": [ {"resourceType":"GMRInstanceLayer","resourceVersion":"1.0","name":"Instances","instances":[ - {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_4BF294D5","properties":[],"isDnd":false,"objectId":{"name":"obj_ball","path":"objects/obj_ball/obj_ball.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":256.0,"y":80.0,}, - {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_432E7188","properties":[],"isDnd":false,"objectId":{"name":"obj_init","path":"objects/obj_init/obj_init.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":144.0,"y":112.0,}, + {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_4BF294D5","properties":[],"isDnd":false,"objectId":{"name":"obj_ball","path":"objects/obj_ball/obj_ball.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":112.0,"y":80.0,}, {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_BEB4411","properties":[],"isDnd":false,"objectId":{"name":"demo_obj_player","path":"objects/demo_obj_player/demo_obj_player.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":160.0,"y":160.0,}, {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_606FE50A","properties":[],"isDnd":false,"objectId":{"name":"demo_obj_player2","path":"objects/demo_obj_player2/demo_obj_player2.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":272.0,"y":144.0,}, + {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_15296A95","properties":[],"isDnd":false,"objectId":{"name":"obj_tv","path":"objects/obj_tv/obj_tv.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":304.0,"y":48.0,}, ],"visible":true,"depth":0,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"inheritVisibility":true,"inheritSubLayers":true,"gridX":16,"gridY":16,"layers":[],"hierarchyFrozen":false,"effectEnabled":true,"effectType":null,"properties":[],}, {"resourceType":"GMRTileLayer","resourceVersion":"1.1","name":"Tiles_1","tilesetId":{"name":"TileSet1","path":"tilesets/TileSet1/TileSet1.yy",},"x":0,"y":0,"tiles":{"TileDataFormat":1,"SerialiseWidth":14,"SerialiseHeight":8,"TileCompressedData":[ -112,1,],},"visible":true,"depth":100,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"inheritVisibility":true,"inheritSubLayers":true,"gridX":16,"gridY":16,"layers":[],"hierarchyFrozen":false,"effectEnabled":true,"effectType":null,"properties":[],}, @@ -31,9 +31,9 @@ "inheritCode": false, "instanceCreationOrder": [ {"name":"inst_4BF294D5","path":"rooms/Room1/Room1.yy",}, - {"name":"inst_432E7188","path":"rooms/Room1/Room1.yy",}, {"name":"inst_BEB4411","path":"rooms/Room1/Room1.yy",}, {"name":"inst_606FE50A","path":"rooms/Room1/Room1.yy",}, + {"name":"inst_15296A95","path":"rooms/Room1/Room1.yy",}, ], "inheritCreationOrder": false, "sequenceId": null, diff --git a/scripts/stanncam/stanncam.gml b/scripts/stanncam/stanncam.gml index 299bfb3..83c2cb7 100644 --- a/scripts/stanncam/stanncam.gml +++ b/scripts/stanncam/stanncam.gml @@ -1,17 +1,25 @@ /// @function stanncam() +/// @param x pos +/// @param y pos +/// @param width +/// @param height +/// @param surface_available set if you wanna use the surf variable in regular draw events /// @description creates a new stanncam -function stanncam(x_ = 0,y_ = 0,width_ = 1920,height_ = 1080) constructor{ +function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, surface_available_ = false) constructor{ #region init //whenever a new cam is created number_of_cams gets incremented - static number_of_cams = 0; - cam_id = number_of_cams; + cam_id = obj_stanncam_manager.number_of_cams; //checks if there's already 8 cameras if(cam_id == 8){ show_error("There can maximum be 8 cameras",true); } - number_of_cams++; - array_push(global.stanncams,self); + + view_camera[cam_id] = camera_create(); + + obj_stanncam_manager.number_of_cams++; + + array_set(global.stanncams,cam_id,self); #endregion #region variables @@ -20,114 +28,121 @@ function stanncam(x_ = 0,y_ = 0,width_ = 1920,height_ = 1080) constructor{ width = width_; height = height_; + surface_available = surface_available_; + spd = 10; //how fast the camera follows an object spd_threshold = 50; //the minimum distance the camera is away, for the speed to be in full effect - camera_constrain = false; //if camera should be constrained to the room size + 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 bounds_w = 20; bounds_h = 20; - surf = -1; + __surf = -1; + surface = -1; - check_surface(); - check_viewports(); - update_resolution(); + follow = -1; + __destroyed = false; + #region animation variables //moving - xStart = x; - yStart = y; - xTo = x; - yTo = y; - follow = -1; - duration = 0; - t = 0; + __xStart = x; + __yStart = y; + __xTo = x; + __yTo = y; + __duration = 0; + __t = 0; //zoom - zoom = 1; - zoom_x = 0; - zoom_y = 0; - zooming = false; - t_zoom = 0; - zoomStart = 0; - zoomTo = 0; - zoom_duration = 0; + __zoom_amount = 1; + __zoom_x = 0; + __zoom_y = 0; + __zooming = false; + __t_zoom = 0; + __zoomStart = 0; + __zoomTo = 0; + __zoom_duration = 0; //screen shake - shake_length = 0; - shake_magnitude = 0; - shake_time = 0; - shake_x = 0; - shake_y = 0; + __shake_length = 0; + __shake_magnitude = 0; + __shake_time = 0; + __shake_x = 0; + __shake_y = 0; + + __moving = false; + + __check_surface(); + __check_viewports(); + __update_resolution(); - moving = false; #endregion #endregion #region Step //gets called every step - static step = function(){ + static __step = function(){ 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; - - //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; - } - - if (abs(y - yTo) > bounds_h){ - var _spd = (dist_h/spd_threshold)*spd; - if (y < yTo) y+=_spd; - else if (y > yTo) y-=_spd; - } + //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; + + //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; + } + + if (abs(y - __yTo) > bounds_h){ + var _spd = (dist_h/spd_threshold)*spd; + if (y < __yTo) y+=_spd; + else if (y > __yTo) y-=_spd; + } - } else if(moving){ + } else if(__moving){ //gradually moves camera into position based on duration - x = ease_in_out(t,xStart,xTo-xStart,duration); - y = ease_in_out(t,yStart,yTo-yStart,duration); + x = ease_in_out(__t,__xStart,__xTo-__xStart,__duration); + y = ease_in_out(__t,__yStart,__yTo-__yStart,__duration); - t++; - if(x == xTo && y == yTo) moving = false; + __t++; + if(x == __xTo && y == __yTo) __moving = false; } #region screen-shake - var stanncam_shake_ = shake(shake_time++,shake_magnitude,shake_length); - shake_x = stanncam_shake_; - shake_y = stanncam_shake_; + var stanncam_shake_ = shake(__shake_time++,__shake_magnitude,__shake_length); + __shake_x = stanncam_shake_; + __shake_y = stanncam_shake_; #endregion #region constrains camera to room bounds - if(camera_constrain){ + 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){ + if(__zooming){ //gradually zooms camera - zoom = ease_in_out(t_zoom,zoomStart,zoomTo-zoomStart,zoom_duration); - t_zoom++; - if(zoom == zoomTo) zooming = false; - camera_set_view_size(view_camera[cam_id],width*zoom,height*zoom); - zoom_x = ((width*zoom) - width)/2; - zoom_y = ((height*zoom) - height)/2; + __zoom_amount = ease_in_out(__t_zoom,__zoomStart,__zoomTo-__zoomStart,__zoom_duration); + __t_zoom++; + if(__zoom_amount == __zoomTo) __zooming = false; + 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; } #endregion //update camera view - var new_x = x - (width / 2 + shake_x + zoom_x); - var new_y = y - (height / 2 + shake_y + zoom_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); } @@ -140,10 +155,12 @@ function stanncam(x_ = 0,y_ = 0,width_ = 1920,height_ = 1080) constructor{ /// @param y_ position /// @description draws camera static draw = function(x_,y_){ - check_surface(); - x_ *= (global.res_w / global.game_w); - y_ *= (global.res_h / global.game_h); - draw_surface_stretched(surf,x_,y_,display_width,display_height); + __check_surface(); + var x_scale = obj_stanncam_manager.display_res_w / global.game_w + var y_scale = obj_stanncam_manager.display_res_h / global.game_h + x_ *= x_scale; + y_ *= y_scale; + draw_surface_stretched(__surf,x_,y_,__display_width,__display_height); } /// @function draw_stretched() @@ -153,32 +170,57 @@ function stanncam(x_ = 0,y_ = 0,width_ = 1920,height_ = 1080) constructor{ /// @param h_ height /// @description draws camera stretched static draw_stretched = function(x_,y_,w,h){ - check_surface(); - x_ *= (global.res_w / global.game_w); - y_ *= (global.res_h / global.game_h); - w *= (global.res_w / global.game_w); - h *= (global.res_h / global.game_h); - draw_surface_stretched(surf,x_,y_,w,h); + __check_surface(); + x_ *= (obj_stanncam_manager.display_res_w / global.game_w); + y_ *= (obj_stanncam_manager.display_res_h / global.game_h); + w *= (obj_stanncam_manager.display_res_w / global.game_w); + h *= (obj_stanncam_manager.display_res_h / global.game_h); + draw_surface_stretched(__surf,x_,y_,w,h); } /// @function draw_fill() /// @description draws camera to fill the entire game window static draw_fill = function(){ - check_surface(); - draw_surface_stretched(surf,0,0,global.res_w,global.res_h); + __check_surface(); + draw_surface_stretched(__surf,0,0,obj_stanncam_manager.display_res_w,obj_stanncam_manager.display_res_h); } #endregion #region Dynamic functions - /// @function shake(magnitude, duration); + /// @function clone(); + /// @description returns a clone of the camera + static clone = function(){ + var clone = new stanncam(x,y,width,height); + clone.spd = spd; + clone.spd_threshold = spd_threshold; + clone.room_constrain = room_constrain; + clone.bounds_w = bounds_w; + clone.bounds_h = bounds_h; + clone.follow = follow; + + return clone; + } + + /// @function set_size(_width,_height); + /// @description sets the camera size + /// @param width + /// @param height + static set_size = function(_width,_height){ + width = _width; + height = _height; + __update_resolution(); + camera_set_view_size(view_camera[cam_id],width*__zoom_amount,height*__zoom_amount); + } + + /// @function shake_screen(magnitude, duration); /// @description makes the camera shake /// @param magnitude /// @param duration in frames - shake = function(magnitude, duration) { - shake_magnitude =+ magnitude; - shake_length =+ duration; - shake_time = 0; + static shake_screen = function(magnitude, duration) { + __shake_magnitude =+ magnitude; + __shake_length =+ duration; + __shake_time = 0; } /// @function move(_x,_y,duration) @@ -186,19 +228,19 @@ function stanncam(x_ = 0,y_ = 0,width_ = 1920,height_ = 1080) constructor{ /// @param _x /// @param _y /// @param _duration - move = function(_x, _y, _duration){ + static move = function(_x, _y, _duration){ if(_duration == 0){ x = _x; y = _y; }else{ - moving = true; - t = 0; - xStart = x; - yStart = y; + __moving = true; + __t = 0; + __xStart = x; + __yStart = y; - xTo = _x; - yTo = _y; - duration = _duration; + __xTo = _x; + __yTo = _y; + __duration = _duration; } } @@ -206,63 +248,146 @@ function stanncam(x_ = 0,y_ = 0,width_ = 1920,height_ = 1080) constructor{ /// @description zooms the camera /// @param _zoom /// @param duration - zoom = function(_zoom, _duration){ + static zoom = function(_zoom, _duration){ if(_duration == 0){ - zoom = _zoom; + __zoom_amount = _zoom; camera_set_view_size(view_camera[cam_id],width*_zoom,height*_zoom); + __zoom_x = ((width *__zoom_amount) - width)/2; + __zoom_y = ((height*__zoom_amount) - height)/2; } else { - zooming = true; - t_zoom = 0; - zoomStart = zoom; + __zooming = true; + __t_zoom = 0; + __zoomStart = __zoom_amount; } - zoomTo = _zoom; - zoom_duration = _duration; + __zoomTo = _zoom; + __zoom_duration = _duration; } /// @function set_speed(spd,threshold) /// @description changes the speed of the camera /// @param spd how fast the camera can move /// @param threshold minimum distance for the speed to have full effect - set_speed = function(spd,threshold){ - spd = spd; + static set_speed = function(_spd,threshold){ + spd = _spd; spd_threshold = threshold; } - /// @function pos_x() + /// @function get_x() /// @description get camera corner x position. if need the middle of the camera use x - pos_x = function(){ + static get_x = function(){ return camera_get_view_x(view_camera[cam_id]); } - /// @function pos_y() + /// @function get_y() /// @description get camera corner y position. if need the middle of the camera use y - pos_y = function(){ + static get_y = function(){ return camera_get_view_y(view_camera[cam_id]); } - #endregion + /// @description gets the mouse x position within room relative to the camera + static get_mouse_x = function(width_ = width){ + return ((display_mouse_get_x() / __display_width) * width_) + get_x(); + } + /// @description gets the mouse y position within room relative to the camera + static get_mouse_y = function(height_ = height){ + return ((display_mouse_get_y() / __display_height) * height_) + get_y(); + } + + + /// @func room_to_gui_x(x_) + /// @description returns the room x position as the position on the gui relative to camera + /// @param x_ + function room_to_gui_x(x_){ + return (x_-get_x())*stanncam_get_gui_scale_x()/__zoom_amount; + } + + /// @func room_to_gui_y(y_) + /// @description returns the room y position as the position on the gui relative to camera + /// @param y_ + function room_to_gui_y(y_){ + return (y_-get_y())*stanncam_get_gui_scale_y()/__zoom_amount; + } + + /// @function out_of_bounds() + /// @param x_ position the object is temporarily moved to + /// @param y_ position the object is temporarily moved to + /// @param margin the margin for the camera bounds + /// @description returns if the object is outside cam bounds + function out_of_bounds(x_,y_,margin = 0){ + var x_delta = x; + var y_delta = y; + + x = x_; + y = y_; + + var col = ( //uses bounding box to see if it's within the camera view + other.bbox_left < get_x() + margin || + other.bbox_top < get_y() + margin || + other.bbox_right > (get_x() + (width * __zoom_amount)) - margin || + other.bbox_bottom > (get_y() + (height * __zoom_amount)) - margin + ) + + x = x_delta; + y = y_delta; + + if(col)return true + else return false; + } + + /// @function destroy() + static destroy = function(){ + follow = -1; + array_set(global.stanncams,cam_id,-1); + obj_stanncam_manager.number_of_cams--; + if(surface_exists(surface)) surface_free(surface); + if(surface_exists(__surf)) surface_free(__surf); + __destroyed = true; + } + + /// @function is_destroyed() + static is_destroyed = function(){ + return __destroyed; + } + #endregion #region Internal functions //enables viewports and sets viewports size - static check_viewports = function(){ + static __check_viewports = function(){ view_visible[cam_id] = true; - camera_set_view_size(view_camera[cam_id],width,height); + set_size(width,height); } //checks if surface exists and else creates it and attaches it - static check_surface = function(){ - if (!surface_exists(surf)){ - surf = surface_create(width,height); - view_set_surface_id(cam_id,surf); + static __check_surface = function(){ + if (!surface_exists(__surf)){ + __surf = surface_create(width,height); + } + + if (surface_available && !surface_exists(surface)){ + surface = surface_create(width,height); } } //updates cameras drawing resolution - static update_resolution = function(){ - display_width = width * (global.res_w / global.game_w); - display_height = height * (global.res_h / global.game_h); + static __update_resolution = function(){ + __display_width = width * (obj_stanncam_manager.display_res_w / global.game_w); + __display_height = height * (obj_stanncam_manager.display_res_h / global.game_h); + + view_set_camera(cam_id, view_camera[cam_id]); + } + + //clears the surface + static __predraw = function(){ + __check_surface(); + if(surface_available){ + surface_copy(surface,0,0,__surf); + } + surface_set_target(__surf); + draw_clear_alpha(c_black,0); + surface_reset_target(); + view_set_surface_id(cam_id,__surf); } #endregion } \ No newline at end of file diff --git a/scripts/stanncam_manager/stanncam_manager.gml b/scripts/stanncam_manager/stanncam_manager.gml new file mode 100644 index 0000000..bd99c41 --- /dev/null +++ b/scripts/stanncam_manager/stanncam_manager.gml @@ -0,0 +1,82 @@ +/// @function stanncam_init(game_w,game_h,resolution_w,resolution_h,gui_w,gui_h) +/// @description set game dimensions, display resolution, and gui dimensions, it's the same as game scale by default +function stanncam_init(game_w,game_h,resolution_w=game_w,resolution_h=game_h,gui_w=game_w,gui_h=game_h){ + instance_create_layer(0,0,"instances",obj_stanncam_manager); + global.stanncams = array_create(8,-1); + global.game_w = game_w; + global.game_h = game_h; + global.gui_w = gui_w; + global.gui_h = gui_h; + obj_stanncam_manager.resolution_w = resolution_w; + obj_stanncam_manager.resolution_h = resolution_h; + + for (var i = 0; i < array_length(view_camera); ++i) { + camera_destroy(view_camera[i]); + } + + application_surface_draw_enable(false); + __stanncam_update_resolution(); +} + +/// @function stanncam_set_resolution(resolution_w,resolution_h); +/// @description updates the camera resolution, change view_w view_h and upscale to see changes +function stanncam_set_resolution(resolution_w,resolution_h){ + obj_stanncam_manager.resolution_w = resolution_w; + obj_stanncam_manager.resolution_h = 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_gui_resolution(gui_w,gui_h) +/// @description set the gui resolution +function stanncam_set_gui_resolution(gui_w,gui_h){ + global.gui_w = gui_w; + global.gui_h = gui_h; + __stanncam_update_resolution(); +} + +/// @function stanncam_get_gui_scale_x() +/// @description gets how much bigger gui is from game +function stanncam_get_gui_scale_x(){ + return global.gui_w / global.game_w; +} + +/// @function stanncam_get_gui_scale_y() +/// @description gets how much bigger gui is from game +function stanncam_get_gui_scale_y(){ + return global.gui_h / global.game_h; +} + +/// @function __stanncam_update_resolution(); +/// @description updates the camera resolution +function __stanncam_update_resolution(){ + if(window_get_fullscreen()) { + obj_stanncam_manager.display_res_w = display_get_width(); + obj_stanncam_manager.display_res_h = display_get_height(); + } else { + obj_stanncam_manager.display_res_w = obj_stanncam_manager.resolution_w; + obj_stanncam_manager.display_res_h = obj_stanncam_manager.resolution_h; + + window_set_size(obj_stanncam_manager.display_res_w, obj_stanncam_manager.display_res_h); + call_later(5,time_source_units_frames,function(){ + window_center(); + }); + } + + 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; + + display_set_gui_maximize(gui_x_scale,gui_y_scale); + surface_resize(application_surface, display_get_gui_width(), display_get_gui_height()) + + for (var i = 0; i < array_length(global.stanncams); ++i) { + if (global.stanncams[i] == -1) continue; + global.stanncams[i].__update_resolution(); + } +} \ No newline at end of file diff --git a/scripts/stanncam_manager_functions/stanncam_manager_functions.yy b/scripts/stanncam_manager/stanncam_manager.yy similarity index 82% rename from scripts/stanncam_manager_functions/stanncam_manager_functions.yy rename to scripts/stanncam_manager/stanncam_manager.yy index 5456f9a..be5d0a7 100644 --- a/scripts/stanncam_manager_functions/stanncam_manager_functions.yy +++ b/scripts/stanncam_manager/stanncam_manager.yy @@ -1,7 +1,7 @@ { "resourceType": "GMScript", "resourceVersion": "1.0", - "name": "stanncam_manager_functions", + "name": "stanncam_manager", "isDnD": false, "isCompatibility": false, "parent": { diff --git a/scripts/stanncam_manager_functions/stanncam_manager_functions.gml b/scripts/stanncam_manager_functions/stanncam_manager_functions.gml deleted file mode 100644 index 45f56da..0000000 --- a/scripts/stanncam_manager_functions/stanncam_manager_functions.gml +++ /dev/null @@ -1,38 +0,0 @@ -function stanncam_init(game_w,game_h,resolution_w=game_w,resolution_h=game_h){ //stanncam manager gets created automatically - instance_create_layer(0,0,"instances",obj_stanncam_manager); - global.stanncams = []; - global.game_w = game_w; - global.game_h = game_h; - obj_stanncam_manager.resolution_w = resolution_w; - obj_stanncam_manager.resolution_h = resolution_h; - application_surface_draw_enable(false); - 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_update_resolution(); -/// @description updates the camera resolution, change view_w view_h and upscale to see changes -function stanncam_update_resolution(){ - if(window_get_fullscreen()) { - global.res_w = display_get_width(); - global.res_h = display_get_height(); - } else { - global.res_w = obj_stanncam_manager.resolution_w; - global.res_h = obj_stanncam_manager.resolution_h; - - window_set_size(global.res_w, global.res_h); - call_later(1,time_source_units_frames,function(){ - window_center(); - }); - } - - for (var i = 0; i < array_length(global.stanncams); ++i) { - global.stanncams[i].update_resolution(); - } -} \ No newline at end of file diff --git a/sprites/spr_tv/ca68646b-1689-4d76-b7ab-b0c225cc8d31.png b/sprites/spr_tv/ca68646b-1689-4d76-b7ab-b0c225cc8d31.png new file mode 100644 index 0000000000000000000000000000000000000000..c3634bb8f2e90a761f5fc04e27d5c95b67b36771 GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=KRjI=Ln`Jxy}gmQ*+GE8G5VI> zi$}AU3GZ4UBpt-$bnKIVlgpO!Utg+Zk4en`Y&|>o_Pw)Ke==n@FIV2O&VE{|pltum z?| zi$}AU3GZ4UBpt-$bnKIVlgpO!Utg+Zk4en`Y&|>o_Pw)Ke==n@FIV2O&VE{|pltum z?|",}, + "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[ + {"id":"d337b439-7ffc-4d02-973f-5a39b2dc1705","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"ca68646b-1689-4d76-b7ab-b0c225cc8d31","path":"sprites/spr_tv/spr_tv.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],}, + ], + "visibleRange": null, + "lockOrigin": false, + "showBackdrop": true, + "showBackdropImage": false, + "backdropImagePath": "", + "backdropImageOpacity": 0.5, + "backdropWidth": 1366, + "backdropHeight": 768, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "xorigin": 0, + "yorigin": 0, + "eventToFunction": {}, + "eventStubScript": null, + }, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"9bc939da-2fec-4e13-aa9c-105eb44921f3","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",}, + ], + "nineSlice": null, + "parent": { + "name": "demonstration", + "path": "folders/demonstration.yy", + }, +} \ No newline at end of file diff --git a/stanncam.yyp b/stanncam.yyp index f266a71..1e91bda 100644 --- a/stanncam.yyp +++ b/stanncam.yyp @@ -5,8 +5,8 @@ "resources": [ {"id":{"name":"stanncam","path":"scripts/stanncam/stanncam.yy",},"order":6,}, {"id":{"name":"demo_obj_player2","path":"objects/demo_obj_player2/demo_obj_player2.yy",},"order":15,}, - {"id":{"name":"obj_init","path":"objects/obj_init/obj_init.yy",},"order":14,}, {"id":{"name":"ease_in_out","path":"scripts/ease_in_out/ease_in_out.yy",},"order":4,}, + {"id":{"name":"spr_tv","path":"sprites/spr_tv/spr_tv.yy",},"order":19,}, {"id":{"name":"spr_player2_idle","path":"sprites/spr_player2_idle/spr_player2_idle.yy",},"order":17,}, {"id":{"name":"draw_text_outline","path":"scripts/draw_text_outline/draw_text_outline.yy",},"order":5,}, {"id":{"name":"spr_bg","path":"sprites/spr_bg/spr_bg.yy",},"order":9,}, @@ -14,7 +14,7 @@ {"id":{"name":"TileSet1","path":"tilesets/TileSet1/TileSet1.yy",},"order":13,}, {"id":{"name":"demo_f_pixel","path":"fonts/demo_f_pixel/demo_f_pixel.yy",},"order":1,}, {"id":{"name":"spr_player2_moving","path":"sprites/spr_player2_moving/spr_player2_moving.yy",},"order":16,}, - {"id":{"name":"stanncam_manager_functions","path":"scripts/stanncam_manager_functions/stanncam_manager_functions.yy",},"order":5,}, + {"id":{"name":"stanncam_manager","path":"scripts/stanncam_manager/stanncam_manager.yy",},"order":5,}, {"id":{"name":"spr_ball","path":"sprites/spr_ball/spr_ball.yy",},"order":8,}, {"id":{"name":"spr_player_moving","path":"sprites/spr_player_moving/spr_player_moving.yy",},"order":11,}, {"id":{"name":"demo_obj_player","path":"objects/demo_obj_player/demo_obj_player.yy",},"order":2,}, @@ -22,6 +22,7 @@ {"id":{"name":"demo_f_hires","path":"fonts/demo_f_hires/demo_f_hires.yy",},"order":0,}, {"id":{"name":"spr_player_idle","path":"sprites/spr_player_idle/spr_player_idle.yy",},"order":10,}, {"id":{"name":"spr_arrow","path":"sprites/spr_arrow/spr_arrow.yy",},"order":6,}, + {"id":{"name":"obj_tv","path":"objects/obj_tv/obj_tv.yy",},"order":18,}, {"id":{"name":"obj_ball","path":"objects/obj_ball/obj_ball.yy",},"order":3,}, {"id":{"name":"obj_stanncam_manager","path":"objects/obj_stanncam_manager/obj_stanncam_manager.yy",},"order":0,}, {"id":{"name":"spr_tile_bg","path":"sprites/spr_tile_bg/spr_tile_bg.yy",},"order":12,}, From 70ff243bc236a843e778feb6070da82671886282 Mon Sep 17 00:00:00 2001 From: Jack Conradsen <46312671+jack27121@users.noreply.github.com> Date: Fri, 10 Feb 2023 05:19:10 +0100 Subject: [PATCH 4/6] Update readme.md --- readme.md | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/readme.md b/readme.md index 2032148..e8b8cfc 100644 --- a/readme.md +++ b/readme.md @@ -15,9 +15,34 @@ https://user-images.githubusercontent.com/46312671/201537605-7193ed70-8db9-4647- go to the releases tab, and download the local package, and import it as a new project to see the example. Or import it into your own project, excluding everything in the **Demonstration** folder. -When imported, it will automatically be placed in the first room of your game. -you can change the initial resolution and other variables in the **STANNcam** objects **Create** event. -It is encouraged to change any and all of the code to better fit your needs! 👍 + +for using the camera it's good to have some manager object, maybe you use an init_game object, to put stanncam calls + +Inside create event write + +``stanncam_init(game_res_width,game_res_height,resolution_width,resolution_height,gui_width,gui_height)`` + +(the last 4 params are optional and can be changed later) + +this initializes the stanncam environment and creates a couple of global variables you can reference later + +``global.game_width`` + +``global.game_height`` + +``global.gui_width`` + +``global.gui_height`` + +gui and game size can be identical, but you can make them independent if you'd like + +and then you can create new cameras by writing + +``my_cam_name = new stanncam(camera_width,camera_height)`` + +and then to finish off inside a post_draw event (in your init_game object or similar) you can render the camera + +``my_cam_name.draw(0,0)`` ## Feedback/Contact If you have any issues, feedback or questions, you can write here on github, From a8a5bb68ec16a234a154e232e45fb3ab360e408b Mon Sep 17 00:00:00 2001 From: jack Date: Thu, 9 Mar 2023 23:07:42 +0100 Subject: [PATCH 5/6] Several optimizations --- fonts/demo_f_hires/demo_f_hires.yy | 240 +++++------ fonts/demo_f_pixel/demo_f_pixel.yy | 240 +++++------ objects/__obj_stanncam_manager/Create_0.gml | 5 + .../Draw_76.gml | 0 .../Other_4.gml | 0 .../Step_2.gml | 0 .../__obj_stanncam_manager.yy} | 50 +-- .../{obj_ball => demo_obj_ball}/Step_0.gml | 0 .../demo_obj_ball.yy} | 48 +-- .../Alarm_0.gml | 6 - objects/demo_obj_camera/Create_0.gml | 33 ++ .../Draw_64.gml | 47 ++- .../Draw_77.gml | 0 objects/demo_obj_camera/Step_0.gml | 125 ++++++ objects/demo_obj_camera/demo_obj_camera.yy | 37 ++ objects/demo_obj_player/Create_0.gml | 36 +- objects/demo_obj_player/Step_0.gml | 122 ------ objects/demo_obj_player/demo_obj_player.yy | 53 ++- objects/demo_obj_player2/demo_obj_player2.yy | 52 +-- objects/{obj_tv => demo_obj_tv}/Create_0.gml | 2 +- objects/demo_obj_tv/Draw_0.gml | 3 + .../obj_tv.yy => demo_obj_tv/demo_obj_tv.yy} | 50 +-- objects/obj_stanncam_manager/Create_0.gml | 4 - objects/obj_tv/Draw_0.gml | 3 - options/android/options_android.yy | 107 ++--- options/html5/options_html5.yy | 42 +- options/ios/options_ios.yy | 52 +-- options/linux/options_linux.yy | 24 +- options/mac/options_mac.yy | 41 +- options/main/options_main.yy | 18 +- options/operagx/options_operagx.yy | 18 +- options/tvos/options_tvos.yy | 30 +- options/windows/options_windows.yy | 38 +- rooms/Room1/Room1.yy | 84 ++-- .../draw_text_outline/draw_text_outline.gml | 19 +- .../draw_text_outline/draw_text_outline.yy | 2 +- scripts/ease_in_out/ease_in_out.yy | 2 +- scripts/shake/shake.yy | 2 +- scripts/stanncam/stanncam.gml | 175 ++++---- scripts/stanncam/stanncam.yy | 2 +- scripts/stanncam_manager/stanncam_manager.gml | 79 +++- scripts/stanncam_manager/stanncam_manager.yy | 2 +- .../stanncam_manager_old.gml | 82 ++++ .../stanncam_manager_old.yy | 11 + scripts/stanncam_old/stanncam_old.gml | 393 ++++++++++++++++++ scripts/stanncam_old/stanncam_old.yy | 11 + sprites/spr_arrow/spr_arrow.yy | 100 ++--- sprites/spr_arrow_small/spr_arrow_small.yy | 98 ++--- sprites/spr_ball/spr_ball.yy | 96 ++--- sprites/spr_bg/spr_bg.yy | 98 ++--- sprites/spr_player2_idle/spr_player2_idle.yy | 96 ++--- .../spr_player2_moving/spr_player2_moving.yy | 98 ++--- sprites/spr_player_idle/spr_player_idle.yy | 96 ++--- .../spr_player_moving/spr_player_moving.yy | 98 ++--- sprites/spr_tile_bg/spr_tile_bg.yy | 96 ++--- sprites/spr_tv/spr_tv.yy | 96 ++--- stanncam.resource_order | 34 ++ stanncam.yyp | 58 ++- tilesets/TileSet1/TileSet1.yy | 42 +- 59 files changed, 2062 insertions(+), 1434 deletions(-) create mode 100644 objects/__obj_stanncam_manager/Create_0.gml rename objects/{obj_stanncam_manager => __obj_stanncam_manager}/Draw_76.gml (100%) rename objects/{obj_stanncam_manager => __obj_stanncam_manager}/Other_4.gml (100%) rename objects/{obj_stanncam_manager => __obj_stanncam_manager}/Step_2.gml (100%) rename objects/{obj_stanncam_manager/obj_stanncam_manager.yy => __obj_stanncam_manager/__obj_stanncam_manager.yy} (74%) rename objects/{obj_ball => demo_obj_ball}/Step_0.gml (100%) rename objects/{obj_ball/obj_ball.yy => demo_obj_ball/demo_obj_ball.yy} (89%) rename objects/{demo_obj_player => demo_obj_camera}/Alarm_0.gml (85%) create mode 100644 objects/demo_obj_camera/Create_0.gml rename objects/{demo_obj_player => demo_obj_camera}/Draw_64.gml (62%) rename objects/{demo_obj_player => demo_obj_camera}/Draw_77.gml (100%) create mode 100644 objects/demo_obj_camera/Step_0.gml create mode 100644 objects/demo_obj_camera/demo_obj_camera.yy rename objects/{obj_tv => demo_obj_tv}/Create_0.gml (76%) create mode 100644 objects/demo_obj_tv/Draw_0.gml rename objects/{obj_tv/obj_tv.yy => demo_obj_tv/demo_obj_tv.yy} (84%) delete mode 100644 objects/obj_stanncam_manager/Create_0.gml delete mode 100644 objects/obj_tv/Draw_0.gml create mode 100644 scripts/stanncam_manager_old/stanncam_manager_old.gml create mode 100644 scripts/stanncam_manager_old/stanncam_manager_old.yy create mode 100644 scripts/stanncam_old/stanncam_old.gml create mode 100644 scripts/stanncam_old/stanncam_old.yy create mode 100644 stanncam.resource_order diff --git a/fonts/demo_f_hires/demo_f_hires.yy b/fonts/demo_f_hires/demo_f_hires.yy index e1ce5f2..72b3e17 100644 --- a/fonts/demo_f_hires/demo_f_hires.yy +++ b/fonts/demo_f_hires/demo_f_hires.yy @@ -2,137 +2,137 @@ "resourceType": "GMFont", "resourceVersion": "1.0", "name": "demo_f_hires", - "hinting": 0, - "glyphOperations": 0, - "interpreter": 0, - "pointRounding": 0, + "AntiAlias": 1, "applyKerning": 0, - "fontName": "Atkinson Hyperlegible", - "styleName": "Bold", - "size": 34.0, + "ascender": 39, + "ascenderOffset": 0, "bold": false, - "italic": false, + "canGenerateBitmap": true, "charset": 0, - "AntiAlias": 1, "first": 0, - "last": 0, - "sampleText": "abcdef ABCDEF\n0123456789 .,<>\"'&!?\nthe quick brown fox jumps over the lazy dog\nTHE QUICK BROWN FOX JUMPS OVER THE LAZY DOG\nDefault character: ▯ (9647)", - "includeTTF": false, - "TTFName": "", - "textureGroupId": { - "name": "Default", - "path": "texturegroups/Default", - }, - "ascenderOffset": 0, - "ascender": 39, + "fontName": "Atkinson Hyperlegible", + "glyphOperations": 0, "glyphs": { - "32": {"x":2,"y":2,"w":15,"h":54,"character":32,"shift":15,"offset":0,}, - "33": {"x":189,"y":170,"w":10,"h":54,"character":33,"shift":13,"offset":1,}, - "34": {"x":171,"y":170,"w":16,"h":54,"character":34,"shift":19,"offset":1,}, - "35": {"x":135,"y":170,"w":34,"h":54,"character":35,"shift":35,"offset":1,}, - "36": {"x":106,"y":170,"w":27,"h":54,"character":36,"shift":28,"offset":1,}, - "37": {"x":61,"y":170,"w":43,"h":54,"character":37,"shift":44,"offset":1,}, - "38": {"x":28,"y":170,"w":31,"h":54,"character":38,"shift":32,"offset":1,}, - "39": {"x":18,"y":170,"w":8,"h":54,"character":39,"shift":10,"offset":1,}, - "40": {"x":2,"y":170,"w":14,"h":54,"character":40,"shift":17,"offset":1,}, - "41": {"x":485,"y":114,"w":14,"h":54,"character":41,"shift":17,"offset":1,}, - "42": {"x":201,"y":170,"w":16,"h":54,"character":42,"shift":20,"offset":2,}, - "43": {"x":459,"y":114,"w":24,"h":54,"character":43,"shift":28,"offset":2,}, - "44": {"x":420,"y":114,"w":10,"h":54,"character":44,"shift":13,"offset":1,}, - "45": {"x":402,"y":114,"w":16,"h":54,"character":45,"shift":19,"offset":1,}, - "46": {"x":390,"y":114,"w":10,"h":54,"character":46,"shift":13,"offset":1,}, - "47": {"x":368,"y":114,"w":20,"h":54,"character":47,"shift":20,"offset":0,}, - "48": {"x":339,"y":114,"w":27,"h":54,"character":48,"shift":30,"offset":2,}, - "49": {"x":323,"y":114,"w":14,"h":54,"character":49,"shift":20,"offset":2,}, - "50": {"x":297,"y":114,"w":24,"h":54,"character":50,"shift":27,"offset":1,}, - "51": {"x":270,"y":114,"w":25,"h":54,"character":51,"shift":27,"offset":1,}, - "52": {"x":242,"y":114,"w":26,"h":54,"character":52,"shift":28,"offset":1,}, - "53": {"x":432,"y":114,"w":25,"h":54,"character":53,"shift":28,"offset":1,}, - "54": {"x":219,"y":170,"w":25,"h":54,"character":54,"shift":29,"offset":2,}, - "55": {"x":246,"y":170,"w":24,"h":54,"character":55,"shift":25,"offset":0,}, - "56": {"x":272,"y":170,"w":26,"h":54,"character":56,"shift":28,"offset":1,}, - "57": {"x":342,"y":226,"w":23,"h":54,"character":57,"shift":25,"offset":1,}, - "58": {"x":330,"y":226,"w":10,"h":54,"character":58,"shift":13,"offset":1,}, - "59": {"x":318,"y":226,"w":10,"h":54,"character":59,"shift":13,"offset":1,}, - "60": {"x":292,"y":226,"w":24,"h":54,"character":60,"shift":26,"offset":1,}, - "61": {"x":266,"y":226,"w":24,"h":54,"character":61,"shift":28,"offset":2,}, - "62": {"x":240,"y":226,"w":24,"h":54,"character":62,"shift":26,"offset":1,}, - "63": {"x":213,"y":226,"w":25,"h":54,"character":63,"shift":28,"offset":1,}, - "64": {"x":179,"y":226,"w":32,"h":54,"character":64,"shift":34,"offset":1,}, - "65": {"x":145,"y":226,"w":32,"h":54,"character":65,"shift":31,"offset":0,}, - "66": {"x":116,"y":226,"w":27,"h":54,"character":66,"shift":29,"offset":1,}, - "67": {"x":85,"y":226,"w":29,"h":54,"character":67,"shift":31,"offset":1,}, - "68": {"x":54,"y":226,"w":29,"h":54,"character":68,"shift":31,"offset":1,}, - "69": {"x":27,"y":226,"w":25,"h":54,"character":69,"shift":26,"offset":1,}, - "70": {"x":2,"y":226,"w":23,"h":54,"character":70,"shift":25,"offset":1,}, - "71": {"x":469,"y":170,"w":30,"h":54,"character":71,"shift":33,"offset":1,}, - "72": {"x":439,"y":170,"w":28,"h":54,"character":72,"shift":31,"offset":1,}, - "73": {"x":420,"y":170,"w":17,"h":54,"character":73,"shift":21,"offset":2,}, - "74": {"x":394,"y":170,"w":24,"h":54,"character":74,"shift":25,"offset":0,}, - "75": {"x":363,"y":170,"w":29,"h":54,"character":75,"shift":30,"offset":1,}, - "76": {"x":338,"y":170,"w":23,"h":54,"character":76,"shift":24,"offset":1,}, - "77": {"x":300,"y":170,"w":36,"h":54,"character":77,"shift":38,"offset":1,}, - "78": {"x":211,"y":114,"w":29,"h":54,"character":78,"shift":32,"offset":1,}, - "79": {"x":176,"y":114,"w":33,"h":54,"character":79,"shift":35,"offset":1,}, - "80": {"x":147,"y":114,"w":27,"h":54,"character":80,"shift":29,"offset":1,}, - "81": {"x":76,"y":58,"w":35,"h":54,"character":81,"shift":35,"offset":1,}, - "82": {"x":31,"y":58,"w":28,"h":54,"character":82,"shift":30,"offset":1,}, - "83": {"x":2,"y":58,"w":27,"h":54,"character":83,"shift":28,"offset":1,}, - "84": {"x":461,"y":2,"w":28,"h":54,"character":84,"shift":28,"offset":0,}, - "85": {"x":432,"y":2,"w":27,"h":54,"character":85,"shift":30,"offset":1,}, - "86": {"x":400,"y":2,"w":30,"h":54,"character":86,"shift":30,"offset":0,}, - "87": {"x":358,"y":2,"w":40,"h":54,"character":87,"shift":40,"offset":0,}, - "88": {"x":324,"y":2,"w":32,"h":54,"character":88,"shift":32,"offset":0,}, - "89": {"x":291,"y":2,"w":31,"h":54,"character":89,"shift":31,"offset":0,}, - "90": {"x":263,"y":2,"w":26,"h":54,"character":90,"shift":28,"offset":1,}, - "91": {"x":61,"y":58,"w":13,"h":54,"character":91,"shift":15,"offset":1,}, - "92": {"x":241,"y":2,"w":20,"h":54,"character":92,"shift":20,"offset":0,}, - "93": {"x":208,"y":2,"w":13,"h":54,"character":93,"shift":15,"offset":1,}, - "94": {"x":183,"y":2,"w":23,"h":54,"character":94,"shift":27,"offset":2,}, - "95": {"x":161,"y":2,"w":20,"h":54,"character":95,"shift":19,"offset":0,}, - "96": {"x":149,"y":2,"w":10,"h":54,"character":96,"shift":14,"offset":2,}, - "97": {"x":123,"y":2,"w":24,"h":54,"character":97,"shift":25,"offset":0,}, - "98": {"x":97,"y":2,"w":24,"h":54,"character":98,"shift":27,"offset":2,}, - "99": {"x":73,"y":2,"w":22,"h":54,"character":99,"shift":24,"offset":1,}, - "100": {"x":46,"y":2,"w":25,"h":54,"character":100,"shift":27,"offset":1,}, - "101": {"x":19,"y":2,"w":25,"h":54,"character":101,"shift":26,"offset":1,}, - "102": {"x":223,"y":2,"w":16,"h":54,"character":102,"shift":17,"offset":0,}, - "103": {"x":113,"y":58,"w":24,"h":54,"character":103,"shift":27,"offset":1,}, - "104": {"x":359,"y":58,"w":22,"h":54,"character":104,"shift":26,"offset":2,}, - "105": {"x":139,"y":58,"w":12,"h":54,"character":105,"shift":14,"offset":1,}, - "106": {"x":105,"y":114,"w":15,"h":54,"character":106,"shift":12,"offset":-4,}, - "107": {"x":79,"y":114,"w":24,"h":54,"character":107,"shift":26,"offset":2,}, - "108": {"x":64,"y":114,"w":13,"h":54,"character":108,"shift":14,"offset":2,}, - "109": {"x":26,"y":114,"w":36,"h":54,"character":109,"shift":40,"offset":2,}, - "110": {"x":2,"y":114,"w":22,"h":54,"character":110,"shift":26,"offset":2,}, - "111": {"x":477,"y":58,"w":24,"h":54,"character":111,"shift":26,"offset":1,}, - "112": {"x":451,"y":58,"w":24,"h":54,"character":112,"shift":27,"offset":2,}, - "113": {"x":419,"y":58,"w":30,"h":54,"character":113,"shift":27,"offset":1,}, - "114": {"x":402,"y":58,"w":15,"h":54,"character":114,"shift":17,"offset":2,}, - "115": {"x":122,"y":114,"w":23,"h":54,"character":115,"shift":24,"offset":0,}, - "116": {"x":383,"y":58,"w":17,"h":54,"character":116,"shift":17,"offset":0,}, - "117": {"x":335,"y":58,"w":22,"h":54,"character":117,"shift":26,"offset":2,}, - "118": {"x":309,"y":58,"w":24,"h":54,"character":118,"shift":24,"offset":0,}, - "119": {"x":274,"y":58,"w":33,"h":54,"character":119,"shift":33,"offset":0,}, - "120": {"x":247,"y":58,"w":25,"h":54,"character":120,"shift":24,"offset":0,}, - "121": {"x":221,"y":58,"w":24,"h":54,"character":121,"shift":23,"offset":0,}, - "122": {"x":197,"y":58,"w":22,"h":54,"character":122,"shift":23,"offset":1,}, - "123": {"x":180,"y":58,"w":15,"h":54,"character":123,"shift":17,"offset":1,}, - "124": {"x":170,"y":58,"w":8,"h":54,"character":124,"shift":11,"offset":1,}, - "125": {"x":153,"y":58,"w":15,"h":54,"character":125,"shift":17,"offset":1,}, - "126": {"x":367,"y":226,"w":22,"h":54,"character":126,"shift":24,"offset":1,}, - "9647": {"x":391,"y":226,"w":26,"h":54,"character":9647,"shift":44,"offset":9,}, + "32": {"character":32,"h":54,"offset":0,"shift":15,"w":15,"x":2,"y":2,}, + "33": {"character":33,"h":54,"offset":1,"shift":13,"w":10,"x":189,"y":170,}, + "34": {"character":34,"h":54,"offset":1,"shift":19,"w":16,"x":171,"y":170,}, + "35": {"character":35,"h":54,"offset":1,"shift":35,"w":34,"x":135,"y":170,}, + "36": {"character":36,"h":54,"offset":1,"shift":28,"w":27,"x":106,"y":170,}, + "37": {"character":37,"h":54,"offset":1,"shift":44,"w":43,"x":61,"y":170,}, + "38": {"character":38,"h":54,"offset":1,"shift":32,"w":31,"x":28,"y":170,}, + "39": {"character":39,"h":54,"offset":1,"shift":10,"w":8,"x":18,"y":170,}, + "40": {"character":40,"h":54,"offset":1,"shift":17,"w":14,"x":2,"y":170,}, + "41": {"character":41,"h":54,"offset":1,"shift":17,"w":14,"x":485,"y":114,}, + "42": {"character":42,"h":54,"offset":2,"shift":20,"w":16,"x":201,"y":170,}, + "43": {"character":43,"h":54,"offset":2,"shift":28,"w":24,"x":459,"y":114,}, + "44": {"character":44,"h":54,"offset":1,"shift":13,"w":10,"x":420,"y":114,}, + "45": {"character":45,"h":54,"offset":1,"shift":19,"w":16,"x":402,"y":114,}, + "46": {"character":46,"h":54,"offset":1,"shift":13,"w":10,"x":390,"y":114,}, + "47": {"character":47,"h":54,"offset":0,"shift":20,"w":20,"x":368,"y":114,}, + "48": {"character":48,"h":54,"offset":2,"shift":30,"w":27,"x":339,"y":114,}, + "49": {"character":49,"h":54,"offset":2,"shift":20,"w":14,"x":323,"y":114,}, + "50": {"character":50,"h":54,"offset":1,"shift":27,"w":24,"x":297,"y":114,}, + "51": {"character":51,"h":54,"offset":1,"shift":27,"w":25,"x":270,"y":114,}, + "52": {"character":52,"h":54,"offset":1,"shift":28,"w":26,"x":242,"y":114,}, + "53": {"character":53,"h":54,"offset":1,"shift":28,"w":25,"x":432,"y":114,}, + "54": {"character":54,"h":54,"offset":2,"shift":29,"w":25,"x":219,"y":170,}, + "55": {"character":55,"h":54,"offset":0,"shift":25,"w":24,"x":246,"y":170,}, + "56": {"character":56,"h":54,"offset":1,"shift":28,"w":26,"x":272,"y":170,}, + "57": {"character":57,"h":54,"offset":1,"shift":25,"w":23,"x":342,"y":226,}, + "58": {"character":58,"h":54,"offset":1,"shift":13,"w":10,"x":330,"y":226,}, + "59": {"character":59,"h":54,"offset":1,"shift":13,"w":10,"x":318,"y":226,}, + "60": {"character":60,"h":54,"offset":1,"shift":26,"w":24,"x":292,"y":226,}, + "61": {"character":61,"h":54,"offset":2,"shift":28,"w":24,"x":266,"y":226,}, + "62": {"character":62,"h":54,"offset":1,"shift":26,"w":24,"x":240,"y":226,}, + "63": {"character":63,"h":54,"offset":1,"shift":28,"w":25,"x":213,"y":226,}, + "64": {"character":64,"h":54,"offset":1,"shift":34,"w":32,"x":179,"y":226,}, + "65": {"character":65,"h":54,"offset":0,"shift":31,"w":32,"x":145,"y":226,}, + "66": {"character":66,"h":54,"offset":1,"shift":29,"w":27,"x":116,"y":226,}, + "67": {"character":67,"h":54,"offset":1,"shift":31,"w":29,"x":85,"y":226,}, + "68": {"character":68,"h":54,"offset":1,"shift":31,"w":29,"x":54,"y":226,}, + "69": {"character":69,"h":54,"offset":1,"shift":26,"w":25,"x":27,"y":226,}, + "70": {"character":70,"h":54,"offset":1,"shift":25,"w":23,"x":2,"y":226,}, + "71": {"character":71,"h":54,"offset":1,"shift":33,"w":30,"x":469,"y":170,}, + "72": {"character":72,"h":54,"offset":1,"shift":31,"w":28,"x":439,"y":170,}, + "73": {"character":73,"h":54,"offset":2,"shift":21,"w":17,"x":420,"y":170,}, + "74": {"character":74,"h":54,"offset":0,"shift":25,"w":24,"x":394,"y":170,}, + "75": {"character":75,"h":54,"offset":1,"shift":30,"w":29,"x":363,"y":170,}, + "76": {"character":76,"h":54,"offset":1,"shift":24,"w":23,"x":338,"y":170,}, + "77": {"character":77,"h":54,"offset":1,"shift":38,"w":36,"x":300,"y":170,}, + "78": {"character":78,"h":54,"offset":1,"shift":32,"w":29,"x":211,"y":114,}, + "79": {"character":79,"h":54,"offset":1,"shift":35,"w":33,"x":176,"y":114,}, + "80": {"character":80,"h":54,"offset":1,"shift":29,"w":27,"x":147,"y":114,}, + "81": {"character":81,"h":54,"offset":1,"shift":35,"w":35,"x":76,"y":58,}, + "82": {"character":82,"h":54,"offset":1,"shift":30,"w":28,"x":31,"y":58,}, + "83": {"character":83,"h":54,"offset":1,"shift":28,"w":27,"x":2,"y":58,}, + "84": {"character":84,"h":54,"offset":0,"shift":28,"w":28,"x":461,"y":2,}, + "85": {"character":85,"h":54,"offset":1,"shift":30,"w":27,"x":432,"y":2,}, + "86": {"character":86,"h":54,"offset":0,"shift":30,"w":30,"x":400,"y":2,}, + "87": {"character":87,"h":54,"offset":0,"shift":40,"w":40,"x":358,"y":2,}, + "88": {"character":88,"h":54,"offset":0,"shift":32,"w":32,"x":324,"y":2,}, + "89": {"character":89,"h":54,"offset":0,"shift":31,"w":31,"x":291,"y":2,}, + "90": {"character":90,"h":54,"offset":1,"shift":28,"w":26,"x":263,"y":2,}, + "91": {"character":91,"h":54,"offset":1,"shift":15,"w":13,"x":61,"y":58,}, + "92": {"character":92,"h":54,"offset":0,"shift":20,"w":20,"x":241,"y":2,}, + "93": {"character":93,"h":54,"offset":1,"shift":15,"w":13,"x":208,"y":2,}, + "94": {"character":94,"h":54,"offset":2,"shift":27,"w":23,"x":183,"y":2,}, + "95": {"character":95,"h":54,"offset":0,"shift":19,"w":20,"x":161,"y":2,}, + "96": {"character":96,"h":54,"offset":2,"shift":14,"w":10,"x":149,"y":2,}, + "97": {"character":97,"h":54,"offset":0,"shift":25,"w":24,"x":123,"y":2,}, + "98": {"character":98,"h":54,"offset":2,"shift":27,"w":24,"x":97,"y":2,}, + "99": {"character":99,"h":54,"offset":1,"shift":24,"w":22,"x":73,"y":2,}, + "100": {"character":100,"h":54,"offset":1,"shift":27,"w":25,"x":46,"y":2,}, + "101": {"character":101,"h":54,"offset":1,"shift":26,"w":25,"x":19,"y":2,}, + "102": {"character":102,"h":54,"offset":0,"shift":17,"w":16,"x":223,"y":2,}, + "103": {"character":103,"h":54,"offset":1,"shift":27,"w":24,"x":113,"y":58,}, + "104": {"character":104,"h":54,"offset":2,"shift":26,"w":22,"x":359,"y":58,}, + "105": {"character":105,"h":54,"offset":1,"shift":14,"w":12,"x":139,"y":58,}, + "106": {"character":106,"h":54,"offset":-4,"shift":12,"w":15,"x":105,"y":114,}, + "107": {"character":107,"h":54,"offset":2,"shift":26,"w":24,"x":79,"y":114,}, + "108": {"character":108,"h":54,"offset":2,"shift":14,"w":13,"x":64,"y":114,}, + "109": {"character":109,"h":54,"offset":2,"shift":40,"w":36,"x":26,"y":114,}, + "110": {"character":110,"h":54,"offset":2,"shift":26,"w":22,"x":2,"y":114,}, + "111": {"character":111,"h":54,"offset":1,"shift":26,"w":24,"x":477,"y":58,}, + "112": {"character":112,"h":54,"offset":2,"shift":27,"w":24,"x":451,"y":58,}, + "113": {"character":113,"h":54,"offset":1,"shift":27,"w":30,"x":419,"y":58,}, + "114": {"character":114,"h":54,"offset":2,"shift":17,"w":15,"x":402,"y":58,}, + "115": {"character":115,"h":54,"offset":0,"shift":24,"w":23,"x":122,"y":114,}, + "116": {"character":116,"h":54,"offset":0,"shift":17,"w":17,"x":383,"y":58,}, + "117": {"character":117,"h":54,"offset":2,"shift":26,"w":22,"x":335,"y":58,}, + "118": {"character":118,"h":54,"offset":0,"shift":24,"w":24,"x":309,"y":58,}, + "119": {"character":119,"h":54,"offset":0,"shift":33,"w":33,"x":274,"y":58,}, + "120": {"character":120,"h":54,"offset":0,"shift":24,"w":25,"x":247,"y":58,}, + "121": {"character":121,"h":54,"offset":0,"shift":23,"w":24,"x":221,"y":58,}, + "122": {"character":122,"h":54,"offset":1,"shift":23,"w":22,"x":197,"y":58,}, + "123": {"character":123,"h":54,"offset":1,"shift":17,"w":15,"x":180,"y":58,}, + "124": {"character":124,"h":54,"offset":1,"shift":11,"w":8,"x":170,"y":58,}, + "125": {"character":125,"h":54,"offset":1,"shift":17,"w":15,"x":153,"y":58,}, + "126": {"character":126,"h":54,"offset":1,"shift":24,"w":22,"x":367,"y":226,}, + "9647": {"character":9647,"h":54,"offset":9,"shift":44,"w":26,"x":391,"y":226,}, }, + "hinting": 0, + "includeTTF": false, + "interpreter": 0, + "italic": false, "kerningPairs": [], + "last": 0, + "maintainGms1Font": false, + "parent": { + "name": "demonstration", + "path": "folders/demonstration.yy", + }, + "pointRounding": 0, "ranges": [ {"lower":32,"upper":127,}, {"lower":9647,"upper":9647,}, ], "regenerateBitmap": false, - "canGenerateBitmap": true, - "maintainGms1Font": false, - "parent": { - "name": "demonstration", - "path": "folders/demonstration.yy", + "sampleText": "abcdef ABCDEF\n0123456789 .,<>\"'&!?\nthe quick brown fox jumps over the lazy dog\nTHE QUICK BROWN FOX JUMPS OVER THE LAZY DOG\nDefault character: ▯ (9647)", + "size": 34.0, + "styleName": "Bold", + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", }, + "TTFName": "", } \ No newline at end of file diff --git a/fonts/demo_f_pixel/demo_f_pixel.yy b/fonts/demo_f_pixel/demo_f_pixel.yy index c5dc37f..2f13c89 100644 --- a/fonts/demo_f_pixel/demo_f_pixel.yy +++ b/fonts/demo_f_pixel/demo_f_pixel.yy @@ -2,137 +2,137 @@ "resourceType": "GMFont", "resourceVersion": "1.0", "name": "demo_f_pixel", - "hinting": 0, - "glyphOperations": 0, - "interpreter": 0, - "pointRounding": 0, + "AntiAlias": 0, "applyKerning": 0, - "fontName": "04b03", - "styleName": "Regular", - "size": 6.0, + "ascender": 0, + "ascenderOffset": 0, "bold": false, - "italic": false, + "canGenerateBitmap": true, "charset": 0, - "AntiAlias": 0, "first": 0, - "last": 0, - "sampleText": "created by:\r\nstann.co", - "includeTTF": false, - "TTFName": "", - "textureGroupId": { - "name": "Default", - "path": "texturegroups/Default", - }, - "ascenderOffset": 0, - "ascender": 0, + "fontName": "04b03", + "glyphOperations": 0, "glyphs": { - "32": {"x":2,"y":2,"w":4,"h":8,"character":32,"shift":4,"offset":0,}, - "33": {"x":2,"y":32,"w":1,"h":8,"character":33,"shift":2,"offset":0,}, - "34": {"x":122,"y":22,"w":3,"h":8,"character":34,"shift":4,"offset":0,}, - "35": {"x":115,"y":22,"w":5,"h":8,"character":35,"shift":6,"offset":0,}, - "36": {"x":109,"y":22,"w":4,"h":8,"character":36,"shift":5,"offset":0,}, - "37": {"x":102,"y":22,"w":5,"h":8,"character":37,"shift":6,"offset":0,}, - "38": {"x":95,"y":22,"w":5,"h":8,"character":38,"shift":6,"offset":0,}, - "39": {"x":92,"y":22,"w":1,"h":8,"character":39,"shift":2,"offset":0,}, - "40": {"x":88,"y":22,"w":2,"h":8,"character":40,"shift":3,"offset":0,}, - "41": {"x":84,"y":22,"w":2,"h":8,"character":41,"shift":3,"offset":0,}, - "42": {"x":5,"y":32,"w":3,"h":8,"character":42,"shift":4,"offset":0,}, - "43": {"x":79,"y":22,"w":3,"h":8,"character":43,"shift":4,"offset":0,}, - "44": {"x":69,"y":22,"w":2,"h":8,"character":44,"shift":3,"offset":0,}, - "45": {"x":64,"y":22,"w":3,"h":8,"character":45,"shift":4,"offset":0,}, - "46": {"x":61,"y":22,"w":1,"h":8,"character":46,"shift":2,"offset":0,}, - "47": {"x":54,"y":22,"w":5,"h":8,"character":47,"shift":6,"offset":0,}, - "48": {"x":48,"y":22,"w":4,"h":8,"character":48,"shift":5,"offset":0,}, - "49": {"x":44,"y":22,"w":2,"h":8,"character":49,"shift":3,"offset":0,}, - "50": {"x":38,"y":22,"w":4,"h":8,"character":50,"shift":5,"offset":0,}, - "51": {"x":32,"y":22,"w":4,"h":8,"character":51,"shift":5,"offset":0,}, - "52": {"x":26,"y":22,"w":4,"h":8,"character":52,"shift":5,"offset":0,}, - "53": {"x":73,"y":22,"w":4,"h":8,"character":53,"shift":5,"offset":0,}, - "54": {"x":10,"y":32,"w":4,"h":8,"character":54,"shift":5,"offset":0,}, - "55": {"x":16,"y":32,"w":4,"h":8,"character":55,"shift":5,"offset":0,}, - "56": {"x":22,"y":32,"w":4,"h":8,"character":56,"shift":5,"offset":0,}, - "57": {"x":13,"y":42,"w":4,"h":8,"character":57,"shift":5,"offset":0,}, - "58": {"x":10,"y":42,"w":1,"h":8,"character":58,"shift":2,"offset":0,}, - "59": {"x":7,"y":42,"w":1,"h":8,"character":59,"shift":2,"offset":0,}, - "60": {"x":2,"y":42,"w":3,"h":8,"character":60,"shift":4,"offset":0,}, - "61": {"x":120,"y":32,"w":3,"h":8,"character":61,"shift":4,"offset":0,}, - "62": {"x":115,"y":32,"w":3,"h":8,"character":62,"shift":4,"offset":0,}, - "63": {"x":109,"y":32,"w":4,"h":8,"character":63,"shift":5,"offset":0,}, - "64": {"x":102,"y":32,"w":5,"h":8,"character":64,"shift":6,"offset":0,}, - "65": {"x":96,"y":32,"w":4,"h":8,"character":65,"shift":5,"offset":0,}, - "66": {"x":90,"y":32,"w":4,"h":8,"character":66,"shift":5,"offset":0,}, - "67": {"x":85,"y":32,"w":3,"h":8,"character":67,"shift":4,"offset":0,}, - "68": {"x":79,"y":32,"w":4,"h":8,"character":68,"shift":5,"offset":0,}, - "69": {"x":74,"y":32,"w":3,"h":8,"character":69,"shift":4,"offset":0,}, - "70": {"x":69,"y":32,"w":3,"h":8,"character":70,"shift":4,"offset":0,}, - "71": {"x":63,"y":32,"w":4,"h":8,"character":71,"shift":5,"offset":0,}, - "72": {"x":57,"y":32,"w":4,"h":8,"character":72,"shift":5,"offset":0,}, - "73": {"x":52,"y":32,"w":3,"h":8,"character":73,"shift":4,"offset":0,}, - "74": {"x":46,"y":32,"w":4,"h":8,"character":74,"shift":5,"offset":0,}, - "75": {"x":40,"y":32,"w":4,"h":8,"character":75,"shift":5,"offset":0,}, - "76": {"x":35,"y":32,"w":3,"h":8,"character":76,"shift":4,"offset":0,}, - "77": {"x":28,"y":32,"w":5,"h":8,"character":77,"shift":6,"offset":0,}, - "78": {"x":20,"y":22,"w":4,"h":8,"character":78,"shift":5,"offset":0,}, - "79": {"x":14,"y":22,"w":4,"h":8,"character":79,"shift":5,"offset":0,}, - "80": {"x":8,"y":22,"w":4,"h":8,"character":80,"shift":5,"offset":0,}, - "81": {"x":2,"y":12,"w":4,"h":8,"character":81,"shift":5,"offset":0,}, - "82": {"x":115,"y":2,"w":4,"h":8,"character":82,"shift":5,"offset":0,}, - "83": {"x":109,"y":2,"w":4,"h":8,"character":83,"shift":5,"offset":0,}, - "84": {"x":104,"y":2,"w":3,"h":8,"character":84,"shift":4,"offset":0,}, - "85": {"x":98,"y":2,"w":4,"h":8,"character":85,"shift":5,"offset":0,}, - "86": {"x":92,"y":2,"w":4,"h":8,"character":86,"shift":5,"offset":0,}, - "87": {"x":85,"y":2,"w":5,"h":8,"character":87,"shift":6,"offset":0,}, - "88": {"x":79,"y":2,"w":4,"h":8,"character":88,"shift":5,"offset":0,}, - "89": {"x":73,"y":2,"w":4,"h":8,"character":89,"shift":5,"offset":0,}, - "90": {"x":68,"y":2,"w":3,"h":8,"character":90,"shift":4,"offset":0,}, - "91": {"x":121,"y":2,"w":2,"h":8,"character":91,"shift":3,"offset":0,}, - "92": {"x":61,"y":2,"w":5,"h":8,"character":92,"shift":6,"offset":0,}, - "93": {"x":52,"y":2,"w":2,"h":8,"character":93,"shift":3,"offset":0,}, - "94": {"x":47,"y":2,"w":3,"h":8,"character":94,"shift":4,"offset":0,}, - "95": {"x":41,"y":2,"w":4,"h":8,"character":95,"shift":5,"offset":0,}, - "96": {"x":37,"y":2,"w":2,"h":8,"character":96,"shift":3,"offset":0,}, - "97": {"x":31,"y":2,"w":4,"h":8,"character":97,"shift":5,"offset":0,}, - "98": {"x":25,"y":2,"w":4,"h":8,"character":98,"shift":5,"offset":0,}, - "99": {"x":20,"y":2,"w":3,"h":8,"character":99,"shift":4,"offset":0,}, - "100": {"x":14,"y":2,"w":4,"h":8,"character":100,"shift":5,"offset":0,}, - "101": {"x":8,"y":2,"w":4,"h":8,"character":101,"shift":5,"offset":0,}, - "102": {"x":56,"y":2,"w":3,"h":8,"character":102,"shift":4,"offset":0,}, - "103": {"x":8,"y":12,"w":4,"h":8,"character":103,"shift":5,"offset":0,}, - "104": {"x":66,"y":12,"w":4,"h":8,"character":104,"shift":5,"offset":0,}, - "105": {"x":14,"y":12,"w":1,"h":8,"character":105,"shift":2,"offset":0,}, - "106": {"x":122,"y":12,"w":2,"h":8,"character":106,"shift":3,"offset":0,}, - "107": {"x":116,"y":12,"w":4,"h":8,"character":107,"shift":5,"offset":0,}, - "108": {"x":113,"y":12,"w":1,"h":8,"character":108,"shift":2,"offset":0,}, - "109": {"x":106,"y":12,"w":5,"h":8,"character":109,"shift":6,"offset":0,}, - "110": {"x":100,"y":12,"w":4,"h":8,"character":110,"shift":5,"offset":0,}, - "111": {"x":94,"y":12,"w":4,"h":8,"character":111,"shift":5,"offset":0,}, - "112": {"x":88,"y":12,"w":4,"h":8,"character":112,"shift":5,"offset":0,}, - "113": {"x":82,"y":12,"w":4,"h":8,"character":113,"shift":5,"offset":0,}, - "114": {"x":77,"y":12,"w":3,"h":8,"character":114,"shift":4,"offset":0,}, - "115": {"x":2,"y":22,"w":4,"h":8,"character":115,"shift":5,"offset":0,}, - "116": {"x":72,"y":12,"w":3,"h":8,"character":116,"shift":4,"offset":0,}, - "117": {"x":60,"y":12,"w":4,"h":8,"character":117,"shift":5,"offset":0,}, - "118": {"x":54,"y":12,"w":4,"h":8,"character":118,"shift":5,"offset":0,}, - "119": {"x":47,"y":12,"w":5,"h":8,"character":119,"shift":6,"offset":0,}, - "120": {"x":42,"y":12,"w":3,"h":8,"character":120,"shift":4,"offset":0,}, - "121": {"x":36,"y":12,"w":4,"h":8,"character":121,"shift":5,"offset":0,}, - "122": {"x":30,"y":12,"w":4,"h":8,"character":122,"shift":5,"offset":0,}, - "123": {"x":25,"y":12,"w":3,"h":8,"character":123,"shift":4,"offset":0,}, - "124": {"x":22,"y":12,"w":1,"h":8,"character":124,"shift":2,"offset":0,}, - "125": {"x":17,"y":12,"w":3,"h":8,"character":125,"shift":4,"offset":0,}, - "126": {"x":19,"y":42,"w":4,"h":8,"character":126,"shift":5,"offset":0,}, - "9647": {"x":25,"y":42,"w":4,"h":8,"character":9647,"shift":8,"offset":2,}, + "32": {"character":32,"h":8,"offset":0,"shift":4,"w":4,"x":2,"y":2,}, + "33": {"character":33,"h":8,"offset":0,"shift":2,"w":1,"x":2,"y":32,}, + "34": {"character":34,"h":8,"offset":0,"shift":4,"w":3,"x":122,"y":22,}, + "35": {"character":35,"h":8,"offset":0,"shift":6,"w":5,"x":115,"y":22,}, + "36": {"character":36,"h":8,"offset":0,"shift":5,"w":4,"x":109,"y":22,}, + "37": {"character":37,"h":8,"offset":0,"shift":6,"w":5,"x":102,"y":22,}, + "38": {"character":38,"h":8,"offset":0,"shift":6,"w":5,"x":95,"y":22,}, + "39": {"character":39,"h":8,"offset":0,"shift":2,"w":1,"x":92,"y":22,}, + "40": {"character":40,"h":8,"offset":0,"shift":3,"w":2,"x":88,"y":22,}, + "41": {"character":41,"h":8,"offset":0,"shift":3,"w":2,"x":84,"y":22,}, + "42": {"character":42,"h":8,"offset":0,"shift":4,"w":3,"x":5,"y":32,}, + "43": {"character":43,"h":8,"offset":0,"shift":4,"w":3,"x":79,"y":22,}, + "44": {"character":44,"h":8,"offset":0,"shift":3,"w":2,"x":69,"y":22,}, + "45": {"character":45,"h":8,"offset":0,"shift":4,"w":3,"x":64,"y":22,}, + "46": {"character":46,"h":8,"offset":0,"shift":2,"w":1,"x":61,"y":22,}, + "47": {"character":47,"h":8,"offset":0,"shift":6,"w":5,"x":54,"y":22,}, + "48": {"character":48,"h":8,"offset":0,"shift":5,"w":4,"x":48,"y":22,}, + "49": {"character":49,"h":8,"offset":0,"shift":3,"w":2,"x":44,"y":22,}, + "50": {"character":50,"h":8,"offset":0,"shift":5,"w":4,"x":38,"y":22,}, + "51": {"character":51,"h":8,"offset":0,"shift":5,"w":4,"x":32,"y":22,}, + "52": {"character":52,"h":8,"offset":0,"shift":5,"w":4,"x":26,"y":22,}, + "53": {"character":53,"h":8,"offset":0,"shift":5,"w":4,"x":73,"y":22,}, + "54": {"character":54,"h":8,"offset":0,"shift":5,"w":4,"x":10,"y":32,}, + "55": {"character":55,"h":8,"offset":0,"shift":5,"w":4,"x":16,"y":32,}, + "56": {"character":56,"h":8,"offset":0,"shift":5,"w":4,"x":22,"y":32,}, + "57": {"character":57,"h":8,"offset":0,"shift":5,"w":4,"x":13,"y":42,}, + "58": {"character":58,"h":8,"offset":0,"shift":2,"w":1,"x":10,"y":42,}, + "59": {"character":59,"h":8,"offset":0,"shift":2,"w":1,"x":7,"y":42,}, + "60": {"character":60,"h":8,"offset":0,"shift":4,"w":3,"x":2,"y":42,}, + "61": {"character":61,"h":8,"offset":0,"shift":4,"w":3,"x":120,"y":32,}, + "62": {"character":62,"h":8,"offset":0,"shift":4,"w":3,"x":115,"y":32,}, + "63": {"character":63,"h":8,"offset":0,"shift":5,"w":4,"x":109,"y":32,}, + "64": {"character":64,"h":8,"offset":0,"shift":6,"w":5,"x":102,"y":32,}, + "65": {"character":65,"h":8,"offset":0,"shift":5,"w":4,"x":96,"y":32,}, + "66": {"character":66,"h":8,"offset":0,"shift":5,"w":4,"x":90,"y":32,}, + "67": {"character":67,"h":8,"offset":0,"shift":4,"w":3,"x":85,"y":32,}, + "68": {"character":68,"h":8,"offset":0,"shift":5,"w":4,"x":79,"y":32,}, + "69": {"character":69,"h":8,"offset":0,"shift":4,"w":3,"x":74,"y":32,}, + "70": {"character":70,"h":8,"offset":0,"shift":4,"w":3,"x":69,"y":32,}, + "71": {"character":71,"h":8,"offset":0,"shift":5,"w":4,"x":63,"y":32,}, + "72": {"character":72,"h":8,"offset":0,"shift":5,"w":4,"x":57,"y":32,}, + "73": {"character":73,"h":8,"offset":0,"shift":4,"w":3,"x":52,"y":32,}, + "74": {"character":74,"h":8,"offset":0,"shift":5,"w":4,"x":46,"y":32,}, + "75": {"character":75,"h":8,"offset":0,"shift":5,"w":4,"x":40,"y":32,}, + "76": {"character":76,"h":8,"offset":0,"shift":4,"w":3,"x":35,"y":32,}, + "77": {"character":77,"h":8,"offset":0,"shift":6,"w":5,"x":28,"y":32,}, + "78": {"character":78,"h":8,"offset":0,"shift":5,"w":4,"x":20,"y":22,}, + "79": {"character":79,"h":8,"offset":0,"shift":5,"w":4,"x":14,"y":22,}, + "80": {"character":80,"h":8,"offset":0,"shift":5,"w":4,"x":8,"y":22,}, + "81": {"character":81,"h":8,"offset":0,"shift":5,"w":4,"x":2,"y":12,}, + "82": {"character":82,"h":8,"offset":0,"shift":5,"w":4,"x":115,"y":2,}, + "83": {"character":83,"h":8,"offset":0,"shift":5,"w":4,"x":109,"y":2,}, + "84": {"character":84,"h":8,"offset":0,"shift":4,"w":3,"x":104,"y":2,}, + "85": {"character":85,"h":8,"offset":0,"shift":5,"w":4,"x":98,"y":2,}, + "86": {"character":86,"h":8,"offset":0,"shift":5,"w":4,"x":92,"y":2,}, + "87": {"character":87,"h":8,"offset":0,"shift":6,"w":5,"x":85,"y":2,}, + "88": {"character":88,"h":8,"offset":0,"shift":5,"w":4,"x":79,"y":2,}, + "89": {"character":89,"h":8,"offset":0,"shift":5,"w":4,"x":73,"y":2,}, + "90": {"character":90,"h":8,"offset":0,"shift":4,"w":3,"x":68,"y":2,}, + "91": {"character":91,"h":8,"offset":0,"shift":3,"w":2,"x":121,"y":2,}, + "92": {"character":92,"h":8,"offset":0,"shift":6,"w":5,"x":61,"y":2,}, + "93": {"character":93,"h":8,"offset":0,"shift":3,"w":2,"x":52,"y":2,}, + "94": {"character":94,"h":8,"offset":0,"shift":4,"w":3,"x":47,"y":2,}, + "95": {"character":95,"h":8,"offset":0,"shift":5,"w":4,"x":41,"y":2,}, + "96": {"character":96,"h":8,"offset":0,"shift":3,"w":2,"x":37,"y":2,}, + "97": {"character":97,"h":8,"offset":0,"shift":5,"w":4,"x":31,"y":2,}, + "98": {"character":98,"h":8,"offset":0,"shift":5,"w":4,"x":25,"y":2,}, + "99": {"character":99,"h":8,"offset":0,"shift":4,"w":3,"x":20,"y":2,}, + "100": {"character":100,"h":8,"offset":0,"shift":5,"w":4,"x":14,"y":2,}, + "101": {"character":101,"h":8,"offset":0,"shift":5,"w":4,"x":8,"y":2,}, + "102": {"character":102,"h":8,"offset":0,"shift":4,"w":3,"x":56,"y":2,}, + "103": {"character":103,"h":8,"offset":0,"shift":5,"w":4,"x":8,"y":12,}, + "104": {"character":104,"h":8,"offset":0,"shift":5,"w":4,"x":66,"y":12,}, + "105": {"character":105,"h":8,"offset":0,"shift":2,"w":1,"x":14,"y":12,}, + "106": {"character":106,"h":8,"offset":0,"shift":3,"w":2,"x":122,"y":12,}, + "107": {"character":107,"h":8,"offset":0,"shift":5,"w":4,"x":116,"y":12,}, + "108": {"character":108,"h":8,"offset":0,"shift":2,"w":1,"x":113,"y":12,}, + "109": {"character":109,"h":8,"offset":0,"shift":6,"w":5,"x":106,"y":12,}, + "110": {"character":110,"h":8,"offset":0,"shift":5,"w":4,"x":100,"y":12,}, + "111": {"character":111,"h":8,"offset":0,"shift":5,"w":4,"x":94,"y":12,}, + "112": {"character":112,"h":8,"offset":0,"shift":5,"w":4,"x":88,"y":12,}, + "113": {"character":113,"h":8,"offset":0,"shift":5,"w":4,"x":82,"y":12,}, + "114": {"character":114,"h":8,"offset":0,"shift":4,"w":3,"x":77,"y":12,}, + "115": {"character":115,"h":8,"offset":0,"shift":5,"w":4,"x":2,"y":22,}, + "116": {"character":116,"h":8,"offset":0,"shift":4,"w":3,"x":72,"y":12,}, + "117": {"character":117,"h":8,"offset":0,"shift":5,"w":4,"x":60,"y":12,}, + "118": {"character":118,"h":8,"offset":0,"shift":5,"w":4,"x":54,"y":12,}, + "119": {"character":119,"h":8,"offset":0,"shift":6,"w":5,"x":47,"y":12,}, + "120": {"character":120,"h":8,"offset":0,"shift":4,"w":3,"x":42,"y":12,}, + "121": {"character":121,"h":8,"offset":0,"shift":5,"w":4,"x":36,"y":12,}, + "122": {"character":122,"h":8,"offset":0,"shift":5,"w":4,"x":30,"y":12,}, + "123": {"character":123,"h":8,"offset":0,"shift":4,"w":3,"x":25,"y":12,}, + "124": {"character":124,"h":8,"offset":0,"shift":2,"w":1,"x":22,"y":12,}, + "125": {"character":125,"h":8,"offset":0,"shift":4,"w":3,"x":17,"y":12,}, + "126": {"character":126,"h":8,"offset":0,"shift":5,"w":4,"x":19,"y":42,}, + "9647": {"character":9647,"h":8,"offset":2,"shift":8,"w":4,"x":25,"y":42,}, }, + "hinting": 0, + "includeTTF": false, + "interpreter": 0, + "italic": false, "kerningPairs": [], + "last": 0, + "maintainGms1Font": false, + "parent": { + "name": "demonstration", + "path": "folders/demonstration.yy", + }, + "pointRounding": 0, "ranges": [ {"lower":32,"upper":127,}, {"lower":9647,"upper":9647,}, ], "regenerateBitmap": false, - "canGenerateBitmap": true, - "maintainGms1Font": false, - "parent": { - "name": "demonstration", - "path": "folders/demonstration.yy", + "sampleText": "created by:\r\nstann.co", + "size": 6.0, + "styleName": "Regular", + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", }, + "TTFName": "", } \ No newline at end of file diff --git a/objects/__obj_stanncam_manager/Create_0.gml b/objects/__obj_stanncam_manager/Create_0.gml new file mode 100644 index 0000000..9a11ef2 --- /dev/null +++ b/objects/__obj_stanncam_manager/Create_0.gml @@ -0,0 +1,5 @@ +/// @description gets created by stanncam init, maintains all cameras +resolution_w = 0; +resolution_h = 0; +number_of_cams = 0; +keep_aspect_ratio = true; \ No newline at end of file diff --git a/objects/obj_stanncam_manager/Draw_76.gml b/objects/__obj_stanncam_manager/Draw_76.gml similarity index 100% rename from objects/obj_stanncam_manager/Draw_76.gml rename to objects/__obj_stanncam_manager/Draw_76.gml diff --git a/objects/obj_stanncam_manager/Other_4.gml b/objects/__obj_stanncam_manager/Other_4.gml similarity index 100% rename from objects/obj_stanncam_manager/Other_4.gml rename to objects/__obj_stanncam_manager/Other_4.gml diff --git a/objects/obj_stanncam_manager/Step_2.gml b/objects/__obj_stanncam_manager/Step_2.gml similarity index 100% rename from objects/obj_stanncam_manager/Step_2.gml rename to objects/__obj_stanncam_manager/Step_2.gml diff --git a/objects/obj_stanncam_manager/obj_stanncam_manager.yy b/objects/__obj_stanncam_manager/__obj_stanncam_manager.yy similarity index 74% rename from objects/obj_stanncam_manager/obj_stanncam_manager.yy rename to objects/__obj_stanncam_manager/__obj_stanncam_manager.yy index 6f2795e..9595b21 100644 --- a/objects/obj_stanncam_manager/obj_stanncam_manager.yy +++ b/objects/__obj_stanncam_manager/__obj_stanncam_manager.yy @@ -1,36 +1,36 @@ { "resourceType": "GMObject", "resourceVersion": "1.0", - "name": "obj_stanncam_manager", - "spriteId": null, - "solid": false, - "visible": true, - "managed": true, - "spriteMaskId": null, - "persistent": true, - "parentObjectId": null, - "physicsObject": false, - "physicsSensor": false, - "physicsShape": 1, - "physicsGroup": 1, - "physicsDensity": 0.5, - "physicsRestitution": 0.1, - "physicsLinearDamping": 0.1, - "physicsAngularDamping": 0.1, - "physicsFriction": 0.2, - "physicsStartAwake": true, - "physicsKinematic": false, - "physicsShapePoints": [], + "name": "__obj_stanncam_manager", "eventList": [ - {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":4,"eventType":7,"collisionObjectId":null,}, - {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,}, - {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":2,"eventType":3,"collisionObjectId":null,}, - {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":76,"eventType":8,"collisionObjectId":null,}, + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":4,"eventType":7,"isDnD":false,}, + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,}, + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":2,"eventType":3,"isDnD":false,}, + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":76,"eventType":8,"isDnD":false,}, ], - "properties": [], + "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_ball/Step_0.gml b/objects/demo_obj_ball/Step_0.gml similarity index 100% rename from objects/obj_ball/Step_0.gml rename to objects/demo_obj_ball/Step_0.gml diff --git a/objects/obj_ball/obj_ball.yy b/objects/demo_obj_ball/demo_obj_ball.yy similarity index 89% rename from objects/obj_ball/obj_ball.yy rename to objects/demo_obj_ball/demo_obj_ball.yy index 3641c74..70e19bb 100644 --- a/objects/obj_ball/obj_ball.yy +++ b/objects/demo_obj_ball/demo_obj_ball.yy @@ -1,36 +1,36 @@ { "resourceType": "GMObject", "resourceVersion": "1.0", - "name": "obj_ball", - "spriteId": { - "name": "spr_ball", - "path": "sprites/spr_ball/spr_ball.yy", - }, - "solid": false, - "visible": true, + "name": "demo_obj_ball", + "eventList": [ + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":0,"eventType":3,"isDnD":false,}, + ], "managed": true, - "spriteMaskId": null, - "persistent": false, + "overriddenProperties": [], + "parent": { + "name": "demonstration", + "path": "folders/demonstration.yy", + }, "parentObjectId": null, - "physicsObject": false, - "physicsSensor": false, - "physicsShape": 1, - "physicsGroup": 1, - "physicsDensity": 0.5, - "physicsRestitution": 0.1, - "physicsLinearDamping": 0.1, + "persistent": false, "physicsAngularDamping": 0.1, + "physicsDensity": 0.5, "physicsFriction": 0.2, - "physicsStartAwake": true, + "physicsGroup": 1, "physicsKinematic": false, + "physicsLinearDamping": 0.1, + "physicsObject": false, + "physicsRestitution": 0.1, + "physicsSensor": false, + "physicsShape": 1, "physicsShapePoints": [], - "eventList": [ - {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":3,"collisionObjectId":null,}, - ], + "physicsStartAwake": true, "properties": [], - "overriddenProperties": [], - "parent": { - "name": "demonstration", - "path": "folders/demonstration.yy", + "solid": false, + "spriteId": { + "name": "spr_ball", + "path": "sprites/spr_ball/spr_ball.yy", }, + "spriteMaskId": null, + "visible": true, } \ No newline at end of file diff --git a/objects/demo_obj_player/Alarm_0.gml b/objects/demo_obj_camera/Alarm_0.gml similarity index 85% rename from objects/demo_obj_player/Alarm_0.gml rename to objects/demo_obj_camera/Alarm_0.gml index 86666c9..838ee2a 100644 --- a/objects/demo_obj_player/Alarm_0.gml +++ b/objects/demo_obj_camera/Alarm_0.gml @@ -1,8 +1,2 @@ /// @description pointer = false; - - - - - - diff --git a/objects/demo_obj_camera/Create_0.gml b/objects/demo_obj_camera/Create_0.gml new file mode 100644 index 0000000..870f0a2 --- /dev/null +++ b/objects/demo_obj_camera/Create_0.gml @@ -0,0 +1,33 @@ +/// @description +//camera +stanncam_init(320,240,1920,1080); +cam1 = new stanncam(demo_obj_player.x,demo_obj_player.y,global.game_w,global.game_h); +cam1.follow = demo_obj_player; + +cam2 = -1; + +split_screen = false; + +//pointer +pointer = false; +pointer_x = 0; +pointer_y = 0; + +zoom_mode = 0; +zoom_text = "no zooming" + +speed_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 } +] \ No newline at end of file diff --git a/objects/demo_obj_player/Draw_64.gml b/objects/demo_obj_camera/Draw_64.gml similarity index 62% rename from objects/demo_obj_player/Draw_64.gml rename to objects/demo_obj_camera/Draw_64.gml index b77e668..c982f58 100644 --- a/objects/demo_obj_player/Draw_64.gml +++ b/objects/demo_obj_camera/Draw_64.gml @@ -1,43 +1,47 @@ /// @description - //chooses pixel font or hires font if(gui_hires){ draw_set_font(demo_f_hires); var offset = 45; var outline_width = 4; + var precision = 16; draw_set_color(c_white) + } else { draw_set_font(demo_f_pixel); var offset = 8; - var outline_width = 0; - draw_set_color(c_black) + 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); +draw_text_outline(1,1,"[arrow keys] move character",outline_width,precision); var following = (cam1.follow != undefined) ? "following" : "not following" -draw_text_outline(1,offset,"[space] " + following,outline_width); -draw_text_outline(1,offset*2,"[ALT] toggle hi-res GUI",outline_width); -draw_text_outline(1,offset*3,"[LMB] move cam to pos (when not following)",outline_width); -draw_text_outline(1,offset*4,"[RMB] "+ zoom_text,outline_width); +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); var constrained = (cam1.room_constrain) ? "camera constrained to room" : "camera not constrained to room"; -draw_text_outline(1,offset*5,"[CTRL] "+ constrained,outline_width); -draw_text_outline(1,offset*6,"[F] camera shake",outline_width); -draw_text_outline(1,offset*7,"[Tab] camera speed "+ string(cam1.spd),outline_width); +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 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); -draw_text_outline(global.gui_w-1,offset,"GUI resolution: "+string(global.gui_w)+" x "+string(global.gui_h)+" [F2]",outline_width); -draw_text_outline(global.gui_w-1,offset*3,"fullscreen: "+string(window_get_fullscreen())+" [F4]",outline_width); -draw_text_outline(global.gui_w-1,offset*4,"split-screen: "+string(split_screen)+" [F5]",outline_width); +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,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); +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 -if(cam1.out_of_bounds(x,y,8)){ - var _x = cam1.room_to_gui_x(x); - var _y = cam1.room_to_gui_y(y); +if(cam1.out_of_bounds(demo_obj_player.x,demo_obj_player.y,8)){ + var _x = cam1.room_to_gui_x(demo_obj_player.x); + var _y = cam1.room_to_gui_y(demo_obj_player.y); var margin = (gui_hires) ? 50 : 20; @@ -47,7 +51,7 @@ if(cam1.out_of_bounds(x,y,8)){ _x = clamp(_x,margin,cam1.width * gui_scale_x -margin); _y = clamp(_y,margin,cam1.height * gui_scale_y -margin); - var dir = point_direction(_x,_y,cam1.room_to_gui_x(x),cam1.room_to_gui_y(y)); + var dir = point_direction(_x,_y,cam1.room_to_gui_x(demo_obj_player.x),cam1.room_to_gui_y(demo_obj_player.y)); if(gui_hires){ draw_sprite_ext(spr_arrow,0,_x,_y,1,1,dir-90,-1,1); @@ -56,8 +60,8 @@ if(cam1.out_of_bounds(x,y,8)){ } } else { //draws pointer over players head - var arrow_x = cam1.room_to_gui_x(x); - var arrow_y = cam1.room_to_gui_y(y); + var arrow_x = cam1.room_to_gui_x(demo_obj_player.x); + var arrow_y = cam1.room_to_gui_y(demo_obj_player.y); if(gui_hires){ draw_sprite_ext(spr_arrow,1,arrow_x,arrow_y-64,0.5,0.5,180,-1,1); } else { @@ -65,7 +69,6 @@ if(cam1.out_of_bounds(x,y,8)){ } } - //draw pointer on mouse location if(pointer){ var arrow_x = cam1.room_to_gui_x( pointer_x ); diff --git a/objects/demo_obj_player/Draw_77.gml b/objects/demo_obj_camera/Draw_77.gml similarity index 100% rename from objects/demo_obj_player/Draw_77.gml rename to objects/demo_obj_camera/Draw_77.gml diff --git a/objects/demo_obj_camera/Step_0.gml b/objects/demo_obj_camera/Step_0.gml new file mode 100644 index 0000000..0df775c --- /dev/null +++ b/objects/demo_obj_camera/Step_0.gml @@ -0,0 +1,125 @@ +/// @description +//toggle following player +if(keyboard_check_pressed(vk_space)){ + if(cam1.follow != undefined) cam1.follow = undefined; + else cam1.follow = demo_obj_player; +} + +//toggle splitscreen +if(keyboard_check_pressed(vk_f5)){ + split_screen = !split_screen; + if(split_screen){ + cam1.set_size(global.game_w/2,global.game_h); + + cam2 = cam1.clone(); + cam2.follow = demo_obj_player2; + }else{ + if(!cam2.is_destroyed()) cam2.destroy(); + cam1.set_size(global.game_w,global.game_h); + } +} + +//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); + } +} + +//moves camera to mouse press location +if(mouse_check_button_pressed(mb_left)){ + cam1.move(cam1.get_mouse_x(),cam1.get_mouse_y(),room_speed*1); + alarm[0] = room_speed*1.1; + pointer = true; + pointer_x = cam1.get_mouse_x(); + pointer_y = cam1.get_mouse_y(); +} + +//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 + zoom_text = "no zooming"; + cam1.zoom(1,room_speed*1); + demo_obj_tv.tv.zoom(1,room_speed*1); + break; + case 1: + //zoom in + zoom_text = "zoomed in"; + cam1.zoom(0.5,room_speed*1); + demo_obj_tv.tv.zoom(0.5,room_speed*1); + break; + case 2: + //zoom out + zoom_text = "zoomed out"; + cam1.zoom(2,room_speed*1); + demo_obj_tv.tv.zoom(2,room_speed*1); + break; + } +} + +//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; +} + +//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 fullscreen +if(keyboard_check_pressed(vk_f3)) stanncam_toggle_keep_aspect_ratio(); + +//toggle fullscreen +if(keyboard_check_pressed(vk_f4)) stanncam_toggle_fullscreen(); \ No newline at end of file diff --git a/objects/demo_obj_camera/demo_obj_camera.yy b/objects/demo_obj_camera/demo_obj_camera.yy new file mode 100644 index 0000000..f781c03 --- /dev/null +++ b/objects/demo_obj_camera/demo_obj_camera.yy @@ -0,0 +1,37 @@ +{ + "resourceType": "GMObject", + "resourceVersion": "1.0", + "name": "demo_obj_camera", + "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":0,"eventType":2,"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,}, + ], + "managed": true, + "overriddenProperties": [], + "parent": { + "name": "demonstration", + "path": "folders/demonstration.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/demo_obj_player/Create_0.gml b/objects/demo_obj_player/Create_0.gml index de38111..bd7cfa9 100644 --- a/objects/demo_obj_player/Create_0.gml +++ b/objects/demo_obj_player/Create_0.gml @@ -1,13 +1,5 @@ /// @description -//camera -stanncam_init(320,240,1920,1080); -cam1 = new stanncam(demo_obj_player.x,demo_obj_player.y,global.game_w,global.game_h); -cam1.follow = demo_obj_player; - -cam2 = -1; - - //player hspd = 0; vspd = 0; @@ -16,30 +8,4 @@ spd = 1.5; anim_spd = sprite_get_speed(spr_player_moving); -subimg = 0; - -split_screen = false; - -//pointer -pointer = false; -pointer_x = 0; -pointer_y = 0; - -zoom_mode = 0; -zoom_text = "no zooming" - -speed_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 } -] \ No newline at end of file +subimg = 0; \ No newline at end of file diff --git a/objects/demo_obj_player/Step_0.gml b/objects/demo_obj_player/Step_0.gml index 9e960e6..1b87e58 100644 --- a/objects/demo_obj_player/Step_0.gml +++ b/objects/demo_obj_player/Step_0.gml @@ -8,128 +8,6 @@ y+= vspd; x = clamp(x,0,room_width); y = clamp(y,0,room_height); -//toggle following player -if(keyboard_check_pressed(vk_space)){ - if(cam1.follow != undefined) cam1.follow = undefined; - else cam1.follow = demo_obj_player; -} - -//toggle splitscreen -if(keyboard_check_pressed(vk_f5)){ - split_screen = !split_screen; - if(split_screen){ - cam1.set_size(global.game_w/2,global.game_h); - - cam2 = cam1.clone(); - cam2.follow = demo_obj_player2; - }else{ - if(!cam2.is_destroyed()) cam2.destroy(); - cam1.set_size(global.game_w,global.game_h); - } -} - -//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); - } -} - -//moves camera to mouse press location -if(mouse_check_button_pressed(mb_left)){ - cam1.move(cam1.get_mouse_x(),cam1.get_mouse_y(),room_speed*1); - alarm[0] = room_speed*1.1; - pointer = true; - pointer_x = cam1.get_mouse_x(); - pointer_y = cam1.get_mouse_y(); -} - -//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 - 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; - } -} - -//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; -} - -//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 fullscreen -if(keyboard_check_pressed(vk_f4)) stanncam_toggle_fullscreen(); - //Restart if(keyboard_check_pressed(ord("R"))) game_restart(); \ No newline at end of file diff --git a/objects/demo_obj_player/demo_obj_player.yy b/objects/demo_obj_player/demo_obj_player.yy index ab5e7d7..f2ce603 100644 --- a/objects/demo_obj_player/demo_obj_player.yy +++ b/objects/demo_obj_player/demo_obj_player.yy @@ -2,40 +2,37 @@ "resourceType": "GMObject", "resourceVersion": "1.0", "name": "demo_obj_player", - "spriteId": { - "name": "spr_player_idle", - "path": "sprites/spr_player_idle/spr_player_idle.yy", - }, - "solid": false, - "visible": true, + "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, - "spriteMaskId": null, - "persistent": false, + "overriddenProperties": [], + "parent": { + "name": "demonstration", + "path": "folders/demonstration.yy", + }, "parentObjectId": null, - "physicsObject": false, - "physicsSensor": false, - "physicsShape": 1, - "physicsGroup": 1, - "physicsDensity": 0.5, - "physicsRestitution": 0.1, - "physicsLinearDamping": 0.1, + "persistent": false, "physicsAngularDamping": 0.1, + "physicsDensity": 0.5, "physicsFriction": 0.2, - "physicsStartAwake": true, + "physicsGroup": 1, "physicsKinematic": false, + "physicsLinearDamping": 0.1, + "physicsObject": false, + "physicsRestitution": 0.1, + "physicsSensor": false, + "physicsShape": 1, "physicsShapePoints": [], - "eventList": [ - {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,}, - {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":8,"collisionObjectId":null,}, - {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":3,"collisionObjectId":null,}, - {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":64,"eventType":8,"collisionObjectId":null,}, - {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":2,"collisionObjectId":null,}, - {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":77,"eventType":8,"collisionObjectId":null,}, - ], + "physicsStartAwake": true, "properties": [], - "overriddenProperties": [], - "parent": { - "name": "demonstration", - "path": "folders/demonstration.yy", + "solid": false, + "spriteId": { + "name": "spr_player_idle", + "path": "sprites/spr_player_idle/spr_player_idle.yy", }, + "spriteMaskId": null, + "visible": true, } \ No newline at end of file diff --git a/objects/demo_obj_player2/demo_obj_player2.yy b/objects/demo_obj_player2/demo_obj_player2.yy index a1e4d98..9c5128b 100644 --- a/objects/demo_obj_player2/demo_obj_player2.yy +++ b/objects/demo_obj_player2/demo_obj_player2.yy @@ -2,38 +2,38 @@ "resourceType": "GMObject", "resourceVersion": "1.0", "name": "demo_obj_player2", - "spriteId": { - "name": "spr_player2_idle", - "path": "sprites/spr_player2_idle/spr_player2_idle.yy", - }, - "solid": false, - "visible": true, + "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,}, + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":0,"eventType":2,"isDnD":false,}, + ], "managed": true, - "spriteMaskId": null, - "persistent": false, + "overriddenProperties": [], + "parent": { + "name": "demonstration", + "path": "folders/demonstration.yy", + }, "parentObjectId": null, - "physicsObject": false, - "physicsSensor": false, - "physicsShape": 1, - "physicsGroup": 1, - "physicsDensity": 0.5, - "physicsRestitution": 0.1, - "physicsLinearDamping": 0.1, + "persistent": false, "physicsAngularDamping": 0.1, + "physicsDensity": 0.5, "physicsFriction": 0.2, - "physicsStartAwake": true, + "physicsGroup": 1, "physicsKinematic": false, + "physicsLinearDamping": 0.1, + "physicsObject": false, + "physicsRestitution": 0.1, + "physicsSensor": false, + "physicsShape": 1, "physicsShapePoints": [], - "eventList": [ - {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,}, - {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":8,"collisionObjectId":null,}, - {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":3,"collisionObjectId":null,}, - {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":2,"collisionObjectId":null,}, - ], + "physicsStartAwake": true, "properties": [], - "overriddenProperties": [], - "parent": { - "name": "demonstration", - "path": "folders/demonstration.yy", + "solid": false, + "spriteId": { + "name": "spr_player2_idle", + "path": "sprites/spr_player2_idle/spr_player2_idle.yy", }, + "spriteMaskId": null, + "visible": true, } \ No newline at end of file diff --git a/objects/obj_tv/Create_0.gml b/objects/demo_obj_tv/Create_0.gml similarity index 76% rename from objects/obj_tv/Create_0.gml rename to objects/demo_obj_tv/Create_0.gml index 9681466..3cf03ce 100644 --- a/objects/obj_tv/Create_0.gml +++ b/objects/demo_obj_tv/Create_0.gml @@ -1,5 +1,5 @@ /// @description -tv = new stanncam(0,0,56,56,1); +tv = new stanncam(0,0,56,56,true); tv.follow = demo_obj_player2; tv.bounds_h = 1; diff --git a/objects/demo_obj_tv/Draw_0.gml b/objects/demo_obj_tv/Draw_0.gml new file mode 100644 index 0000000..25bc4c4 --- /dev/null +++ b/objects/demo_obj_tv/Draw_0.gml @@ -0,0 +1,3 @@ +/// @description +draw_self(); +draw_surface(tv.surface_extra,x+4,y+4); diff --git a/objects/obj_tv/obj_tv.yy b/objects/demo_obj_tv/demo_obj_tv.yy similarity index 84% rename from objects/obj_tv/obj_tv.yy rename to objects/demo_obj_tv/demo_obj_tv.yy index 9016464..331de40 100644 --- a/objects/obj_tv/obj_tv.yy +++ b/objects/demo_obj_tv/demo_obj_tv.yy @@ -1,37 +1,37 @@ { "resourceType": "GMObject", "resourceVersion": "1.0", - "name": "obj_tv", - "spriteId": { - "name": "spr_tv", - "path": "sprites/spr_tv/spr_tv.yy", - }, - "solid": false, - "visible": true, + "name": "demo_obj_tv", + "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,}, + ], "managed": true, - "spriteMaskId": null, - "persistent": false, + "overriddenProperties": [], + "parent": { + "name": "demonstration", + "path": "folders/demonstration.yy", + }, "parentObjectId": null, - "physicsObject": false, - "physicsSensor": false, - "physicsShape": 1, - "physicsGroup": 1, - "physicsDensity": 0.5, - "physicsRestitution": 0.1, - "physicsLinearDamping": 0.1, + "persistent": false, "physicsAngularDamping": 0.1, + "physicsDensity": 0.5, "physicsFriction": 0.2, - "physicsStartAwake": true, + "physicsGroup": 1, "physicsKinematic": false, + "physicsLinearDamping": 0.1, + "physicsObject": false, + "physicsRestitution": 0.1, + "physicsSensor": false, + "physicsShape": 1, "physicsShapePoints": [], - "eventList": [ - {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,}, - {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":8,"collisionObjectId":null,}, - ], + "physicsStartAwake": true, "properties": [], - "overriddenProperties": [], - "parent": { - "name": "demonstration", - "path": "folders/demonstration.yy", + "solid": false, + "spriteId": { + "name": "spr_tv", + "path": "sprites/spr_tv/spr_tv.yy", }, + "spriteMaskId": null, + "visible": true, } \ No newline at end of file diff --git a/objects/obj_stanncam_manager/Create_0.gml b/objects/obj_stanncam_manager/Create_0.gml deleted file mode 100644 index c9fac38..0000000 --- a/objects/obj_stanncam_manager/Create_0.gml +++ /dev/null @@ -1,4 +0,0 @@ -/// @description -resolution_w = 0; -resolution_h = 0; -number_of_cams = 0; \ No newline at end of file diff --git a/objects/obj_tv/Draw_0.gml b/objects/obj_tv/Draw_0.gml deleted file mode 100644 index 6bc8cda..0000000 --- a/objects/obj_tv/Draw_0.gml +++ /dev/null @@ -1,3 +0,0 @@ -/// @description -draw_self(); -draw_surface(tv.surface,x+4,y+4); diff --git a/options/android/options_android.yy b/options/android/options_android.yy index 513b3c1..98c963d 100644 --- a/options/android/options_android.yy +++ b/options/android/options_android.yy @@ -2,75 +2,76 @@ "resourceType": "GMAndroidOptions", "resourceVersion": "1.0", "name": "Android", - "option_android_sync_amazon": false, - "option_android_display_name": "Created with GameMaker", - "option_android_version": "1.0.0.0", - "option_android_tools_from_version": false, - "option_android_build_tools": "", - "option_android_support_lib": "", - "option_android_target_sdk": "", - "option_android_minimum_sdk": "", - "option_android_compile_sdk": "", - "option_android_package_domain": "com", - "option_android_package_company": "company", - "option_android_package_product": "game", - "option_android_arch_armv7": false, + "option_android_application_tag_inject": "", "option_android_arch_arm64": true, + "option_android_arch_armv7": false, "option_android_arch_x86_64": false, - "option_android_orient_portrait": true, - "option_android_orient_portrait_flipped": true, - "option_android_orient_landscape": true, - "option_android_orient_landscape_flipped": true, - "option_android_gamepad_support": true, - "option_android_lint": false, - "option_android_install_location": 0, - "option_android_sleep_margin": 4, - "option_android_splash_screens_landscape": "${base_options_dir}/android/splash/landscape.png", - "option_android_splash_screens_portrait": "${base_options_dir}/android/splash/portrait.png", - "option_android_splash_time": 0, - "option_android_launchscreen_fill": 0, - "option_android_splashscreen_background_colour": 255, - "option_android_tv_banner": "${base_options_dir}/android/tv_banner.png", - "option_android_interpolate_pixels": false, - "option_android_screen_depth": 0, + "option_android_build_tools": "", + "option_android_compile_sdk": "", "option_android_device_support": 0, - "option_android_scale": 0, - "option_android_texture_page": "2048x2048", - "option_android_icon_ldpi": "${base_options_dir}/android/icons/ldpi.png", - "option_android_icon_mdpi": "${base_options_dir}/android/icons/mdpi.png", - "option_android_icon_hdpi": "${base_options_dir}/android/icons/hdpi.png", - "option_android_icon_xhdpi": "${base_options_dir}/android/icons/xhdpi.png", - "option_android_icon_xxhdpi": "${base_options_dir}/android/icons/xxhdpi.png", - "option_android_icon_xxxhdpi": "${base_options_dir}/android/icons/xxxhdpi.png", + "option_android_display_name": "Created with GameMaker", + "option_android_facebook_app_display_name": "", + "option_android_facebook_id": "", + "option_android_gamepad_support": true, + "option_android_google_apk_expansion": false, + "option_android_google_cloud_saving": false, + "option_android_google_dynamic_asset_delivery": false, + "option_android_google_licensing_public_key": "", + "option_android_google_services_app_id": "", "option_android_icon_adaptive_generate": false, + "option_android_icon_adaptive_hdpi": "${base_options_dir}/android/icons_adaptive/hdpi.png", "option_android_icon_adaptive_ldpi": "${base_options_dir}/android/icons_adaptive/ldpi.png", "option_android_icon_adaptive_mdpi": "${base_options_dir}/android/icons_adaptive/mdpi.png", - "option_android_icon_adaptive_hdpi": "${base_options_dir}/android/icons_adaptive/hdpi.png", "option_android_icon_adaptive_xhdpi": "${base_options_dir}/android/icons_adaptive/xhdpi.png", "option_android_icon_adaptive_xxhdpi": "${base_options_dir}/android/icons_adaptive/xxhdpi.png", "option_android_icon_adaptive_xxxhdpi": "${base_options_dir}/android/icons_adaptive/xxxhdpi.png", + "option_android_icon_adaptivebg_hdpi": "${base_options_dir}/android/icons_adaptivebg/hdpi.png", "option_android_icon_adaptivebg_ldpi": "${base_options_dir}/android/icons_adaptivebg/ldpi.png", "option_android_icon_adaptivebg_mdpi": "${base_options_dir}/android/icons_adaptivebg/mdpi.png", - "option_android_icon_adaptivebg_hdpi": "${base_options_dir}/android/icons_adaptivebg/hdpi.png", "option_android_icon_adaptivebg_xhdpi": "${base_options_dir}/android/icons_adaptivebg/xhdpi.png", "option_android_icon_adaptivebg_xxhdpi": "${base_options_dir}/android/icons_adaptivebg/xxhdpi.png", "option_android_icon_adaptivebg_xxxhdpi": "${base_options_dir}/android/icons_adaptivebg/xxxhdpi.png", - "option_android_use_facebook": false, - "option_android_facebook_id": "", - "option_android_facebook_app_display_name": "", - "option_android_google_cloud_saving": false, - "option_android_google_services_app_id": "", - "option_android_permission_write_external_storage": false, - "option_android_permission_read_phone_state": false, - "option_android_permission_network_state": false, - "option_android_permission_internet": true, + "option_android_icon_hdpi": "${base_options_dir}/android/icons/hdpi.png", + "option_android_icon_ldpi": "${base_options_dir}/android/icons/ldpi.png", + "option_android_icon_mdpi": "${base_options_dir}/android/icons/mdpi.png", + "option_android_icon_xhdpi": "${base_options_dir}/android/icons/xhdpi.png", + "option_android_icon_xxhdpi": "${base_options_dir}/android/icons/xxhdpi.png", + "option_android_icon_xxxhdpi": "${base_options_dir}/android/icons/xxxhdpi.png", + "option_android_install_location": 0, + "option_android_interpolate_pixels": false, + "option_android_launchscreen_fill": 0, + "option_android_lint": false, + "option_android_logcat": "yoyo:V DEBUG:V AndroidRuntime:V", + "option_android_minimum_sdk": "", + "option_android_orient_landscape": true, + "option_android_orient_landscape_flipped": true, + "option_android_orient_portrait": true, + "option_android_orient_portrait_flipped": true, + "option_android_package_company": "company", + "option_android_package_domain": "com", + "option_android_package_product": "game", "option_android_permission_bluetooth": true, + "option_android_permission_internet": true, + "option_android_permission_network_state": false, + "option_android_permission_read_phone_state": false, "option_android_permission_record_audio": false, - "option_android_application_tag_inject": "", - "option_android_google_apk_expansion": false, - "option_android_google_dynamic_asset_delivery": false, - "option_android_google_licensing_public_key": "", - "option_android_tv_isgame": true, + "option_android_permission_write_external_storage": false, "option_android_proguard_minifying": false, "option_android_proguard_shrinking": false, + "option_android_scale": 0, + "option_android_screen_depth": 0, + "option_android_sleep_margin": 4, + "option_android_splash_screens_landscape": "${base_options_dir}/android/splash/landscape.png", + "option_android_splash_screens_portrait": "${base_options_dir}/android/splash/portrait.png", + "option_android_splash_time": 0, + "option_android_splashscreen_background_colour": 255, + "option_android_support_lib": "", + "option_android_sync_amazon": false, + "option_android_target_sdk": "", + "option_android_texture_page": "2048x2048", + "option_android_tools_from_version": false, + "option_android_tv_banner": "${base_options_dir}/android/tv_banner.png", + "option_android_tv_isgame": true, + "option_android_use_facebook": false, + "option_android_version": "1.0.0.0", } \ No newline at end of file diff --git a/options/html5/options_html5.yy b/options/html5/options_html5.yy index 0521273..9fc994a 100644 --- a/options/html5/options_html5.yy +++ b/options/html5/options_html5.yy @@ -2,32 +2,32 @@ "resourceType": "GMHtml5Options", "resourceVersion": "1.0", "name": "HTML5", - "option_html5_browser_title": "Created with GameMaker Studio 2", - "option_html5_version": "1.0.0.0", - "option_html5_foldername": "html5game", - "option_html5_outputname": "index.html", - "option_html5_splash_png": "${base_options_dir}/html5/splash.png", - "option_html5_usesplash": false, - "option_html5_outputdebugtoconsole": true, - "option_html5_display_cursor": true, - "option_html5_localrunalert": true, - "option_html5_index": "", - "option_html5_loadingbar": "", - "option_html5_jsprepend": "", - "option_html5_icon": "${base_options_dir}/html5/fav.ico", "option_html5_allow_fullscreen": true, - "option_html5_interpolate_pixels": true, + "option_html5_browser_title": "Created with GameMaker Studio 2", "option_html5_centregame": false, - "option_html5_usebuiltinparticles": true, - "option_html5_usebuiltinfont": true, - "option_html5_webgl": 2, - "option_html5_scale": 0, - "option_html5_texture_page": "2048x2048", - "option_html5_use_facebook": false, - "option_html5_facebook_id": "", + "option_html5_display_cursor": true, "option_html5_facebook_app_display_name": "", + "option_html5_facebook_id": "", "option_html5_flurry_enable": false, "option_html5_flurry_id": "", + "option_html5_foldername": "html5game", "option_html5_google_analytics_enable": false, "option_html5_google_tracking_id": "", + "option_html5_icon": "${base_options_dir}/html5/fav.ico", + "option_html5_index": "", + "option_html5_interpolate_pixels": true, + "option_html5_jsprepend": "", + "option_html5_loadingbar": "", + "option_html5_localrunalert": true, + "option_html5_outputdebugtoconsole": true, + "option_html5_outputname": "index.html", + "option_html5_scale": 0, + "option_html5_splash_png": "${base_options_dir}/html5/splash.png", + "option_html5_texture_page": "2048x2048", + "option_html5_use_facebook": false, + "option_html5_usebuiltinfont": true, + "option_html5_usebuiltinparticles": true, + "option_html5_usesplash": false, + "option_html5_version": "1.0.0.0", + "option_html5_webgl": 2, } \ No newline at end of file diff --git a/options/ios/options_ios.yy b/options/ios/options_ios.yy index c8ed85c..382c05f 100644 --- a/options/ios/options_ios.yy +++ b/options/ios/options_ios.yy @@ -2,43 +2,45 @@ "resourceType": "GMiOSOptions", "resourceVersion": "1.3", "name": "iOS", - "option_ios_display_name": "Created with GameMaker", "option_ios_bundle_name": "com.company.game", - "option_ios_version": "1.0.0.0", - "option_ios_output_dir": "~/gamemakerstudio2", - "option_ios_team_id": "", - "option_ios_orientation_portrait": true, - "option_ios_orientation_portrait_flipped": true, - "option_ios_orientation_landscape": true, - "option_ios_orientation_landscape_flipped": true, - "option_ios_devices": 2, + "option_ios_cocoapods_checkbox": true, "option_ios_defer_home_indicator": false, - "option_ios_icon_iphone_app_120": "${base_options_dir}/ios/icons/app/iphone_120.png", - "option_ios_icon_iphone_app_180": "${base_options_dir}/ios/icons/app/iphone_180.png", - "option_ios_icon_ipad_app_76": "${base_options_dir}/ios/icons/app/ipad_76.png", + "option_ios_devices": 2, + "option_ios_display_name": "Created with GameMaker", + "option_ios_half_ipad1_textures": false, "option_ios_icon_ipad_app_152": "${base_options_dir}/ios/icons/app/ipad_152.png", - "option_ios_icon_ipad_pro_app_167": "${base_options_dir}/ios/icons/app/ipad_pro_167.png", - "option_ios_icon_iphone_notification_40": "${base_options_dir}/ios/icons/notification/iphone_40.png", - "option_ios_icon_iphone_notification_60": "${base_options_dir}/ios/icons/notification/iphone_60.png", + "option_ios_icon_ipad_app_76": "${base_options_dir}/ios/icons/app/ipad_76.png", "option_ios_icon_ipad_notification_20": "${base_options_dir}/ios/icons/notification/ipad_20.png", "option_ios_icon_ipad_notification_40": "${base_options_dir}/ios/icons/notification/ipad_40.png", - "option_ios_icon_iphone_spotlight_80": "${base_options_dir}/ios/icons/spotlight/iphone_80.png", - "option_ios_icon_iphone_spotlight_120": "${base_options_dir}/ios/icons/spotlight/iphone_120.png", + "option_ios_icon_ipad_pro_app_167": "${base_options_dir}/ios/icons/app/ipad_pro_167.png", + "option_ios_icon_ipad_settings_29": "${base_options_dir}/ios/icons/settings/ipad_29.png", + "option_ios_icon_ipad_settings_58": "${base_options_dir}/ios/icons/settings/ipad_58.png", "option_ios_icon_ipad_spotlight_40": "${base_options_dir}/ios/icons/spotlight/ipad_40.png", "option_ios_icon_ipad_spotlight_80": "${base_options_dir}/ios/icons/spotlight/ipad_80.png", + "option_ios_icon_iphone_app_120": "${base_options_dir}/ios/icons/app/iphone_120.png", + "option_ios_icon_iphone_app_180": "${base_options_dir}/ios/icons/app/iphone_180.png", + "option_ios_icon_iphone_notification_40": "${base_options_dir}/ios/icons/notification/iphone_40.png", + "option_ios_icon_iphone_notification_60": "${base_options_dir}/ios/icons/notification/iphone_60.png", "option_ios_icon_iphone_settings_58": "${base_options_dir}/ios/icons/settings/iphone_58.png", "option_ios_icon_iphone_settings_87": "${base_options_dir}/ios/icons/settings/iphone_87.png", - "option_ios_icon_ipad_settings_29": "${base_options_dir}/ios/icons/settings/ipad_29.png", - "option_ios_icon_ipad_settings_58": "${base_options_dir}/ios/icons/settings/ipad_58.png", + "option_ios_icon_iphone_spotlight_120": "${base_options_dir}/ios/icons/spotlight/iphone_120.png", + "option_ios_icon_iphone_spotlight_80": "${base_options_dir}/ios/icons/spotlight/iphone_80.png", "option_ios_icon_itunes_artwork_1024": "${base_options_dir}/ios/icons/itunes/itunes_1024.png", - "option_ios_splashscreen_background_colour": 255, + "option_ios_interpolate_pixels": false, + "option_ios_launchscreen_fill": 0, "option_ios_launchscreen_image": "${base_options_dir}/ios/splash/launchscreen.png", "option_ios_launchscreen_image_landscape": "${base_options_dir}/ios/splash/launchscreen-landscape.png", - "option_ios_launchscreen_fill": 0, - "option_ios_interpolate_pixels": false, - "option_ios_half_ipad1_textures": false, + "option_ios_min_version": "10.0", + "option_ios_orientation_landscape": true, + "option_ios_orientation_landscape_flipped": true, + "option_ios_orientation_portrait": true, + "option_ios_orientation_portrait_flipped": true, + "option_ios_output_dir": "~/gamemakerstudio2", + "option_ios_podfile_lock_path": "${options_dir}/ios/Podfile.lock", + "option_ios_podfile_path": "${options_dir}/ios/Podfile", "option_ios_scale": 0, + "option_ios_splashscreen_background_colour": 255, + "option_ios_team_id": "", "option_ios_texture_page": "2048x2048", - "option_ios_podfile_path": "${options_dir}/ios/Podfile", - "option_ios_podfile_lock_path": "${options_dir}/ios/Podfile.lock", + "option_ios_version": "1.0.0.0", } \ No newline at end of file diff --git a/options/linux/options_linux.yy b/options/linux/options_linux.yy index 625f218..652b3f5 100644 --- a/options/linux/options_linux.yy +++ b/options/linux/options_linux.yy @@ -2,23 +2,23 @@ "resourceType": "GMLinuxOptions", "resourceVersion": "1.0", "name": "Linux", + "option_linux_allow_fullscreen": false, + "option_linux_disable_sandbox": false, + "option_linux_display_cursor": true, "option_linux_display_name": "Created with GameMaker Studio 2", - "option_linux_version": "1.0.0.0", - "option_linux_maintainer_email": "", - "option_linux_homepage": "http://www.yoyogames.com", - "option_linux_short_desc": "", - "option_linux_long_desc": "", - "option_linux_splash_screen": "${base_options_dir}/linux/splash/splash.png", "option_linux_display_splash": false, + "option_linux_enable_steam": false, + "option_linux_homepage": "http://www.yoyogames.com", "option_linux_icon": "${base_options_dir}/linux/icons/64.png", - "option_linux_start_fullscreen": false, - "option_linux_allow_fullscreen": false, "option_linux_interpolate_pixels": true, - "option_linux_display_cursor": true, - "option_linux_sync": false, + "option_linux_long_desc": "", + "option_linux_maintainer_email": "", "option_linux_resize_window": false, "option_linux_scale": 0, + "option_linux_short_desc": "", + "option_linux_splash_screen": "${base_options_dir}/linux/splash/splash.png", + "option_linux_start_fullscreen": false, + "option_linux_sync": false, "option_linux_texture_page": "2048x2048", - "option_linux_enable_steam": false, - "option_linux_disable_sandbox": false, + "option_linux_version": "1.0.0.0", } \ No newline at end of file diff --git a/options/mac/options_mac.yy b/options/mac/options_mac.yy index 1ceed04..5c7be78 100644 --- a/options/mac/options_mac.yy +++ b/options/mac/options_mac.yy @@ -2,33 +2,34 @@ "resourceType": "GMMacOptions", "resourceVersion": "1.0", "name": "macOS", - "option_mac_display_name": "Created with GameMaker Studio 2", + "option_mac_allow_fullscreen": false, + "option_mac_allow_incoming_network": false, + "option_mac_allow_outgoing_network": false, + "option_mac_app_category": "Games", "option_mac_app_id": "com.company.game", - "option_mac_version": "1.0.0.0", - "option_mac_output_dir": "~/gamemakerstudio2", - "option_mac_team_id": "", - "option_mac_signing_identity": "Developer ID Application:", + "option_mac_apple_sign_in": false, + "option_mac_arm64": true, + "option_mac_build_app_store": false, "option_mac_copyright": "", - "option_mac_splash_png": "${base_options_dir}/mac/splash/splash.png", + "option_mac_disable_sandbox": false, + "option_mac_display_cursor": true, + "option_mac_display_name": "Created with GameMaker Studio 2", + "option_mac_enable_retina": false, + "option_mac_enable_steam": false, "option_mac_icon_png": "${base_options_dir}/mac/icons/1024.png", "option_mac_installer_background_png": "${base_options_dir}/mac/splash/installer_background.png", - "option_mac_menu_dock": false, - "option_mac_display_cursor": true, - "option_mac_start_fullscreen": false, - "option_mac_allow_fullscreen": false, "option_mac_interpolate_pixels": true, - "option_mac_vsync": false, + "option_mac_menu_dock": false, + "option_mac_min_version": "10.10", + "option_mac_output_dir": "~/gamemakerstudio2", "option_mac_resize_window": false, - "option_mac_enable_retina": false, "option_mac_scale": 0, + "option_mac_signing_identity": "Developer ID Application:", + "option_mac_splash_png": "${base_options_dir}/mac/splash/splash.png", + "option_mac_start_fullscreen": false, + "option_mac_team_id": "", "option_mac_texture_page": "2048x2048", - "option_mac_build_app_store": false, - "option_mac_allow_incoming_network": false, - "option_mac_allow_outgoing_network": false, - "option_mac_app_category": "Games", - "option_mac_enable_steam": false, - "option_mac_disable_sandbox": false, + "option_mac_version": "1.0.0.0", + "option_mac_vsync": false, "option_mac_x86_64": true, - "option_mac_arm64": true, - "option_mac_apple_sign_in": false, } \ No newline at end of file diff --git a/options/main/options_main.yy b/options/main/options_main.yy index 10e1d84..b985520 100644 --- a/options/main/options_main.yy +++ b/options/main/options_main.yy @@ -2,19 +2,19 @@ "resourceType": "GMMainOptions", "resourceVersion": "1.4", "name": "Main", + "option_author": "", + "option_collision_compatibility": false, + "option_copy_on_write_enabled": false, + "option_draw_colour": 4294967295, + "option_game_speed": 60, "option_gameguid": "0bb9e321-572e-4ddd-8293-fd87c33b4a2a", "option_gameid": "0", - "option_game_speed": 60, "option_mips_for_3d_textures": false, - "option_draw_colour": 4294967295, - "option_window_colour": 255, - "option_steam_app_id": "0", "option_sci_usesci": true, - "option_author": "", - "option_collision_compatibility": false, - "option_copy_on_write_enabled": false, "option_spine_licence": false, - "option_template_image": "${base_options_dir}/main/template_image.png", - "option_template_icon": "${base_options_dir}/main/template_icon.png", + "option_steam_app_id": "0", "option_template_description": null, + "option_template_icon": "${base_options_dir}/main/template_icon.png", + "option_template_image": "${base_options_dir}/main/template_image.png", + "option_window_colour": 255, } \ No newline at end of file diff --git a/options/operagx/options_operagx.yy b/options/operagx/options_operagx.yy index 9571f96..88bc6d6 100644 --- a/options/operagx/options_operagx.yy +++ b/options/operagx/options_operagx.yy @@ -2,17 +2,17 @@ "resourceType": "GMOperaGXOptions", "resourceVersion": "1.0", "name": "operagx", - "option_operagx_version": "1.0.0.0", - "option_operagx_next_version": "1.0.0.0", - "option_operagx_game_name": "${project_name}", - "option_operagx_interpolate_pixels": true, - "option_operagx_scale": 0, - "option_operagx_texture_page": "2048x2048", "option_operagx_display_cursor": true, - "option_operagx_guid": "", - "option_operagx_team_name": "", - "option_operagx_team_id": "", "option_operagx_editUrl": "", + "option_operagx_game_name": "${project_name}", + "option_operagx_guid": "", "option_operagx_internalShareUrl": "", + "option_operagx_interpolate_pixels": true, + "option_operagx_next_version": "1.0.0.0", "option_operagx_publicShareUrl": "", + "option_operagx_scale": 0, + "option_operagx_team_id": "", + "option_operagx_team_name": "", + "option_operagx_texture_page": "2048x2048", + "option_operagx_version": "1.0.0.0", } \ No newline at end of file diff --git a/options/tvos/options_tvos.yy b/options/tvos/options_tvos.yy index 3de05de..7e17b25 100644 --- a/options/tvos/options_tvos.yy +++ b/options/tvos/options_tvos.yy @@ -2,25 +2,27 @@ "resourceType": "GMtvOSOptions", "resourceVersion": "1.3", "name": "tvOS", - "option_tvos_display_name": "Made in GameMaker", "option_tvos_bundle_name": "com.company.game", - "option_tvos_version": "1.0.0.0", - "option_tvos_output_dir": "~/GameMakerStudio2/tvOS", - "option_tvos_team_id": "", + "option_tvos_cocoapods_checkbox": true, + "option_tvos_display_cursor": false, + "option_tvos_display_name": "Made in GameMaker", + "option_tvos_icon_1280": "${base_options_dir}/tvos/icons/1280.png", "option_tvos_icon_400": "${base_options_dir}/tvos/icons/400.png", "option_tvos_icon_400_2x": "${base_options_dir}/tvos/icons/400_2x.png", - "option_tvos_icon_1280": "${base_options_dir}/tvos/icons/1280.png", + "option_tvos_interpolate_pixels": true, + "option_tvos_min_version": "10.0", + "option_tvos_output_dir": "~/GameMakerStudio2/tvOS", + "option_tvos_podfile_lock_path": "${options_dir}\\tvos\\Podfile.lock", + "option_tvos_podfile_path": "${options_dir}\\tvos\\Podfile", + "option_tvos_scale": 0, + "option_tvos_splash_time": 0, + "option_tvos_splashscreen": "${base_options_dir}/tvos/splash/splash.png", + "option_tvos_splashscreen_2x": "${base_options_dir}/tvos/splash/splash_2x.png", + "option_tvos_team_id": "", + "option_tvos_texture_page": "2048x2048", "option_tvos_topshelf": "${base_options_dir}/tvos/topshelf/topshelf.png", "option_tvos_topshelf_2x": "${base_options_dir}/tvos/topshelf/topshelf_2x.png", "option_tvos_topshelf_wide": "${base_options_dir}/tvos/topshelf/topshelf_wide.png", "option_tvos_topshelf_wide_2x": "${base_options_dir}/tvos/topshelf/topshelf_wide_2x.png", - "option_tvos_splashscreen": "${base_options_dir}/tvos/splash/splash.png", - "option_tvos_splashscreen_2x": "${base_options_dir}/tvos/splash/splash_2x.png", - "option_tvos_splash_time": 0, - "option_tvos_interpolate_pixels": true, - "option_tvos_scale": 0, - "option_tvos_texture_page": "2048x2048", - "option_tvos_display_cursor": false, - "option_tvos_podfile_path": "${options_dir}\\tvos\\Podfile", - "option_tvos_podfile_lock_path": "${options_dir}\\tvos\\Podfile.lock", + "option_tvos_version": "1.0.0.0", } \ No newline at end of file diff --git a/options/windows/options_windows.yy b/options/windows/options_windows.yy index 86f6b9d..27aa8ad 100644 --- a/options/windows/options_windows.yy +++ b/options/windows/options_windows.yy @@ -2,33 +2,33 @@ "resourceType": "GMWindowsOptions", "resourceVersion": "1.1", "name": "Windows", - "option_windows_display_name": "Created with GameMaker Studio 2", - "option_windows_executable_name": "${project_name}.exe", - "option_windows_version": "1.0.0.0", + "option_windows_allow_fullscreen_switching": false, + "option_windows_borderless": false, "option_windows_company_info": "YoYo Games Ltd", - "option_windows_product_info": "Created with GameMaker Studio 2", + "option_windows_copy_exe_to_dest": false, "option_windows_copyright_info": "", "option_windows_description_info": "A GameMaker Studio 2 Game", + "option_windows_disable_sandbox": false, "option_windows_display_cursor": true, + "option_windows_display_name": "Created with GameMaker Studio 2", + "option_windows_enable_steam": false, + "option_windows_executable_name": "${project_name}.exe", "option_windows_icon": "${base_options_dir}/windows/icons/icon.ico", - "option_windows_save_location": 0, - "option_windows_splash_screen": "${base_options_dir}/windows/splash/splash.png", - "option_windows_use_splash": false, - "option_windows_start_fullscreen": false, - "option_windows_allow_fullscreen_switching": false, - "option_windows_interpolate_pixels": false, - "option_windows_vsync": false, - "option_windows_resize_window": false, - "option_windows_borderless": false, - "option_windows_scale": 0, - "option_windows_copy_exe_to_dest": false, - "option_windows_sleep_margin": 10, - "option_windows_texture_page": "2048x2048", "option_windows_installer_finished": "${base_options_dir}/windows/installer/finished.bmp", "option_windows_installer_header": "${base_options_dir}/windows/installer/header.bmp", + "option_windows_interpolate_pixels": false, "option_windows_license": "${base_options_dir}/windows/installer/license.txt", "option_windows_nsis_file": "${base_options_dir}/windows/installer/nsis_script.nsi", - "option_windows_enable_steam": false, - "option_windows_disable_sandbox": false, + "option_windows_product_info": "Created with GameMaker Studio 2", + "option_windows_resize_window": false, + "option_windows_save_location": 0, + "option_windows_scale": 0, + "option_windows_sleep_margin": 10, + "option_windows_splash_screen": "${base_options_dir}/windows/splash/splash.png", + "option_windows_start_fullscreen": false, "option_windows_steam_use_alternative_launcher": false, + "option_windows_texture_page": "2048x2048", + "option_windows_use_splash": false, + "option_windows_version": "2.0.0.0", + "option_windows_vsync": false, } \ No newline at end of file diff --git a/rooms/Room1/Room1.yy b/rooms/Room1/Room1.yy index d88a419..ce41fa2 100644 --- a/rooms/Room1/Room1.yy +++ b/rooms/Room1/Room1.yy @@ -2,53 +2,35 @@ "resourceType": "GMRoom", "resourceVersion": "1.0", "name": "Room1", - "isDnd": false, - "volume": 1.0, - "parentRoom": null, - "views": [ - {"inherit":false,"visible":true,"xview":0,"yview":0,"wview":10,"hview":10,"xport":0,"yport":0,"wport":10,"hport":10,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,}, - {"inherit":false,"visible":false,"xview":0,"yview":0,"wview":420,"hview":240,"xport":0,"yport":0,"wport":420,"hport":240,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,}, - {"inherit":false,"visible":false,"xview":0,"yview":0,"wview":420,"hview":240,"xport":0,"yport":0,"wport":420,"hport":240,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,}, - {"inherit":false,"visible":false,"xview":0,"yview":0,"wview":420,"hview":240,"xport":0,"yport":0,"wport":420,"hport":240,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,}, - {"inherit":false,"visible":false,"xview":0,"yview":0,"wview":420,"hview":240,"xport":0,"yport":0,"wport":420,"hport":240,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,}, - {"inherit":false,"visible":false,"xview":0,"yview":0,"wview":420,"hview":240,"xport":0,"yport":0,"wport":420,"hport":240,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,}, - {"inherit":false,"visible":false,"xview":0,"yview":0,"wview":420,"hview":240,"xport":0,"yport":0,"wport":420,"hport":240,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,}, - {"inherit":false,"visible":false,"xview":0,"yview":0,"wview":420,"hview":240,"xport":0,"yport":0,"wport":420,"hport":240,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,}, - ], - "layers": [ - {"resourceType":"GMRInstanceLayer","resourceVersion":"1.0","name":"Instances","instances":[ - {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_4BF294D5","properties":[],"isDnd":false,"objectId":{"name":"obj_ball","path":"objects/obj_ball/obj_ball.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":112.0,"y":80.0,}, - {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_BEB4411","properties":[],"isDnd":false,"objectId":{"name":"demo_obj_player","path":"objects/demo_obj_player/demo_obj_player.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":160.0,"y":160.0,}, - {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_606FE50A","properties":[],"isDnd":false,"objectId":{"name":"demo_obj_player2","path":"objects/demo_obj_player2/demo_obj_player2.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":272.0,"y":144.0,}, - {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_15296A95","properties":[],"isDnd":false,"objectId":{"name":"obj_tv","path":"objects/obj_tv/obj_tv.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":304.0,"y":48.0,}, - ],"visible":true,"depth":0,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"inheritVisibility":true,"inheritSubLayers":true,"gridX":16,"gridY":16,"layers":[],"hierarchyFrozen":false,"effectEnabled":true,"effectType":null,"properties":[],}, - {"resourceType":"GMRTileLayer","resourceVersion":"1.1","name":"Tiles_1","tilesetId":{"name":"TileSet1","path":"tilesets/TileSet1/TileSet1.yy",},"x":0,"y":0,"tiles":{"TileDataFormat":1,"SerialiseWidth":14,"SerialiseHeight":8,"TileCompressedData":[ --112,1,],},"visible":true,"depth":100,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"inheritVisibility":true,"inheritSubLayers":true,"gridX":16,"gridY":16,"layers":[],"hierarchyFrozen":false,"effectEnabled":true,"effectType":null,"properties":[],}, - {"resourceType":"GMRBackgroundLayer","resourceVersion":"1.0","name":"Backgrounds_1","spriteId":{"name":"spr_bg","path":"sprites/spr_bg/spr_bg.yy",},"colour":4294967295,"x":0,"y":0,"htiled":true,"vtiled":true,"hspeed":0.0,"vspeed":0.0,"stretch":false,"animationFPS":1.0,"animationSpeedType":1,"userdefinedAnimFPS":false,"visible":true,"depth":200,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"inheritVisibility":true,"inheritSubLayers":true,"gridX":16,"gridY":16,"layers":[],"hierarchyFrozen":false,"effectEnabled":true,"effectType":null,"properties":[],}, - ], - "inheritLayers": false, "creationCodeFile": "${project_dir}/rooms/Room1/RoomCreationCode.gml", "inheritCode": false, + "inheritCreationOrder": false, + "inheritLayers": false, "instanceCreationOrder": [ + {"name":"inst_6B735959","path":"rooms/Room1/Room1.yy",}, {"name":"inst_4BF294D5","path":"rooms/Room1/Room1.yy",}, {"name":"inst_BEB4411","path":"rooms/Room1/Room1.yy",}, {"name":"inst_606FE50A","path":"rooms/Room1/Room1.yy",}, {"name":"inst_15296A95","path":"rooms/Room1/Room1.yy",}, ], - "inheritCreationOrder": false, - "sequenceId": null, - "roomSettings": { - "inheritRoomSettings": false, - "Width": 448, - "Height": 256, - "persistent": false, - }, - "viewSettings": { - "inheritViewSettings": false, - "enableViews": true, - "clearViewBackground": true, - "clearDisplayBuffer": true, + "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_4BF294D5","colour":4294967295,"frozen":false,"hasCreationCode":false,"ignore":false,"imageIndex":0,"imageSpeed":1.0,"inheritCode":false,"inheritedItemId":null,"inheritItemSettings":false,"isDnd":false,"objectId":{"name":"demo_obj_ball","path":"objects/demo_obj_ball/demo_obj_ball.yy",},"properties":[],"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"x":112.0,"y":80.0,}, + {"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":"demo_obj_player","path":"objects/demo_obj_player/demo_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":"demo_obj_player2","path":"objects/demo_obj_player2/demo_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":"demo_obj_tv","path":"objects/demo_obj_tv/demo_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":"demo_obj_camera","path":"objects/demo_obj_camera/demo_obj_camera.yy",},"properties":[],"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"x":208.0,"y":112.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,}, + {"resourceType":"GMRBackgroundLayer","resourceVersion":"1.0","name":"Backgrounds_1","animationFPS":1.0,"animationSpeedType":1,"colour":4294967295,"depth":200,"effectEnabled":true,"effectType":null,"gridX":16,"gridY":16,"hierarchyFrozen":false,"hspeed":0.0,"htiled":true,"inheritLayerDepth":false,"inheritLayerSettings":false,"inheritSubLayers":true,"inheritVisibility":true,"layers":[],"properties":[],"spriteId":{"name":"spr_bg","path":"sprites/spr_bg/spr_bg.yy",},"stretch":false,"userdefinedAnimFPS":false,"userdefinedDepth":false,"visible":true,"vspeed":0.0,"vtiled":true,"x":0,"y":0,}, + ], + "parent": { + "name": "demonstration", + "path": "folders/demonstration.yy", }, + "parentRoom": null, "physicsSettings": { "inheritPhysicsSettings": false, "PhysicsWorld": false, @@ -56,8 +38,28 @@ "PhysicsWorldGravityY": 10.0, "PhysicsWorldPixToMetres": 0.1, }, - "parent": { - "name": "demonstration", - "path": "folders/demonstration.yy", + "roomSettings": { + "Height": 256, + "inheritRoomSettings": false, + "persistent": false, + "Width": 448, + }, + "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":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": true, + "enableViews": true, + "inheritViewSettings": false, }, + "volume": 1.0, } \ No newline at end of file diff --git a/scripts/draw_text_outline/draw_text_outline.gml b/scripts/draw_text_outline/draw_text_outline.gml index 3f38994..a462150 100644 --- a/scripts/draw_text_outline/draw_text_outline.gml +++ b/scripts/draw_text_outline/draw_text_outline.gml @@ -2,12 +2,21 @@ function draw_text_outline(x_,y_,text,width = 1, precision = 16,col = c_black){ var prev_color = draw_get_color(); draw_set_color(col); - var rot = 360 / precision; - for (var i = 0; i < precision; ++i) { - t_x = x_ + lengthdir_x(width,rot*i) - t_y = y_ + lengthdir_y(width,rot*i) - draw_text(t_x,t_y,text); + var rot = 360 / precision; + + if(precision > 8){ + for (var i = 0; i < precision; ++i) { + var t_x = x_ + lengthdir_x(width,rot*i) + var t_y = y_ + lengthdir_y(width,rot*i) + draw_text(t_x,t_y,text); + } + } else { + for (var i = 0; i < precision; ++i) { + var t_x = x_ + sign(lengthdir_x(width,rot*i)); + var t_y = y_ + sign(lengthdir_y(width,rot*i)); + draw_text(t_x,t_y,text); + } } draw_set_color(prev_color); diff --git a/scripts/draw_text_outline/draw_text_outline.yy b/scripts/draw_text_outline/draw_text_outline.yy index f0df8e8..fc0c89f 100644 --- a/scripts/draw_text_outline/draw_text_outline.yy +++ b/scripts/draw_text_outline/draw_text_outline.yy @@ -2,8 +2,8 @@ "resourceType": "GMScript", "resourceVersion": "1.0", "name": "draw_text_outline", - "isDnD": false, "isCompatibility": false, + "isDnD": false, "parent": { "name": "demonstration", "path": "folders/demonstration.yy", diff --git a/scripts/ease_in_out/ease_in_out.yy b/scripts/ease_in_out/ease_in_out.yy index 7bec19e..c153227 100644 --- a/scripts/ease_in_out/ease_in_out.yy +++ b/scripts/ease_in_out/ease_in_out.yy @@ -2,8 +2,8 @@ "resourceType": "GMScript", "resourceVersion": "1.0", "name": "ease_in_out", - "isDnD": false, "isCompatibility": false, + "isDnD": false, "parent": { "name": "Scripts", "path": "folders/Scripts.yy", diff --git a/scripts/shake/shake.yy b/scripts/shake/shake.yy index 02e7b8d..d38ef41 100644 --- a/scripts/shake/shake.yy +++ b/scripts/shake/shake.yy @@ -2,8 +2,8 @@ "resourceType": "GMScript", "resourceVersion": "1.0", "name": "shake", - "isDnD": false, "isCompatibility": false, + "isDnD": false, "parent": { "name": "Scripts", "path": "folders/Scripts.yy", diff --git a/scripts/stanncam/stanncam.gml b/scripts/stanncam/stanncam.gml index 83c2cb7..06d0eb3 100644 --- a/scripts/stanncam/stanncam.gml +++ b/scripts/stanncam/stanncam.gml @@ -3,12 +3,13 @@ /// @param y pos /// @param width /// @param height -/// @param surface_available set if you wanna use the surf variable in regular draw events +/// @param surface_extra_on_ use surface_extra in regular draw events +/// @param smooth_draw_ use fractional camera position when drawing /// @description creates a new stanncam -function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, surface_available_ = false) constructor{ +function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, surface_extra_on_ = false, smooth_draw_ = true) constructor{ #region init //whenever a new cam is created number_of_cams gets incremented - cam_id = obj_stanncam_manager.number_of_cams; + cam_id = __obj_stanncam_manager.number_of_cams; //checks if there's already 8 cameras if(cam_id == 8){ @@ -17,7 +18,7 @@ function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, view_camera[cam_id] = camera_create(); - obj_stanncam_manager.number_of_cams++; + __obj_stanncam_manager.number_of_cams++; array_set(global.stanncams,cam_id,self); #endregion @@ -25,20 +26,29 @@ function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, #region variables x = x_; y = y_; + width = width_; height = height_; - surface_available = surface_available_; + surface_extra_on = surface_extra_on_; spd = 10; //how fast the camera follows an object 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 bounds_w = 20; bounds_h = 20; - __surf = -1; + //wether to use the fractional camera position when drawing the camera contents. Else it will be snapped to nearest integer + smooth_draw = smooth_draw_; + __x_frac = 0; + __y_frac = 0; + + surface = -1; + + surface_extra = -1; follow = -1; @@ -116,9 +126,10 @@ function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, } #region screen-shake - var stanncam_shake_ = shake(__shake_time++,__shake_magnitude,__shake_length); - __shake_x = stanncam_shake_; - __shake_y = stanncam_shake_; + var stanncam_shake_x = shake(__shake_time++,__shake_magnitude,__shake_length); + var stanncam_shake_y = shake(__shake_time++,__shake_magnitude,__shake_length); + __shake_x = stanncam_shake_x; + __shake_y = stanncam_shake_y; #endregion #region constrains camera to room bounds @@ -144,51 +155,42 @@ function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, var new_x = x - ((width / 2) + __shake_x + __zoom_x); var new_y = y - ((height / 2) + __shake_y + __zoom_y); + //seperates position into whole and fractional parts + if(smooth_draw == true){ + __x_frac = frac(new_x); + __y_frac = frac(new_y); + } else { + __x_frac = 0; + __y_frac = 0; + } + + new_x = floor(new_x); + new_y = floor(new_y); + camera_set_view_pos(view_camera[cam_id], new_x, new_y); } #endregion #region Drawing functions - /// @function draw() - /// @param x_ position - /// @param y_ position - /// @description draws camera - static draw = function(x_,y_){ + static draw = function(x_,y_,scale_x_ = 1, scale_y_ = 1){ __check_surface(); - var x_scale = obj_stanncam_manager.display_res_w / global.game_w - var y_scale = obj_stanncam_manager.display_res_h / global.game_h + var x_scale = __obj_stanncam_manager.display_res_w / global.game_w + var y_scale = __obj_stanncam_manager.display_res_h / global.game_h x_ *= x_scale; y_ *= y_scale; - draw_surface_stretched(__surf,x_,y_,__display_width,__display_height); - } - - /// @function draw_stretched() - /// @param x_ position - /// @param y_ position - /// @param w_ width - /// @param h_ height - /// @description draws camera stretched - static draw_stretched = function(x_,y_,w,h){ - __check_surface(); - x_ *= (obj_stanncam_manager.display_res_w / global.game_w); - y_ *= (obj_stanncam_manager.display_res_h / global.game_h); - w *= (obj_stanncam_manager.display_res_w / global.game_w); - h *= (obj_stanncam_manager.display_res_h / global.game_h); - draw_surface_stretched(__surf,x_,y_,w,h); - } - - /// @function draw_fill() - /// @description draws camera to fill the entire game window - static draw_fill = function(){ - __check_surface(); - draw_surface_stretched(__surf,0,0,obj_stanncam_manager.display_res_w,obj_stanncam_manager.display_res_h); + + x_ += fullscreen_keep_aspect_ratio_compensate(); + + var w_ = surface_get_width(surface); + var h_ = surface_get_height(surface); + + 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); } #endregion #region Dynamic functions - /// @function clone(); /// @description returns a clone of the camera static clone = function(){ var clone = new stanncam(x,y,width,height); @@ -202,13 +204,13 @@ function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, return clone; } - /// @function set_size(_width,_height); /// @description sets the camera size /// @param width /// @param 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); } @@ -228,10 +230,15 @@ function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, /// @param _x /// @param _y /// @param _duration - static move = function(_x, _y, _duration){ + static move = function(_x, _y, _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; @@ -286,52 +293,57 @@ function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, } /// @description gets the mouse x position within room relative to the camera - static get_mouse_x = function(width_ = width){ - return ((display_mouse_get_x() / __display_width) * width_) + get_x(); + static get_mouse_x = function(){ + return (((display_mouse_get_x() - window_get_x() - fullscreen_keep_aspect_ratio_compensate()) / (__display_scale_x * width)) * width) + get_x(); } /// @description gets the mouse y position within room relative to the camera - static get_mouse_y = function(height_ = height){ - return ((display_mouse_get_y() / __display_height) * height_) + get_y(); + static get_mouse_y = function(){ + return (((display_mouse_get_y() - window_get_y()) / (__display_scale_y * height)) * height) + get_y(); } - /// @func room_to_gui_x(x_) /// @description returns the room x position as the position on the gui relative to camera /// @param x_ - function room_to_gui_x(x_){ - return (x_-get_x())*stanncam_get_gui_scale_x()/__zoom_amount; + static room_to_gui_x = function(x_){ + return (x_-get_x()-__x_frac)*stanncam_get_gui_scale_x()/__zoom_amount; } /// @func room_to_gui_y(y_) /// @description returns the room y position as the position on the gui relative to camera /// @param y_ - function room_to_gui_y(y_){ - return (y_-get_y())*stanncam_get_gui_scale_y()/__zoom_amount; + static room_to_gui_y = function(y_){ + return (y_-get_y()-__y_frac)*stanncam_get_gui_scale_y()/__zoom_amount; } + /// @func room_to_display_x(x_) + /// @description returns the room x position as the position on the display relative to camera + /// @param x_ + //function room_to_display_x(x_){ + // return (x_-get_x())*stanncam_get_res_scale_x()/__zoom_amount; + //} + + /// @func room_to_display_y(y_) + /// @description returns the room y position as the position on the display relative to camera + /// @param y_ + //function room_to_display_y(y_){ + // return (y_-get_y())*stanncam_get_res_scale_y()/__zoom_amount; + //} + /// @function out_of_bounds() - /// @param x_ position the object is temporarily moved to - /// @param y_ position the object is temporarily moved to + /// @param x_ position + /// @param y_ position /// @param margin the margin for the camera bounds /// @description returns if the object is outside cam bounds function out_of_bounds(x_,y_,margin = 0){ - var x_delta = x; - var y_delta = y; - - x = x_; - y = y_; - + var col = ( //uses bounding box to see if it's within the camera view - other.bbox_left < get_x() + margin || - other.bbox_top < get_y() + margin || - other.bbox_right > (get_x() + (width * __zoom_amount)) - margin || - other.bbox_bottom > (get_y() + (height * __zoom_amount)) - margin + x_ < get_x() + margin || + y_ < get_y() + margin || + x_ > (get_x() + (width * __zoom_amount)) - margin || + y_ > (get_y() + (height * __zoom_amount)) - margin ) - - x = x_delta; - y = y_delta; - + if(col)return true else return false; } @@ -340,9 +352,9 @@ function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, static destroy = function(){ follow = -1; array_set(global.stanncams,cam_id,-1); - obj_stanncam_manager.number_of_cams--; + __obj_stanncam_manager.number_of_cams--; + if(surface_exists(surface)) surface_free(surface); if(surface_exists(surface)) surface_free(surface); - if(surface_exists(__surf)) surface_free(__surf); __destroyed = true; } @@ -353,27 +365,28 @@ function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, #endregion #region Internal functions + //enables viewports and sets viewports size static __check_viewports = function(){ view_visible[cam_id] = true; set_size(width,height); } - //checks if surface exists and else creates it and attaches it + //checks if surface_extra exists and else creates it and attaches it static __check_surface = function(){ - if (!surface_exists(__surf)){ - __surf = surface_create(width,height); + if (!surface_exists(surface)){ + surface = surface_create(width,height); } - if (surface_available && !surface_exists(surface)){ - surface = surface_create(width,height); + if (surface_extra_on && !surface_exists(surface_extra)){ + surface_extra = surface_create(width,height); } } //updates cameras drawing resolution - static __update_resolution = function(){ - __display_width = width * (obj_stanncam_manager.display_res_w / global.game_w); - __display_height = height * (obj_stanncam_manager.display_res_h / global.game_h); + 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]); } @@ -381,13 +394,13 @@ function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, //clears the surface static __predraw = function(){ __check_surface(); - if(surface_available){ - surface_copy(surface,0,0,__surf); + if(surface_extra_on){ + surface_copy(surface_extra,0,0,surface); } - surface_set_target(__surf); + surface_set_target(surface); draw_clear_alpha(c_black,0); surface_reset_target(); - view_set_surface_id(cam_id,__surf); + view_set_surface_id(cam_id,surface); } #endregion } \ No newline at end of file diff --git a/scripts/stanncam/stanncam.yy b/scripts/stanncam/stanncam.yy index d94fa3f..508a2bc 100644 --- a/scripts/stanncam/stanncam.yy +++ b/scripts/stanncam/stanncam.yy @@ -2,8 +2,8 @@ "resourceType": "GMScript", "resourceVersion": "1.0", "name": "stanncam", - "isDnD": false, "isCompatibility": false, + "isDnD": false, "parent": { "name": "Scripts", "path": "folders/Scripts.yy", diff --git a/scripts/stanncam_manager/stanncam_manager.gml b/scripts/stanncam_manager/stanncam_manager.gml index bd99c41..607ffce 100644 --- a/scripts/stanncam_manager/stanncam_manager.gml +++ b/scripts/stanncam_manager/stanncam_manager.gml @@ -1,14 +1,14 @@ /// @function stanncam_init(game_w,game_h,resolution_w,resolution_h,gui_w,gui_h) /// @description set game dimensions, display resolution, and gui dimensions, it's the same as game scale by default function stanncam_init(game_w,game_h,resolution_w=game_w,resolution_h=game_h,gui_w=game_w,gui_h=game_h){ - instance_create_layer(0,0,"instances",obj_stanncam_manager); + instance_create_layer(0,0,"instances",__obj_stanncam_manager); global.stanncams = array_create(8,-1); global.game_w = game_w; global.game_h = game_h; global.gui_w = gui_w; global.gui_h = gui_h; - obj_stanncam_manager.resolution_w = resolution_w; - obj_stanncam_manager.resolution_h = resolution_h; + global.res_w = resolution_w; + global.res_h = resolution_h; for (var i = 0; i < array_length(view_camera); ++i) { camera_destroy(view_camera[i]); @@ -21,8 +21,8 @@ function stanncam_init(game_w,game_h,resolution_w=game_w,resolution_h=game_h,gui /// @function stanncam_set_resolution(resolution_w,resolution_h); /// @description updates the camera resolution, change view_w view_h and upscale to see changes function stanncam_set_resolution(resolution_w,resolution_h){ - obj_stanncam_manager.resolution_w = resolution_w; - obj_stanncam_manager.resolution_h = resolution_h; + global.res_w = resolution_w; + global.res_h = resolution_h; __stanncam_update_resolution(); } @@ -33,6 +33,26 @@ function stanncam_toggle_fullscreen(){ __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; + __stanncam_update_resolution(); +} + +/// @function stanncam_get_keep_aspect_ratio() +/// @description get wheter the display is keep_aspect_ratio +function stanncam_get_keep_aspect_ratio(){ + return __obj_stanncam_manager.keep_aspect_ratio; +} + +//if fullscreen keep_aspect_ratio is on it offsets the x value so the render is in the middle +function fullscreen_keep_aspect_ratio_compensate(){ + if(stanncam_get_keep_aspect_ratio() && window_get_fullscreen()){ + return (display_get_width() - __obj_stanncam_manager.display_res_w)/2; + } else return 0; +} + /// @function stanncam_set_gui_resolution(gui_w,gui_h) /// @description set the gui resolution function stanncam_set_gui_resolution(gui_w,gui_h){ @@ -53,27 +73,48 @@ function stanncam_get_gui_scale_y(){ return global.gui_h / global.game_h; } +/// @function stanncam_get_res_scale_x() +/// @description gets how much bigger res is from game +function stanncam_get_res_scale_x(){ + return __obj_stanncam_manager.display_res_w / global.game_w; +} + +/// @function stanncam_get_res_scale_y() +/// @description gets how much bigger res is from game +function stanncam_get_res_scale_y(){ + return __obj_stanncam_manager.display_res_h / global.game_h; +} + /// @function __stanncam_update_resolution(); /// @description updates the camera resolution function __stanncam_update_resolution(){ - if(window_get_fullscreen()) { - obj_stanncam_manager.display_res_w = display_get_width(); - obj_stanncam_manager.display_res_h = display_get_height(); - } else { - obj_stanncam_manager.display_res_w = obj_stanncam_manager.resolution_w; - obj_stanncam_manager.display_res_h = obj_stanncam_manager.resolution_h; + 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; + } else { + __obj_stanncam_manager.display_res_w = global.res_w; + __obj_stanncam_manager.display_res_h = global.res_h; + } - window_set_size(obj_stanncam_manager.display_res_w, obj_stanncam_manager.display_res_h); - call_later(5,time_source_units_frames,function(){ - window_center(); - }); + window_set_size(__obj_stanncam_manager.display_res_w, __obj_stanncam_manager.display_res_h); } - 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; + 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; - display_set_gui_maximize(gui_x_scale,gui_y_scale); - surface_resize(application_surface, display_get_gui_width(), display_get_gui_height()) + display_set_gui_maximize(gui_x_scale,gui_y_scale,fullscreen_keep_aspect_ratio_compensate()); + //surface_resize(application_surface, display_get_gui_width(), display_get_gui_height()) for (var i = 0; i < array_length(global.stanncams); ++i) { if (global.stanncams[i] == -1) continue; diff --git a/scripts/stanncam_manager/stanncam_manager.yy b/scripts/stanncam_manager/stanncam_manager.yy index be5d0a7..c6603dc 100644 --- a/scripts/stanncam_manager/stanncam_manager.yy +++ b/scripts/stanncam_manager/stanncam_manager.yy @@ -2,8 +2,8 @@ "resourceType": "GMScript", "resourceVersion": "1.0", "name": "stanncam_manager", - "isDnD": false, "isCompatibility": false, + "isDnD": false, "parent": { "name": "Scripts", "path": "folders/Scripts.yy", diff --git a/scripts/stanncam_manager_old/stanncam_manager_old.gml b/scripts/stanncam_manager_old/stanncam_manager_old.gml new file mode 100644 index 0000000..d07dcdd --- /dev/null +++ b/scripts/stanncam_manager_old/stanncam_manager_old.gml @@ -0,0 +1,82 @@ +///// @function stanncam_init(game_w,game_h,resolution_w,resolution_h,gui_w,gui_h) +///// @description set game dimensions, display resolution, and gui dimensions, it's the same as game scale by default +//function stanncam_init(game_w,game_h,resolution_w=game_w,resolution_h=game_h,gui_w=game_w,gui_h=game_h){ +// instance_create_layer(0,0,"instances",__obj_stanncam_manager); +// global.stanncams = array_create(8,-1); +// global.game_w = game_w; +// global.game_h = game_h; +// global.gui_w = gui_w; +// global.gui_h = gui_h; +// __obj_stanncam_manager.resolution_w = resolution_w; +// __obj_stanncam_manager.resolution_h = resolution_h; + +// for (var i = 0; i < array_length(view_camera); ++i) { +// camera_destroy(view_camera[i]); +// } + +// application_surface_draw_enable(false); +// __stanncam_update_resolution(); +//} + +///// @function stanncam_set_resolution(resolution_w,resolution_h); +///// @description updates the camera resolution, change view_w view_h and upscale to see changes +//function stanncam_set_resolution(resolution_w,resolution_h){ +// __obj_stanncam_manager.resolution_w = resolution_w; +// __obj_stanncam_manager.resolution_h = 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_gui_resolution(gui_w,gui_h) +///// @description set the gui resolution +//function stanncam_set_gui_resolution(gui_w,gui_h){ +// global.gui_w = gui_w; +// global.gui_h = gui_h; +// __stanncam_update_resolution(); +//} + +///// @function stanncam_get_gui_scale_x() +///// @description gets how much bigger gui is from game +//function stanncam_get_gui_scale_x(){ +// return global.gui_w / global.game_w; +//} + +///// @function stanncam_get_gui_scale_y() +///// @description gets how much bigger gui is from game +//function stanncam_get_gui_scale_y(){ +// return global.gui_h / global.game_h; +//} + +///// @function __stanncam_update_resolution(); +///// @description updates the camera resolution +//function __stanncam_update_resolution(){ +// if(window_get_fullscreen()) { +// __obj_stanncam_manager.display_res_w = display_get_width(); +// __obj_stanncam_manager.display_res_h = display_get_height(); +// } else { +// __obj_stanncam_manager.display_res_w = __obj_stanncam_manager.resolution_w; +// __obj_stanncam_manager.display_res_h = __obj_stanncam_manager.resolution_h; + +// window_set_size(__obj_stanncam_manager.display_res_w, __obj_stanncam_manager.display_res_h); +// call_later(5,time_source_units_frames,function(){ +// window_center(); +// }); +// } + +// 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; + +// display_set_gui_maximize(gui_x_scale,gui_y_scale); +// surface_resize(application_surface, display_get_gui_width(), display_get_gui_height()) + +// for (var i = 0; i < array_length(global.stanncams); ++i) { +// if (global.stanncams[i] == -1) continue; +// global.stanncams[i].__update_resolution(); +// } +//} \ No newline at end of file diff --git a/scripts/stanncam_manager_old/stanncam_manager_old.yy b/scripts/stanncam_manager_old/stanncam_manager_old.yy new file mode 100644 index 0000000..9f47ea9 --- /dev/null +++ b/scripts/stanncam_manager_old/stanncam_manager_old.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "stanncam_manager_old", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "Scripts", + "path": "folders/Scripts.yy", + }, +} \ No newline at end of file diff --git a/scripts/stanncam_old/stanncam_old.gml b/scripts/stanncam_old/stanncam_old.gml new file mode 100644 index 0000000..b8e85b3 --- /dev/null +++ b/scripts/stanncam_old/stanncam_old.gml @@ -0,0 +1,393 @@ +///// @function stanncam() +///// @param x pos +///// @param y pos +///// @param width +///// @param height +///// @param surface_available set if you wanna use the surf variable in regular draw events +///// @description creates a new stanncam +//function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, surface_available_ = false) constructor{ +// #region init +// //whenever a new cam is created number_of_cams gets incremented +// cam_id = __obj_stanncam_manager.number_of_cams; + +// //checks if there's already 8 cameras +// if(cam_id == 8){ +// show_error("There can maximum be 8 cameras",true); +// } + +// view_camera[cam_id] = camera_create(); + +// __obj_stanncam_manager.number_of_cams++; + +// array_set(global.stanncams,cam_id,self); +// #endregion + +// #region variables +// x = x_; +// y = y_; +// width = width_; +// height = height_; + +// surface_available = surface_available_; + +// spd = 10; //how fast the camera follows an object +// 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 +// bounds_w = 20; +// bounds_h = 20; + +// __surf = -1; +// surface = -1; + +// follow = -1; + +// __destroyed = false; + +// #region animation variables + +// //moving +// __xStart = x; +// __yStart = y; +// __xTo = x; +// __yTo = y; +// __duration = 0; +// __t = 0; + +// //zoom +// __zoom_amount = 1; +// __zoom_x = 0; +// __zoom_y = 0; +// __zooming = false; +// __t_zoom = 0; +// __zoomStart = 0; +// __zoomTo = 0; +// __zoom_duration = 0; + +// //screen shake +// __shake_length = 0; +// __shake_magnitude = 0; +// __shake_time = 0; +// __shake_x = 0; +// __shake_y = 0; + +// __moving = false; + +// __check_surface(); +// __check_viewports(); +// __update_resolution(); + +// #endregion + +// #endregion + +// #region Step +// //gets called every step +// static __step = function(){ +// 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; + +// //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; +// } + +// if (abs(y - __yTo) > bounds_h){ +// var _spd = (dist_h/spd_threshold)*spd; +// if (y < __yTo) y+=_spd; +// else if (y > __yTo) y-=_spd; +// } + +// } else if(__moving){ +// //gradually moves camera into position based on duration +// x = ease_in_out(__t,__xStart,__xTo-__xStart,__duration); +// y = ease_in_out(__t,__yStart,__yTo-__yStart,__duration); + +// __t++; +// if(x == __xTo && y == __yTo) __moving = false; +// } + +// #region screen-shake +// var stanncam_shake_ = shake(__shake_time++,__shake_magnitude,__shake_length); +// __shake_x = stanncam_shake_; +// __shake_y = stanncam_shake_; +// #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 = ease_in_out(__t_zoom,__zoomStart,__zoomTo-__zoomStart,__zoom_duration); +// __t_zoom++; +// if(__zoom_amount == __zoomTo) __zooming = false; +// 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; +// } +// #endregion + +// //update camera view +// 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); +// } +// #endregion + +// #region Drawing functions + +// /// @function draw() +// /// @param x_ position +// /// @param y_ position +// /// @description draws camera +// static draw = function(x_,y_){ +// __check_surface(); +// var x_scale = __obj_stanncam_manager.display_res_w / global.game_w +// var y_scale = __obj_stanncam_manager.display_res_h / global.game_h +// x_ *= x_scale; +// y_ *= y_scale; +// draw_surface_stretched(__surf,x_,y_,__display_width,__display_height); +// } + +// /// @function draw_stretched() +// /// @param x_ position +// /// @param y_ position +// /// @param w_ width +// /// @param h_ height +// /// @description draws camera stretched +// static draw_stretched = function(x_,y_,w,h){ +// __check_surface(); +// x_ *= (__obj_stanncam_manager.display_res_w / global.game_w); +// y_ *= (__obj_stanncam_manager.display_res_h / global.game_h); +// w *= (__obj_stanncam_manager.display_res_w / global.game_w); +// h *= (__obj_stanncam_manager.display_res_h / global.game_h); +// draw_surface_stretched(__surf,x_,y_,w,h); +// } + +// /// @function draw_fill() +// /// @description draws camera to fill the entire game window +// static draw_fill = function(){ +// __check_surface(); +// draw_surface_stretched(__surf,0,0,__obj_stanncam_manager.display_res_w,__obj_stanncam_manager.display_res_h); +// } +// #endregion + +// #region Dynamic functions + +// /// @function clone(); +// /// @description returns a clone of the camera +// static clone = function(){ +// var clone = new stanncam(x,y,width,height); +// clone.spd = spd; +// clone.spd_threshold = spd_threshold; +// clone.room_constrain = room_constrain; +// clone.bounds_w = bounds_w; +// clone.bounds_h = bounds_h; +// clone.follow = follow; + +// return clone; +// } + +// /// @function set_size(_width,_height); +// /// @description sets the camera size +// /// @param width +// /// @param height +// static set_size = function(_width,_height){ +// width = _width; +// height = _height; +// __update_resolution(); +// camera_set_view_size(view_camera[cam_id],width*__zoom_amount,height*__zoom_amount); +// } + +// /// @function shake_screen(magnitude, duration); +// /// @description makes the camera shake +// /// @param magnitude +// /// @param duration in frames +// static shake_screen = function(magnitude, duration) { +// __shake_magnitude =+ magnitude; +// __shake_length =+ duration; +// __shake_time = 0; +// } + +// /// @function move(_x,_y,duration) +// /// @description moves the camera to x y +// /// @param _x +// /// @param _y +// /// @param _duration +// static move = function(_x, _y, _duration){ +// if(_duration == 0){ +// x = _x; +// y = _y; +// }else{ +// __moving = true; +// __t = 0; +// __xStart = x; +// __yStart = y; + +// __xTo = _x; +// __yTo = _y; +// __duration = _duration; +// } +// } + +// /// @function zoom(_zoom,zoom_duration) +// /// @description zooms the camera +// /// @param _zoom +// /// @param duration +// static zoom = function(_zoom, _duration){ +// if(_duration == 0){ +// __zoom_amount = _zoom; +// camera_set_view_size(view_camera[cam_id],width*_zoom,height*_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 set_speed(spd,threshold) +// /// @description changes the speed of the camera +// /// @param spd how fast the camera can move +// /// @param threshold minimum distance for the speed to have full effect +// 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 +// 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 +// static get_y = function(){ +// return camera_get_view_y(view_camera[cam_id]); +// } + +// /// @description gets the mouse x position within room relative to the camera +// static get_mouse_x = function(width_ = width){ +// return ((display_mouse_get_x() / __display_width) * width_) + get_x(); +// } + +// /// @description gets the mouse y position within room relative to the camera +// static get_mouse_y = function(height_ = height){ +// return ((display_mouse_get_y() / __display_height) * height_) + get_y(); +// } + + +// /// @func room_to_gui_x(x_) +// /// @description returns the room x position as the position on the gui relative to camera +// /// @param x_ +// function room_to_gui_x(x_){ +// return (x_-get_x())*stanncam_get_gui_scale_x()/__zoom_amount; +// } + +// /// @func room_to_gui_y(y_) +// /// @description returns the room y position as the position on the gui relative to camera +// /// @param y_ +// function room_to_gui_y(y_){ +// return (y_-get_y())*stanncam_get_gui_scale_y()/__zoom_amount; +// } + +// /// @function out_of_bounds() +// /// @param x_ position the object is temporarily moved to +// /// @param y_ position the object is temporarily moved to +// /// @param margin the margin for the camera bounds +// /// @description returns if the object is outside cam bounds +// function out_of_bounds(x_,y_,margin = 0){ +// var x_delta = x; +// var y_delta = y; + +// x = x_; +// y = y_; + +// var col = ( //uses bounding box to see if it's within the camera view +// other.bbox_left < get_x() + margin || +// other.bbox_top < get_y() + margin || +// other.bbox_right > (get_x() + (width * __zoom_amount)) - margin || +// other.bbox_bottom > (get_y() + (height * __zoom_amount)) - margin +// ) + +// x = x_delta; +// y = y_delta; + +// if(col)return true +// else return false; +// } + +// /// @function destroy() +// static destroy = function(){ +// follow = -1; +// array_set(global.stanncams,cam_id,-1); +// __obj_stanncam_manager.number_of_cams--; +// if(surface_exists(surface)) surface_free(surface); +// if(surface_exists(__surf)) surface_free(__surf); +// __destroyed = true; +// } + +// /// @function is_destroyed() +// static is_destroyed = function(){ +// return __destroyed; +// } +// #endregion + +// #region Internal functions +// //enables viewports and sets viewports size +// static __check_viewports = function(){ +// view_visible[cam_id] = true; +// set_size(width,height); +// } + +// //checks if surface exists and else creates it and attaches it +// static __check_surface = function(){ +// if (!surface_exists(__surf)){ +// __surf = surface_create(width,height); +// } + +// if (surface_available && !surface_exists(surface)){ +// surface = surface_create(width,height); +// } +// } + +// //updates cameras drawing resolution +// static __update_resolution = function(){ +// __display_width = width * (__obj_stanncam_manager.display_res_w / global.game_w); +// __display_height = height * (__obj_stanncam_manager.display_res_h / global.game_h); + +// view_set_camera(cam_id, view_camera[cam_id]); +// } + +// //clears the surface +// static __predraw = function(){ +// __check_surface(); +// if(surface_available){ +// surface_copy(surface,0,0,__surf); +// } +// surface_set_target(__surf); +// draw_clear_alpha(c_black,0); +// surface_reset_target(); +// view_set_surface_id(cam_id,__surf); +// } +// #endregion +//} \ No newline at end of file diff --git a/scripts/stanncam_old/stanncam_old.yy b/scripts/stanncam_old/stanncam_old.yy new file mode 100644 index 0000000..7890892 --- /dev/null +++ b/scripts/stanncam_old/stanncam_old.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "stanncam_old", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "Scripts", + "path": "folders/Scripts.yy", + }, +} \ No newline at end of file diff --git a/sprites/spr_arrow/spr_arrow.yy b/sprites/spr_arrow/spr_arrow.yy index 0afead2..f57478f 100644 --- a/sprites/spr_arrow/spr_arrow.yy +++ b/sprites/spr_arrow/spr_arrow.yy @@ -2,76 +2,76 @@ "resourceType": "GMSprite", "resourceVersion": "1.0", "name": "spr_arrow", - "bboxMode": 0, - "collisionKind": 1, - "type": 0, - "origin": 1, - "preMultiplyAlpha": false, - "edgeFiltering": false, - "collisionTolerance": 0, - "swfPrecision": 2.525, + "bbox_bottom": 45, "bbox_left": 0, "bbox_right": 69, "bbox_top": 0, - "bbox_bottom": 45, - "HTile": false, - "VTile": false, - "For3D": false, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, "DynamicTexturePage": false, - "width": 70, - "height": 46, - "textureGroupId": { - "name": "Default", - "path": "texturegroups/Default", - }, - "swatchColours": null, - "gridX": 51, - "gridY": 51, + "edgeFiltering": false, + "For3D": false, "frames": [ {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"cfa456cb-3dc7-444f-adfe-20f18d1fc6d3",}, {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"a365953c-c44b-4b88-90e8-ef1d5b51a19e",}, ], + "gridX": 51, + "gridY": 51, + "height": 46, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"4a98bca5-875b-452d-9fec-1b80c036d5f2","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"79bf20b2-e262-4265-8a1a-d57f21af8b6a","blendMode":0,"displayName":"Layer 1","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 1, + "parent": { + "name": "demonstration", + "path": "folders/demonstration.yy", + }, + "preMultiplyAlpha": false, "sequence": { "resourceType": "GMSequence", "resourceVersion": "1.4", "name": "spr_arrow", - "timeUnits": 1, + "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": 1.0, "playbackSpeedType": 1, - "autoRecord": true, - "volume": 1.0, - "length": 2.0, - "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, - "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, "tracks": [ - {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[ - {"id":"9fcbf0d7-aff9-4f58-a7b8-6d3e8488396c","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"cfa456cb-3dc7-444f-adfe-20f18d1fc6d3","path":"sprites/spr_arrow/spr_arrow.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, - {"id":"02009123-e026-494d-9c2c-e3d3248d6208","Key":1.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"a365953c-c44b-4b88-90e8-ef1d5b51a19e","path":"sprites/spr_arrow/spr_arrow.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, - ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],}, + {"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":"cfa456cb-3dc7-444f-adfe-20f18d1fc6d3","path":"sprites/spr_arrow/spr_arrow.yy",},},},"Disabled":false,"id":"9fcbf0d7-aff9-4f58-a7b8-6d3e8488396c","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"a365953c-c44b-4b88-90e8-ef1d5b51a19e","path":"sprites/spr_arrow/spr_arrow.yy",},},},"Disabled":false,"id":"02009123-e026-494d-9c2c-e3d3248d6208","IsCreationKey":false,"Key":1.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, ], "visibleRange": null, - "lockOrigin": false, - "showBackdrop": true, - "showBackdropImage": false, - "backdropImagePath": "", - "backdropImageOpacity": 0.5, - "backdropWidth": 1366, - "backdropHeight": 768, - "backdropXOffset": 0.0, - "backdropYOffset": 0.0, + "volume": 1.0, "xorigin": 35, "yorigin": 0, - "eventToFunction": {}, - "eventStubScript": null, }, - "layers": [ - {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"4a98bca5-875b-452d-9fec-1b80c036d5f2","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",}, - {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"79bf20b2-e262-4265-8a1a-d57f21af8b6a","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"Layer 1",}, - ], - "nineSlice": null, - "parent": { - "name": "demonstration", - "path": "folders/demonstration.yy", + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", }, + "type": 0, + "VTile": false, + "width": 70, } \ No newline at end of file diff --git a/sprites/spr_arrow_small/spr_arrow_small.yy b/sprites/spr_arrow_small/spr_arrow_small.yy index e061aa4..52f9f59 100644 --- a/sprites/spr_arrow_small/spr_arrow_small.yy +++ b/sprites/spr_arrow_small/spr_arrow_small.yy @@ -2,75 +2,75 @@ "resourceType": "GMSprite", "resourceVersion": "1.0", "name": "spr_arrow_small", - "bboxMode": 0, - "collisionKind": 1, - "type": 0, - "origin": 1, - "preMultiplyAlpha": false, - "edgeFiltering": false, - "collisionTolerance": 0, - "swfPrecision": 2.525, + "bbox_bottom": 6, "bbox_left": 0, "bbox_right": 9, "bbox_top": 1, - "bbox_bottom": 6, - "HTile": false, - "VTile": false, - "For3D": false, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, "DynamicTexturePage": false, - "width": 10, - "height": 7, - "textureGroupId": { - "name": "Default", - "path": "texturegroups/Default", - }, - "swatchColours": null, - "gridX": 51, - "gridY": 51, + "edgeFiltering": false, + "For3D": false, "frames": [ {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"cfa456cb-3dc7-444f-adfe-20f18d1fc6d3",}, {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"a365953c-c44b-4b88-90e8-ef1d5b51a19e",}, ], + "gridX": 51, + "gridY": 51, + "height": 7, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"3210fd01-7382-4aa7-b86e-b2f4f7df87bd","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 1, + "parent": { + "name": "demonstration", + "path": "folders/demonstration.yy", + }, + "preMultiplyAlpha": false, "sequence": { "resourceType": "GMSequence", "resourceVersion": "1.4", "name": "spr_arrow_small", - "timeUnits": 1, + "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": 1.0, "playbackSpeedType": 1, - "autoRecord": true, - "volume": 1.0, - "length": 2.0, - "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, - "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, "tracks": [ - {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[ - {"id":"66b03764-d23e-4c1d-a2d2-f4be575eacc0","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"cfa456cb-3dc7-444f-adfe-20f18d1fc6d3","path":"sprites/spr_arrow_small/spr_arrow_small.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, - {"id":"5a961afb-4f00-43e9-a866-e8054f5bea6b","Key":1.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"a365953c-c44b-4b88-90e8-ef1d5b51a19e","path":"sprites/spr_arrow_small/spr_arrow_small.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, - ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],}, + {"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":"cfa456cb-3dc7-444f-adfe-20f18d1fc6d3","path":"sprites/spr_arrow_small/spr_arrow_small.yy",},},},"Disabled":false,"id":"66b03764-d23e-4c1d-a2d2-f4be575eacc0","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"a365953c-c44b-4b88-90e8-ef1d5b51a19e","path":"sprites/spr_arrow_small/spr_arrow_small.yy",},},},"Disabled":false,"id":"5a961afb-4f00-43e9-a866-e8054f5bea6b","IsCreationKey":false,"Key":1.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, ], "visibleRange": null, - "lockOrigin": false, - "showBackdrop": true, - "showBackdropImage": false, - "backdropImagePath": "", - "backdropImageOpacity": 0.5, - "backdropWidth": 1366, - "backdropHeight": 768, - "backdropXOffset": 0.0, - "backdropYOffset": 0.0, + "volume": 1.0, "xorigin": 5, "yorigin": 0, - "eventToFunction": {}, - "eventStubScript": null, }, - "layers": [ - {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"3210fd01-7382-4aa7-b86e-b2f4f7df87bd","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",}, - ], - "nineSlice": null, - "parent": { - "name": "demonstration", - "path": "folders/demonstration.yy", + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", }, + "type": 0, + "VTile": false, + "width": 10, } \ No newline at end of file diff --git a/sprites/spr_ball/spr_ball.yy b/sprites/spr_ball/spr_ball.yy index a167614..a86121c 100644 --- a/sprites/spr_ball/spr_ball.yy +++ b/sprites/spr_ball/spr_ball.yy @@ -2,73 +2,73 @@ "resourceType": "GMSprite", "resourceVersion": "1.0", "name": "spr_ball", - "bboxMode": 0, - "collisionKind": 1, - "type": 0, - "origin": 4, - "preMultiplyAlpha": false, - "edgeFiltering": false, - "collisionTolerance": 0, - "swfPrecision": 2.525, + "bbox_bottom": 63, "bbox_left": 0, "bbox_right": 63, "bbox_top": 0, - "bbox_bottom": 63, - "HTile": false, - "VTile": false, - "For3D": false, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, "DynamicTexturePage": false, - "width": 64, - "height": 64, - "textureGroupId": { - "name": "Default", - "path": "texturegroups/Default", - }, - "swatchColours": null, - "gridX": 0, - "gridY": 0, + "edgeFiltering": false, + "For3D": false, "frames": [ {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"89a15171-096d-4273-b5e1-bed216c67447",}, ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"a85f0884-bccb-4d64-91e7-91e920726f39","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "demonstration", + "path": "folders/demonstration.yy", + }, + "preMultiplyAlpha": false, "sequence": { "resourceType": "GMSequence", "resourceVersion": "1.4", "name": "spr_ball", - "timeUnits": 1, + "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, - "autoRecord": true, - "volume": 1.0, - "length": 1.0, - "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, - "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, "tracks": [ - {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[ - {"id":"08c475be-3a5e-499d-a363-9bc528f6eda7","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"89a15171-096d-4273-b5e1-bed216c67447","path":"sprites/spr_ball/spr_ball.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, - ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],}, + {"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":"89a15171-096d-4273-b5e1-bed216c67447","path":"sprites/spr_ball/spr_ball.yy",},},},"Disabled":false,"id":"08c475be-3a5e-499d-a363-9bc528f6eda7","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, ], "visibleRange": null, - "lockOrigin": false, - "showBackdrop": true, - "showBackdropImage": false, - "backdropImagePath": "", - "backdropImageOpacity": 0.5, - "backdropWidth": 1366, - "backdropHeight": 768, - "backdropXOffset": 0.0, - "backdropYOffset": 0.0, + "volume": 1.0, "xorigin": 32, "yorigin": 32, - "eventToFunction": {}, - "eventStubScript": null, }, - "layers": [ - {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"a85f0884-bccb-4d64-91e7-91e920726f39","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",}, - ], - "nineSlice": null, - "parent": { - "name": "demonstration", - "path": "folders/demonstration.yy", + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", }, + "type": 0, + "VTile": false, + "width": 64, } \ No newline at end of file diff --git a/sprites/spr_bg/spr_bg.yy b/sprites/spr_bg/spr_bg.yy index fb3c226..8122adc 100644 --- a/sprites/spr_bg/spr_bg.yy +++ b/sprites/spr_bg/spr_bg.yy @@ -2,74 +2,74 @@ "resourceType": "GMSprite", "resourceVersion": "1.0", "name": "spr_bg", - "bboxMode": 0, - "collisionKind": 1, - "type": 0, - "origin": 0, - "preMultiplyAlpha": false, - "edgeFiltering": false, - "collisionTolerance": 0, - "swfPrecision": 2.525, + "bbox_bottom": 31, "bbox_left": 0, "bbox_right": 31, "bbox_top": 0, - "bbox_bottom": 31, - "HTile": false, - "VTile": false, - "For3D": false, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, "DynamicTexturePage": false, - "width": 32, - "height": 32, - "textureGroupId": { - "name": "Default", - "path": "texturegroups/Default", - }, - "swatchColours": null, - "gridX": 0, - "gridY": 0, + "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":"d797d937-1b8b-4f7e-aa6e-b01b3d661531","blendMode":0,"displayName":"Layer 1","isLocked":false,"opacity":80.0,"visible":true,}, + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"bed84a38-1422-4fe6-8871-3c553508ef23","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 0, + "parent": { + "name": "demonstration", + "path": "folders/demonstration.yy", + }, + "preMultiplyAlpha": false, "sequence": { "resourceType": "GMSequence", "resourceVersion": "1.4", "name": "spr_bg", - "timeUnits": 1, + "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, - "autoRecord": true, - "volume": 1.0, - "length": 1.0, - "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, - "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, "tracks": [ - {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[ - {"id":"c6af7e4d-0598-4b4b-b35b-f9024321a62a","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"b5e8d5bb-c127-4d8b-8514-dca5179f5af3","path":"sprites/spr_bg/spr_bg.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, - ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],}, + {"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_bg/spr_bg.yy",},},},"Disabled":false,"id":"c6af7e4d-0598-4b4b-b35b-f9024321a62a","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, ], "visibleRange": null, - "lockOrigin": false, - "showBackdrop": true, - "showBackdropImage": false, - "backdropImagePath": "", - "backdropImageOpacity": 0.5, - "backdropWidth": 1366, - "backdropHeight": 768, - "backdropXOffset": 0.0, - "backdropYOffset": 0.0, + "volume": 1.0, "xorigin": 0, "yorigin": 0, - "eventToFunction": {}, - "eventStubScript": null, }, - "layers": [ - {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"d797d937-1b8b-4f7e-aa6e-b01b3d661531","visible":true,"isLocked":false,"blendMode":0,"opacity":80.0,"displayName":"Layer 1",}, - {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"bed84a38-1422-4fe6-8871-3c553508ef23","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",}, - ], - "nineSlice": null, - "parent": { - "name": "demonstration", - "path": "folders/demonstration.yy", + "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_player2_idle/spr_player2_idle.yy b/sprites/spr_player2_idle/spr_player2_idle.yy index 7a533b5..cd82b22 100644 --- a/sprites/spr_player2_idle/spr_player2_idle.yy +++ b/sprites/spr_player2_idle/spr_player2_idle.yy @@ -2,73 +2,73 @@ "resourceType": "GMSprite", "resourceVersion": "1.0", "name": "spr_player2_idle", - "bboxMode": 0, - "collisionKind": 1, - "type": 0, - "origin": 7, - "preMultiplyAlpha": false, - "edgeFiltering": false, - "collisionTolerance": 0, - "swfPrecision": 2.525, + "bbox_bottom": 10, "bbox_left": 3, "bbox_right": 8, "bbox_top": 1, - "bbox_bottom": 10, - "HTile": false, - "VTile": false, - "For3D": false, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, "DynamicTexturePage": false, - "width": 12, - "height": 11, - "textureGroupId": { - "name": "Default", - "path": "texturegroups/Default", - }, - "swatchColours": null, - "gridX": 0, - "gridY": 0, + "edgeFiltering": false, + "For3D": false, "frames": [ {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"d6d0b87b-5a28-4c24-ad6e-27cd148e7b09",}, ], + "gridX": 0, + "gridY": 0, + "height": 11, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"cee7bc7a-8d99-4793-a7d2-7c83a4178460","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 7, + "parent": { + "name": "demonstration", + "path": "folders/demonstration.yy", + }, + "preMultiplyAlpha": false, "sequence": { "resourceType": "GMSequence", "resourceVersion": "1.4", "name": "spr_player2_idle", - "timeUnits": 1, + "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": 0.2, "playbackSpeedType": 1, - "autoRecord": true, - "volume": 1.0, - "length": 1.0, - "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, - "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, "tracks": [ - {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[ - {"id":"f4086892-5bd8-4310-a65a-ca7ad42739c2","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"d6d0b87b-5a28-4c24-ad6e-27cd148e7b09","path":"sprites/spr_player2_idle/spr_player2_idle.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, - ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],}, + {"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":"d6d0b87b-5a28-4c24-ad6e-27cd148e7b09","path":"sprites/spr_player2_idle/spr_player2_idle.yy",},},},"Disabled":false,"id":"f4086892-5bd8-4310-a65a-ca7ad42739c2","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, ], "visibleRange": null, - "lockOrigin": false, - "showBackdrop": true, - "showBackdropImage": false, - "backdropImagePath": "", - "backdropImageOpacity": 0.5, - "backdropWidth": 1366, - "backdropHeight": 768, - "backdropXOffset": 0.0, - "backdropYOffset": 0.0, + "volume": 1.0, "xorigin": 6, "yorigin": 11, - "eventToFunction": {}, - "eventStubScript": null, }, - "layers": [ - {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"cee7bc7a-8d99-4793-a7d2-7c83a4178460","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",}, - ], - "nineSlice": null, - "parent": { - "name": "demonstration", - "path": "folders/demonstration.yy", + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", }, + "type": 0, + "VTile": false, + "width": 12, } \ No newline at end of file diff --git a/sprites/spr_player2_moving/spr_player2_moving.yy b/sprites/spr_player2_moving/spr_player2_moving.yy index 9757445..78e64cf 100644 --- a/sprites/spr_player2_moving/spr_player2_moving.yy +++ b/sprites/spr_player2_moving/spr_player2_moving.yy @@ -2,75 +2,75 @@ "resourceType": "GMSprite", "resourceVersion": "1.0", "name": "spr_player2_moving", - "bboxMode": 0, - "collisionKind": 1, - "type": 0, - "origin": 7, - "preMultiplyAlpha": false, - "edgeFiltering": false, - "collisionTolerance": 0, - "swfPrecision": 2.525, + "bbox_bottom": 10, "bbox_left": 1, "bbox_right": 10, "bbox_top": 1, - "bbox_bottom": 10, - "HTile": false, - "VTile": false, - "For3D": false, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, "DynamicTexturePage": false, - "width": 12, - "height": 11, - "textureGroupId": { - "name": "Default", - "path": "texturegroups/Default", - }, - "swatchColours": null, - "gridX": 0, - "gridY": 0, + "edgeFiltering": false, + "For3D": false, "frames": [ {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"d6d0b87b-5a28-4c24-ad6e-27cd148e7b09",}, {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"9685cde2-1c2c-40d5-85bb-bb36c1f0d672",}, ], + "gridX": 0, + "gridY": 0, + "height": 11, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"cee7bc7a-8d99-4793-a7d2-7c83a4178460","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 7, + "parent": { + "name": "demonstration", + "path": "folders/demonstration.yy", + }, + "preMultiplyAlpha": false, "sequence": { "resourceType": "GMSequence", "resourceVersion": "1.4", "name": "spr_player2_moving", - "timeUnits": 1, + "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.1, "playbackSpeedType": 1, - "autoRecord": true, - "volume": 1.0, - "length": 2.0, - "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, - "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, "tracks": [ - {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[ - {"id":"df5daded-5d7c-47cc-9099-87a5c13bffae","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"d6d0b87b-5a28-4c24-ad6e-27cd148e7b09","path":"sprites/spr_player2_moving/spr_player2_moving.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, - {"id":"9807de71-eb91-48eb-ae37-abde603ed83a","Key":1.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"9685cde2-1c2c-40d5-85bb-bb36c1f0d672","path":"sprites/spr_player2_moving/spr_player2_moving.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, - ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],}, + {"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":"d6d0b87b-5a28-4c24-ad6e-27cd148e7b09","path":"sprites/spr_player2_moving/spr_player2_moving.yy",},},},"Disabled":false,"id":"df5daded-5d7c-47cc-9099-87a5c13bffae","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"9685cde2-1c2c-40d5-85bb-bb36c1f0d672","path":"sprites/spr_player2_moving/spr_player2_moving.yy",},},},"Disabled":false,"id":"9807de71-eb91-48eb-ae37-abde603ed83a","IsCreationKey":false,"Key":1.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, ], "visibleRange": null, - "lockOrigin": false, - "showBackdrop": true, - "showBackdropImage": false, - "backdropImagePath": "", - "backdropImageOpacity": 0.5, - "backdropWidth": 1366, - "backdropHeight": 768, - "backdropXOffset": 0.0, - "backdropYOffset": 0.0, + "volume": 1.0, "xorigin": 6, "yorigin": 11, - "eventToFunction": {}, - "eventStubScript": null, }, - "layers": [ - {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"cee7bc7a-8d99-4793-a7d2-7c83a4178460","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",}, - ], - "nineSlice": null, - "parent": { - "name": "demonstration", - "path": "folders/demonstration.yy", + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", }, + "type": 0, + "VTile": false, + "width": 12, } \ No newline at end of file diff --git a/sprites/spr_player_idle/spr_player_idle.yy b/sprites/spr_player_idle/spr_player_idle.yy index 2072265..a0833e8 100644 --- a/sprites/spr_player_idle/spr_player_idle.yy +++ b/sprites/spr_player_idle/spr_player_idle.yy @@ -2,73 +2,73 @@ "resourceType": "GMSprite", "resourceVersion": "1.0", "name": "spr_player_idle", - "bboxMode": 0, - "collisionKind": 1, - "type": 0, - "origin": 7, - "preMultiplyAlpha": false, - "edgeFiltering": false, - "collisionTolerance": 0, - "swfPrecision": 2.525, + "bbox_bottom": 10, "bbox_left": 3, "bbox_right": 8, "bbox_top": 1, - "bbox_bottom": 10, - "HTile": false, - "VTile": false, - "For3D": false, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, "DynamicTexturePage": false, - "width": 12, - "height": 11, - "textureGroupId": { - "name": "Default", - "path": "texturegroups/Default", - }, - "swatchColours": null, - "gridX": 0, - "gridY": 0, + "edgeFiltering": false, + "For3D": false, "frames": [ {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"d6d0b87b-5a28-4c24-ad6e-27cd148e7b09",}, ], + "gridX": 0, + "gridY": 0, + "height": 11, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"cee7bc7a-8d99-4793-a7d2-7c83a4178460","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 7, + "parent": { + "name": "demonstration", + "path": "folders/demonstration.yy", + }, + "preMultiplyAlpha": false, "sequence": { "resourceType": "GMSequence", "resourceVersion": "1.4", "name": "spr_player_idle", - "timeUnits": 1, + "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": 0.2, "playbackSpeedType": 1, - "autoRecord": true, - "volume": 1.0, - "length": 1.0, - "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, - "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, "tracks": [ - {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[ - {"id":"a1a3f3b3-0702-4892-adaf-39099977cbc1","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"d6d0b87b-5a28-4c24-ad6e-27cd148e7b09","path":"sprites/spr_player_idle/spr_player_idle.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, - ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],}, + {"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":"d6d0b87b-5a28-4c24-ad6e-27cd148e7b09","path":"sprites/spr_player_idle/spr_player_idle.yy",},},},"Disabled":false,"id":"a1a3f3b3-0702-4892-adaf-39099977cbc1","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, ], "visibleRange": null, - "lockOrigin": false, - "showBackdrop": true, - "showBackdropImage": false, - "backdropImagePath": "", - "backdropImageOpacity": 0.5, - "backdropWidth": 1366, - "backdropHeight": 768, - "backdropXOffset": 0.0, - "backdropYOffset": 0.0, + "volume": 1.0, "xorigin": 6, "yorigin": 11, - "eventToFunction": {}, - "eventStubScript": null, }, - "layers": [ - {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"cee7bc7a-8d99-4793-a7d2-7c83a4178460","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",}, - ], - "nineSlice": null, - "parent": { - "name": "demonstration", - "path": "folders/demonstration.yy", + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", }, + "type": 0, + "VTile": false, + "width": 12, } \ No newline at end of file diff --git a/sprites/spr_player_moving/spr_player_moving.yy b/sprites/spr_player_moving/spr_player_moving.yy index c8babce..4f083ed 100644 --- a/sprites/spr_player_moving/spr_player_moving.yy +++ b/sprites/spr_player_moving/spr_player_moving.yy @@ -2,75 +2,75 @@ "resourceType": "GMSprite", "resourceVersion": "1.0", "name": "spr_player_moving", - "bboxMode": 0, - "collisionKind": 1, - "type": 0, - "origin": 7, - "preMultiplyAlpha": false, - "edgeFiltering": false, - "collisionTolerance": 0, - "swfPrecision": 2.525, + "bbox_bottom": 10, "bbox_left": 1, "bbox_right": 10, "bbox_top": 1, - "bbox_bottom": 10, - "HTile": false, - "VTile": false, - "For3D": false, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, "DynamicTexturePage": false, - "width": 12, - "height": 11, - "textureGroupId": { - "name": "Default", - "path": "texturegroups/Default", - }, - "swatchColours": null, - "gridX": 0, - "gridY": 0, + "edgeFiltering": false, + "For3D": false, "frames": [ {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"d6d0b87b-5a28-4c24-ad6e-27cd148e7b09",}, {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"9685cde2-1c2c-40d5-85bb-bb36c1f0d672",}, ], + "gridX": 0, + "gridY": 0, + "height": 11, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"cee7bc7a-8d99-4793-a7d2-7c83a4178460","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 7, + "parent": { + "name": "demonstration", + "path": "folders/demonstration.yy", + }, + "preMultiplyAlpha": false, "sequence": { "resourceType": "GMSequence", "resourceVersion": "1.4", "name": "spr_player_moving", - "timeUnits": 1, + "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.1, "playbackSpeedType": 1, - "autoRecord": true, - "volume": 1.0, - "length": 2.0, - "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, - "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, "tracks": [ - {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[ - {"id":"eac30cb0-0d0f-4d52-b911-fcb0e9caf624","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"d6d0b87b-5a28-4c24-ad6e-27cd148e7b09","path":"sprites/spr_player_moving/spr_player_moving.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, - {"id":"088325c1-7772-4ba3-ac9e-62e51881a76c","Key":1.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"9685cde2-1c2c-40d5-85bb-bb36c1f0d672","path":"sprites/spr_player_moving/spr_player_moving.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, - ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],}, + {"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":"d6d0b87b-5a28-4c24-ad6e-27cd148e7b09","path":"sprites/spr_player_moving/spr_player_moving.yy",},},},"Disabled":false,"id":"eac30cb0-0d0f-4d52-b911-fcb0e9caf624","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"9685cde2-1c2c-40d5-85bb-bb36c1f0d672","path":"sprites/spr_player_moving/spr_player_moving.yy",},},},"Disabled":false,"id":"088325c1-7772-4ba3-ac9e-62e51881a76c","IsCreationKey":false,"Key":1.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, ], "visibleRange": null, - "lockOrigin": false, - "showBackdrop": true, - "showBackdropImage": false, - "backdropImagePath": "", - "backdropImageOpacity": 0.5, - "backdropWidth": 1366, - "backdropHeight": 768, - "backdropXOffset": 0.0, - "backdropYOffset": 0.0, + "volume": 1.0, "xorigin": 6, "yorigin": 11, - "eventToFunction": {}, - "eventStubScript": null, }, - "layers": [ - {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"cee7bc7a-8d99-4793-a7d2-7c83a4178460","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",}, - ], - "nineSlice": null, - "parent": { - "name": "demonstration", - "path": "folders/demonstration.yy", + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", }, + "type": 0, + "VTile": false, + "width": 12, } \ No newline at end of file diff --git a/sprites/spr_tile_bg/spr_tile_bg.yy b/sprites/spr_tile_bg/spr_tile_bg.yy index e4d9b2b..869e92c 100644 --- a/sprites/spr_tile_bg/spr_tile_bg.yy +++ b/sprites/spr_tile_bg/spr_tile_bg.yy @@ -2,73 +2,73 @@ "resourceType": "GMSprite", "resourceVersion": "1.0", "name": "spr_tile_bg", - "bboxMode": 0, - "collisionKind": 1, - "type": 0, - "origin": 0, - "preMultiplyAlpha": false, - "edgeFiltering": false, - "collisionTolerance": 0, - "swfPrecision": 2.525, + "bbox_bottom": 31, "bbox_left": 32, "bbox_right": 63, "bbox_top": 0, - "bbox_bottom": 31, - "HTile": false, - "VTile": false, - "For3D": false, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, "DynamicTexturePage": false, - "width": 64, - "height": 32, - "textureGroupId": { - "name": "Default", - "path": "texturegroups/Default", - }, - "swatchColours": null, - "gridX": 0, - "gridY": 0, + "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":"bed84a38-1422-4fe6-8871-3c553508ef23","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 0, + "parent": { + "name": "demonstration", + "path": "folders/demonstration.yy", + }, + "preMultiplyAlpha": false, "sequence": { "resourceType": "GMSequence", "resourceVersion": "1.4", "name": "spr_tile_bg", - "timeUnits": 1, + "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, - "autoRecord": true, - "volume": 1.0, - "length": 1.0, - "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, - "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, "tracks": [ - {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[ - {"id":"309dd744-34d6-46cb-b4bd-9c86c59311e5","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"b5e8d5bb-c127-4d8b-8514-dca5179f5af3","path":"sprites/spr_tile_bg/spr_tile_bg.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, - ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],}, + {"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_tile_bg/spr_tile_bg.yy",},},},"Disabled":false,"id":"309dd744-34d6-46cb-b4bd-9c86c59311e5","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, ], "visibleRange": null, - "lockOrigin": false, - "showBackdrop": true, - "showBackdropImage": false, - "backdropImagePath": "", - "backdropImageOpacity": 0.5, - "backdropWidth": 1366, - "backdropHeight": 768, - "backdropXOffset": 0.0, - "backdropYOffset": 0.0, + "volume": 1.0, "xorigin": 0, "yorigin": 0, - "eventToFunction": {}, - "eventStubScript": null, }, - "layers": [ - {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"bed84a38-1422-4fe6-8871-3c553508ef23","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",}, - ], - "nineSlice": null, - "parent": { - "name": "demonstration", - "path": "folders/demonstration.yy", + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", }, + "type": 0, + "VTile": false, + "width": 64, } \ No newline at end of file diff --git a/sprites/spr_tv/spr_tv.yy b/sprites/spr_tv/spr_tv.yy index 34427cd..dc74bf9 100644 --- a/sprites/spr_tv/spr_tv.yy +++ b/sprites/spr_tv/spr_tv.yy @@ -2,73 +2,73 @@ "resourceType": "GMSprite", "resourceVersion": "1.0", "name": "spr_tv", - "bboxMode": 0, - "collisionKind": 1, - "type": 0, - "origin": 0, - "preMultiplyAlpha": false, - "edgeFiltering": false, - "collisionTolerance": 0, - "swfPrecision": 2.525, + "bbox_bottom": 63, "bbox_left": 0, "bbox_right": 63, "bbox_top": 0, - "bbox_bottom": 63, - "HTile": false, - "VTile": false, - "For3D": false, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, "DynamicTexturePage": false, - "width": 64, - "height": 64, - "textureGroupId": { - "name": "Default", - "path": "texturegroups/Default", - }, - "swatchColours": null, - "gridX": 0, - "gridY": 0, + "edgeFiltering": false, + "For3D": false, "frames": [ {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"ca68646b-1689-4d76-b7ab-b0c225cc8d31",}, ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"9bc939da-2fec-4e13-aa9c-105eb44921f3","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 0, + "parent": { + "name": "demonstration", + "path": "folders/demonstration.yy", + }, + "preMultiplyAlpha": false, "sequence": { "resourceType": "GMSequence", "resourceVersion": "1.4", "name": "spr_tv", - "timeUnits": 1, + "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, - "autoRecord": true, - "volume": 1.0, - "length": 1.0, - "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, - "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, "tracks": [ - {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[ - {"id":"d337b439-7ffc-4d02-973f-5a39b2dc1705","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"ca68646b-1689-4d76-b7ab-b0c225cc8d31","path":"sprites/spr_tv/spr_tv.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, - ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],}, + {"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":"ca68646b-1689-4d76-b7ab-b0c225cc8d31","path":"sprites/spr_tv/spr_tv.yy",},},},"Disabled":false,"id":"d337b439-7ffc-4d02-973f-5a39b2dc1705","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, ], "visibleRange": null, - "lockOrigin": false, - "showBackdrop": true, - "showBackdropImage": false, - "backdropImagePath": "", - "backdropImageOpacity": 0.5, - "backdropWidth": 1366, - "backdropHeight": 768, - "backdropXOffset": 0.0, - "backdropYOffset": 0.0, + "volume": 1.0, "xorigin": 0, "yorigin": 0, - "eventToFunction": {}, - "eventStubScript": null, }, - "layers": [ - {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"9bc939da-2fec-4e13-aa9c-105eb44921f3","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",}, - ], - "nineSlice": null, - "parent": { - "name": "demonstration", - "path": "folders/demonstration.yy", + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", }, + "type": 0, + "VTile": false, + "width": 64, } \ No newline at end of file diff --git a/stanncam.resource_order b/stanncam.resource_order new file mode 100644 index 0000000..2f96ce0 --- /dev/null +++ b/stanncam.resource_order @@ -0,0 +1,34 @@ +{ + "FolderOrderSettings": [ + {"name":"demonstration","order":11,"path":"folders/demonstration.yy",}, + {"name":"Objects","order":9,"path":"folders/Objects.yy",}, + {"name":"Scripts","order":5,"path":"folders/Scripts.yy",}, + ], + "ResourceOrderSettings": [ + {"name":"stanncam","order":6,"path":"scripts/stanncam/stanncam.yy",}, + {"name":"demo_obj_player2","order":15,"path":"objects/demo_obj_player2/demo_obj_player2.yy",}, + {"name":"demo_obj_camera","order":20,"path":"objects/demo_obj_camera/demo_obj_camera.yy",}, + {"name":"ease_in_out","order":4,"path":"scripts/ease_in_out/ease_in_out.yy",}, + {"name":"spr_tv","order":19,"path":"sprites/spr_tv/spr_tv.yy",}, + {"name":"spr_player2_idle","order":17,"path":"sprites/spr_player2_idle/spr_player2_idle.yy",}, + {"name":"draw_text_outline","order":5,"path":"scripts/draw_text_outline/draw_text_outline.yy",}, + {"name":"spr_bg","order":9,"path":"sprites/spr_bg/spr_bg.yy",}, + {"name":"spr_arrow_small","order":7,"path":"sprites/spr_arrow_small/spr_arrow_small.yy",}, + {"name":"TileSet1","order":13,"path":"tilesets/TileSet1/TileSet1.yy",}, + {"name":"demo_f_pixel","order":1,"path":"fonts/demo_f_pixel/demo_f_pixel.yy",}, + {"name":"spr_player2_moving","order":16,"path":"sprites/spr_player2_moving/spr_player2_moving.yy",}, + {"name":"stanncam_manager","order":5,"path":"scripts/stanncam_manager/stanncam_manager.yy",}, + {"name":"spr_ball","order":8,"path":"sprites/spr_ball/spr_ball.yy",}, + {"name":"spr_player_moving","order":11,"path":"sprites/spr_player_moving/spr_player_moving.yy",}, + {"name":"demo_obj_player","order":2,"path":"objects/demo_obj_player/demo_obj_player.yy",}, + {"name":"shake","order":3,"path":"scripts/shake/shake.yy",}, + {"name":"stanncam_old","order":7,"path":"scripts/stanncam_old/stanncam_old.yy",}, + {"name":"spr_player_idle","order":10,"path":"sprites/spr_player_idle/spr_player_idle.yy",}, + {"name":"spr_arrow","order":6,"path":"sprites/spr_arrow/spr_arrow.yy",}, + {"name":"demo_obj_tv","order":18,"path":"objects/demo_obj_tv/demo_obj_tv.yy",}, + {"name":"stanncam_manager_old","order":8,"path":"scripts/stanncam_manager_old/stanncam_manager_old.yy",}, + {"name":"demo_obj_ball","order":3,"path":"objects/demo_obj_ball/demo_obj_ball.yy",}, + {"name":"spr_tile_bg","order":12,"path":"sprites/spr_tile_bg/spr_tile_bg.yy",}, + {"name":"Room1","order":4,"path":"rooms/Room1/Room1.yy",}, + ], +} \ No newline at end of file diff --git a/stanncam.yyp b/stanncam.yyp index 1e91bda..27c0a79 100644 --- a/stanncam.yyp +++ b/stanncam.yyp @@ -2,9 +2,28 @@ "resourceType": "GMProject", "resourceVersion": "1.6", "name": "stanncam", + "AudioGroups": [ + {"resourceType":"GMAudioGroup","resourceVersion":"1.3","name":"audiogroup_default","targets":-1,}, + ], + "configs": { + "children": [], + "name": "Default", + }, + "defaultScriptType": 1, + "Folders": [ + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"demonstration","folderPath":"folders/demonstration.yy","order":11,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Objects","folderPath":"folders/Objects.yy","order":9,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Scripts","folderPath":"folders/Scripts.yy","order":5,}, + ], + "IncludedFiles": [], + "isEcma": false, + "MetaData": { + "IDEVersion": "2023.1.1.62", + }, "resources": [ {"id":{"name":"stanncam","path":"scripts/stanncam/stanncam.yy",},"order":6,}, {"id":{"name":"demo_obj_player2","path":"objects/demo_obj_player2/demo_obj_player2.yy",},"order":15,}, + {"id":{"name":"demo_obj_camera","path":"objects/demo_obj_camera/demo_obj_camera.yy",},"order":20,}, {"id":{"name":"ease_in_out","path":"scripts/ease_in_out/ease_in_out.yy",},"order":4,}, {"id":{"name":"spr_tv","path":"sprites/spr_tv/spr_tv.yy",},"order":19,}, {"id":{"name":"spr_player2_idle","path":"sprites/spr_player2_idle/spr_player2_idle.yy",},"order":17,}, @@ -19,48 +38,21 @@ {"id":{"name":"spr_player_moving","path":"sprites/spr_player_moving/spr_player_moving.yy",},"order":11,}, {"id":{"name":"demo_obj_player","path":"objects/demo_obj_player/demo_obj_player.yy",},"order":2,}, {"id":{"name":"shake","path":"scripts/shake/shake.yy",},"order":3,}, + {"id":{"name":"stanncam_old","path":"scripts/stanncam_old/stanncam_old.yy",},"order":7,}, {"id":{"name":"demo_f_hires","path":"fonts/demo_f_hires/demo_f_hires.yy",},"order":0,}, {"id":{"name":"spr_player_idle","path":"sprites/spr_player_idle/spr_player_idle.yy",},"order":10,}, {"id":{"name":"spr_arrow","path":"sprites/spr_arrow/spr_arrow.yy",},"order":6,}, - {"id":{"name":"obj_tv","path":"objects/obj_tv/obj_tv.yy",},"order":18,}, - {"id":{"name":"obj_ball","path":"objects/obj_ball/obj_ball.yy",},"order":3,}, - {"id":{"name":"obj_stanncam_manager","path":"objects/obj_stanncam_manager/obj_stanncam_manager.yy",},"order":0,}, + {"id":{"name":"demo_obj_tv","path":"objects/demo_obj_tv/demo_obj_tv.yy",},"order":18,}, + {"id":{"name":"stanncam_manager_old","path":"scripts/stanncam_manager_old/stanncam_manager_old.yy",},"order":8,}, + {"id":{"name":"demo_obj_ball","path":"objects/demo_obj_ball/demo_obj_ball.yy",},"order":3,}, + {"id":{"name":"__obj_stanncam_manager","path":"objects/__obj_stanncam_manager/__obj_stanncam_manager.yy",},"order":0,}, {"id":{"name":"spr_tile_bg","path":"sprites/spr_tile_bg/spr_tile_bg.yy",},"order":12,}, {"id":{"name":"Room1","path":"rooms/Room1/Room1.yy",},"order":4,}, ], - "Options": [ - {"name":"Android","path":"options/android/options_android.yy",}, - {"name":"HTML5","path":"options/html5/options_html5.yy",}, - {"name":"iOS","path":"options/ios/options_ios.yy",}, - {"name":"Linux","path":"options/linux/options_linux.yy",}, - {"name":"macOS","path":"options/mac/options_mac.yy",}, - {"name":"tvOS","path":"options/tvos/options_tvos.yy",}, - {"name":"Windows","path":"options/windows/options_windows.yy",}, - {"name":"operagx","path":"options/operagx/options_operagx.yy",}, - {"name":"Main","path":"options/main/options_main.yy",}, - ], - "defaultScriptType": 1, - "isEcma": false, - "configs": { - "name": "Default", - "children": [], - }, "RoomOrderNodes": [ {"roomId":{"name":"Room1","path":"rooms/Room1/Room1.yy",},}, ], - "Folders": [ - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"demonstration","folderPath":"folders/demonstration.yy","order":11,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Objects","folderPath":"folders/Objects.yy","order":9,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Scripts","folderPath":"folders/Scripts.yy","order":5,}, - ], - "AudioGroups": [ - {"resourceType":"GMAudioGroup","resourceVersion":"1.3","name":"audiogroup_default","targets":-1,}, - ], "TextureGroups": [ - {"resourceType":"GMTextureGroup","resourceVersion":"1.3","name":"Default","isScaled":true,"compressFormat":"bz2","loadType":"default","directory":"","autocrop":true,"border":2,"mipsToGenerate":0,"groupParent":null,"targets":-1,}, + {"resourceType":"GMTextureGroup","resourceVersion":"1.3","name":"Default","autocrop":true,"border":2,"compressFormat":"bz2","directory":"","groupParent":null,"isScaled":true,"loadType":"default","mipsToGenerate":0,"targets":-1,}, ], - "IncludedFiles": [], - "MetaData": { - "IDEVersion": "2022.11.1.56", - }, } \ No newline at end of file diff --git a/tilesets/TileSet1/TileSet1.yy b/tilesets/TileSet1/TileSet1.yy index 52b87ba..ae224c9 100644 --- a/tilesets/TileSet1/TileSet1.yy +++ b/tilesets/TileSet1/TileSet1.yy @@ -2,28 +2,29 @@ "resourceType": "GMTileSet", "resourceVersion": "1.0", "name": "TileSet1", + "autoTileSets": [], + "macroPageTiles": { + "SerialiseHeight": 0, + "SerialiseWidth": 0, + "TileSerialiseData": [], + }, + "out_columns": 1, + "out_tilehborder": 2, + "out_tilevborder": 2, + "parent": { + "name": "demonstration", + "path": "folders/demonstration.yy", + }, "spriteId": { "name": "spr_tile_bg", "path": "sprites/spr_tile_bg/spr_tile_bg.yy", }, - "tileWidth": 32, - "tileHeight": 32, - "tilexoff": 0, - "tileyoff": 0, - "tilehsep": 0, - "tilevsep": 0, "spriteNoExport": true, "textureGroupId": { "name": "Default", "path": "texturegroups/Default", }, - "out_tilehborder": 2, - "out_tilevborder": 2, - "out_columns": 1, "tile_count": 2, - "autoTileSets": [], - "tileAnimationFrames": [], - "tileAnimationSpeed": 15.0, "tileAnimation": { "FrameData": [ 0, @@ -31,13 +32,12 @@ ], "SerialiseFrameCount": 1, }, - "macroPageTiles": { - "SerialiseWidth": 0, - "SerialiseHeight": 0, - "TileSerialiseData": [], - }, - "parent": { - "name": "demonstration", - "path": "folders/demonstration.yy", - }, + "tileAnimationFrames": [], + "tileAnimationSpeed": 15.0, + "tileHeight": 32, + "tilehsep": 0, + "tilevsep": 0, + "tileWidth": 32, + "tilexoff": 0, + "tileyoff": 0, } \ No newline at end of file From 311964e7d5cac5d2d10ddab4bb017d2ec0b8cacc Mon Sep 17 00:00:00 2001 From: jack Date: Thu, 9 Mar 2023 23:11:11 +0100 Subject: [PATCH 6/6] removed old scripts --- .../stanncam_manager_old.gml | 82 ---- .../stanncam_manager_old.yy | 11 - scripts/stanncam_old/stanncam_old.gml | 393 ------------------ scripts/stanncam_old/stanncam_old.yy | 11 - stanncam.resource_order | 2 - stanncam.yyp | 2 - 6 files changed, 501 deletions(-) delete mode 100644 scripts/stanncam_manager_old/stanncam_manager_old.gml delete mode 100644 scripts/stanncam_manager_old/stanncam_manager_old.yy delete mode 100644 scripts/stanncam_old/stanncam_old.gml delete mode 100644 scripts/stanncam_old/stanncam_old.yy diff --git a/scripts/stanncam_manager_old/stanncam_manager_old.gml b/scripts/stanncam_manager_old/stanncam_manager_old.gml deleted file mode 100644 index d07dcdd..0000000 --- a/scripts/stanncam_manager_old/stanncam_manager_old.gml +++ /dev/null @@ -1,82 +0,0 @@ -///// @function stanncam_init(game_w,game_h,resolution_w,resolution_h,gui_w,gui_h) -///// @description set game dimensions, display resolution, and gui dimensions, it's the same as game scale by default -//function stanncam_init(game_w,game_h,resolution_w=game_w,resolution_h=game_h,gui_w=game_w,gui_h=game_h){ -// instance_create_layer(0,0,"instances",__obj_stanncam_manager); -// global.stanncams = array_create(8,-1); -// global.game_w = game_w; -// global.game_h = game_h; -// global.gui_w = gui_w; -// global.gui_h = gui_h; -// __obj_stanncam_manager.resolution_w = resolution_w; -// __obj_stanncam_manager.resolution_h = resolution_h; - -// for (var i = 0; i < array_length(view_camera); ++i) { -// camera_destroy(view_camera[i]); -// } - -// application_surface_draw_enable(false); -// __stanncam_update_resolution(); -//} - -///// @function stanncam_set_resolution(resolution_w,resolution_h); -///// @description updates the camera resolution, change view_w view_h and upscale to see changes -//function stanncam_set_resolution(resolution_w,resolution_h){ -// __obj_stanncam_manager.resolution_w = resolution_w; -// __obj_stanncam_manager.resolution_h = 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_gui_resolution(gui_w,gui_h) -///// @description set the gui resolution -//function stanncam_set_gui_resolution(gui_w,gui_h){ -// global.gui_w = gui_w; -// global.gui_h = gui_h; -// __stanncam_update_resolution(); -//} - -///// @function stanncam_get_gui_scale_x() -///// @description gets how much bigger gui is from game -//function stanncam_get_gui_scale_x(){ -// return global.gui_w / global.game_w; -//} - -///// @function stanncam_get_gui_scale_y() -///// @description gets how much bigger gui is from game -//function stanncam_get_gui_scale_y(){ -// return global.gui_h / global.game_h; -//} - -///// @function __stanncam_update_resolution(); -///// @description updates the camera resolution -//function __stanncam_update_resolution(){ -// if(window_get_fullscreen()) { -// __obj_stanncam_manager.display_res_w = display_get_width(); -// __obj_stanncam_manager.display_res_h = display_get_height(); -// } else { -// __obj_stanncam_manager.display_res_w = __obj_stanncam_manager.resolution_w; -// __obj_stanncam_manager.display_res_h = __obj_stanncam_manager.resolution_h; - -// window_set_size(__obj_stanncam_manager.display_res_w, __obj_stanncam_manager.display_res_h); -// call_later(5,time_source_units_frames,function(){ -// window_center(); -// }); -// } - -// 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; - -// display_set_gui_maximize(gui_x_scale,gui_y_scale); -// surface_resize(application_surface, display_get_gui_width(), display_get_gui_height()) - -// for (var i = 0; i < array_length(global.stanncams); ++i) { -// if (global.stanncams[i] == -1) continue; -// global.stanncams[i].__update_resolution(); -// } -//} \ No newline at end of file diff --git a/scripts/stanncam_manager_old/stanncam_manager_old.yy b/scripts/stanncam_manager_old/stanncam_manager_old.yy deleted file mode 100644 index 9f47ea9..0000000 --- a/scripts/stanncam_manager_old/stanncam_manager_old.yy +++ /dev/null @@ -1,11 +0,0 @@ -{ - "resourceType": "GMScript", - "resourceVersion": "1.0", - "name": "stanncam_manager_old", - "isCompatibility": false, - "isDnD": false, - "parent": { - "name": "Scripts", - "path": "folders/Scripts.yy", - }, -} \ No newline at end of file diff --git a/scripts/stanncam_old/stanncam_old.gml b/scripts/stanncam_old/stanncam_old.gml deleted file mode 100644 index b8e85b3..0000000 --- a/scripts/stanncam_old/stanncam_old.gml +++ /dev/null @@ -1,393 +0,0 @@ -///// @function stanncam() -///// @param x pos -///// @param y pos -///// @param width -///// @param height -///// @param surface_available set if you wanna use the surf variable in regular draw events -///// @description creates a new stanncam -//function stanncam(x_ = 0,y_ = 0,width_ = global.game_w,height_ = global.game_h, surface_available_ = false) constructor{ -// #region init -// //whenever a new cam is created number_of_cams gets incremented -// cam_id = __obj_stanncam_manager.number_of_cams; - -// //checks if there's already 8 cameras -// if(cam_id == 8){ -// show_error("There can maximum be 8 cameras",true); -// } - -// view_camera[cam_id] = camera_create(); - -// __obj_stanncam_manager.number_of_cams++; - -// array_set(global.stanncams,cam_id,self); -// #endregion - -// #region variables -// x = x_; -// y = y_; -// width = width_; -// height = height_; - -// surface_available = surface_available_; - -// spd = 10; //how fast the camera follows an object -// 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 -// bounds_w = 20; -// bounds_h = 20; - -// __surf = -1; -// surface = -1; - -// follow = -1; - -// __destroyed = false; - -// #region animation variables - -// //moving -// __xStart = x; -// __yStart = y; -// __xTo = x; -// __yTo = y; -// __duration = 0; -// __t = 0; - -// //zoom -// __zoom_amount = 1; -// __zoom_x = 0; -// __zoom_y = 0; -// __zooming = false; -// __t_zoom = 0; -// __zoomStart = 0; -// __zoomTo = 0; -// __zoom_duration = 0; - -// //screen shake -// __shake_length = 0; -// __shake_magnitude = 0; -// __shake_time = 0; -// __shake_x = 0; -// __shake_y = 0; - -// __moving = false; - -// __check_surface(); -// __check_viewports(); -// __update_resolution(); - -// #endregion - -// #endregion - -// #region Step -// //gets called every step -// static __step = function(){ -// 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; - -// //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; -// } - -// if (abs(y - __yTo) > bounds_h){ -// var _spd = (dist_h/spd_threshold)*spd; -// if (y < __yTo) y+=_spd; -// else if (y > __yTo) y-=_spd; -// } - -// } else if(__moving){ -// //gradually moves camera into position based on duration -// x = ease_in_out(__t,__xStart,__xTo-__xStart,__duration); -// y = ease_in_out(__t,__yStart,__yTo-__yStart,__duration); - -// __t++; -// if(x == __xTo && y == __yTo) __moving = false; -// } - -// #region screen-shake -// var stanncam_shake_ = shake(__shake_time++,__shake_magnitude,__shake_length); -// __shake_x = stanncam_shake_; -// __shake_y = stanncam_shake_; -// #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 = ease_in_out(__t_zoom,__zoomStart,__zoomTo-__zoomStart,__zoom_duration); -// __t_zoom++; -// if(__zoom_amount == __zoomTo) __zooming = false; -// 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; -// } -// #endregion - -// //update camera view -// 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); -// } -// #endregion - -// #region Drawing functions - -// /// @function draw() -// /// @param x_ position -// /// @param y_ position -// /// @description draws camera -// static draw = function(x_,y_){ -// __check_surface(); -// var x_scale = __obj_stanncam_manager.display_res_w / global.game_w -// var y_scale = __obj_stanncam_manager.display_res_h / global.game_h -// x_ *= x_scale; -// y_ *= y_scale; -// draw_surface_stretched(__surf,x_,y_,__display_width,__display_height); -// } - -// /// @function draw_stretched() -// /// @param x_ position -// /// @param y_ position -// /// @param w_ width -// /// @param h_ height -// /// @description draws camera stretched -// static draw_stretched = function(x_,y_,w,h){ -// __check_surface(); -// x_ *= (__obj_stanncam_manager.display_res_w / global.game_w); -// y_ *= (__obj_stanncam_manager.display_res_h / global.game_h); -// w *= (__obj_stanncam_manager.display_res_w / global.game_w); -// h *= (__obj_stanncam_manager.display_res_h / global.game_h); -// draw_surface_stretched(__surf,x_,y_,w,h); -// } - -// /// @function draw_fill() -// /// @description draws camera to fill the entire game window -// static draw_fill = function(){ -// __check_surface(); -// draw_surface_stretched(__surf,0,0,__obj_stanncam_manager.display_res_w,__obj_stanncam_manager.display_res_h); -// } -// #endregion - -// #region Dynamic functions - -// /// @function clone(); -// /// @description returns a clone of the camera -// static clone = function(){ -// var clone = new stanncam(x,y,width,height); -// clone.spd = spd; -// clone.spd_threshold = spd_threshold; -// clone.room_constrain = room_constrain; -// clone.bounds_w = bounds_w; -// clone.bounds_h = bounds_h; -// clone.follow = follow; - -// return clone; -// } - -// /// @function set_size(_width,_height); -// /// @description sets the camera size -// /// @param width -// /// @param height -// static set_size = function(_width,_height){ -// width = _width; -// height = _height; -// __update_resolution(); -// camera_set_view_size(view_camera[cam_id],width*__zoom_amount,height*__zoom_amount); -// } - -// /// @function shake_screen(magnitude, duration); -// /// @description makes the camera shake -// /// @param magnitude -// /// @param duration in frames -// static shake_screen = function(magnitude, duration) { -// __shake_magnitude =+ magnitude; -// __shake_length =+ duration; -// __shake_time = 0; -// } - -// /// @function move(_x,_y,duration) -// /// @description moves the camera to x y -// /// @param _x -// /// @param _y -// /// @param _duration -// static move = function(_x, _y, _duration){ -// if(_duration == 0){ -// x = _x; -// y = _y; -// }else{ -// __moving = true; -// __t = 0; -// __xStart = x; -// __yStart = y; - -// __xTo = _x; -// __yTo = _y; -// __duration = _duration; -// } -// } - -// /// @function zoom(_zoom,zoom_duration) -// /// @description zooms the camera -// /// @param _zoom -// /// @param duration -// static zoom = function(_zoom, _duration){ -// if(_duration == 0){ -// __zoom_amount = _zoom; -// camera_set_view_size(view_camera[cam_id],width*_zoom,height*_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 set_speed(spd,threshold) -// /// @description changes the speed of the camera -// /// @param spd how fast the camera can move -// /// @param threshold minimum distance for the speed to have full effect -// 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 -// 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 -// static get_y = function(){ -// return camera_get_view_y(view_camera[cam_id]); -// } - -// /// @description gets the mouse x position within room relative to the camera -// static get_mouse_x = function(width_ = width){ -// return ((display_mouse_get_x() / __display_width) * width_) + get_x(); -// } - -// /// @description gets the mouse y position within room relative to the camera -// static get_mouse_y = function(height_ = height){ -// return ((display_mouse_get_y() / __display_height) * height_) + get_y(); -// } - - -// /// @func room_to_gui_x(x_) -// /// @description returns the room x position as the position on the gui relative to camera -// /// @param x_ -// function room_to_gui_x(x_){ -// return (x_-get_x())*stanncam_get_gui_scale_x()/__zoom_amount; -// } - -// /// @func room_to_gui_y(y_) -// /// @description returns the room y position as the position on the gui relative to camera -// /// @param y_ -// function room_to_gui_y(y_){ -// return (y_-get_y())*stanncam_get_gui_scale_y()/__zoom_amount; -// } - -// /// @function out_of_bounds() -// /// @param x_ position the object is temporarily moved to -// /// @param y_ position the object is temporarily moved to -// /// @param margin the margin for the camera bounds -// /// @description returns if the object is outside cam bounds -// function out_of_bounds(x_,y_,margin = 0){ -// var x_delta = x; -// var y_delta = y; - -// x = x_; -// y = y_; - -// var col = ( //uses bounding box to see if it's within the camera view -// other.bbox_left < get_x() + margin || -// other.bbox_top < get_y() + margin || -// other.bbox_right > (get_x() + (width * __zoom_amount)) - margin || -// other.bbox_bottom > (get_y() + (height * __zoom_amount)) - margin -// ) - -// x = x_delta; -// y = y_delta; - -// if(col)return true -// else return false; -// } - -// /// @function destroy() -// static destroy = function(){ -// follow = -1; -// array_set(global.stanncams,cam_id,-1); -// __obj_stanncam_manager.number_of_cams--; -// if(surface_exists(surface)) surface_free(surface); -// if(surface_exists(__surf)) surface_free(__surf); -// __destroyed = true; -// } - -// /// @function is_destroyed() -// static is_destroyed = function(){ -// return __destroyed; -// } -// #endregion - -// #region Internal functions -// //enables viewports and sets viewports size -// static __check_viewports = function(){ -// view_visible[cam_id] = true; -// set_size(width,height); -// } - -// //checks if surface exists and else creates it and attaches it -// static __check_surface = function(){ -// if (!surface_exists(__surf)){ -// __surf = surface_create(width,height); -// } - -// if (surface_available && !surface_exists(surface)){ -// surface = surface_create(width,height); -// } -// } - -// //updates cameras drawing resolution -// static __update_resolution = function(){ -// __display_width = width * (__obj_stanncam_manager.display_res_w / global.game_w); -// __display_height = height * (__obj_stanncam_manager.display_res_h / global.game_h); - -// view_set_camera(cam_id, view_camera[cam_id]); -// } - -// //clears the surface -// static __predraw = function(){ -// __check_surface(); -// if(surface_available){ -// surface_copy(surface,0,0,__surf); -// } -// surface_set_target(__surf); -// draw_clear_alpha(c_black,0); -// surface_reset_target(); -// view_set_surface_id(cam_id,__surf); -// } -// #endregion -//} \ No newline at end of file diff --git a/scripts/stanncam_old/stanncam_old.yy b/scripts/stanncam_old/stanncam_old.yy deleted file mode 100644 index 7890892..0000000 --- a/scripts/stanncam_old/stanncam_old.yy +++ /dev/null @@ -1,11 +0,0 @@ -{ - "resourceType": "GMScript", - "resourceVersion": "1.0", - "name": "stanncam_old", - "isCompatibility": false, - "isDnD": false, - "parent": { - "name": "Scripts", - "path": "folders/Scripts.yy", - }, -} \ No newline at end of file diff --git a/stanncam.resource_order b/stanncam.resource_order index 2f96ce0..94ff5fa 100644 --- a/stanncam.resource_order +++ b/stanncam.resource_order @@ -22,11 +22,9 @@ {"name":"spr_player_moving","order":11,"path":"sprites/spr_player_moving/spr_player_moving.yy",}, {"name":"demo_obj_player","order":2,"path":"objects/demo_obj_player/demo_obj_player.yy",}, {"name":"shake","order":3,"path":"scripts/shake/shake.yy",}, - {"name":"stanncam_old","order":7,"path":"scripts/stanncam_old/stanncam_old.yy",}, {"name":"spr_player_idle","order":10,"path":"sprites/spr_player_idle/spr_player_idle.yy",}, {"name":"spr_arrow","order":6,"path":"sprites/spr_arrow/spr_arrow.yy",}, {"name":"demo_obj_tv","order":18,"path":"objects/demo_obj_tv/demo_obj_tv.yy",}, - {"name":"stanncam_manager_old","order":8,"path":"scripts/stanncam_manager_old/stanncam_manager_old.yy",}, {"name":"demo_obj_ball","order":3,"path":"objects/demo_obj_ball/demo_obj_ball.yy",}, {"name":"spr_tile_bg","order":12,"path":"sprites/spr_tile_bg/spr_tile_bg.yy",}, {"name":"Room1","order":4,"path":"rooms/Room1/Room1.yy",}, diff --git a/stanncam.yyp b/stanncam.yyp index 27c0a79..9d9d446 100644 --- a/stanncam.yyp +++ b/stanncam.yyp @@ -38,12 +38,10 @@ {"id":{"name":"spr_player_moving","path":"sprites/spr_player_moving/spr_player_moving.yy",},"order":11,}, {"id":{"name":"demo_obj_player","path":"objects/demo_obj_player/demo_obj_player.yy",},"order":2,}, {"id":{"name":"shake","path":"scripts/shake/shake.yy",},"order":3,}, - {"id":{"name":"stanncam_old","path":"scripts/stanncam_old/stanncam_old.yy",},"order":7,}, {"id":{"name":"demo_f_hires","path":"fonts/demo_f_hires/demo_f_hires.yy",},"order":0,}, {"id":{"name":"spr_player_idle","path":"sprites/spr_player_idle/spr_player_idle.yy",},"order":10,}, {"id":{"name":"spr_arrow","path":"sprites/spr_arrow/spr_arrow.yy",},"order":6,}, {"id":{"name":"demo_obj_tv","path":"objects/demo_obj_tv/demo_obj_tv.yy",},"order":18,}, - {"id":{"name":"stanncam_manager_old","path":"scripts/stanncam_manager_old/stanncam_manager_old.yy",},"order":8,}, {"id":{"name":"demo_obj_ball","path":"objects/demo_obj_ball/demo_obj_ball.yy",},"order":3,}, {"id":{"name":"__obj_stanncam_manager","path":"objects/__obj_stanncam_manager/__obj_stanncam_manager.yy",},"order":0,}, {"id":{"name":"spr_tile_bg","path":"sprites/spr_tile_bg/spr_tile_bg.yy",},"order":12,},