diff --git a/Alens/Export/movementSystem-0.0.2.zip b/Alens/Export/movementSystem-0.0.2.zip new file mode 100644 index 0000000..92a60a7 Binary files /dev/null and b/Alens/Export/movementSystem-0.0.2.zip differ diff --git a/Alens/default_env.tres b/Alens/default_env.tres new file mode 100644 index 0000000..20207a4 --- /dev/null +++ b/Alens/default_env.tres @@ -0,0 +1,7 @@ +[gd_resource type="Environment" load_steps=2 format=2] + +[sub_resource type="ProceduralSky" id=1] + +[resource] +background_mode = 2 +background_sky = SubResource( 1 ) diff --git a/Alens/export_presets.cfg b/Alens/export_presets.cfg new file mode 100644 index 0000000..3b20b71 --- /dev/null +++ b/Alens/export_presets.cfg @@ -0,0 +1,41 @@ +[preset.0] + +name="Windows Desktop" +platform="Windows Desktop" +runnable=true +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="Export/runMe.exe" +script_export_mode=1 +script_encryption_key="" + +[preset.0.options] + +custom_template/debug="" +custom_template/release="" +binary_format/64_bits=true +binary_format/embed_pck=false +texture_format/bptc=false +texture_format/s3tc=true +texture_format/etc=false +texture_format/etc2=false +texture_format/no_bptc_fallbacks=true +codesign/enable=false +codesign/identity_type=0 +codesign/identity="" +codesign/password="" +codesign/timestamp=true +codesign/timestamp_server_url="" +codesign/digest_algorithm=1 +codesign/description="" +codesign/custom_options=PoolStringArray( ) +application/icon="" +application/file_version="" +application/product_version="" +application/company_name="" +application/product_name="" +application/file_description="" +application/copyright="" +application/trademarks="" diff --git a/Alens/icon.png b/Alens/icon.png new file mode 100644 index 0000000..c98fbb6 Binary files /dev/null and b/Alens/icon.png differ diff --git a/Alens/icon.png.import b/Alens/icon.png.import new file mode 100644 index 0000000..96cbf46 --- /dev/null +++ b/Alens/icon.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.png" +dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/Alens/project.godot b/Alens/project.godot new file mode 100644 index 0000000..d8f36f4 --- /dev/null +++ b/Alens/project.godot @@ -0,0 +1,55 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=4 + +[application] + +config/name="Game Project" +run/main_scene="res://root/levels/testing_grounds/test_level.tscn" +config/icon="res://icon.png" + +[display] + +window/size/height=571 +window/size/resizable=false + +[input] + +inpt_up={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777232,"unicode":0,"echo":false,"script":null) + ] +} +inpt_down={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777234,"unicode":0,"echo":false,"script":null) + ] +} +inpt_left={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777231,"unicode":0,"echo":false,"script":null) + ] +} +inpt_right={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777233,"unicode":0,"echo":false,"script":null) + ] +} + +[physics] + +common/enable_pause_aware_picking=true + +[rendering] + +environment/default_environment="res://default_env.tres" diff --git a/Alens/root/entities/assets/player_model/player_body_sprite.png b/Alens/root/entities/assets/player_model/player_body_sprite.png new file mode 100644 index 0000000..b450311 Binary files /dev/null and b/Alens/root/entities/assets/player_model/player_body_sprite.png differ diff --git a/Alens/root/entities/assets/player_model/player_body_sprite.png.import b/Alens/root/entities/assets/player_model/player_body_sprite.png.import new file mode 100644 index 0000000..ae296d8 --- /dev/null +++ b/Alens/root/entities/assets/player_model/player_body_sprite.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/player_body_sprite.png-ca376f69b8d959b76cb0f20ccc2a4243.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://root/entities/assets/player_model/player_body_sprite.png" +dest_files=[ "res://.import/player_body_sprite.png-ca376f69b8d959b76cb0f20ccc2a4243.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/Alens/root/entities/characters/player/behaviours/handlers/character_handler.gd b/Alens/root/entities/characters/player/behaviours/handlers/character_handler.gd new file mode 100644 index 0000000..dd4ea27 --- /dev/null +++ b/Alens/root/entities/characters/player/behaviours/handlers/character_handler.gd @@ -0,0 +1,158 @@ +extends KinematicBody2D + +# Node-Debug-Settings {} Debug element + + +# != Node Exportable settings +export var debugMode = false +export var onGround = false +export var rotationalStep = 1 +export var rotationalQuotient = 1.35 +export var movementSpeedQuotient = 50 +export var exponQuotient = 4 + +# !!= Node Importables +export var gravityQuotient = 25 +export var materialFrictionQuotient = 75 +export var environmentAirFrictionQuotient = 100 + +# != Node settings and trackers +var nodeVectoralOffset = 0 +var nodeVectoralmax = 0 +var nodeActiveRotation = 0 +var nodeDebug = {"vectors":{"casts":{}}} +var velocityVector = Vector2() +var maximumMovementSpeed = 120 +var colliderRotation = 0 + +func _ready(): + # Acquire and set definitive settings + nodeVectoralOffset = $player_body_sprite.texture.get_width() / 2 * $player_body_sprite.scale.x + nodeVectoralmax = $player_body_sprite.texture.get_height() * $player_body_sprite.scale.y + set_process(true) # {} Debug element + +# warning-ignore:unused_argument +func _process(d): + var client = acquire_client() + var vdir = acquire_vdir(client) + # Update the canvas {} Debug element + update() + if onGround == false: + for type in range(0,vdir.size()): + for vector in range(vdir[str(type)].size()): + if "onGround" in vdir[str(type)][str(vector)]["ray"]: + onGround = false + else: + onGround = true + +func acquire_client(): + var state = { + "globalPos": global_transform.origin, + "rotation": nodeActiveRotation + } + return state + +# Requires an Client element to process +func acquire_vdir(client): + var vdir = { + "0": { + "0": { + "start": Vector2(0,0)+client["globalPos"], + "end": Vector2(0,nodeVectoralmax).rotated(deg2rad(nodeActiveRotation))+client["globalPos"] + }, + "1": { + "start": Vector2(nodeVectoralOffset,0).rotated(deg2rad(nodeActiveRotation))+client["globalPos"], + "end": Vector2(nodeVectoralOffset,nodeVectoralmax).rotated(deg2rad(nodeActiveRotation))+client["globalPos"] + }, + "2": { + "start": Vector2(-nodeVectoralOffset,0).rotated(deg2rad(nodeActiveRotation))+client["globalPos"], + "end": Vector2(-nodeVectoralOffset,nodeVectoralmax).rotated(deg2rad(nodeActiveRotation))+client["globalPos"] + } + } + } + var sState = get_world_2d().direct_space_state + for type in range(0,vdir.size()): + for vector in range(vdir[str(type)].size()): + vdir[str(type)][str(vector)]["ray"] = sState.intersect_ray(vdir[str(type)][str(vector)]["start"], vdir[str(type)][str(vector)]["end"], [self]) + if "position" in vdir[str(type)][str(vector)]["ray"]: + ray_prcs(vdir[str(type)][str(vector)], str(vector), client) + else: + vdir[str(type)][str(vector)]["ray"] = {"position":Vector2(0,nodeVectoralmax).rotated(deg2rad(nodeActiveRotation)) + vdir[str(type)][str(vector)]["start"], "onGround": false} + ray_prcs(vdir[str(type)][str(vector)], str(vector), client) + adj_rot(vdir, client) + return vdir + +func get_inpt(): + var inpt = { + "up": false, + "down": false, + "left": false, + "left-f": 0, + "right": false, + "right-f": 0 + } + if Input.is_action_pressed("inpt_up"): + inpt["up"] = true + if Input.is_action_pressed("inpt_down"): + inpt["down"] = true + if Input.is_action_pressed("inpt_left"): + inpt["left"] = true + inpt["left-f"] = Input.get_action_strength("inpt_left") + if Input.is_action_pressed("inpt_right"): + inpt["right"] = true + inpt["right-f"] = Input.get_action_strength("inpt_right") + return inpt + +func _physics_process(delta): + var naturalInput = get_inpt() + var movementDirection = naturalInput["right-f"] - naturalInput["left-f"] + var movementSpeed = movementDirection * movementSpeedQuotient + var movementResistanceQuotient = materialFrictionQuotient + environmentAirFrictionQuotient + if onGround == true: + if abs(movementSpeed) < movementSpeedQuotient * 0.1: + velocityVector.x = move_toward(velocityVector.x, 0, movementResistanceQuotient * delta) + else: + velocityVector.x += movementSpeed * delta * exponQuotient + velocityVector.x = clamp(velocityVector.x, -maximumMovementSpeed, maximumMovementSpeed) + velocityVector.y += gravityQuotient * delta + velocityVector.y = clamp(velocityVector.y, -maximumMovementSpeed, maximumMovementSpeed) + move_and_slide(velocityVector.rotated(deg2rad(nodeActiveRotation))) + sprite_rot() + else: + gravityQuotient = gravityQuotient * exponQuotient + velocityVector.y += gravityQuotient * delta + velocityVector.y = clamp(velocityVector.y, -maximumMovementSpeed, maximumMovementSpeed) + if movementDirection == 0: + nodeActiveRotation = move_toward(nodeActiveRotation, 0, rotationalStep) + else: + nodeActiveRotation += rotationalStep * movementDirection + move_and_slide(velocityVector.rotated(deg2rad(0))) + sprite_rot() + pass + +func adj_rot(vdir, client): + var positiveNodeRayl = (vdir["0"]["1"]["start"] - vdir["0"]["1"]["ray"].position).distance_to(vdir["0"]["1"]["start"] - client["globalPos"]) + var negativeNodeRayl = (vdir["0"]["2"]["start"] - vdir["0"]["2"]["ray"].position).distance_to(vdir["0"]["1"]["start"] - client["globalPos"]) + var nodeRayDiff = positiveNodeRayl - negativeNodeRayl + if nodeRayDiff > rotationalQuotient: + nodeActiveRotation += rotationalStep + if nodeRayDiff < -rotationalQuotient: + nodeActiveRotation -= rotationalStep + pass + +func ray_prcs(vdirel, id, client): + nodeDebug["vectors"]["casts"][id] = {"start": vdirel["start"]-client["globalPos"],"end":vdirel["ray"].position-client["globalPos"]} + pass + +func sprite_rot(): + var spriteOffsetDistance = sqrt(pow($player_body_sprite.position.x,2) + pow($player_body_sprite.position.y,2)) + var spriteOffsetVector = Vector2(0,spriteOffsetDistance).rotated(deg2rad(nodeActiveRotation)) + $player_body_sprite.position = spriteOffsetVector + $player_body_sprite.rotation_degrees = nodeActiveRotation + pass + +func _draw(): # {} Debug element + if debugMode == true: + for vector in range(0,nodeDebug["vectors"]["casts"].size()): + draw_line(nodeDebug["vectors"]["casts"][str(vector)]["start"], nodeDebug["vectors"]["casts"][str(vector)]["end"], Color(255,255,255), 1) + pass diff --git a/Alens/root/entities/characters/player/player_node.tscn b/Alens/root/entities/characters/player/player_node.tscn new file mode 100644 index 0000000..ddcfb35 --- /dev/null +++ b/Alens/root/entities/characters/player/player_node.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://root/entities/characters/player/behaviours/handlers/character_handler.gd" type="Script" id=1] +[ext_resource path="res://root/entities/assets/player_model/player_body_sprite.png" type="Texture" id=2] + +[sub_resource type="CircleShape2D" id=1] +radius = 21.1957 + +[node name="player_node" type="Node2D"] + +[node name="player_body" type="KinematicBody2D" parent="."] +script = ExtResource( 1 ) +debugMode = true + +[node name="player_body_sprite" type="Sprite" parent="player_body"] +position = Vector2( -0.134926, -0.204243 ) +scale = Vector2( 0.10262, 0.10262 ) +texture = ExtResource( 2 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="player_body"] +position = Vector2( 0.0618744, -0.136429 ) +shape = SubResource( 1 ) diff --git a/Alens/root/levels/testing_grounds/terrain_over_sprite.png b/Alens/root/levels/testing_grounds/terrain_over_sprite.png new file mode 100644 index 0000000..9d71535 Binary files /dev/null and b/Alens/root/levels/testing_grounds/terrain_over_sprite.png differ diff --git a/Alens/root/levels/testing_grounds/terrain_over_sprite.png.import b/Alens/root/levels/testing_grounds/terrain_over_sprite.png.import new file mode 100644 index 0000000..91a6fa8 --- /dev/null +++ b/Alens/root/levels/testing_grounds/terrain_over_sprite.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/terrain_over_sprite.png-4e9b57afa43b4dfcbcdb561256697281.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://root/levels/testing_grounds/terrain_over_sprite.png" +dest_files=[ "res://.import/terrain_over_sprite.png-4e9b57afa43b4dfcbcdb561256697281.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/Alens/root/levels/testing_grounds/terrain_sprite.png b/Alens/root/levels/testing_grounds/terrain_sprite.png new file mode 100644 index 0000000..11fc3a8 Binary files /dev/null and b/Alens/root/levels/testing_grounds/terrain_sprite.png differ diff --git a/Alens/root/levels/testing_grounds/terrain_sprite.png.import b/Alens/root/levels/testing_grounds/terrain_sprite.png.import new file mode 100644 index 0000000..81e2961 --- /dev/null +++ b/Alens/root/levels/testing_grounds/terrain_sprite.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/terrain_sprite.png-ccbe69d660361679049cfccfc6ea59a6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://root/levels/testing_grounds/terrain_sprite.png" +dest_files=[ "res://.import/terrain_sprite.png-ccbe69d660361679049cfccfc6ea59a6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/Alens/root/levels/testing_grounds/test_level.tscn b/Alens/root/levels/testing_grounds/test_level.tscn new file mode 100644 index 0000000..9dcece1 --- /dev/null +++ b/Alens/root/levels/testing_grounds/test_level.tscn @@ -0,0 +1,27 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://root/entities/characters/player/player_node.tscn" type="PackedScene" id=1] +[ext_resource path="res://root/levels/testing_grounds/terrain_sprite.png" type="Texture" id=2] +[ext_resource path="res://root/levels/testing_grounds/windowController.gd" type="Script" id=3] +[ext_resource path="res://root/levels/testing_grounds/terrain_over_sprite.png" type="Texture" id=4] + +[node name="Node2D" type="Node2D"] +script = ExtResource( 3 ) + +[node name="StaticBody2D" type="StaticBody2D" parent="."] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="StaticBody2D"] +polygon = PoolVector2Array( 69.3387, 499.79, 68.3921, 502.574, 63.5834, 510.372, 57.4869, 519.937, 53.3875, 529.187, 50.3392, 539.383, 48.3421, 550.104, 47.9217, 562.823, 50.129, 577.959, 53.2824, 588.575, 57.9073, 597.615, 62.4271, 605.288, 68.1032, 612.33, 77.353, 621.685, 86.0773, 627.677, 95.9579, 633.353, 107.73, 637.557, 114.949, 640.063, 120.344, 646.702, 124.864, 653.114, 131.17, 661.733, 136.741, 669.091, 143.048, 676.659, 151.037, 685.803, 156.818, 692.215, 166.383, 701.044, 172.9, 707.351, 177.945, 711.661, 187.721, 719.229, 197.811, 726.797, 206.851, 733.104, 215.786, 738.885, 229.345, 746.768, 241.643, 752.549, 250.157, 756.754, 258.987, 760.538, 269.288, 764.427, 280.955, 768.526, 293.568, 771.785, 306.708, 775.148, 318.795, 777.566, 327.52, 779.143, 337.61, 780.404, 344.022, 780.614, 347.07, 781.77, 353.693, 781.14, 361.155, 782.296, 368.724, 781.98, 377.343, 782.611, 384.49, 781.14, 392.269, 781.875, 401.308, 780.088, 407.72, 780.194, 418.336, 779.143, 431.896, 776.2, 438.413, 775.043, 444.825, 771.68, 455.441, 770.629, 459.33, 768.211, 468.79, 766.004, 473.31, 764.007, 478.881, 762.64, 490.25, 756.875, 502.875, 752.875, 511.25, 746.625, 522.875, 741.875, 526.875, 737, 537.25, 732.5, 542.125, 727.5, 551.125, 722.625, 562.375, 712.875, 571.25, 706.25, 576.5, 696.375, 588.125, 690.75, 593, 683.375, 599.875, 678.375, 605.25, 668.25, 613.25, 661.25, 616.625, 655.875, 628.125, 649, 642.125, 642.375, 656.625, 638.375, 670, 636.875, 682.75, 637.5, 697.778, 640.035, 712.792, 645.981, 725.873, 654.751, 734.049, 662.332, 746.535, 678.089, 763.332, 695.481, 780.427, 711.832, 797.671, 725.062, 818.184, 738.738, 840.63, 751.521, 861.887, 760.887, 880.469, 767.873, 901.429, 773.819, 925.51, 778.576, 940.978, 781.138, 947.378, 783.183, 950.677, 784.173, 955.388, 788.387, 959.997, 796.562, 968.321, 806.671, 976.199, 814.698, 987.051, 821.684, 997.457, 827.333, 1006.23, 830.752, 1022.28, 833.577, 1039.67, 832.982, 1051.12, 830.306, 1062.57, 826.739, 1071.48, 821.536, 1078.21, 818.088, 1082.17, 817.378, 1085.78, 818.739, 1091.4, 823.022, 1104.93, 833.131, 1118.46, 839.969, 1130.35, 843.09, 1143.13, 844.725, 1159.19, 844.428, 1172.12, 841.306, 1188.03, 833.874, 1200.07, 825.401, 1211.81, 813.955, 1219.99, 801.319, 1225.34, 788.982, 1228.61, 776.792, 1229.2, 764.454, 1228.46, 751.67, 1226.53, 740.373, 1222.4, 728.861, 1215.23, 715.679, 1205.05, 703.832, 1196.71, 697.167, 1194.05, 692.678, 1194.61, 688.258, 1198.87, 682.475, 1210.89, 667.625, 1220.57, 655.277, 1227.07, 645.433, 1232.75, 636.423, 1239.75, 623.575, 1246.76, 610.227, 1252.77, 596.878, 1261.28, 574.352, 1267.62, 552.828, 1272.62, 526.966, 1274.79, 508.111, 1276.3, 489.423, 1276.3, 472.07, 1275.63, 452.882, 1274.13, 439.199, 1271.62, 424.516, 1267.95, 404.66, 1260.78, 382.469, 1254.27, 364.114, 1245.76, 345.76, 1233.75, 321.733, 1218.73, 299.208, 1200.04, 276.849, 1183.36, 259.496, 1166.17, 243.812, 1148.48, 231.131, 1130.46, 218.95, 1118.62, 212.276, 1099.43, 202.432, 1073.57, 192.087, 1049.2, 184.578, 1027.51, 179.74, 1023.41, 179.15, 1021.29, 178.092, 1021.74, 175.642, 1024.01, 169.728, 1028.68, 152.375, 1029.18, 135.189, 1028.68, 128.348, 1023.51, 110.662, 1013.83, 91.807, 1004.65, 82.1294, 988.969, 69.949, 971.283, 62.1068, 949.091, 57.6017, 932.406, 59.1034, 915.053, 64.1091, 902.038, 71.6176, 892.193, 79.2929, 884.017, 88.1362, 877.343, 96.8127, 871.336, 107.658, 867.165, 118.838, 864.996, 132.019, 864.829, 132.686, 864.329, 150.039, 868.667, 166.224, 874.507, 180.407, 878.239, 186.583, 878.895, 189.111, 877.303, 191.546, 873.839, 193.088, 859.823, 198.594, 841.136, 206.436, 821.28, 217.783, 811.936, 222.955, 798.921, 231.298, 791.079, 238.973, 781.068, 246.648, 768.22, 256.827, 758.542, 268.173, 740.522, 287.361, 732.513, 295.036, 723.002, 303.045, 707.985, 311.054, 694.637, 314.892, 678.953, 317.395, 666.105, 317.061, 649.419, 314.892, 634.736, 308.718, 622.889, 302.211, 612.211, 293.034, 606.037, 286.86, 595.692, 274.513, 593.009, 271.304, 591.5, 269.5, 591.875, 267.625, 594.357, 264.168, 600.864, 258.996, 603.5, 256.25, 606.75, 255.125, 610.25, 255.875, 615.714, 258.996, 629.23, 265.002, 645.748, 268.339, 659.764, 269.674, 673.78, 267.005, 686.461, 263.501, 698.975, 256.993, 712.824, 245.314, 722.168, 235.302, 729.343, 223.956, 735.349, 207.938, 738.52, 192.421, 737.519, 175.401, 733.011, 155.955, 724.678, 140.676, 710.788, 124.802, 697.097, 115.675, 681.223, 108.531, 663.364, 104.364, 643.72, 104.96, 627.449, 109.325, 614.353, 116.27, 603.043, 124.008, 596.715, 128.401, 592.927, 129.944, 587.625, 128.5, 579.036, 123.77, 563.16, 118.452, 543.119, 116.071, 523.276, 118.849, 512.164, 122.024, 498.473, 128.969, 487.758, 138.295, 479.821, 146.827, 471.09, 159.13, 466.526, 169.448, 462.722, 182.512, 460.735, 186.22, 454.908, 185.823, 436.961, 181.949, 419.896, 178.178, 390.133, 175.401, 365.528, 175.004, 351.043, 176.194, 330.208, 177.782, 309.374, 181.353, 289.928, 186.711, 276.832, 190.481, 255.997, 197.624, 247.159, 201.513, 242.298, 201.955, 239.292, 199.303, 237.544, 193.06, 231.194, 179.171, 222.067, 164.884, 210.161, 153.772, 196.271, 145.835, 184.366, 140.081, 164.523, 135.319, 134.759, 139.486, 122.656, 143.653, 106.583, 154.566, 93.487, 167.067, 86.3437, 177.782, 79.5973, 192.465, 76.8193, 206.752, 75.0335, 225.007, 78.8036, 241.079, 85.1532, 256.358, 93.0902, 269.851, 105.194, 281.756, 117.695, 290.884, 121.636, 293.152, 125.208, 294.64, 126.994, 295.434, 127.788, 297.12, 126.994, 300.692, 125.307, 303.569, 119.679, 312.116, 111.544, 327.791, 100.829, 346.642, 93.8839, 360.531, 87.9311, 377.199, 83.5658, 390.097, 79.3988, 402.994, 76.4225, 417.678, 74.4382, 430.575, 71.8587, 450.418, 69.8744, 475.618, 69.8955, 495.836, 69.3943, 498.955, -0.566498, 498.238, 0.196342, -1.6028, 1361.76, -1.08597, 1362.15, 988.738, -1.07906, 989.486, -0.39537, 499.509 ) + +[node name="terrain_sprite" type="Sprite" parent="StaticBody2D"] +position = Vector2( 680.927, 494.163 ) +scale = Vector2( 0.161054, 0.161054 ) +texture = ExtResource( 2 ) + +[node name="player_node" parent="." instance=ExtResource( 1 )] +position = Vector2( 710.431, 433.494 ) + +[node name="terrain_over_sprite" type="Sprite" parent="."] +position = Vector2( 679.572, 491.156 ) +scale = Vector2( 0.160598, 0.159586 ) +texture = ExtResource( 4 ) diff --git a/Alens/root/levels/testing_grounds/windowController.gd b/Alens/root/levels/testing_grounds/windowController.gd new file mode 100644 index 0000000..5e80242 --- /dev/null +++ b/Alens/root/levels/testing_grounds/windowController.gd @@ -0,0 +1,7 @@ +extends Node2D + +func _ready(): + var windowExpectedWidth = $StaticBody2D/terrain_sprite.texture.get_width() * $StaticBody2D/terrain_sprite.scale.x + var windowExpectedHeight = $StaticBody2D/terrain_sprite.texture.get_height() * $StaticBody2D/terrain_sprite.scale.y + OS.set_window_size(Vector2(windowExpectedWidth, windowExpectedHeight)) + pass