From d27d9d8b831c8271c378260b83d37ecf4884d40a Mon Sep 17 00:00:00 2001 From: Haze Weathers Date: Tue, 21 Feb 2023 13:40:49 -0500 Subject: [PATCH] FADE SYSTEM :3 --- control.tscn | 61 ++++++++++++++++++++- game.gd | 6 ++ graphics/fade_patterns/diamonds.png | Bin 0 -> 17985 bytes graphics/fade_patterns/diamonds.png.import | 35 ++++++++++++ maps/level_select.gd | 1 + maps/map.gd | 5 ++ scripts/fade.gd | 18 ++++++ scripts/fade.gdshader | 44 +++++++++++++++ 8 files changed, 169 insertions(+), 1 deletion(-) create mode 100644 graphics/fade_patterns/diamonds.png create mode 100644 graphics/fade_patterns/diamonds.png.import create mode 100644 scripts/fade.gd create mode 100644 scripts/fade.gdshader diff --git a/control.tscn b/control.tscn index 990e610..fad7dc7 100644 --- a/control.tscn +++ b/control.tscn @@ -6,6 +6,9 @@ [ext_resource path="res://scripts/crt.gdshader" type="Shader" id=4] [ext_resource path="res://scripts/2ndpuberty_no_dropshadow.tres" type="Theme" id=5] [ext_resource path="res://scripts/2ndpuberty_outline.tres" type="Material" id=6] +[ext_resource path="res://graphics/fade_patterns/diamonds.png" type="Texture" id=7] +[ext_resource path="res://scripts/fade.gd" type="Script" id=8] +[ext_resource path="res://scripts/fade.gdshader" type="Shader" id=9] [sub_resource type="ShaderMaterial" id=1] shader = ExtResource( 4 ) @@ -15,6 +18,43 @@ shader_param/curvature = Vector2( 6, 6 ) shader_param/scanline_opacity = Vector2( 0.4, 0.05 ) shader_param/brightness = 1.25 +[sub_resource type="ShaderMaterial" id=6] +shader = ExtResource( 9 ) +shader_param/color = Color( 0, 0, 0, 1 ) +shader_param/smooth_mode = false +shader_param/reverse = false +shader_param/opacity = 0.0 + +[sub_resource type="Animation" id=7] +resource_name = "FadeIn" +tracks/0/type = "value" +tracks/0/path = NodePath("TextureRect:material:shader_param/opacity") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 1.0, 0.0 ] +} + +[sub_resource type="Animation" id=8] +resource_name = "FadeOut" +tracks/0/type = "value" +tracks/0/path = NodePath("TextureRect:material:shader_param/opacity") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 1.0 ] +} + [node name="Control" type="Control"] pause_mode = 2 anchor_right = 1.0 @@ -52,7 +92,7 @@ render_target_update_mode = 3 [node name="LevelSelect" parent="ViewportContainer/Viewport" instance=ExtResource( 3 )] [node name="CheatLayer" type="CanvasLayer" parent="ViewportContainer/Viewport"] -layer = 127 +layer = 120 [node name="CheatLabel" type="Label" parent="ViewportContainer/Viewport/CheatLayer"] material = ExtResource( 6 ) @@ -63,3 +103,22 @@ margin_bottom = -5.0 theme = ExtResource( 5 ) align = 2 valign = 2 + +[node name="FadeLayer" type="CanvasLayer" parent="ViewportContainer/Viewport"] +pause_mode = 2 +layer = 128 +script = ExtResource( 8 ) + +[node name="TextureRect" type="TextureRect" parent="ViewportContainer/Viewport/FadeLayer"] +material = SubResource( 6 ) +margin_right = 255.994 +margin_bottom = 192.0 +texture = ExtResource( 7 ) +expand = true +stretch_mode = 6 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="ViewportContainer/Viewport/FadeLayer"] +anims/FadeIn = SubResource( 7 ) +anims/FadeOut = SubResource( 8 ) + +[connection signal="animation_finished" from="ViewportContainer/Viewport/FadeLayer/AnimationPlayer" to="ViewportContainer/Viewport/FadeLayer" method="_fade_finished"] diff --git a/game.gd b/game.gd index bda9fe1..ffd0d2e 100644 --- a/game.gd +++ b/game.gd @@ -5,6 +5,7 @@ onready var viewport = get_parent().get_node("Main/Control/ViewportContainer/Vie var current_sector = Vector2(0,0) var fullscreen = false #Onreadys +onready var fade = viewport.get_node("FadeLayer") onready var viewport_container = get_parent().get_node("Main/Control/ViewportContainer") #Collectibles var golds = 0 @@ -77,6 +78,11 @@ func get_map(): #Go to new map func change_map(map): + get_tree().paused = true + can_pause = false + fade.fade_out(0.4) + yield(fade, "fade_finished") + can_pause = true clear_collectibles() #Loop is so no more than one level is loaded at a time for maps in get_tree().get_nodes_in_group("map"): diff --git a/graphics/fade_patterns/diamonds.png b/graphics/fade_patterns/diamonds.png new file mode 100644 index 0000000000000000000000000000000000000000..c7fed7afc61ca74059b7e51c290f70f2ce625153 GIT binary patch literal 17985 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 UBB+cWzKe$_sLQ{TwT%3~0EpQi&;S4c literal 0 HcmV?d00001 diff --git a/graphics/fade_patterns/diamonds.png.import b/graphics/fade_patterns/diamonds.png.import new file mode 100644 index 0000000..ea84281 --- /dev/null +++ b/graphics/fade_patterns/diamonds.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/diamonds.png-1b6afccd789d89c964ce5cbd8de4f0ae.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/fade_patterns/diamonds.png" +dest_files=[ "res://.import/diamonds.png-1b6afccd789d89c964ce5cbd8de4f0ae.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=true +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=true +svg/scale=1.0 diff --git a/maps/level_select.gd b/maps/level_select.gd index 178786b..797c5ba 100644 --- a/maps/level_select.gd +++ b/maps/level_select.gd @@ -31,6 +31,7 @@ export var target_time_any = 0 # Called when the node enters the scene tree for the first time. func _ready(): + Game.fade.fade_in(0.000000000000001) change_current_level(Game.current_level) Game.ac_music.stop() diff --git a/maps/map.gd b/maps/map.gd index 25d64e2..cff2dbd 100644 --- a/maps/map.gd +++ b/maps/map.gd @@ -9,6 +9,11 @@ var life_bonus = true var collectible_bonus = false func _ready(): + get_tree().paused = true + Game.can_pause = false + Game.fade.fade_in(0.4) + Game.fade.connect("fade_finished", get_tree(), "set_pause", [false], CONNECT_ONESHOT) + Game.fade.connect("fade_finished", Game, "set", ["can_pause", true], CONNECT_ONESHOT) Game.play_music(music) func _physics_process(delta): diff --git a/scripts/fade.gd b/scripts/fade.gd new file mode 100644 index 0000000..4a7dc77 --- /dev/null +++ b/scripts/fade.gd @@ -0,0 +1,18 @@ +extends CanvasLayer + +signal fade_finished + +func fade_in(time, reverse = false, color = Color.black): + var rect = $TextureRect + rect.material.set_shader_param("color", color) + rect.material.set_shader_param("reverse", reverse) + $AnimationPlayer.play("FadeIn", -1, 1.0 / time) + +func fade_out(time, reverse = false, color = Color.black): + var rect = $TextureRect + rect.material.set_shader_param("color", color) + rect.material.set_shader_param("reverse", reverse) + $AnimationPlayer.play("FadeOut", -1, 1.0 / time) + +func _fade_finished(anim_name): + emit_signal("fade_finished") diff --git a/scripts/fade.gdshader b/scripts/fade.gdshader new file mode 100644 index 0000000..b161fab --- /dev/null +++ b/scripts/fade.gdshader @@ -0,0 +1,44 @@ +shader_type canvas_item; + +/* +MIT License + +Copyright (c) 2019 Tomek + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +uniform vec4 color : hint_color; +uniform bool smooth_mode = false; +uniform bool reverse = false; +uniform float opacity : hint_range(0, 1); + +void fragment() { + float alpha = texture(TEXTURE, UV).r; + if (reverse) { + alpha = clamp(1.0 - alpha, 0.0, 1.0); + } + + if (smooth_mode) { + alpha = mix(0.0, 1.0, clamp(alpha - 1.0 + opacity * 2.0, 0.0, 1.0)); + } else { + alpha = clamp(ceil(alpha + opacity * 1.00001 - 1.0), 0.0, 1.0); + } + COLOR = vec4(color.rgb, alpha); +}