diff --git a/assets/contraption/Gate.png b/assets/contraption/Gate.png index 2ef8dfb..b72b979 100644 Binary files a/assets/contraption/Gate.png and b/assets/contraption/Gate.png differ diff --git a/assets/environment/background/Spaceship-Wall-Menu.png b/assets/environment/background/Spaceship-Wall-Menu.png new file mode 100644 index 0000000..0884a6b Binary files /dev/null and b/assets/environment/background/Spaceship-Wall-Menu.png differ diff --git a/assets/environment/background/Spaceship-Wall-Menu.png.import b/assets/environment/background/Spaceship-Wall-Menu.png.import new file mode 100644 index 0000000..2e604a9 --- /dev/null +++ b/assets/environment/background/Spaceship-Wall-Menu.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Spaceship-Wall-Menu.png-6aacac7afef4824c9914684347d2d864.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/environment/background/Spaceship-Wall-Menu.png" +dest_files=[ "res://.import/Spaceship-Wall-Menu.png-6aacac7afef4824c9914684347d2d864.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=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/assets/environment/background/Spaceship-Wall.png b/assets/environment/background/Spaceship-Wall.png index fcbeff1..6c84e49 100644 Binary files a/assets/environment/background/Spaceship-Wall.png and b/assets/environment/background/Spaceship-Wall.png differ diff --git a/assets/environment/decor/grass-roots.aseprite b/assets/environment/decor/grass-roots.aseprite new file mode 100644 index 0000000..8c9e84b Binary files /dev/null and b/assets/environment/decor/grass-roots.aseprite differ diff --git a/assets/environment/decor/grass-roots.png b/assets/environment/decor/grass-roots.png new file mode 100644 index 0000000..1a615b7 Binary files /dev/null and b/assets/environment/decor/grass-roots.png differ diff --git a/assets/environment/decor/grass-roots.png.import b/assets/environment/decor/grass-roots.png.import new file mode 100644 index 0000000..d9793e1 --- /dev/null +++ b/assets/environment/decor/grass-roots.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/grass-roots.png-f055a24e07bc0ff43d5fac7c06fefc15.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/environment/decor/grass-roots.png" +dest_files=[ "res://.import/grass-roots.png-f055a24e07bc0ff43d5fac7c06fefc15.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=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/assets/neutral object/coin_pixelized.aseprite b/assets/neutral object/coin_pixelized.aseprite new file mode 100644 index 0000000..3fab549 Binary files /dev/null and b/assets/neutral object/coin_pixelized.aseprite differ diff --git a/assets/neutral object/coin_pixelized.png b/assets/neutral object/coin_pixelized.png new file mode 100644 index 0000000..4ee5a5d Binary files /dev/null and b/assets/neutral object/coin_pixelized.png differ diff --git a/assets/neutral object/coin_pixelized.png.import b/assets/neutral object/coin_pixelized.png.import new file mode 100644 index 0000000..2cf2033 --- /dev/null +++ b/assets/neutral object/coin_pixelized.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/coin_pixelized.png-2e2f5c3d85687ed64d554d977588c605.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/neutral object/coin_pixelized.png" +dest_files=[ "res://.import/coin_pixelized.png-2e2f5c3d85687ed64d554d977588c605.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=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/assets/sounds/Short Rising Flutter.wav b/assets/sounds/Short Rising Flutter.wav new file mode 100644 index 0000000..b40190f Binary files /dev/null and b/assets/sounds/Short Rising Flutter.wav differ diff --git a/assets/sounds/Short Rising Flutter.wav.import b/assets/sounds/Short Rising Flutter.wav.import new file mode 100644 index 0000000..b24c9b4 --- /dev/null +++ b/assets/sounds/Short Rising Flutter.wav.import @@ -0,0 +1,23 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/Short Rising Flutter.wav-7ed9b1c0749f76dbe55692c27d59931e.sample" + +[deps] + +source_file="res://assets/sounds/Short Rising Flutter.wav" +dest_files=[ "res://.import/Short Rising Flutter.wav-7ed9b1c0749f76dbe55692c27d59931e.sample" ] + +[params] + +force/8_bit=false +force/mono=true +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=true +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/project.godot b/project.godot index 22079ab..de2e8dc 100644 --- a/project.godot +++ b/project.godot @@ -233,6 +233,7 @@ up={ "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":0,"physical_scancode":87,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null) , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":-1.0,"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":0,"physical_scancode":16777232,"unicode":0,"echo":false,"script":null) ] } duck={ @@ -240,6 +241,7 @@ duck={ "events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":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":0,"physical_scancode":83,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":1.0,"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":0,"physical_scancode":16777234,"unicode":0,"echo":false,"script":null) ] } move_left={ @@ -247,6 +249,7 @@ move_left={ "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,"physical_scancode":0,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":14,"pressure":0.0,"pressed":false,"script":null) , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"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":0,"physical_scancode":16777231,"unicode":0,"echo":false,"script":null) ] } move_right={ @@ -254,6 +257,7 @@ move_right={ "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,"physical_scancode":0,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":15,"pressure":0.0,"pressed":false,"script":null) , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"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":0,"physical_scancode":16777233,"unicode":0,"echo":false,"script":null) ] } jump={ diff --git a/src/BenefitialObjects/Coin.tscn b/src/BenefitialObjects/Coin.tscn index b8d5359..de30e7e 100644 --- a/src/BenefitialObjects/Coin.tscn +++ b/src/BenefitialObjects/Coin.tscn @@ -1,12 +1,12 @@ -[gd_scene load_steps=11 format=2] +[gd_scene load_steps=10 format=2] +[ext_resource path="res://assets/neutral object/coin_pixelized.png" type="Texture" id=1] [ext_resource path="res://src/BenefitialObjects/Coin.gd" type="Script" id=2] -[ext_resource path="res://assets/neutral object/whitegold orbicle/0000 (Klein)-fs8.png" type="Texture" id=13] [ext_resource path="res://assets/sounds/MAGIC_SPELL_Attacking_Climbing_Bells_stereo.wav" type="AudioStream" id=316] [ext_resource path="res://assets/environment/blocks/Empty-Navigation-Tile.png" type="Texture" id=317] [sub_resource type="CircleShape2D" id=1] -radius = 34.0147 +radius = 44.7557 [sub_resource type="Animation" id=2] resource_name = "fade_out" @@ -43,50 +43,30 @@ resource_name = "oscilating" length = 2.4 loop = true tracks/0/type = "value" -tracks/0/path = NodePath("AnimatedSprite:position") -tracks/0/interp = 1 +tracks/0/path = NodePath("Sprite2:position") +tracks/0/interp = 2 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { -"times": PoolRealArray( 0, 1.5 ), -"transitions": PoolRealArray( 0.428, 1.23 ), +"times": PoolRealArray( 0, 1.2 ), +"transitions": PoolRealArray( 1, 1 ), "update": 0, -"values": [ Vector2( 0, 3 ), Vector2( 0, -4 ) ] +"values": [ Vector2( 0, 2.62356 ), Vector2( 0, 1 ) ] } tracks/1/type = "value" -tracks/1/path = NodePath("CollisionShape2D:position") -tracks/1/interp = 1 +tracks/1/path = NodePath("Sprite:position") +tracks/1/interp = 2 tracks/1/loop_wrap = true tracks/1/imported = false tracks/1/enabled = true tracks/1/keys = { -"times": PoolRealArray( 0, 1.5 ), -"transitions": PoolRealArray( 0.428, 1.23 ), -"update": 0, -"values": [ Vector2( 0, 3 ), Vector2( 0, -4 ) ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("AnimatedSprite:rotation_degrees") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { "times": PoolRealArray( 0, 1.2 ), "transitions": PoolRealArray( 1, 1 ), "update": 0, -"values": [ -13.5, 13.5 ] +"values": [ Vector2( 0.0564967, 2.37292 ), Vector2( 0.056, 1 ) ] } -[sub_resource type="SpriteFrames" id=4] -animations = [ { -"frames": [ ExtResource( 13 ) ], -"loop": true, -"name": "still", -"speed": 5.0 -} ] - [sub_resource type="Shader" id=5] code = "shader_type canvas_item; @@ -139,25 +119,23 @@ monitorable = false script = ExtResource( 2 ) [node name="CollisionShape2D" type="CollisionShape2D" parent="."] -position = Vector2( 0, 2.62987 ) +position = Vector2( 3.8147e-06, 2.49189 ) scale = Vector2( 0.18, 0.18 ) shape = SubResource( 1 ) [node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "oscilating" anims/fade_out = SubResource( 2 ) anims/oscilating = SubResource( 3 ) -[node name="AnimatedSprite" type="AnimatedSprite" parent="."] -position = Vector2( 0, 2.62987 ) -rotation = -0.220349 -scale = Vector2( 0.036, 0.036 ) -frames = SubResource( 4 ) -animation = "still" -playing = true +[node name="Sprite2" type="Sprite" parent="."] +position = Vector2( 0, 2.62238 ) +scale = Vector2( -0.484, -0.5 ) +texture = ExtResource( 1 ) [node name="Sprite" type="Sprite" parent="."] material = SubResource( 6 ) -position = Vector2( 0.144981, 2.90382 ) +position = Vector2( 0.0564964, 2.37193 ) texture = ExtResource( 317 ) [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] diff --git a/src/BenefitialObjects/SavePoint.gd b/src/BenefitialObjects/SavePoint.gd index 6cdc7f4..b83cecc 100644 --- a/src/BenefitialObjects/SavePoint.gd +++ b/src/BenefitialObjects/SavePoint.gd @@ -14,5 +14,5 @@ func _on_SaveArea_area_entered(area: Area2D) -> void: #TODO Spawnheight fixed if(!GlobalState.get_savepoint(level_state.levelName) == global_position + Vector2(0,18)): $AnimationPlayer.play("rolloutflag") - + $AudioStreamPlayer.play() GlobalState.set_savepoint(level_state.levelName, global_position + Vector2(0,18)) diff --git a/src/BenefitialObjects/SavePoint.tscn b/src/BenefitialObjects/SavePoint.tscn index 08ce884..0318d23 100644 --- a/src/BenefitialObjects/SavePoint.tscn +++ b/src/BenefitialObjects/SavePoint.tscn @@ -1,9 +1,10 @@ -[gd_scene load_steps=8 format=2] +[gd_scene load_steps=9 format=2] [ext_resource path="res://assets/neutral object/blobby1Flag.png" type="Texture" id=1] [ext_resource path="res://assets/neutral object/flagPoleAndBasePlant.png" type="Texture" id=2] [ext_resource path="res://src/Environment/FlagMaterial.tres" type="Material" id=3] [ext_resource path="res://src/BenefitialObjects/SavePoint.gd" type="Script" id=4] +[ext_resource path="res://assets/sounds/Short Rising Flutter.wav" type="AudioStream" id=5] [sub_resource type="Animation" id=2] length = 0.001 @@ -168,5 +169,8 @@ position = Vector2( -15, 6 ) shape = SubResource( 1 ) [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 5 ) +volume_db = -16.836 +bus = "Effects" [connection signal="area_entered" from="SaveArea" to="." method="_on_SaveArea_area_entered"] diff --git a/src/Contraptions/VendingMachine.gd b/src/Contraptions/VendingMachine.gd index c797c66..df22958 100644 --- a/src/Contraptions/VendingMachine.gd +++ b/src/Contraptions/VendingMachine.gd @@ -11,30 +11,31 @@ var activatable = false func _process(delta): - # TODO Global currency count?? Maybe just level intern currency - if activatable && Input.is_action_just_released("interact"): - if(level_state.spend_currency(cost)): - signal_manager.emit_signal("currency_updated") - selfActivate() + # TODO Global currency count?? Maybe just level intern currency + if activatable && Input.is_action_just_released("interact"): + if(level_state.spend_currency(cost)): + signal_manager.emit_signal("currency_updated") + selfActivate() func selfActivate(): - #TODO Is a event for blobby himself - #blobby.get_node("BubbleShieldViewport/IridescenceBall").visible = true - signal_manager.emit_signal("power_up_collected", "shield") - #TODO dis importante - activatorArea.set_deferred("monitoring", false) + #TODO Is a event for blobby himself + #blobby.get_node("BubbleShieldViewport/IridescenceBall").visible = true + signal_manager.emit_signal("power_up_collected", "shield") + $AudioStreamPlayer.play() + #TODO dis importante + activatorArea.set_deferred("monitoring", false) func _on_ActivatorArea_area_entered(area:Area2D) -> void: - $Label.visible = true - $Highlight.visible = true - activatable = true + $Label.visible = true + $Highlight.visible = true + activatable = true func _on_ActivatorArea_area_exited(area:Area2D) -> void: - unactivatable_timer.start() + unactivatable_timer.start() func _on_Timer_timeout(): - if($ActivatorArea.get_overlapping_bodies().size() == 0): - $Highlight.visible = false - $Label.visible = false - activatable = false + if($ActivatorArea.get_overlapping_bodies().size() == 0): + $Highlight.visible = false + $Label.visible = false + activatable = false diff --git a/src/Contraptions/VendingMachine.tscn b/src/Contraptions/VendingMachine.tscn index e308ca8..4c6272e 100644 --- a/src/Contraptions/VendingMachine.tscn +++ b/src/Contraptions/VendingMachine.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=7 format=2] +[gd_scene load_steps=8 format=2] [ext_resource path="res://assets/contraption/ShieldVendingMachine.png" type="Texture" id=1] [ext_resource path="res://src/Contraptions/VendingMachine.gd" type="Script" id=2] [ext_resource path="res://assets/ui/sci-fi-godot-theme/sci-fi-pixel.tres" type="DynamicFont" id=3] +[ext_resource path="res://assets/sounds/gotShields.wav" type="AudioStream" id=4] [sub_resource type="Gradient" id=21] interpolation_mode = 2 @@ -63,6 +64,10 @@ shape = SubResource( 1 ) wait_time = 0.333 one_shot = true +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 4 ) +volume_db = -18.193 + [connection signal="area_entered" from="ActivatorArea" to="." method="_on_ActivatorArea_area_entered"] [connection signal="area_exited" from="ActivatorArea" to="." method="_on_ActivatorArea_area_exited"] [connection signal="timeout" from="Timer" to="." method="_on_Timer_timeout"] diff --git a/src/Environment/Grass/ShaderGrass.gdshader b/src/Environment/Grass/ShaderGrass.gdshader index c7fb7a4..3062eb7 100644 --- a/src/Environment/Grass/ShaderGrass.gdshader +++ b/src/Environment/Grass/ShaderGrass.gdshader @@ -2,6 +2,17 @@ shader_type canvas_item; uniform float displacement_coefficient_x; +void fragment() { + vec4 environment_color = texture(SCREEN_TEXTURE, SCREEN_UV); + vec4 sprite_color = texture(TEXTURE, UV); + float gradient_factor = step(UV.y, 1); + if(sprite_color.a > 0.1){ + COLOR = mix(environment_color, sprite_color, gradient_factor); + } + else{ + COLOR = sprite_color + } +} void vertex() { VERTEX += vec2(displacement_coefficient_x,0.0) * (1.0 - UV.y); diff --git a/src/Environment/Grass/ShaderGrass.tscn b/src/Environment/Grass/ShaderGrass.tscn index 6a5c4a7..c5fbfa0 100644 --- a/src/Environment/Grass/ShaderGrass.tscn +++ b/src/Environment/Grass/ShaderGrass.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=12 format=2] +[gd_scene load_steps=13 format=2] [ext_resource path="res://assets/environment/decor/straight_straw.png" type="Texture" id=1] [ext_resource path="res://src/Environment/Grass/ShaderGrass.gd" type="Script" id=2] @@ -9,6 +9,7 @@ [ext_resource path="res://assets/environment/decor/bent_straw_leftt.png" type="Texture" id=7] [ext_resource path="res://assets/environment/decor/bent_straw_left_2.png" type="Texture" id=8] [ext_resource path="res://assets/sounds/grass swish 4.ogg" type="AudioStream" id=9] +[ext_resource path="res://assets/environment/decor/grass-roots.png" type="Texture" id=10] [sub_resource type="AudioStreamRandomPitch" id=2] audio_stream = ExtResource( 9 ) @@ -76,6 +77,12 @@ polygon = PoolVector2Array( 4.9375, 11.875, 5, 8.8125, 2.8125, 7, -0.375, 4.0625 uv = PoolVector2Array( 4.9375, 11.875, 5, 8.8125, 2.8125, 7, -0.375, 4.0625, 2.25, 1.9375, 4.75, 4.625, 8.0625, 7.9375, 8, 12.0625 ) polygons = [ PoolIntArray( 0, 6, 7 ), PoolIntArray( 0, 1, 6 ), PoolIntArray( 1, 5, 6 ), PoolIntArray( 1, 2, 5 ), PoolIntArray( 2, 4, 5 ), PoolIntArray( 2, 3, 4 ) ] +[node name="Sprite" type="Sprite" parent="."] +visible = false +position = Vector2( 5.00909, 19.9567 ) +z_index = -1 +texture = ExtResource( 10 ) + [node name="Timer" type="Timer" parent="."] wait_time = 4.0 one_shot = true diff --git a/src/Levels/1 Tutorial Level.tscn b/src/Levels/1 Tutorial Level.tscn index e4ee5f7..ac7b07e 100644 --- a/src/Levels/1 Tutorial Level.tscn +++ b/src/Levels/1 Tutorial Level.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=27 format=2] +[gd_scene load_steps=29 format=2] [ext_resource path="res://src/Levels/Templates/LevelTemplate.gd" type="Script" id=1] [ext_resource path="res://src/Environment/GreenHouseTiles.tres" type="TileSet" id=2] @@ -18,6 +18,46 @@ [ext_resource path="res://assets/effects/noise.png" type="Texture" id=17] [ext_resource path="res://src/ObstacleObjects/Mine.tscn" type="PackedScene" id=18] +[sub_resource type="Shader" id=15] +code = "shader_type canvas_item; + +uniform vec4 in_color:hint_color; +uniform vec4 out_color:hint_color; + +uniform float in_out:hint_range(0.,1.)=0.; + +uniform float position:hint_range(-1.5,1.) = 0.856; +uniform vec2 size = vec2(16., 16.); + +void fragment(){ + + vec2 a = (1./SCREEN_PIXEL_SIZE) / size; + + vec2 uv=UV; + uv *= a; + + vec2 i_uv = floor(uv); + vec2 f_uv = fract(uv); + + float wave = max(0.,i_uv.x/(a.x) - position); + + vec2 center = f_uv*2.-1.; + float circle = length(center); + circle = 1. - step(wave,circle); + + vec4 color = mix(in_color, out_color, step(0.5, in_out)); + + COLOR=vec4(circle) * color; +}" + +[sub_resource type="ShaderMaterial" id=16] +shader = SubResource( 15 ) +shader_param/in_color = Color( 0, 0, 0, 1 ) +shader_param/out_color = Color( 0, 0, 0, 0.568627 ) +shader_param/in_out = 0.0 +shader_param/position = -1.5 +shader_param/size = Vector2( 32, 32 ) + [sub_resource type="ShaderMaterial" id=11] resource_local_to_scene = true shader = ExtResource( 16 ) @@ -161,6 +201,18 @@ unique_name_in_owner = true [node name="Timer" parent="UserInterface/HUD/HUDOverlay/GetBackTimer" index="0"] wait_time = 20.0 +[node name="TransitionLayer" type="CanvasLayer" parent="."] +visible = false + +[node name="SceneTransition" type="ColorRect" parent="TransitionLayer"] +material = SubResource( 16 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + [node name="Tutorials" type="Node2D" parent="."] position = Vector2( 0, -2.27374e-13 ) @@ -225,7 +277,7 @@ position = Vector2( -70, 1 ) scale = Vector2( 0.878906, 0.936025 ) [node name="BlobbySprite" parent="Blobby" index="5"] -frame = 5 +frame = 6 [node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"] parameters/playback = SubResource( 14 ) diff --git a/src/Levels/2 Tutorial Level.tscn b/src/Levels/2 Tutorial Level.tscn index 62b9881..1c0fa76 100644 --- a/src/Levels/2 Tutorial Level.tscn +++ b/src/Levels/2 Tutorial Level.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=61 format=2] +[gd_scene load_steps=63 format=2] [ext_resource path="res://src/Levels/Templates/LevelTemplate.gd" type="Script" id=1] [ext_resource path="res://assets/environment/decor/platform-plants.png" type="Texture" id=2] @@ -22,6 +22,46 @@ [ext_resource path="res://assets/obstacle object/SpikyMinePlant.png" type="Texture" id=21] [ext_resource path="res://src/Utilities/SceneAudio.tscn" type="PackedScene" id=22] +[sub_resource type="Shader" id=15] +code = "shader_type canvas_item; + +uniform vec4 in_color:hint_color; +uniform vec4 out_color:hint_color; + +uniform float in_out:hint_range(0.,1.)=0.; + +uniform float position:hint_range(-1.5,1.) = 0.856; +uniform vec2 size = vec2(16., 16.); + +void fragment(){ + + vec2 a = (1./SCREEN_PIXEL_SIZE) / size; + + vec2 uv=UV; + uv *= a; + + vec2 i_uv = floor(uv); + vec2 f_uv = fract(uv); + + float wave = max(0.,i_uv.x/(a.x) - position); + + vec2 center = f_uv*2.-1.; + float circle = length(center); + circle = 1. - step(wave,circle); + + vec4 color = mix(in_color, out_color, step(0.5, in_out)); + + COLOR=vec4(circle) * color; +}" + +[sub_resource type="ShaderMaterial" id=51] +shader = SubResource( 15 ) +shader_param/in_color = Color( 0, 0, 0, 1 ) +shader_param/out_color = Color( 0, 0, 0, 0.568627 ) +shader_param/in_out = 0.0 +shader_param/position = -1.5 +shader_param/size = Vector2( 32, 32 ) + [sub_resource type="AnimationNodeStateMachinePlayback" id=6] [sub_resource type="TileSet" id=5] @@ -47,7 +87,7 @@ 0/shapes = [ ] 0/z_index = 0 -[sub_resource type="Shader" id=15] +[sub_resource type="Shader" id=52] code = "shader_type canvas_item; uniform sampler2D noise_tex_normal; @@ -96,7 +136,7 @@ void fragment() { [sub_resource type="ShaderMaterial" id=48] resource_local_to_scene = true -shader = SubResource( 15 ) +shader = SubResource( 52 ) shader_param/progress = 0.0 shader_param/scale = 1.0 shader_param/strength = 0.1 @@ -1082,6 +1122,18 @@ visible = false [node name="LevelState" parent="." instance=ExtResource( 9 )] unique_name_in_owner = true +[node name="TransitionLayer" type="CanvasLayer" parent="."] +visible = false + +[node name="SceneTransition" type="ColorRect" parent="TransitionLayer"] +material = SubResource( 51 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + [node name="UserInterface" parent="." instance=ExtResource( 5 )] unique_name_in_owner = true @@ -1099,7 +1151,7 @@ position = Vector2( -156, -51 ) scale = Vector2( 0.878906, 0.936025 ) [node name="BlobbySprite" parent="Blobby" index="5"] -frame = 7 +frame = 8 [node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"] parameters/playback = SubResource( 6 ) diff --git a/src/Levels/3 Tutorial Level.tscn b/src/Levels/3 Tutorial Level.tscn index 57e7152..db847ab 100644 --- a/src/Levels/3 Tutorial Level.tscn +++ b/src/Levels/3 Tutorial Level.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=26 format=2] +[gd_scene load_steps=28 format=2] [ext_resource path="res://assets/environment/decor/platform-plants.png" type="Texture" id=1] [ext_resource path="res://src/Contraptions/Triggers/ElevatorButton.tscn" type="PackedScene" id=2] @@ -20,6 +20,46 @@ [ext_resource path="res://src/UserInterface/TutorialComboThingy.tscn" type="PackedScene" id=18] [ext_resource path="res://assets/effects/noise.png" type="Texture" id=19] +[sub_resource type="Shader" id=17] +code = "shader_type canvas_item; + +uniform vec4 in_color:hint_color; +uniform vec4 out_color:hint_color; + +uniform float in_out:hint_range(0.,1.)=0.; + +uniform float position:hint_range(-1.5,1.) = 0.856; +uniform vec2 size = vec2(16., 16.); + +void fragment(){ + + vec2 a = (1./SCREEN_PIXEL_SIZE) / size; + + vec2 uv=UV; + uv *= a; + + vec2 i_uv = floor(uv); + vec2 f_uv = fract(uv); + + float wave = max(0.,i_uv.x/(a.x) - position); + + vec2 center = f_uv*2.-1.; + float circle = length(center); + circle = 1. - step(wave,circle); + + vec4 color = mix(in_color, out_color, step(0.5, in_out)); + + COLOR=vec4(circle) * color; +}" + +[sub_resource type="ShaderMaterial" id=18] +shader = SubResource( 17 ) +shader_param/in_color = Color( 0, 0, 0, 1 ) +shader_param/out_color = Color( 0, 0, 0, 0.568627 ) +shader_param/in_out = 0.0 +shader_param/position = -1.5 +shader_param/size = Vector2( 32, 32 ) + [sub_resource type="AnimationNodeStateMachinePlayback" id=6] [sub_resource type="TileSet" id=5] @@ -172,6 +212,18 @@ visible = false [node name="LevelState" parent="." instance=ExtResource( 8 )] unique_name_in_owner = true +[node name="TransitionLayer" type="CanvasLayer" parent="."] +visible = false + +[node name="SceneTransition" type="ColorRect" parent="TransitionLayer"] +material = SubResource( 18 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + [node name="UserInterface" parent="." instance=ExtResource( 7 )] unique_name_in_owner = true @@ -187,9 +239,6 @@ unique_name_in_owner = true position = Vector2( -180, 113 ) scale = Vector2( 0.878906, 0.936025 ) -[node name="BlobbySprite" parent="Blobby" index="5"] -frame = 10 - [node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"] parameters/playback = SubResource( 6 ) @@ -288,6 +337,7 @@ material = SubResource( 16 ) position = Vector2( 111, 76 ) [node name="Decor" type="Node2D" parent="."] +z_index = 1 [node name="ShaderGrass" parent="Decor" instance=ExtResource( 3 )] position = Vector2( -61, 100 ) diff --git a/src/Levels/4 Tutorial Level.tscn b/src/Levels/4 Tutorial Level.tscn index e60d913..fc156f3 100644 --- a/src/Levels/4 Tutorial Level.tscn +++ b/src/Levels/4 Tutorial Level.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=23 format=2] +[gd_scene load_steps=25 format=2] [ext_resource path="res://src/Environment/GreenHouseTiles.tres" type="TileSet" id=1] [ext_resource path="res://src/Environment/DropThroughPlatforms.tres" type="TileSet" id=2] @@ -21,6 +21,46 @@ [ext_resource path="res://src/Platforms/FlyingLaserCutter.tscn" type="PackedScene" id=19] [ext_resource path="res://src/Utilities/SceneAudio.tscn" type="PackedScene" id=21] +[sub_resource type="Shader" id=7] +code = "shader_type canvas_item; + +uniform vec4 in_color:hint_color; +uniform vec4 out_color:hint_color; + +uniform float in_out:hint_range(0.,1.)=0.; + +uniform float position:hint_range(-1.5,1.) = 0.856; +uniform vec2 size = vec2(16., 16.); + +void fragment(){ + + vec2 a = (1./SCREEN_PIXEL_SIZE) / size; + + vec2 uv=UV; + uv *= a; + + vec2 i_uv = floor(uv); + vec2 f_uv = fract(uv); + + float wave = max(0.,i_uv.x/(a.x) - position); + + vec2 center = f_uv*2.-1.; + float circle = length(center); + circle = 1. - step(wave,circle); + + vec4 color = mix(in_color, out_color, step(0.5, in_out)); + + COLOR=vec4(circle) * color; +}" + +[sub_resource type="ShaderMaterial" id=8] +shader = SubResource( 7 ) +shader_param/in_color = Color( 0, 0, 0, 1 ) +shader_param/out_color = Color( 0, 0, 0, 0.568627 ) +shader_param/in_out = 0.0 +shader_param/position = -1.5 +shader_param/size = Vector2( 32, 32 ) + [sub_resource type="AnimationNodeStateMachinePlayback" id=6] [sub_resource type="TileSet" id=5] @@ -61,6 +101,18 @@ visible = false [node name="LevelState" parent="." instance=ExtResource( 6 )] unique_name_in_owner = true +[node name="TransitionLayer" type="CanvasLayer" parent="."] +visible = false + +[node name="SceneTransition" type="ColorRect" parent="TransitionLayer"] +material = SubResource( 8 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + [node name="UserInterface" parent="." instance=ExtResource( 7 )] unique_name_in_owner = true @@ -76,9 +128,6 @@ unique_name_in_owner = true position = Vector2( -70, 1 ) scale = Vector2( 0.878906, 0.936025 ) -[node name="BlobbySprite" parent="Blobby" index="5"] -frame = 7 - [node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"] parameters/playback = SubResource( 6 ) @@ -152,10 +201,10 @@ position = Vector2( 368, 233 ) position = Vector2( 216, 223 ) [node name="GateBlock" parent="." instance=ExtResource( 14 )] -position = Vector2( 788, 372 ) +position = Vector2( 804, 376 ) [node name="GateBlock2" parent="." instance=ExtResource( 14 )] -position = Vector2( 788, 348 ) +position = Vector2( 804, 360 ) [node name="FlyingLaserCutter" parent="." instance=ExtResource( 19 )] position = Vector2( 663, 256 ) diff --git a/src/Levels/5 Tutorial Level.tscn b/src/Levels/5 Tutorial Level.tscn index bcedc24..654e3a8 100644 --- a/src/Levels/5 Tutorial Level.tscn +++ b/src/Levels/5 Tutorial Level.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=20 format=2] +[gd_scene load_steps=22 format=2] [ext_resource path="res://src/Environment/GreenHouseTiles.tres" type="TileSet" id=1] [ext_resource path="res://src/Environment/DropThroughPlatforms.tres" type="TileSet" id=2] @@ -17,6 +17,46 @@ [ext_resource path="res://src/Utilities/SceneAudio.tscn" type="PackedScene" id=16] [ext_resource path="res://src/Contraptions/VendingMachine.tscn" type="PackedScene" id=19] +[sub_resource type="Shader" id=8] +code = "shader_type canvas_item; + +uniform vec4 in_color:hint_color; +uniform vec4 out_color:hint_color; + +uniform float in_out:hint_range(0.,1.)=0.; + +uniform float position:hint_range(-1.5,1.) = 0.856; +uniform vec2 size = vec2(16., 16.); + +void fragment(){ + + vec2 a = (1./SCREEN_PIXEL_SIZE) / size; + + vec2 uv=UV; + uv *= a; + + vec2 i_uv = floor(uv); + vec2 f_uv = fract(uv); + + float wave = max(0.,i_uv.x/(a.x) - position); + + vec2 center = f_uv*2.-1.; + float circle = length(center); + circle = 1. - step(wave,circle); + + vec4 color = mix(in_color, out_color, step(0.5, in_out)); + + COLOR=vec4(circle) * color; +}" + +[sub_resource type="ShaderMaterial" id=9] +shader = SubResource( 8 ) +shader_param/in_color = Color( 0, 0, 0, 1 ) +shader_param/out_color = Color( 0, 0, 0, 0.568627 ) +shader_param/in_out = 0.0 +shader_param/position = -1.5 +shader_param/size = Vector2( 32, 32 ) + [sub_resource type="AnimationNodeStateMachinePlayback" id=7] [sub_resource type="TileSet" id=5] @@ -59,6 +99,18 @@ visible = false [node name="LevelState" parent="." instance=ExtResource( 7 )] unique_name_in_owner = true +[node name="TransitionLayer" type="CanvasLayer" parent="."] +visible = false + +[node name="SceneTransition" type="ColorRect" parent="TransitionLayer"] +material = SubResource( 9 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + [node name="UserInterface" parent="." instance=ExtResource( 8 )] unique_name_in_owner = true @@ -75,7 +127,7 @@ position = Vector2( -186, 113 ) scale = Vector2( 0.878906, 0.936025 ) [node name="BlobbySprite" parent="Blobby" index="5"] -frame = 7 +frame = 8 [node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"] parameters/playback = SubResource( 7 ) diff --git a/src/Levels/6 Tutorial Level.tscn b/src/Levels/6 Tutorial Level.tscn index ca26d99..bd8be8f 100644 --- a/src/Levels/6 Tutorial Level.tscn +++ b/src/Levels/6 Tutorial Level.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=24 format=2] +[gd_scene load_steps=26 format=2] [ext_resource path="res://src/Environment/GreenHouseTiles.tres" type="TileSet" id=1] [ext_resource path="res://src/Environment/DropThroughPlatforms.tres" type="TileSet" id=2] @@ -21,6 +21,46 @@ [ext_resource path="res://src/Contraptions/Triggers/FrogFreeButton.tscn" type="PackedScene" id=21] [ext_resource path="res://src/BenefitialObjects/Coin.tscn" type="PackedScene" id=22] +[sub_resource type="Shader" id=55] +code = "shader_type canvas_item; + +uniform vec4 in_color:hint_color; +uniform vec4 out_color:hint_color; + +uniform float in_out:hint_range(0.,1.)=0.; + +uniform float position:hint_range(-1.5,1.) = 0.856; +uniform vec2 size = vec2(16., 16.); + +void fragment(){ + + vec2 a = (1./SCREEN_PIXEL_SIZE) / size; + + vec2 uv=UV; + uv *= a; + + vec2 i_uv = floor(uv); + vec2 f_uv = fract(uv); + + float wave = max(0.,i_uv.x/(a.x) - position); + + vec2 center = f_uv*2.-1.; + float circle = length(center); + circle = 1. - step(wave,circle); + + vec4 color = mix(in_color, out_color, step(0.5, in_out)); + + COLOR=vec4(circle) * color; +}" + +[sub_resource type="ShaderMaterial" id=56] +shader = SubResource( 55 ) +shader_param/in_color = Color( 0, 0, 0, 1 ) +shader_param/out_color = Color( 0, 0, 0, 0.568627 ) +shader_param/in_out = 0.0 +shader_param/position = -1.5 +shader_param/size = Vector2( 32, 32 ) + [sub_resource type="AnimationNodeStateMachinePlayback" id=53] [sub_resource type="TileSet" id=5] @@ -63,6 +103,18 @@ visible = false [node name="LevelState" parent="." instance=ExtResource( 7 )] unique_name_in_owner = true +[node name="TransitionLayer" type="CanvasLayer" parent="."] +visible = false + +[node name="SceneTransition" type="ColorRect" parent="TransitionLayer"] +material = SubResource( 56 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + [node name="UserInterface" parent="." instance=ExtResource( 8 )] unique_name_in_owner = true @@ -80,7 +132,7 @@ position = Vector2( -142, 17 ) scale = Vector2( 0.878906, 0.936025 ) [node name="BlobbySprite" parent="Blobby" index="5"] -frame = 7 +frame = 6 [node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"] parameters/playback = SubResource( 53 ) diff --git a/src/Levels/Actual Level 1.tscn b/src/Levels/Actual Level 1.tscn index 57566ac..c4d317d 100644 --- a/src/Levels/Actual Level 1.tscn +++ b/src/Levels/Actual Level 1.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=26 format=2] +[gd_scene load_steps=28 format=2] [ext_resource path="res://src/Actors/Enemies/DartingEnemy.tscn" type="PackedScene" id=1] [ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=2] @@ -23,6 +23,46 @@ [ext_resource path="res://src/Environment/Legacy/Greenhouse.tscn" type="PackedScene" id=21] [ext_resource path="res://assets/effects/noise.png" type="Texture" id=22] +[sub_resource type="Shader" id=17] +code = "shader_type canvas_item; + +uniform vec4 in_color:hint_color; +uniform vec4 out_color:hint_color; + +uniform float in_out:hint_range(0.,1.)=0.; + +uniform float position:hint_range(-1.5,1.) = 0.856; +uniform vec2 size = vec2(16., 16.); + +void fragment(){ + + vec2 a = (1./SCREEN_PIXEL_SIZE) / size; + + vec2 uv=UV; + uv *= a; + + vec2 i_uv = floor(uv); + vec2 f_uv = fract(uv); + + float wave = max(0.,i_uv.x/(a.x) - position); + + vec2 center = f_uv*2.-1.; + float circle = length(center); + circle = 1. - step(wave,circle); + + vec4 color = mix(in_color, out_color, step(0.5, in_out)); + + COLOR=vec4(circle) * color; +}" + +[sub_resource type="ShaderMaterial" id=18] +shader = SubResource( 17 ) +shader_param/in_color = Color( 0, 0, 0, 1 ) +shader_param/out_color = Color( 0, 0, 0, 0.568627 ) +shader_param/in_out = 0.0 +shader_param/position = -1.5 +shader_param/size = Vector2( 32, 32 ) + [sub_resource type="AnimationNodeStateMachinePlayback" id=1] [sub_resource type="Shader" id=15] @@ -97,6 +137,18 @@ visible = false [node name="LevelState" parent="." instance=ExtResource( 11 )] unique_name_in_owner = true +[node name="TransitionLayer" type="CanvasLayer" parent="."] +visible = false + +[node name="SceneTransition" type="ColorRect" parent="TransitionLayer"] +material = SubResource( 18 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + [node name="UserInterface" parent="." instance=ExtResource( 13 )] unique_name_in_owner = true @@ -112,7 +164,7 @@ position = Vector2( 251, -24 ) scale = Vector2( 0.878906, 0.936025 ) [node name="BlobbySprite" parent="Blobby" index="5"] -frame = 7 +frame = 9 [node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"] parameters/playback = SubResource( 1 ) diff --git a/src/Levels/Actual Level 2.tscn b/src/Levels/Actual Level 2.tscn index 8565d22..49f07b0 100644 --- a/src/Levels/Actual Level 2.tscn +++ b/src/Levels/Actual Level 2.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=23 format=2] +[gd_scene load_steps=25 format=2] [ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=1] [ext_resource path="res://src/Actors/BlobbyCam.tscn" type="PackedScene" id=2] @@ -21,6 +21,46 @@ [ext_resource path="res://src/Environment/Legacy/Greenhouse.tscn" type="PackedScene" id=20] [ext_resource path="res://src/Utilities/SceneAudio.tscn" type="PackedScene" id=21] +[sub_resource type="Shader" id=7] +code = "shader_type canvas_item; + +uniform vec4 in_color:hint_color; +uniform vec4 out_color:hint_color; + +uniform float in_out:hint_range(0.,1.)=0.; + +uniform float position:hint_range(-1.5,1.) = 0.856; +uniform vec2 size = vec2(16., 16.); + +void fragment(){ + + vec2 a = (1./SCREEN_PIXEL_SIZE) / size; + + vec2 uv=UV; + uv *= a; + + vec2 i_uv = floor(uv); + vec2 f_uv = fract(uv); + + float wave = max(0.,i_uv.x/(a.x) - position); + + vec2 center = f_uv*2.-1.; + float circle = length(center); + circle = 1. - step(wave,circle); + + vec4 color = mix(in_color, out_color, step(0.5, in_out)); + + COLOR=vec4(circle) * color; +}" + +[sub_resource type="ShaderMaterial" id=8] +shader = SubResource( 7 ) +shader_param/in_color = Color( 0, 0, 0, 1 ) +shader_param/out_color = Color( 0, 0, 0, 0.568627 ) +shader_param/in_out = 0.0 +shader_param/position = -1.5 +shader_param/size = Vector2( 32, 32 ) + [sub_resource type="AnimationNodeStateMachinePlayback" id=6] [sub_resource type="AnimationNodeStateMachinePlayback" id=5] @@ -41,6 +81,18 @@ visible = false [node name="LevelState" parent="." instance=ExtResource( 3 )] unique_name_in_owner = true +[node name="TransitionLayer" type="CanvasLayer" parent="."] +visible = false + +[node name="SceneTransition" type="ColorRect" parent="TransitionLayer"] +material = SubResource( 8 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + [node name="UserInterface" parent="." instance=ExtResource( 4 )] unique_name_in_owner = true @@ -56,6 +108,9 @@ unique_name_in_owner = true position = Vector2( 3.8147e-06, 144 ) scale = Vector2( 0.878906, 0.936025 ) +[node name="BlobbySprite" parent="Blobby" index="5"] +frame = 8 + [node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"] parameters/playback = SubResource( 6 ) diff --git a/src/Levels/Actual Level 3.tscn b/src/Levels/Actual Level 3.tscn index 45aa689..70e409d 100644 --- a/src/Levels/Actual Level 3.tscn +++ b/src/Levels/Actual Level 3.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=22 format=2] +[gd_scene load_steps=24 format=2] [ext_resource path="res://src/BenefitialObjects/Coin.tscn" type="PackedScene" id=1] [ext_resource path="res://src/Actors/BlobbyCam.tscn" type="PackedScene" id=2] @@ -21,6 +21,46 @@ [ext_resource path="res://src/Environment/Legacy/Greenhouse.tscn" type="PackedScene" id=20] [ext_resource path="res://src/Platforms/FlyingPlatformSmol.tscn" type="PackedScene" id=21] +[sub_resource type="Shader" id=10] +code = "shader_type canvas_item; + +uniform vec4 in_color:hint_color; +uniform vec4 out_color:hint_color; + +uniform float in_out:hint_range(0.,1.)=0.; + +uniform float position:hint_range(-1.5,1.) = 0.856; +uniform vec2 size = vec2(16., 16.); + +void fragment(){ + + vec2 a = (1./SCREEN_PIXEL_SIZE) / size; + + vec2 uv=UV; + uv *= a; + + vec2 i_uv = floor(uv); + vec2 f_uv = fract(uv); + + float wave = max(0.,i_uv.x/(a.x) - position); + + vec2 center = f_uv*2.-1.; + float circle = length(center); + circle = 1. - step(wave,circle); + + vec4 color = mix(in_color, out_color, step(0.5, in_out)); + + COLOR=vec4(circle) * color; +}" + +[sub_resource type="ShaderMaterial" id=11] +shader = SubResource( 10 ) +shader_param/in_color = Color( 0, 0, 0, 1 ) +shader_param/out_color = Color( 0, 0, 0, 0.568627 ) +shader_param/in_out = 0.0 +shader_param/position = -1.5 +shader_param/size = Vector2( 32, 32 ) + [sub_resource type="AnimationNodeStateMachinePlayback" id=9] [node name="Actual Level 3" type="Node2D"] @@ -39,6 +79,18 @@ visible = false [node name="LevelState" parent="." instance=ExtResource( 4 )] unique_name_in_owner = true +[node name="TransitionLayer" type="CanvasLayer" parent="."] +visible = false + +[node name="SceneTransition" type="ColorRect" parent="TransitionLayer"] +material = SubResource( 11 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + [node name="UserInterface" parent="." instance=ExtResource( 6 )] unique_name_in_owner = true @@ -56,7 +108,7 @@ position = Vector2( -168, 95 ) scale = Vector2( 0.878906, 0.936025 ) [node name="BlobbySprite" parent="Blobby" index="5"] -frame = 7 +frame = 8 [node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"] parameters/playback = SubResource( 9 ) diff --git a/src/Levels/Level 1.tscn b/src/Levels/Level 1.tscn index aa10936..98249df 100644 --- a/src/Levels/Level 1.tscn +++ b/src/Levels/Level 1.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=23 format=2] +[gd_scene load_steps=25 format=2] [ext_resource path="res://assets/environment/decor/platform-plants.png" type="Texture" id=1] [ext_resource path="res://assets/sounds/AMBIENCE_SciFi_Large_Space_Hangar_Deep_Smooth_loop_stereo.wav" type="AudioStream" id=2] @@ -21,6 +21,46 @@ [ext_resource path="res://src/Contraptions/Triggers/GateButton.tscn" type="PackedScene" id=19] [ext_resource path="res://src/Actors/Enemies/DartingEnemy.tscn" type="PackedScene" id=20] +[sub_resource type="Shader" id=7] +code = "shader_type canvas_item; + +uniform vec4 in_color:hint_color; +uniform vec4 out_color:hint_color; + +uniform float in_out:hint_range(0.,1.)=0.; + +uniform float position:hint_range(-1.5,1.) = 0.856; +uniform vec2 size = vec2(16., 16.); + +void fragment(){ + + vec2 a = (1./SCREEN_PIXEL_SIZE) / size; + + vec2 uv=UV; + uv *= a; + + vec2 i_uv = floor(uv); + vec2 f_uv = fract(uv); + + float wave = max(0.,i_uv.x/(a.x) - position); + + vec2 center = f_uv*2.-1.; + float circle = length(center); + circle = 1. - step(wave,circle); + + vec4 color = mix(in_color, out_color, step(0.5, in_out)); + + COLOR=vec4(circle) * color; +}" + +[sub_resource type="ShaderMaterial" id=8] +shader = SubResource( 7 ) +shader_param/in_color = Color( 0, 0, 0, 1 ) +shader_param/out_color = Color( 0, 0, 0, 0.568627 ) +shader_param/in_out = 0.0 +shader_param/position = -1.5 +shader_param/size = Vector2( 32, 32 ) + [sub_resource type="AnimationNodeStateMachinePlayback" id=6] [sub_resource type="TileSet" id=5] @@ -60,6 +100,18 @@ __meta__ = { [node name="LevelState" parent="." instance=ExtResource( 8 )] unique_name_in_owner = true +[node name="TransitionLayer" type="CanvasLayer" parent="."] +visible = false + +[node name="SceneTransition" type="ColorRect" parent="TransitionLayer"] +material = SubResource( 8 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + [node name="UserInterface" parent="." instance=ExtResource( 3 )] unique_name_in_owner = true @@ -80,7 +132,7 @@ position = Vector2( -70, -1.90735e-06 ) scale = Vector2( 0.878906, 0.936025 ) [node name="BlobbySprite" parent="Blobby" index="5"] -frame = 7 +frame = 9 [node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"] parameters/playback = SubResource( 6 ) diff --git a/src/Levels/Level 2.tscn b/src/Levels/Level 2.tscn index c2a31bd..3011b9f 100644 --- a/src/Levels/Level 2.tscn +++ b/src/Levels/Level 2.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=24 format=2] +[gd_scene load_steps=26 format=2] [ext_resource path="res://src/Environment/DropThroughPlatforms.tres" type="TileSet" id=1] [ext_resource path="res://src/Environment/GreenHouseTiles.tres" type="TileSet" id=2] @@ -21,6 +21,46 @@ [ext_resource path="res://src/Platforms/Spring/Spring.tscn" type="PackedScene" id=19] [ext_resource path="res://src/ObstacleObjects/Spikes.tscn" type="PackedScene" id=20] +[sub_resource type="Shader" id=8] +code = "shader_type canvas_item; + +uniform vec4 in_color:hint_color; +uniform vec4 out_color:hint_color; + +uniform float in_out:hint_range(0.,1.)=0.; + +uniform float position:hint_range(-1.5,1.) = 0.856; +uniform vec2 size = vec2(16., 16.); + +void fragment(){ + + vec2 a = (1./SCREEN_PIXEL_SIZE) / size; + + vec2 uv=UV; + uv *= a; + + vec2 i_uv = floor(uv); + vec2 f_uv = fract(uv); + + float wave = max(0.,i_uv.x/(a.x) - position); + + vec2 center = f_uv*2.-1.; + float circle = length(center); + circle = 1. - step(wave,circle); + + vec4 color = mix(in_color, out_color, step(0.5, in_out)); + + COLOR=vec4(circle) * color; +}" + +[sub_resource type="ShaderMaterial" id=9] +shader = SubResource( 8 ) +shader_param/in_color = Color( 0, 0, 0, 1 ) +shader_param/out_color = Color( 0, 0, 0, 0.568627 ) +shader_param/in_out = 0.0 +shader_param/position = -1.5 +shader_param/size = Vector2( 32, 32 ) + [sub_resource type="AnimationNodeStateMachinePlayback" id=6] [sub_resource type="AnimationNodeStateMachinePlayback" id=7] @@ -62,6 +102,18 @@ __meta__ = { [node name="LevelState" parent="." instance=ExtResource( 12 )] unique_name_in_owner = true +[node name="TransitionLayer" type="CanvasLayer" parent="."] +visible = false + +[node name="SceneTransition" type="ColorRect" parent="TransitionLayer"] +material = SubResource( 9 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + [node name="UserInterface" parent="." instance=ExtResource( 8 )] unique_name_in_owner = true @@ -81,7 +133,7 @@ position = Vector2( -70, -1.90735e-06 ) scale = Vector2( 0.878906, 0.936025 ) [node name="BlobbySprite" parent="Blobby" index="5"] -frame = 6 +frame = 8 [node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"] parameters/playback = SubResource( 6 ) diff --git a/src/Levels/Level 4.tscn b/src/Levels/Level 4.tscn index 71f0c03..3b5dbb5 100644 --- a/src/Levels/Level 4.tscn +++ b/src/Levels/Level 4.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=27 format=2] +[gd_scene load_steps=29 format=2] [ext_resource path="res://src/Environment/Legacy/AlienShipTileSet.tres" type="TileSet" id=1] [ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=2] @@ -16,6 +16,46 @@ [ext_resource path="res://src/Contraptions/GateBlock.tscn" type="PackedScene" id=15] [ext_resource path="res://src/Contraptions/Triggers/GateButton.tscn" type="PackedScene" id=16] +[sub_resource type="Shader" id=16] +code = "shader_type canvas_item; + +uniform vec4 in_color:hint_color; +uniform vec4 out_color:hint_color; + +uniform float in_out:hint_range(0.,1.)=0.; + +uniform float position:hint_range(-1.5,1.) = 0.856; +uniform vec2 size = vec2(16., 16.); + +void fragment(){ + + vec2 a = (1./SCREEN_PIXEL_SIZE) / size; + + vec2 uv=UV; + uv *= a; + + vec2 i_uv = floor(uv); + vec2 f_uv = fract(uv); + + float wave = max(0.,i_uv.x/(a.x) - position); + + vec2 center = f_uv*2.-1.; + float circle = length(center); + circle = 1. - step(wave,circle); + + vec4 color = mix(in_color, out_color, step(0.5, in_out)); + + COLOR=vec4(circle) * color; +}" + +[sub_resource type="ShaderMaterial" id=17] +shader = SubResource( 16 ) +shader_param/in_color = Color( 0, 0, 0, 1 ) +shader_param/out_color = Color( 0, 0, 0, 0.568627 ) +shader_param/in_out = 0.0 +shader_param/position = -1.5 +shader_param/size = Vector2( 32, 32 ) + [sub_resource type="AnimationNodeStateMachinePlayback" id=15] [sub_resource type="AnimationNodeStateMachinePlayback" id=5] @@ -200,6 +240,18 @@ __meta__ = { [node name="LevelState" parent="." instance=ExtResource( 3 )] unique_name_in_owner = true +[node name="TransitionLayer" type="CanvasLayer" parent="."] +visible = false + +[node name="SceneTransition" type="ColorRect" parent="TransitionLayer"] +material = SubResource( 17 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + [node name="UserInterface" parent="." instance=ExtResource( 9 )] unique_name_in_owner = true @@ -219,7 +271,7 @@ position = Vector2( 21, -9 ) visible = true [node name="BlobbySprite" parent="Blobby" index="5"] -frame = 7 +frame = 9 [node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"] parameters/playback = SubResource( 15 ) @@ -275,7 +327,7 @@ position = Vector2( 1266, -537 ) [node name="WhatAreFrog" parent="BoundFrog2" index="0"] frog_number = 1 -[node name="Digit" parent="BoundFrog2/WhatAreFrog" index="2"] +[node name="Digit" parent="BoundFrog2/WhatAreFrog" index="3"] frame = 1 [node name="AnimationTree" parent="BoundFrog2/WhatAreFrog/FrogSprite" index="1"] diff --git a/src/Levels/Templates/LevelTemplate.gd b/src/Levels/Templates/LevelTemplate.gd index 71dd4c1..010a7fd 100644 --- a/src/Levels/Templates/LevelTemplate.gd +++ b/src/Levels/Templates/LevelTemplate.gd @@ -11,6 +11,13 @@ onready var level_state := $"%LevelState" func _ready() -> void: + $TransitionLayer.visible = true + var transition_tween = Tween.new() + add_child(transition_tween) + var property = "shader_param/position" + var node = $TransitionLayer/SceneTransition + transition_tween.interpolate_property(node.material, property,-1.5, 1.0, 0.94, Tween.TRANS_LINEAR, Tween.EASE_IN_OUT) + transition_tween.start() # should spawn the tutorial thingies which are still remembered in the progress dictionary signal_manager.connect("terminal_activated", self, "stop_level_music") signal_manager.emit_signal("level_loaded") diff --git a/src/Levels/Templates/Template.tscn b/src/Levels/Templates/Template.tscn index 5c7dcfa..78a52c8 100644 --- a/src/Levels/Templates/Template.tscn +++ b/src/Levels/Templates/Template.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=15 format=2] +[gd_scene load_steps=17 format=2] [ext_resource path="res://src/Environment/GreenHouseTiles.tres" type="TileSet" id=1] [ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=2] @@ -13,6 +13,46 @@ [ext_resource path="res://src/Contraptions/Triggers/ElevatorButton.tscn" type="PackedScene" id=11] [ext_resource path="res://src/Utilities/SceneAudio.tscn" type="PackedScene" id=13] +[sub_resource type="Shader" id=15] +code = "shader_type canvas_item; + +uniform vec4 in_color:hint_color; +uniform vec4 out_color:hint_color; + +uniform float in_out:hint_range(0.,1.)=0.; + +uniform float position:hint_range(-1.5,1.) = 0.856; +uniform vec2 size = vec2(16., 16.); + +void fragment(){ + + vec2 a = (1./SCREEN_PIXEL_SIZE) / size; + + vec2 uv=UV; + uv *= a; + + vec2 i_uv = floor(uv); + vec2 f_uv = fract(uv); + + float wave = max(0.,i_uv.x/(a.x) - position); + + vec2 center = f_uv*2.-1.; + float circle = length(center); + circle = 1. - step(wave,circle); + + vec4 color = mix(in_color, out_color, step(0.5, in_out)); + + COLOR=vec4(circle) * color; +}" + +[sub_resource type="ShaderMaterial" id=16] +shader = SubResource( 15 ) +shader_param/in_color = Color( 0, 0, 0, 1 ) +shader_param/out_color = Color( 0, 0, 0, 0.568627 ) +shader_param/in_out = 0.0 +shader_param/position = -1.5 +shader_param/size = Vector2( 32, 32 ) + [sub_resource type="AnimationNodeStateMachinePlayback" id=6] [sub_resource type="TileSet" id=5] @@ -52,6 +92,18 @@ __meta__ = { [node name="LevelState" parent="." instance=ExtResource( 3 )] unique_name_in_owner = true +[node name="TransitionLayer" type="CanvasLayer" parent="."] +visible = false + +[node name="SceneTransition" type="ColorRect" parent="TransitionLayer"] +material = SubResource( 16 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + [node name="UserInterface" parent="." instance=ExtResource( 8 )] unique_name_in_owner = true diff --git a/src/Sounds/default_bus_layout.tres b/src/Sounds/default_bus_layout.tres index cea26f7..e0bf04c 100644 --- a/src/Sounds/default_bus_layout.tres +++ b/src/Sounds/default_bus_layout.tres @@ -41,7 +41,7 @@ resource_name = "LowPassFilter" cutoff_hz = 3000.0 [resource] -bus/0/volume_db = -7.9588 +bus/0/volume_db = -9.897 bus/1/name = "Music" bus/1/solo = false bus/1/mute = false diff --git a/src/UserInterface/Buttons/AudibleCheckbox.gd b/src/UserInterface/Buttons/AudibleCheckbox.gd index 2e6223a..c8adfda 100644 --- a/src/UserInterface/Buttons/AudibleCheckbox.gd +++ b/src/UserInterface/Buttons/AudibleCheckbox.gd @@ -7,26 +7,26 @@ var focus_player var press_player func _ready() -> void: - focus_player = AudioStreamPlayer.new() - focus_player.bus = "UI" - var asrp = AudioStreamRandomPitch.new() - asrp.audio_stream = GlobalState.sound_library[focus_sound] - focus_player.stream = asrp - add_child(focus_player) - connect("focus_exited", self, "focus_play") + focus_player = AudioStreamPlayer.new() + focus_player.bus = "UI" + var asrp = AudioStreamRandomPitch.new() + asrp.audio_stream = GlobalState.sound_library[focus_sound] + focus_player.stream = asrp + add_child(focus_player) + connect("focus_exited", self, "focus_play") - press_player = AudioStreamPlayer.new() - press_player.bus = "UI" - var asrp2 = AudioStreamRandomPitch.new() - asrp2.audio_stream = GlobalState.sound_library[press_sound] - press_player.stream = asrp2 - add_child(press_player) - connect("button_down", self, "press_play") + press_player = AudioStreamPlayer.new() + press_player.bus = "UI" + var asrp2 = AudioStreamRandomPitch.new() + asrp2.audio_stream = GlobalState.sound_library[press_sound] + press_player.stream = asrp2 + add_child(press_player) + connect("button_down", self, "press_play") func focus_play(): - if visible: - focus_player.play() + if visible: + focus_player.play() func press_play(): - if visible: - press_player.play() + if visible: + press_player.play() diff --git a/src/UserInterface/Screens/InGameMenu/ControlsMenuIngame.gd b/src/UserInterface/Screens/InGameMenu/ControlsMenuIngame.gd index 0d221b5..f48807e 100644 --- a/src/UserInterface/Screens/InGameMenu/ControlsMenuIngame.gd +++ b/src/UserInterface/Screens/InGameMenu/ControlsMenuIngame.gd @@ -25,6 +25,7 @@ func _input(event: InputEvent) -> void: func rebuild(input_profile): _action_list.clear() var first = true + var prev_line for input_action in input_profile.keys(): if(input_action.ends_with("_old") || input_action.begins_with(("ui_"))): continue @@ -35,8 +36,12 @@ func rebuild(input_profile): $"%Save".focus_neighbour_top = line.get_child(2).get_path() $"%Reset".focus_neighbour_top = line.get_child(2).get_path() first = false + else: + line.get_child(2).focus_neighbour_top = prev_line.get_path() + prev_line.focus_neighbour_bottom = line.get_child(2).get_path() line.get_child(2).focus_neighbour_left = $"%Back".get_path() line.get_child(2).focus_neighbour_right = $"%Save".get_path() + prev_line = line.get_child(2) line.connect('change_button_pressed', self, '_on_InputLine_change_button_pressed', [input_action, line]) func close(): diff --git a/src/UserInterface/Screens/MainMenu/AudioMenu.tscn b/src/UserInterface/Screens/MainMenu/AudioMenu.tscn index 74e18e4..0fca44c 100644 --- a/src/UserInterface/Screens/MainMenu/AudioMenu.tscn +++ b/src/UserInterface/Screens/MainMenu/AudioMenu.tscn @@ -3,7 +3,7 @@ [ext_resource path="res://src/UserInterface/Screens/MainMenu/AudioSlider.gd" type="Script" id=1] [ext_resource path="res://src/UserInterface/Buttons/MenuNavigationButton.gd" type="Script" id=2] [ext_resource path="res://src/UserInterface/Screens/MainMenu/AudioMenu.gd" type="Script" id=3] -[ext_resource path="res://assets/environment/background/Spaceship-Wall.png" type="Texture" id=9] +[ext_resource path="res://assets/environment/background/Spaceship-Wall-Menu.png" type="Texture" id=4] [ext_resource path="res://assets/environment/background/starry-space.png" type="Texture" id=10] [ext_resource path="res://assets/meta/montserrat_extrabold.otf" type="DynamicFontData" id=18] [ext_resource path="res://assets/ui/sci-fi-godot-theme/sci-fi-theme.tres" type="Theme" id=20] @@ -49,7 +49,7 @@ stretch_mode = 1 [node name="background2" type="TextureRect" parent="."] anchor_right = 1.0 anchor_bottom = 1.0 -texture = ExtResource( 9 ) +texture = ExtResource( 4 ) expand = true stretch_mode = 1 diff --git a/src/UserInterface/Screens/MainMenu/ControlsMenu/ActionKeyList.gd b/src/UserInterface/Screens/MainMenu/ControlsMenu/ActionKeyList.gd index f685f79..c27e3f1 100644 --- a/src/UserInterface/Screens/MainMenu/ControlsMenu/ActionKeyList.gd +++ b/src/UserInterface/Screens/MainMenu/ControlsMenu/ActionKeyList.gd @@ -4,14 +4,14 @@ const InputLine = preload("res://src/UserInterface/Screens/MainMenu/ControlsMenu var prev_line = null func clear(): - for child in get_children(): - child.free() + for child in get_children(): + child.free() func add_input_line(action_name, event) -> Control: - var line = InputLine.instance() - add_child(line) - line.initialize(action_name, event) - #!if prev_line != null: - # line.get_child(2).focus_neighbour_top = prev_line.get_child(2).get_path() - prev_line = line - return line + var line = InputLine.instance() + add_child(line) + line.initialize(action_name, event) + #!if prev_line != null: + # line.get_child(2).focus_neighbour_top = prev_line.get_child(2).get_path() + prev_line = line + return line diff --git a/src/UserInterface/Screens/MainMenu/ControlsMenu/ControlsMenu.gd b/src/UserInterface/Screens/MainMenu/ControlsMenu/ControlsMenu.gd index 50bc2f0..b149e74 100644 --- a/src/UserInterface/Screens/MainMenu/ControlsMenu/ControlsMenu.gd +++ b/src/UserInterface/Screens/MainMenu/ControlsMenu/ControlsMenu.gd @@ -27,18 +27,24 @@ func _input(event: InputEvent) -> void: func rebuild(input_profile) -> void: _action_list.clear() var first = true + var prev_line for input_action in input_profile.keys(): if(input_action.ends_with("_old") || input_action.begins_with(("ui_"))): continue var line = _action_list.add_input_line(input_action, input_profile[input_action]) + # child(2) is the actual button inside the inputline if first: $ProfilesMenu.focus_neighbour_bottom = line.get_child(2).get_path() $"%Back".focus_neighbour_top = line.get_child(2).get_path() $"%Save".focus_neighbour_top = line.get_child(2).get_path() $"%Reset".focus_neighbour_top = line.get_child(2).get_path() first = false + else: + line.get_child(2).focus_neighbour_top = prev_line.get_path() + prev_line.focus_neighbour_bottom = line.get_child(2).get_path() line.get_child(2).focus_neighbour_left = $"%Back".get_path() line.get_child(2).focus_neighbour_right = $"%Save".get_path() + prev_line = line.get_child(2) line.connect('change_button_pressed', self, '_on_InputLine_change_button_pressed', [input_action, line]) func _on_InputLine_change_button_pressed(action_name, line): diff --git a/src/UserInterface/Screens/MainMenu/ControlsMenu/ControlsMenu.tscn b/src/UserInterface/Screens/MainMenu/ControlsMenu/ControlsMenu.tscn index 5ba9e3b..b6b0f41 100644 --- a/src/UserInterface/Screens/MainMenu/ControlsMenu/ControlsMenu.tscn +++ b/src/UserInterface/Screens/MainMenu/ControlsMenu/ControlsMenu.tscn @@ -8,7 +8,7 @@ [ext_resource path="res://src/UserInterface/Screens/MainMenu/ControlsMenu/ReallyQuitMenu.gd" type="Script" id=6] [ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=7] [ext_resource path="res://src/UserInterface/Buttons/AudibleButton.gd" type="Script" id=8] -[ext_resource path="res://assets/environment/background/Spaceship-Wall.png" type="Texture" id=9] +[ext_resource path="res://assets/environment/background/Spaceship-Wall-Menu.png" type="Texture" id=9] [ext_resource path="res://assets/environment/background/starry-space.png" type="Texture" id=10] [ext_resource path="res://assets/ui/Screenshot 2023-05-23 160521.png" type="Texture" id=12] [ext_resource path="res://src/UserInterface/Screens/MainMenu/ControlsMenu/ProfilesMenu.gd" type="Script" id=13] diff --git a/src/UserInterface/Screens/MainMenu/ControlsMenu/InputLine.gd b/src/UserInterface/Screens/MainMenu/ControlsMenu/InputLine.gd index d1d0d2c..f0e980a 100644 --- a/src/UserInterface/Screens/MainMenu/ControlsMenu/InputLine.gd +++ b/src/UserInterface/Screens/MainMenu/ControlsMenu/InputLine.gd @@ -2,31 +2,35 @@ extends HBoxContainer signal change_button_pressed -export var button_size: Vector2 = Vector2(30,30) +export var button_size: Vector2 = Vector2(30, 30) export var interactable: bool = false + func initialize(action_name, event): - $Action.text = action_name.capitalize() - $Key.add_child(create_controller_button(event)) + $Action.text = action_name.capitalize() + $Key.add_child(create_controller_button(event)) + func update_key(event): - $Key.remove_child($Key.get_child(0)) - $Key.add_child(create_controller_button(event)) + $Key.remove_child($Key.get_child(0)) + $Key.add_child(create_controller_button(event)) + func create_controller_button(event) -> ControllerButton: - var event_path = ControllerIcons._convert_event_to_path(event) - var controller_button: ControllerButton = ControllerButton.new() - controller_button.path = event_path - if(!interactable): - controller_button.focus_mode = FOCUS_NONE - controller_button.enabled_focus_mode = FOCUS_NONE - controller_button.mouse_filter = MOUSE_FILTER_IGNORE - controller_button.rect_size = button_size - controller_button.expand_icon = true - controller_button.grow_horizontal = Control.GROW_DIRECTION_BOTH - controller_button.grow_vertical = Control.GROW_DIRECTION_BOTH - controller_button.size_flags_horizontal - return controller_button + var event_path = ControllerIcons._convert_event_to_path(event) + var controller_button: ControllerButton = ControllerButton.new() + controller_button.path = event_path + if !interactable: + controller_button.focus_mode = FOCUS_NONE + controller_button.enabled_focus_mode = FOCUS_NONE + controller_button.mouse_filter = MOUSE_FILTER_IGNORE + controller_button.rect_size = button_size + controller_button.expand_icon = true + controller_button.grow_horizontal = Control.GROW_DIRECTION_BOTH + controller_button.grow_vertical = Control.GROW_DIRECTION_BOTH + controller_button.size_flags_horizontal + return controller_button + func _on_ChangeButton_pressed(): - emit_signal('change_button_pressed') + emit_signal("change_button_pressed") diff --git a/src/UserInterface/Screens/MainMenu/LevelCheckBox.gd b/src/UserInterface/Screens/MainMenu/LevelCheckBox.gd index 604ea33..3b91756 100644 --- a/src/UserInterface/Screens/MainMenu/LevelCheckBox.gd +++ b/src/UserInterface/Screens/MainMenu/LevelCheckBox.gd @@ -1,17 +1,17 @@ extends VBoxContainer func initialize_with_progress(levelFullName: String) -> void: - if !GlobalState.get_progress().has(levelFullName): - return - if !GlobalState.get_progress()[levelFullName].has("froggies"): - return - var froggies : Dictionary = GlobalState.get_progress()[levelFullName]["froggies"] - for key in froggies.keys(): - register_froggy(int(key), froggies[key]) - + if !GlobalState.get_progress().has(levelFullName): + return + if !GlobalState.get_progress()[levelFullName].has("froggies"): + return + var froggies : Dictionary = GlobalState.get_progress()[levelFullName]["froggies"] + for key in froggies.keys(): + register_froggy(int(key), froggies[key]) + func register_froggy(var count : int = 0, var freed: bool = false) -> void: - var frogo: String = "%FreedFroggy" + str(count + 1) - var test = self.get_children() - get_node(frogo).visible = true - get_node(frogo + "/ImprisionedFroggy").visible = !freed + var frogo: String = "%FreedFroggy" + str(count + 1) + var test = self.get_children() + get_node(frogo).visible = true + get_node(frogo + "/ImprisionedFroggy").visible = !freed diff --git a/src/UserInterface/Screens/MainMenu/LevelCheckBox.tscn b/src/UserInterface/Screens/MainMenu/LevelCheckBox.tscn index 8795204..69acaab 100644 --- a/src/UserInterface/Screens/MainMenu/LevelCheckBox.tscn +++ b/src/UserInterface/Screens/MainMenu/LevelCheckBox.tscn @@ -150,3 +150,4 @@ margin_right = 119.0 margin_bottom = 32.0 [connection signal="focus_entered" from="." to="." method="_on_LevelCheckBox_focus_entered"] +[connection signal="pressed" from="CheckBox" to="." method="_on_CheckBox_pressed"] diff --git a/src/UserInterface/Screens/MainMenu/LevelList.gd b/src/UserInterface/Screens/MainMenu/LevelList.gd index 219b69a..ad445d4 100644 --- a/src/UserInterface/Screens/MainMenu/LevelList.gd +++ b/src/UserInterface/Screens/MainMenu/LevelList.gd @@ -6,11 +6,20 @@ onready var LEVEL_CHECK_BOX = load("res://src/UserInterface/Screens/MainMenu/Lev onready var vbox: VBoxContainer = $VBoxContainer var prev_checkbox +var selected_button func _ready() -> void: BUTTON_GROUP.connect("pressed", $"%PlayButton", "_level_selection_changed") + BUTTON_GROUP.connect("pressed", self, "_level_selection_changed") _fill_level_list() +func _level_selection_changed(button) -> void: + selected_button = button + +func _input(event: InputEvent) -> void: + if(event.is_action("ui_accept") && selected_button != null && selected_button.has_focus()): + $"%PlayButton"._on_button_up() + func _fill_level_list(): var levels = [] var dir = Directory.new() diff --git a/src/UserInterface/Screens/MainMenu/MainScreen.tscn b/src/UserInterface/Screens/MainMenu/MainScreen.tscn index 3c430d1..509c1c0 100644 --- a/src/UserInterface/Screens/MainMenu/MainScreen.tscn +++ b/src/UserInterface/Screens/MainMenu/MainScreen.tscn @@ -5,7 +5,7 @@ [ext_resource path="res://src/UserInterface/Buttons/ChangeSceneButton.tscn" type="PackedScene" id=3] [ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=4] [ext_resource path="res://assets/meta/ui_theme.tres" type="Theme" id=5] -[ext_resource path="res://assets/environment/background/Spaceship-Wall.png" type="Texture" id=6] +[ext_resource path="res://assets/environment/background/Spaceship-Wall-Menu.png" type="Texture" id=6] [ext_resource path="res://assets/environment/background/starry-space.png" type="Texture" id=7] [ext_resource path="res://src/UserInterface/Buttons/PlayButton.gd" type="Script" id=8] [ext_resource path="res://src/UserInterface/Screens/MainMenu/LevelSelectButtonGroup.tres" type="ButtonGroup" id=9]