From e256cc15cb423a54368272edfc400916e6892f49 Mon Sep 17 00:00:00 2001 From: Haze Weathers Date: Thu, 5 Oct 2023 19:44:49 -0400 Subject: [PATCH] new exit graphics --- graphics/exit/exit.png | Bin 260 -> 4978 bytes graphics/exit/exit_back.png | Bin 0 -> 4490 bytes graphics/exit/exit_back.png.import | 35 +++++ objects/environment/exit/exit.gd | 24 ++-- objects/environment/exit/exit.tscn | 210 ++++++++++++----------------- shaders/beam_of_sin.gdshader | 16 +++ 6 files changed, 151 insertions(+), 134 deletions(-) create mode 100644 graphics/exit/exit_back.png create mode 100644 graphics/exit/exit_back.png.import create mode 100644 shaders/beam_of_sin.gdshader diff --git a/graphics/exit/exit.png b/graphics/exit/exit.png index 5974678198a412d1f63fa8e8782e07505a537b9a..53c0b910e256ee3638eab84d4e40a91fff3d4594 100644 GIT binary patch literal 4978 zcmeHKdsGuw8lQ-~;;P#&3RYZ)h@#t0-U&%05+FP^NFhZOG)^XyFqLFtGDyU#fYb*n z#TQgie5{JXic~#Vr79>CrKohM zBM##hLJL8b8~TX)k>}w*b?Y)Rp;8Zv`#(J+z3+8Os}F<~=BKN4-C-|YB<@?2n&Ek9 zCV69?gFKKZzjvJzKKJO3$LYiEUyYs3clKYq=XygUW97Hsok%I76)m7Y(f#@1&boL- zPeBBw&Aadjp%X4@(_VS%%|&+(EI(OX(%O~T%Gw??x)ys;eOIL#8%Gx1J1?K^dO54M z*{(zy?z17KHf~c)3_7Ai_8`vLu`8)yT?cK4!@SLW`c+2=qNNi70TH1A0k3NUmF!r) zNg8rq=3b?Wnz>);{t=@&YY#nbzOwSG=siwj{14X^uDbZ-FS&frY0S*DMHLlaR28mT zf2?>^aT?r7YkttY?;d0FOV+gGYuo?z^~APTX=@|R|5%OknAfO-x%j><&YZm1F{_R^ zd8GI`x#es>bR{&Bo`37%UuT?Ytg>W3JLwy&I{BuK)zLy_GtnHs;HRmo3#WG6{ibT} z;j43B^<++4Isjl@e-R#rKWJPFwQ*~*Bgw}nfeB0IbYq{l*yzXzz94j66 z{6y;dhnWW+(Q>Aj*KJ{rKRT(4pjR>ey&|Y-tDS=(wJx_lcG<*&(X!R2!WtmQHRUnu zj$V^CHq4DTQO}l^2-5U=z7`{j zEy5{Sjq3=5l+jjpmH`tQDPxX6!B!Xp@OUC5*@QTu}A=b9;Z;) zqE9fGB^D{ehARQTt!5Sjwz*J?q>LCv1ROw`aG1~JGucR>g;>I6%%Hk|rICBNmHUY%Yt-MSurlUTUCF3t})&vO@G?$Z<1fB8(J4 z8el6XswNXDDT4v#;n(@;jS59SyusYZ0^oyXL5(a9lg-lWSpy@?RNxW-(wER5Mwpdg ztFj_-Gnr_@@W3UwftoZBLWA|k8xu_lwsJHW3s1oHz|{;^))`wl0}}z^{kVg?U)OGP23`t&Pr_kK*a9U- zEa7t`JRZX4OV|VaNe!W0`ro{*n+NvkZFvY`2J0`inR<6r6u!83)H_TdY+DJ2ZJR=Z zV!b7p(IvRXmM6gKox;Cd$ky z)W=$Gc5nvbwaukVb^30>$_-7+Ugdr7R{FDg{onrX09Ur_#~y7v%aWd*QrX_p`kN~h zGVZ46N{8LEu4{90psm|gb1qYi&i0-yrL-d7olY%zPGwAA-;U!WV|q#+e%e$S*O7JW ziyIFAcp2AmoK%yaRldx*VjVVihP)`BKMb1JLW>M?cYi+1D=m7N%x9F*crP}#P)yI_ zo|8H|moYDWT;k$robCT%Q~T9Wr4Bed~+jHbR`DI1)vXb5J{UGe=RM(K1X&XB;y}wyDC6yJ` z2|`=ij^xpzemnfMyfCr8xke~xa<`8@T+pt#G`+E|@CpCSp{}_FXLmpGT+z(T68df1 zDg6Aqb4T!ofL*`%h2V=niBrvIy2~HmCeyx^L0&2e$b{f*%sI$7?o`U|GbA5xCpSIn~f3Cb_GEL5ODJV2BTwd(I GFzr7b21auL delta 247 zcmeyQ*20w48Q|y6%O%Cdz`(%k>ERLtq!oZzf`b`IuIc4x15%8|LGDfr>(0r%1aer? z9eo`c7&i8E|4C#8^7#XNLR`NZJC)jq0(t*0Isr+BG`o2~lC>nrFZe$YF#O)e7d-i& zfJA++r;B5Vh5y=fja&^10?Yxv|NqaPecO-2YH~s0%C~~k{!O%BAX4+R`L6bb9W~6G z&o-nnKH`(CcqXzURCuRE9_Ok9BCk~098?n?N*zpO?>W|RNOd!71j~U}r*5*W`DDn*GCVxz^@1d>Q`prjoONDPE%hbkcDk5-WYefKV(Q)irX z%73|;yWM@>=lMO)^Lu{pJGYw(3-Z#8-!mczlIG3#6v68Z_??-W0)Ibz@U{jo?^pYa zwIaR}jj9n@2?A8BiUJhG6&XR|=R$?OX`N*1V4%JMNojw7?X0}dQyy+V+rMa2^$Rmk z>}@rCed+0=<>;36T|X-FO`Bcx%Eni{F88kGncLF(()%v2e{H&J*&AE0u6p6iH@RE) zE~ZZobnm}n3Rdo|zq#Yttyx{4tD zw+{a9(walzYtOCv^ggbQIo)>zw*^&V+G6zhbUTB)rKfPzeDvO~_ zYC#ag2F2|z^t#={9l<_!KfTqN-?{Xm?$Q;@UhzM)7#rBK*I2v8-_^2mZ|dyqgFOf8 zj{oa{M*7i(riR+`BS(JOeW337*5(<_wdhxdfzJo_{R4aKHnH%n=dSm^^T@R?oL`(b zWVe3cZ_SvozY*-)HjUb~dUoBLsSDP-Qs?d1`P)<8B4g7hm%qQ{z4P7i?O*;rE3fpu zC(RuhvySZy7kAC?vh3Ra=c<=&M?X-TzSx@Y>VEOpJ=8=GUt`I_Vu<0&fU6&2)ETeXB&T0 z1{JqjfeI`3E$75Y$izz#0hr>UD3l(8II`kVUMvS1Du93zc4F7wZO2eWa$-*~KGGL; zgEA$*S_Lbr3;berxoDTLtR+TAoPz)%pz&xt6b#3>xD!j@a`0X^6BwFs(aN1zv9Azy zM^u2)CfY>eIdNs38CzmR9jYXAMV{Ot2>9g0$}}y?5kzHWrK!?lil_mCvfJ$hX(r5O z9D3lfs<6h#@o+3%he%?0KulDXsHQ~1sE)}CkqXU;VQ?KCt}hhz`9|Qwu^|>9A4Hsw z5|oJ~LLp*oL`=(B2SJ7k`o@TuA8u5l2*e^4st9t{fv}c77D5t7;-eL6Fwu@A5+Ddd z&@~3LQsYwQd3}W=5jq6{B@|6WL9)krYKlBc*0|dAl|(yZ3xVMyxZ}Ksdrvq+FQ1R| zM8pccJg>)z>G?S+A}SJ>xMl2sF|(otHv^HzX`9uI+j*NAx0+eOCQ`JWW#utY-f&Fg z!y?e3Ah=0^I9AdsiX1~{?hO1L6E>grcQV1>r(Y*MV9WoXt;vJ}P8R?Dc9A{bL1HRh@{9>-{!4v9@LQ>dA<^Z`KuD9PMlAPZNdMqMqmAndE0mvid3d%FV6`GkC)WY$#RF(mK3Xm|IwBu&GpR#eJjbp4s zgb{bYMFvn-hO`PeCGj#&3$h&-WY&z^Se|59i<_jH7RiAPoQLRl@f{$KP-L48BXI2+Q(3NHNlm^uL@bq0lldnqLxw zFQA?J*KjPdUxLP|n%9>z^^)-E zgZQnkqBR@NqO*PtZrm&tKc0EQ?vm?McTOv9NbPxQ>cKsWR+c#z?f-6wIDPS%w~P(f e=iL#0YWQn++r3*dH$DK75pPa`r#bt{+W!EtnMTn7 literal 0 HcmV?d00001 diff --git a/graphics/exit/exit_back.png.import b/graphics/exit/exit_back.png.import new file mode 100644 index 0000000..6fc7734 --- /dev/null +++ b/graphics/exit/exit_back.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/exit_back.png-cd39ec899573a453a62e1f55eaf2a249.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/exit/exit_back.png" +dest_files=[ "res://.import/exit_back.png-cd39ec899573a453a62e1f55eaf2a249.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/objects/environment/exit/exit.gd b/objects/environment/exit/exit.gd index 535fff3..d84a139 100644 --- a/objects/environment/exit/exit.gd +++ b/objects/environment/exit/exit.gd @@ -1,21 +1,27 @@ extends Node2D -export var cost = 0 -onready var label = $Label -onready var anims = $AnimationPlayer -onready var map = get_owner() +export var cost: int = 0 + +var open: bool = false + +onready var label: Label = $Label +onready var detect_shape: CollisionShape2D = $DetectPlayer/CollisionShape2D +onready var sprite: Sprite = $Sprite +onready var closed_collision: CollisionShape2D = $"%ClosedCollision" func _ready(): - anims.play("closed") label.text = "¶" + str(cost) - func _physics_process(delta): - if Game.keys >= cost: - anims.play("open") + if Game.keys >= cost and not open: + open = true + detect_shape.disabled = false + closed_collision.disabled = true + label.visible = false + var tween = create_tween() + tween.tween_property(sprite, "frame", 3, 0.25) func _on_Area2D_area_entered(area): if area.is_in_group("player_hitbox"): Game.tally_scores() SceneManager.change_scene(preload("res://menus/results.tscn").instance()) -# Game.change_map(load("res://maps/level_select.tscn")) diff --git a/objects/environment/exit/exit.tscn b/objects/environment/exit/exit.tscn index 301287e..e572504 100644 --- a/objects/environment/exit/exit.tscn +++ b/objects/environment/exit/exit.tscn @@ -1,152 +1,112 @@ -[gd_scene load_steps=10 format=2] +[gd_scene load_steps=14 format=2] [ext_resource path="res://ui/theme.tres" type="Theme" id=1] [ext_resource path="res://objects/environment/exit/exit.gd" type="Script" id=2] [ext_resource path="res://graphics/exit/exit.png" type="Texture" id=3] -[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=4] +[ext_resource path="res://shaders/beam_of_sin.gdshader" type="Shader" id=4] [ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=5] +[ext_resource path="res://graphics/exit/exit_back.png" type="Texture" id=6] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=7] -[sub_resource type="ShaderMaterial" id=1] +[sub_resource type="ShaderMaterial" id=4] shader = ExtResource( 4 ) -shader_param/border_color = Color( 0, 0, 0, 1 ) -shader_param/border_corners = true +shader_param/speed = 5.0 +shader_param/cycle_offset = 0.0 +shader_param/wave_length = 8.0 +shader_param/thickness = 0.1 + +[sub_resource type="ShaderMaterial" id=5] +shader = ExtResource( 4 ) +shader_param/speed = -6.0 +shader_param/cycle_offset = 3.0 +shader_param/wave_length = 5.0 +shader_param/thickness = 0.1 + +[sub_resource type="Gradient" id=6] +interpolation_mode = 1 +offsets = PoolRealArray( 0, 0.5 ) +colors = PoolColorArray( 0.345098, 0.74902, 0.878431, 1, 0.396078, 1, 1, 1 ) [sub_resource type="RectangleShape2D" id=2] -extents = Vector2( 8, 7.5 ) +extents = Vector2( 1, 1 ) -[sub_resource type="Animation" id=3] -resource_name = "closed" -tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:region_rect") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ Rect2( 0, 0, 16, 24 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Area2D/CollisionShape2D:disabled") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ true ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("Label:visible") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ true ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("Sprite:modulate") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ Color( 1, 1, 1, 1 ) ] -} +[sub_resource type="RectangleShape2D" id=7] +extents = Vector2( 7, 7.5 ) -[sub_resource type="Animation" id=4] -resource_name = "open" -length = 0.8 -loop = true -tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:region_rect") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ Rect2( 16, 0, 16, 24 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Area2D/CollisionShape2D:disabled") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ false ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("Label:visible") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ false ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("Sprite:modulate") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0, 0.4, 0.8 ), -"transitions": PoolRealArray( 1, 1, 1 ), -"update": 0, -"values": [ Color( 1, 0, 0, 1 ), Color( 0, 1, 0.203922, 1 ), Color( 1, 0, 0, 1 ) ] -} +[sub_resource type="RectangleShape2D" id=8] +extents = Vector2( 8, 4.5 ) [node name="Exit" type="Node2D"] -z_index = 50 script = ExtResource( 2 ) +[node name="Background" type="Sprite" parent="."] +position = Vector2( 0, 5 ) +z_index = -1 +texture = ExtResource( 6 ) + +[node name="Sprite" type="Sprite" parent="."] +material = ExtResource( 7 ) +texture = ExtResource( 3 ) +hframes = 4 + +[node name="Energy" type="Node2D" parent="Sprite"] +show_behind_parent = true + +[node name="Wave1" type="ColorRect" parent="Sprite/Energy"] +material = SubResource( 4 ) +margin_left = -7.0 +margin_top = -3.0 +margin_right = 7.0 +margin_bottom = 12.0 +color = Color( 0.396078, 1, 1, 1 ) + +[node name="Wave2" type="ColorRect" parent="Sprite/Energy"] +material = SubResource( 5 ) +margin_left = -7.0 +margin_top = -3.0 +margin_right = 7.0 +margin_bottom = 12.0 +color = Color( 0.345098, 0.74902, 0.878431, 1 ) + +[node name="Sparkles" type="CPUParticles2D" parent="Sprite/Energy"] +position = Vector2( 0, 12 ) +amount = 16 +lifetime = 2.0 +emission_shape = 2 +emission_rect_extents = Vector2( 6, 0 ) +direction = Vector2( 0, -1 ) +spread = 0.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 12.0 +damping = 4.0 +color_initial_ramp = SubResource( 6 ) + [node name="Label" type="Label" parent="."] material = ExtResource( 5 ) margin_left = -10.0 -margin_top = -15.0 -margin_right = 30.0 -margin_bottom = 5.0 +margin_top = -12.0 +margin_right = 11.0 +margin_bottom = 8.0 theme = ExtResource( 1 ) text = "¶22" -[node name="Sprite" type="Sprite" parent="."] -material = SubResource( 1 ) -texture = ExtResource( 3 ) -region_enabled = true -region_rect = Rect2( 0, 0, 16, 24 ) - -[node name="Area2D" type="Area2D" parent="."] +[node name="DetectPlayer" type="Area2D" parent="."] z_index = -3 -[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] -position = Vector2( 0, 4.5 ) +[node name="CollisionShape2D" type="CollisionShape2D" parent="DetectPlayer"] +position = Vector2( 0, 11 ) shape = SubResource( 2 ) disabled = true -[node name="AnimationPlayer" type="AnimationPlayer" parent="."] -anims/closed = SubResource( 3 ) -anims/open = SubResource( 4 ) +[node name="Collision" type="StaticBody2D" parent="." groups=["can_stain"]] -[connection signal="area_entered" from="Area2D" to="." method="_on_Area2D_area_entered"] +[node name="ClosedCollision" type="CollisionShape2D" parent="Collision"] +unique_name_in_owner = true +position = Vector2( 0, 4.5 ) +shape = SubResource( 7 ) + +[node name="TopShape" type="CollisionShape2D" parent="Collision"] +position = Vector2( 0, -7.5 ) +shape = SubResource( 8 ) + +[connection signal="area_entered" from="DetectPlayer" to="." method="_on_Area2D_area_entered"] diff --git a/shaders/beam_of_sin.gdshader b/shaders/beam_of_sin.gdshader new file mode 100644 index 0000000..e3c1eb2 --- /dev/null +++ b/shaders/beam_of_sin.gdshader @@ -0,0 +1,16 @@ +shader_type canvas_item; + +uniform float speed = 1.0; +uniform float cycle_offset = 0.0; +uniform float wave_length = 1.0; +uniform float thickness = 0.05; + +float plot(vec2 st, float pct) { + return step( pct - thickness, st.x) - + step( pct + thickness, st.x); +} + +void fragment() { + float x = sin(UV.y * wave_length + TIME * speed + cycle_offset)*0.5+0.5; + COLOR = COLOR * vec4(1.0, 1.0, 1.0, plot(UV * vec2(1.2, 1.0) + vec2(-0.1, 0.0), x)); +} \ No newline at end of file