diff --git a/objects/obj_parallax/Create_0.gml b/objects/obj_parallax/Create_0.gml index 8d03038dd..91b0c9a47 100644 --- a/objects/obj_parallax/Create_0.gml +++ b/objects/obj_parallax/Create_0.gml @@ -1,14 +1,83 @@ -bg_scroll = { - x: 0, - y: 0 +#macro CAM_X camera_get_view_x(view_camera[0]) +#macro CAM_Y camera_get_view_y(view_camera[0]) +#macro CAM_W camera_get_view_width(view_camera[0]) +#macro CAM_H camera_get_view_height(view_camera[0]) +global.parallaxLayers = {} +parallaxFactors = { + Backgrounds_1 : 0.25, + Backgrounds_2 : 0.2, + Backgrounds_2 : 0.15, + Backgrounds_scroll : 0.3, + Backgrounds_scroll1 : 0.3, + Backgrounds_scroll2 : 0.25, + Backgrounds_scroll3 : 0.2, + Backgrounds_Ground1 : 0.2, + Backgrounds_Ground2 : 0.18, + Backgrounds_Ground3 : 0.16, + Backgrounds_stillH1 : 1, + Backgrounds_stillH1 : 1 - 0.3, + Backgrounds_stillH2 : 1 - 0.35, + Backgrounds_stillH3 : 1 - 0.4, + Backgrounds_stillH4 : 1 - 0.45, + Backgrounds_H1 : 0.22, + Backgrounds_H2 : 0.11, + Foregrounds_1 : -0.15, + Foregrounds_2 : -0.25, + Foregrounds_3 : -0.35, + Foregrounds_Ground1 : -0.15, + Foregrounds_Ground2 : -0.25, + Foregrounds_Ground3 : -0.35, } +parallaxLayer = function(lay) constructor { + name = layer_get_name(lay) + factor = struct_get(other.parallaxFactors, name) ?? 0 + + bgID = layer_background_get_id(lay) + layerid = lay -l = [] -offsets = [] - -stillHfactors = { - Backgrounds_stillH1: 0.3, - Backgrounds_stillH2: 0.35, - Backgrounds_stillH3: 0.4, - Backgrounds_stillH4: 0.45 + sprite_index = layer_background_get_sprite(bgID) + image_index = layer_background_get_index(bgID) + image_speed = layer_background_get_speed(bgID) + layer_background_speed(bgID, 0) + + x_offset = layer_get_x(lay) + y_offset = layer_get_y(lay) + x = x_offset + y = y_offset + x_scroll = 0 + y_scroll = 0 + + // so you can set these like: 'global.parallaxLayers.Backgrounds_scroll.vsp = -14' or idk (if the layer exists ofc) + vsp = layer_get_vspeed(lay) + hsp = layer_get_hspeed(lay) + layer_vspeed(lay, 0) + layer_hspeed(lay, 0) + + var str = name + var i = 0 + var maxLayerCount = 5 + repeat maxLayerCount { + i++ + str = string_replace_all(str, string(i), "") + } + baseName = str + static calculateStillX = function() { + var a = max(CAM_X / (room_width - CAM_W), 1) * (sprite_get_width(sprite_index) - screen_w) + return CAM_X - a + } + static calculateStillY = function() { + var a = max(CAM_Y / (room_height - CAM_H), 1) * (sprite_get_height(sprite_index) - screen_h) + return CAM_Y - a + } + static scroll = function() { + x_scroll = (x_scroll + hsp) % sprite_get_width(sprite_index) + y_scroll = (y_scroll + vsp) % sprite_get_height(sprite_index) + } + static panicSprite = function(_bg, _panic_bg) { + if sprite_index == _bg || !sprite_exists(sprite_index) { + image_index = 0 + sprite_index = _panic_bg + } + } } + diff --git a/objects/obj_parallax/Other_4.gml b/objects/obj_parallax/Other_4.gml index 54960c374..063027232 100644 --- a/objects/obj_parallax/Other_4.gml +++ b/objects/obj_parallax/Other_4.gml @@ -1,18 +1,7 @@ -bg_scroll.x = 0 -bg_scroll.y = 0 - -offsets = [] - -l = layer_get_all() - -for (var i = 0; i < array_length(l); i++) -{ - var bg_id = l[i] - - var s = { - x: layer_get_x(bg_id), - y: layer_get_y(bg_id) - } - - array_push(offsets, s) -} +global.parallaxLayers = {} +var a = layer_get_all() +for (var i = 0; i < array_length(a); i++) { + var name = layer_get_name(a[i]) + if string_starts_with(name, "Backgrounds_") ||string_starts_with(name, "Foregrounds_") + global.parallaxLayers[$ name] = new parallaxLayer(name) +} \ No newline at end of file diff --git a/objects/obj_parallax/Step_2.gml b/objects/obj_parallax/Step_2.gml index 42362b98a..88dae15d4 100644 --- a/objects/obj_parallax/Step_2.gml +++ b/objects/obj_parallax/Step_2.gml @@ -1,104 +1,50 @@ -var camera_pos = { - x: camera_get_view_x(view_camera[0]), - y: camera_get_view_y(view_camera[0]) -} - -bg_scroll.x++ -bg_scroll.y++ - -for (var i = 0; i < array_length(l); i++) -{ - var bg_id = l[i] - - var _lay_name = layer_get_name(bg_id) - switch (_lay_name) - { - case "Backgrounds_1": - layer_x(bg_id, offsets[i].x + (camera_pos.x * 0.25)) - layer_y(bg_id, offsets[i].y + (camera_pos.y * 0.25)) - break; - case "Backgrounds_2": - layer_x(bg_id, offsets[i].x + (camera_pos.x * 0.2)) - layer_y(bg_id, offsets[i].y + (camera_pos.y * 0.2)) - break; - case "Backgrounds_3": - layer_x(bg_id, offsets[i].x + (camera_pos.x * 0.15)) - layer_y(bg_id, offsets[i].y + (camera_pos.y * 0.15)) - break; - case "Backgrounds_Ground1": - layer_x(bg_id, camera_pos.x * 0.2) - break; - case "Backgrounds_Ground2": - layer_x(bg_id, camera_pos.x * 0.18) - break; - case "Backgrounds_Ground3": - layer_x(bg_id, camera_pos.x * 0.16) - break; - case "Backgrounds_H1": - layer_x(bg_id, camera_pos.x * 0.22) - layer_y(bg_id, camera_pos.y) - break; - break; - case "Backgrounds_H2": - layer_x(bg_id, camera_pos.x * 0.11) - layer_y(bg_id, camera_pos.y) - break; - case "Backgrounds_sky": - case "Backgrounds_still": - layer_x(bg_id, camera_pos.x + (bg_scroll.x * layer_get_hspeed(bg_id))) - layer_y(bg_id, camera_pos.y + (bg_scroll.y * layer_get_vspeed(bg_id))) - break; - case "Backgrounds_stillfit": - var _spr = layer_background_get_sprite(layer_background_get_id(bg_id)) - var _dist_x = camera_pos.x / (room_width - screen_w) - var _dist_y = camera_pos.y / (room_height - screen_h) - layer_x(bg_id, camera_pos.x - (_dist_x * max(sprite_get_width(_spr) - screen_w, 0))) - layer_y(bg_id, camera_pos.y - (_dist_y * max(sprite_get_height(_spr) - screen_h, 0))) - break; - case "Backgrounds_stillH": - var _spr = layer_background_get_sprite(layer_background_get_id(bg_id)) - var _dist = camera_pos.y / (room_height - screen_h) - layer_x(bg_id, camera_pos.x) - layer_y(bg_id, camera_pos.y - (_dist * max(sprite_get_height(_spr) - screen_h, 0))) - break; - case "Backgrounds_stillH1": - case "Backgrounds_stillH2": - case "Backgrounds_stillH3": - case "Backgrounds_stillH4": - var _spr = layer_background_get_sprite(layer_background_get_id(bg_id)) - var _dist = camera_pos.y / (room_height - screen_h) - var _factor = stillHfactors[$ _lay_name] - layer_x(bg_id, camera_pos.x * _factor) - layer_y(bg_id, camera_pos.y - (_dist * max(sprite_get_height(_spr) - screen_h, 0) * (1 - _factor))) - break; - case "Backgrounds_scroll": - case "Backgrounds_scroll1": - layer_x(bg_id, (camera_pos.x * 0.3) + (bg_scroll.x * layer_get_hspeed(bg_id))) - layer_y(bg_id, (camera_pos.y * 0.3) + (bg_scroll.y * layer_get_vspeed(bg_id))) - break; - case "Backgrounds_scroll2": - layer_x(bg_id, (camera_pos.x * 0.25) + (bg_scroll.x * layer_get_hspeed(bg_id))) - layer_y(bg_id, (camera_pos.y * 0.25) + (bg_scroll.y * layer_get_vspeed(bg_id))) - break; - case "Backgrounds_scroll3": - layer_x(bg_id, (camera_pos.x * 0.2) + (bg_scroll.x * layer_get_hspeed(bg_id))) - layer_y(bg_id, (camera_pos.y * 0.2) + (bg_scroll.y * layer_get_vspeed(bg_id))) - break; - case "Foregrounds_1": - layer_x(bg_id, offsets[i].x + camera_pos.x * -0.15) - layer_y(bg_id, offsets[i].y + camera_pos.y * -0.15) - break; - case "Foregrounds_2": - layer_x(bg_id, offsets[i].x + camera_pos.x * -0.25) - layer_y(bg_id, offsets[i].y + camera_pos.y * -0.25) - break; - case "Foregrounds_3": - layer_x(bg_id, offsets[i].x + camera_pos.x * -0.35) - layer_y(bg_id, offsets[i].y + camera_pos.y * -0.35) - break; - case "Foregrounds_Ground1": - layer_x(bg_id, camera_pos.x * -0.15) - layer_y(bg_id, room_height - sprite_get_height(layer_background_get_sprite(layer_background_get_id(bg_id)))) - break; +var names = struct_get_names(global.parallaxLayers) +for (var i = 0; i < array_length(names); i++) { + with global.parallaxLayers[$ names[i]] { + switch baseName { + case "Backgrounds_scroll": + scroll() + x = (CAM_X * factor) + x_scroll + y = (CAM_Y * factor) + y_scroll + break; + case "Backgrounds_Ground": + x = CAM_X * factor + break; + case "Backgrounds_H": + x = CAM_X * factor + y = CAM_Y + break; + case "Backgrounds_sky": + scroll() + x = CAM_X + x_scroll + y = CAM_Y + y_scroll + break; + case "Backgrounds_stillfit": + x = calculateStillX() + y = calculateStillY() + break; + case "Backgrounds_stillH": + if name == "Backgrounds_stillH" { + x = CAM_X + y = calculateStillY() + } else { + x = CAM_X * factor + y = (calculateStillY() * (1 - factor)) + } + break; + case "Foregrounds_Ground": + x = CAM_X * factor + y = room_height - sprite_get_height(sprite_index) + break; + default: + x = x_offset + CAM_X * factor + y = y_offset + CAM_Y * factor + } + image_index += image_speed + image_index %= sprite_get_number(sprite_index) + layer_x(layerid, x) + layer_y(layerid, y) + layer_background_index(bgID, image_index) + layer_background_sprite(bgID, sprite_index) } } \ No newline at end of file diff --git a/sprites/bg_towerhall/bg_towerhall.yy b/sprites/bg_towerhall/bg_towerhall.yy index 009194aac..667164719 100644 --- a/sprites/bg_towerhall/bg_towerhall.yy +++ b/sprites/bg_towerhall/bg_towerhall.yy @@ -72,8 +72,8 @@ }, "name":"bg_towerhall", "playback":1, - "playbackSpeed":20.0, - "playbackSpeedType":0, + "playbackSpeed":1.0, + "playbackSpeedType":1, "resourceType":"GMSequence", "resourceVersion":"2.0", "showBackdrop":true, @@ -81,20 +81,48 @@ "timeUnits":1, "tracks":[ {"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore":"","Keyframes":[ - {"$Keyframe":"","Channels":{"0":{"$SpriteFrameKeyframe":"","Id":{"name":"30ffa72d-a818-4e8d-91b3-cc458f3ac0ac","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},},"Disabled":false,"id":"552b1b2d-493e-49e0-8b1b-c1ddac1bd0ad","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, - {"$Keyframe":"","Channels":{"0":{"$SpriteFrameKeyframe":"","Id":{"name":"d187b519-2ae5-4fc5-864e-e9f9ec449380","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},},"Disabled":false,"id":"107388e1-b9cf-4b6a-9c4a-da722e7deed6","IsCreationKey":false,"Key":1.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, - {"$Keyframe":"","Channels":{"0":{"$SpriteFrameKeyframe":"","Id":{"name":"c6941724-b79d-4835-b19e-edd8776c51d2","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},},"Disabled":false,"id":"8907dc3e-90b8-438b-9619-7e35f6cc49d2","IsCreationKey":false,"Key":2.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, - {"$Keyframe":"","Channels":{"0":{"$SpriteFrameKeyframe":"","Id":{"name":"53662421-6e0d-49aa-b311-b258966ec75c","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},},"Disabled":false,"id":"973cdc6d-f554-4b90-9c42-1ead3a5e394b","IsCreationKey":false,"Key":3.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, - {"$Keyframe":"","Channels":{"0":{"$SpriteFrameKeyframe":"","Id":{"name":"3787aa8f-efb9-4ee2-a6e0-31ada0485704","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},},"Disabled":false,"id":"159f43c1-7675-4b9b-a83b-6ef35964d44e","IsCreationKey":false,"Key":4.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, - {"$Keyframe":"","Channels":{"0":{"$SpriteFrameKeyframe":"","Id":{"name":"071f150c-0f17-4b1c-b513-6df7d32bf8e9","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},},"Disabled":false,"id":"07ab2c6e-67ad-4c7c-90f8-279099f3e08f","IsCreationKey":false,"Key":5.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, - {"$Keyframe":"","Channels":{"0":{"$SpriteFrameKeyframe":"","Id":{"name":"ce60e995-5bb3-4c02-907e-6a51e85c6dbf","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},},"Disabled":false,"id":"2862b4c5-81d8-414c-b6e0-36a74755bf42","IsCreationKey":false,"Key":6.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, - {"$Keyframe":"","Channels":{"0":{"$SpriteFrameKeyframe":"","Id":{"name":"a18d6287-190d-4e63-a0a1-a63620a023d8","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},},"Disabled":false,"id":"a6d45ecf-6496-46ae-adc8-039c5b7949d6","IsCreationKey":false,"Key":7.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, - {"$Keyframe":"","Channels":{"0":{"$SpriteFrameKeyframe":"","Id":{"name":"9e7f5528-5ba0-4497-a9f6-c47a22dd76a1","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},},"Disabled":false,"id":"c6cafa28-83b2-4c6d-aea3-91cc5b0c49ee","IsCreationKey":false,"Key":8.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, - {"$Keyframe":"","Channels":{"0":{"$SpriteFrameKeyframe":"","Id":{"name":"f0319e5c-b904-4a87-bb6c-625a251c3a6c","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},},"Disabled":false,"id":"53bfb170-51b8-4626-bc6f-dd37ad0e6315","IsCreationKey":false,"Key":9.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, - {"$Keyframe":"","Channels":{"0":{"$SpriteFrameKeyframe":"","Id":{"name":"bdee77a6-9aff-402a-b8e9-9e323aba8a85","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},},"Disabled":false,"id":"749080cb-f6e5-4b0b-87a8-a559749e0e6a","IsCreationKey":false,"Key":10.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, - {"$Keyframe":"","Channels":{"0":{"$SpriteFrameKeyframe":"","Id":{"name":"ade13191-1dce-4c34-ba73-0106132646dd","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},},"Disabled":false,"id":"29344b0e-5e73-453e-98a7-52148db260cd","IsCreationKey":false,"Key":11.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, - {"$Keyframe":"","Channels":{"0":{"$SpriteFrameKeyframe":"","Id":{"name":"02b4cabe-5daf-437f-85bf-f9f52feef860","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},},"Disabled":false,"id":"25548222-f549-4a34-b62f-8535bb19a6c4","IsCreationKey":false,"Key":12.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, - {"$Keyframe":"","Channels":{"0":{"$SpriteFrameKeyframe":"","Id":{"name":"fc7723ed-237f-4566-8266-709c2e887961","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},},"Disabled":false,"id":"e6b626cb-f533-465a-9cb4-f663f8fbeab5","IsCreationKey":false,"Key":13.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + {"$Keyframe":"","Channels":{ + "0":{"$SpriteFrameKeyframe":"","Id":{"name":"30ffa72d-a818-4e8d-91b3-cc458f3ac0ac","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, + },"Disabled":false,"id":"552b1b2d-493e-49e0-8b1b-c1ddac1bd0ad","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + {"$Keyframe":"","Channels":{ + "0":{"$SpriteFrameKeyframe":"","Id":{"name":"d187b519-2ae5-4fc5-864e-e9f9ec449380","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, + },"Disabled":false,"id":"107388e1-b9cf-4b6a-9c4a-da722e7deed6","IsCreationKey":false,"Key":1.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + {"$Keyframe":"","Channels":{ + "0":{"$SpriteFrameKeyframe":"","Id":{"name":"c6941724-b79d-4835-b19e-edd8776c51d2","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, + },"Disabled":false,"id":"8907dc3e-90b8-438b-9619-7e35f6cc49d2","IsCreationKey":false,"Key":2.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + {"$Keyframe":"","Channels":{ + "0":{"$SpriteFrameKeyframe":"","Id":{"name":"53662421-6e0d-49aa-b311-b258966ec75c","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, + },"Disabled":false,"id":"973cdc6d-f554-4b90-9c42-1ead3a5e394b","IsCreationKey":false,"Key":3.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + {"$Keyframe":"","Channels":{ + "0":{"$SpriteFrameKeyframe":"","Id":{"name":"3787aa8f-efb9-4ee2-a6e0-31ada0485704","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, + },"Disabled":false,"id":"159f43c1-7675-4b9b-a83b-6ef35964d44e","IsCreationKey":false,"Key":4.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + {"$Keyframe":"","Channels":{ + "0":{"$SpriteFrameKeyframe":"","Id":{"name":"071f150c-0f17-4b1c-b513-6df7d32bf8e9","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, + },"Disabled":false,"id":"07ab2c6e-67ad-4c7c-90f8-279099f3e08f","IsCreationKey":false,"Key":5.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + {"$Keyframe":"","Channels":{ + "0":{"$SpriteFrameKeyframe":"","Id":{"name":"ce60e995-5bb3-4c02-907e-6a51e85c6dbf","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, + },"Disabled":false,"id":"2862b4c5-81d8-414c-b6e0-36a74755bf42","IsCreationKey":false,"Key":6.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + {"$Keyframe":"","Channels":{ + "0":{"$SpriteFrameKeyframe":"","Id":{"name":"a18d6287-190d-4e63-a0a1-a63620a023d8","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, + },"Disabled":false,"id":"a6d45ecf-6496-46ae-adc8-039c5b7949d6","IsCreationKey":false,"Key":7.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + {"$Keyframe":"","Channels":{ + "0":{"$SpriteFrameKeyframe":"","Id":{"name":"9e7f5528-5ba0-4497-a9f6-c47a22dd76a1","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, + },"Disabled":false,"id":"c6cafa28-83b2-4c6d-aea3-91cc5b0c49ee","IsCreationKey":false,"Key":8.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + {"$Keyframe":"","Channels":{ + "0":{"$SpriteFrameKeyframe":"","Id":{"name":"f0319e5c-b904-4a87-bb6c-625a251c3a6c","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, + },"Disabled":false,"id":"53bfb170-51b8-4626-bc6f-dd37ad0e6315","IsCreationKey":false,"Key":9.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + {"$Keyframe":"","Channels":{ + "0":{"$SpriteFrameKeyframe":"","Id":{"name":"bdee77a6-9aff-402a-b8e9-9e323aba8a85","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, + },"Disabled":false,"id":"749080cb-f6e5-4b0b-87a8-a559749e0e6a","IsCreationKey":false,"Key":10.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + {"$Keyframe":"","Channels":{ + "0":{"$SpriteFrameKeyframe":"","Id":{"name":"ade13191-1dce-4c34-ba73-0106132646dd","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, + },"Disabled":false,"id":"29344b0e-5e73-453e-98a7-52148db260cd","IsCreationKey":false,"Key":11.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + {"$Keyframe":"","Channels":{ + "0":{"$SpriteFrameKeyframe":"","Id":{"name":"02b4cabe-5daf-437f-85bf-f9f52feef860","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, + },"Disabled":false,"id":"25548222-f549-4a34-b62f-8535bb19a6c4","IsCreationKey":false,"Key":12.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + {"$Keyframe":"","Channels":{ + "0":{"$SpriteFrameKeyframe":"","Id":{"name":"fc7723ed-237f-4566-8266-709c2e887961","path":"sprites/bg_towerhall/bg_towerhall.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, + },"Disabled":false,"id":"e6b626cb-f533-465a-9cb4-f663f8fbeab5","IsCreationKey":false,"Key":13.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, ],"resourceType":"KeyframeStore","resourceVersion":"2.0",},"modifiers":[],"name":"frames","resourceType":"GMSpriteFramesTrack","resourceVersion":"2.0","spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, ], "visibleRange":null,