From e6a393c5e27f6cc3bdad5a4574bffabf2313484c Mon Sep 17 00:00:00 2001 From: pennyrigate Date: Sun, 18 Jun 2023 01:32:46 -0400 Subject: [PATCH] add oxygen timer --- audio/sounds/bubble.wav | Bin 0 -> 33558 bytes audio/sounds/bubble.wav.import | 23 +++++++ autoloads/audio.gd | 1 + graphics/hud/oxygen.png | Bin 0 -> 180 bytes graphics/hud/oxygen.png.import | 35 +++++++++++ graphics/hud/oxygen_blips.png | Bin 0 -> 164 bytes graphics/hud/oxygen_blips.png.import | 35 +++++++++++ graphics/hud/oxygen_meter.png | Bin 0 -> 127 bytes graphics/hud/oxygen_meter.png.import | 35 +++++++++++ graphics/player/sg_jump.png | Bin 305 -> 310 bytes graphics/player/sg_jump_mario.png | Bin 0 -> 310 bytes graphics/player/sg_jump_mario.png.import | 35 +++++++++++ graphics/player/sg_jump_megaman.png | Bin 0 -> 304 bytes graphics/player/sg_jump_megaman.png.import | 35 +++++++++++ graphics/player/sg_walk.png | Bin 435 -> 457 bytes objects/enemy/turtle.tscn | 9 ++- objects/environment/bubble/bubble.gd | 12 ++-- objects/environment/bubble/bubble.tscn | 3 +- objects/hud/hud.gd | 9 +++ objects/hud/hud.tscn | 16 ++++- objects/player/player.gd | 12 +++- objects/player/player.tscn | 67 ++++++++++++++++++++- 22 files changed, 314 insertions(+), 13 deletions(-) create mode 100644 audio/sounds/bubble.wav create mode 100644 audio/sounds/bubble.wav.import create mode 100644 graphics/hud/oxygen.png create mode 100644 graphics/hud/oxygen.png.import create mode 100644 graphics/hud/oxygen_blips.png create mode 100644 graphics/hud/oxygen_blips.png.import create mode 100644 graphics/hud/oxygen_meter.png create mode 100644 graphics/hud/oxygen_meter.png.import create mode 100644 graphics/player/sg_jump_mario.png create mode 100644 graphics/player/sg_jump_mario.png.import create mode 100644 graphics/player/sg_jump_megaman.png create mode 100644 graphics/player/sg_jump_megaman.png.import diff --git a/audio/sounds/bubble.wav b/audio/sounds/bubble.wav new file mode 100644 index 0000000000000000000000000000000000000000..784f7f045d79aa8eb8b3dd792a60b31a0ce8a5aa GIT binary patch literal 33558 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 R;B%mU22WQ%mvv4FO#sO0F3kV{ literal 0 HcmV?d00001 diff --git a/graphics/hud/oxygen.png.import b/graphics/hud/oxygen.png.import new file mode 100644 index 0000000..d48e207 --- /dev/null +++ b/graphics/hud/oxygen.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/oxygen.png-bc27b1760336003353c838235a4cb02c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/oxygen.png" +dest_files=[ "res://.import/oxygen.png-bc27b1760336003353c838235a4cb02c.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/graphics/hud/oxygen_blips.png b/graphics/hud/oxygen_blips.png new file mode 100644 index 0000000000000000000000000000000000000000..ac4b0f88585d75e3dc52dc4b0b31e493cfbcc852 GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngk!3HF+w~DI+DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(eheoCO|{#S9F5`$3q|f;CtLC}`>F;uxY4oXpVp-+>`*0i)BSo)cUWjSQz; zE_Qg&;q;o!$`(+ZoUA;9adBcp#>cicwlxd8;^#CnGR)Yc(HSU}oXkrghb7(7*O7r? zV?XzwL{=c5v%n*=n1O+BKL|5gum-CD1w}kv9780+lYjjGZ!gTu%xtWztjr)Mz|58x S`c5Ax&*16m=d#Wzp$P!LS{&d2 literal 0 HcmV?d00001 diff --git a/graphics/hud/oxygen_meter.png.import b/graphics/hud/oxygen_meter.png.import new file mode 100644 index 0000000..e9aebb3 --- /dev/null +++ b/graphics/hud/oxygen_meter.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/oxygen_meter.png-65332a0e74d166901bfa7ecd6045514f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/oxygen_meter.png" +dest_files=[ "res://.import/oxygen_meter.png-65332a0e74d166901bfa7ecd6045514f.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/graphics/player/sg_jump.png b/graphics/player/sg_jump.png index 2a0d0dcda34279d390de8d826807ec2d05044a2f..c12f10a28e49a7a9d127f75baa450f3f7d21b8b1 100644 GIT binary patch delta 199 zcmV;&0671#0=5E>SQbD)|A0XM06_l$fd4>%{{R30?bpy&k!~Y@zyJUazyWI3i3tDz z0E0j`2$Th4j})u#7Y1F002ovPDHLkV1mFi BSB?Mx delta 194 zcmV;z06qV<0%{{R30eND}Ak!~Y@!2kdb!2!6DYwZ94 z0DehCK~yMHZH-$J#UKbny_6!#{`Xs6O1;y31af3zlP?u*rnTo(_$$0$112t-isWt- z0L&t}JG}taBDq@uUN_=>P{*dDHy~(7M0cBwdf!JeRHT%0-;{`zB6?WVE}8!+VpnB& wQN892$8W+5zkU-T8Dm7)bk3QZsv1fn4_!kJCd86b)Bpeg07*qoM6N<$g60cQzW@LL diff --git a/graphics/player/sg_jump_mario.png b/graphics/player/sg_jump_mario.png new file mode 100644 index 0000000000000000000000000000000000000000..c12f10a28e49a7a9d127f75baa450f3f7d21b8b1 GIT binary patch literal 310 zcmeAS@N?(olHy`uVBq!ia0vp^qChOd!3-orr?xQyDaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(eheDgizrt_%$S9T@)q2O@|64GjMq8vZ)~84mv$fC$KL_zzV0_WFe|AjMM> z=PdAuEM{QfI{?CrS=Tx_fr8DRE{-7@!MVMjLPr#Mm^lk`rv3k4 z{)E*hXmRrb>nTCc_Ak+$RoXB7$!qWaT|9Hm9;K|^c5T(ul-zIYT8cJZW85Xb=y|Gd zHkaf~?#PXWQFB^nc3bFMyS79gNsK(fCM`0JLqEFM;>{5qYnk0Q9=wlcIb59-{kQi0 l-Nf65Zg(ccoH+B7+1HFu;s2H+UO?wCc)I$ztaD0e0stE+dw2i< literal 0 HcmV?d00001 diff --git a/graphics/player/sg_jump_mario.png.import b/graphics/player/sg_jump_mario.png.import new file mode 100644 index 0000000..1b1f09c --- /dev/null +++ b/graphics/player/sg_jump_mario.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_jump_mario.png-0ac179e6059bca84ad0a66bbae81613a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/sg_jump_mario.png" +dest_files=[ "res://.import/sg_jump_mario.png-0ac179e6059bca84ad0a66bbae81613a.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/graphics/player/sg_jump_megaman.png b/graphics/player/sg_jump_megaman.png new file mode 100644 index 0000000000000000000000000000000000000000..b5509c2fe2600bf194f738e49cc6678ba87fa1f3 GIT binary patch literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^qChOd!3-orr?xQyDaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(eheDgizrt_%$S9T@)q2O@|64GjMq8vZvp{C9Bp&j3UX{~a3s0~OZ#o-G7Y zJS9PX!T%9}LFoRub3k#<0*}aI1_r(ZAk3I`t&P&{gw2U8P zg@w`cBJ(nQ&VI}5Hl2Cdk}bD>#M`2omo3?IR;Y-asPpdfIhM#l(KSVtmnMcF%)?3aMVp15rqp=r*KKE4E z+BnZsg+PU4AT93ZIF7@Ht&q$x%$A-EF=CLg%~tpu#`pst1T~v4&@goX0000y&-~ delta 286 zcmV+(0pb411G58=o__#IL_t(IPpyzq0>dB(L!F~Y>;3OLRLan%-Ouu2 15: oxygen_meter.scale.x = 15 diff --git a/objects/hud/hud.tscn b/objects/hud/hud.tscn index 244b241..b338003 100644 --- a/objects/hud/hud.tscn +++ b/objects/hud/hud.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=14 format=2] +[gd_scene load_steps=16 format=2] [ext_resource path="res://graphics/hud/stars_hud.png" type="Texture" id=1] [ext_resource path="res://graphics/hud/lives_head.png" type="Texture" id=2] @@ -10,6 +10,8 @@ [ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=8] [ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=9] [ext_resource path="res://ui/theme.tres" type="Theme" id=10] +[ext_resource path="res://graphics/hud/oxygen.png" type="Texture" id=11] +[ext_resource path="res://graphics/hud/oxygen_meter.png" type="Texture" id=12] [sub_resource type="ShaderMaterial" id=1] @@ -173,3 +175,15 @@ margin_bottom = 192.0 theme = ExtResource( 10 ) text = "§time bonus" align = 2 + +[node name="Oxygen" type="Sprite" parent="."] +visible = false +position = Vector2( 16, 18 ) +texture = ExtResource( 11 ) + +[node name="OxygenMeter" type="Sprite" parent="Oxygen"] +position = Vector2( -2, -1 ) +rotation = 3.14159 +scale = Vector2( 15, 1 ) +texture = ExtResource( 12 ) +flip_v = true diff --git a/objects/player/player.gd b/objects/player/player.gd index 6e11515..a6460f0 100644 --- a/objects/player/player.gd +++ b/objects/player/player.gd @@ -28,7 +28,8 @@ export var jump_force: float = 150.0 export var jump_release_force: float = 0.25 ## impulse added when double jumping export var double_jump_force: float = 122.0 - +## if on turn on oxygentimer to kill player +export var underwater = false # velocity var velocity: Vector2 = Vector2.ZERO @@ -50,7 +51,8 @@ onready var airborne_shape: CollisionShape2D = $"%AirborneShape" onready var ladder_detector: RayCast2D = $"%LadderDetector" onready var death_splatter_position: Position2D = $"%DeathSplatterPosition" onready var pushable_detector: RayCast2D = $"%PushableDetector" - +onready var oxygen_timer = $OxygenTimer +onready var oxygen_origin = oxygen_timer.wait_time # OVERRIDES # func _ready() -> void: @@ -238,6 +240,8 @@ func _on_Dead_state_entered() -> void: # fade into the ether graphics.visible = false state_chart.send_event("respawn") + #refill oxygen + oxygen_timer.start() func _on_Respawn_state_entered() -> void: global_position = Game.respawn_point @@ -378,3 +382,7 @@ func _on_Hitbox_body_entered(body: Node) -> void: func _on_Ducking_event_received(event): if event == "jump": position.y -= 1 + + +func _on_OxygenTimer_timeout(): + if underwater: die() diff --git a/objects/player/player.tscn b/objects/player/player.tscn index f05dd95..366af9c 100644 --- a/objects/player/player.tscn +++ b/objects/player/player.tscn @@ -1,7 +1,7 @@ -[gd_scene load_steps=44 format=2] +[gd_scene load_steps=47 format=2] [ext_resource path="res://objects/player/player.gd" type="Script" id=1] -[ext_resource path="res://graphics/player/sg_duck.png" type="Texture" id=2] +[ext_resource path="res://graphics/player/palettes/default.png" type="Texture" id=2] [ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=3] [ext_resource path="res://graphics/player/sg_idle.png" type="Texture" id=4] [ext_resource path="res://addons/godot_state_charts/parallel_state.gd" type="Script" id=5] @@ -23,11 +23,14 @@ [ext_resource path="res://graphics/player/sg_push.png" type="Texture" id=21] [ext_resource path="res://graphics/player/sg_blink.png" type="Texture" id=22] [ext_resource path="res://graphics/player/sg_stim.png" type="Texture" id=23] +[ext_resource path="res://graphics/player/sg_duck.png" type="Texture" id=24] +[ext_resource path="res://graphics/player/sg_jump_megaman.png" type="Texture" id=25] [sub_resource type="ShaderMaterial" id=1] shader = ExtResource( 3 ) shader_param/border_color = Color( 0, 0, 0, 1 ) shader_param/border_corners = true +shader_param/palette = ExtResource( 2 ) [sub_resource type="Curve" id=13] _data = [ Vector2( 0, 1 ), 0.0, -0.0636948, 0, 0, Vector2( 1, 0 ), -3.43886, 0.0, 0, 0 ] @@ -265,7 +268,7 @@ tracks/0/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, -"values": [ ExtResource( 2 ) ] +"values": [ ExtResource( 24 ) ] } tracks/1/type = "value" tracks/1/path = NodePath("Graphics/Sprite:hframes") @@ -513,6 +516,58 @@ tracks/3/keys = { "values": [ 0.0 ] } +[sub_resource type="Animation" id=21] +resource_name = "jump2" +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:texture") +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": 1, +"values": [ ExtResource( 25 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:hframes") +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": [ 1 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Graphics/Sprite:frame") +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": [ 0 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Graphics/Sprite:rotation_degrees") +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": [ 0.0 ] +} + [sub_resource type="Animation" id=17] resource_name = "push" length = 0.8 @@ -908,6 +963,7 @@ anims/fall = SubResource( 15 ) anims/fall_scared = SubResource( 14 ) anims/idle = SubResource( 6 ) anims/jump = SubResource( 8 ) +anims/jump2 = SubResource( 21 ) anims/push = SubResource( 17 ) anims/shoot_airborne = SubResource( 11 ) anims/shoot_grounded = SubResource( 10 ) @@ -1254,6 +1310,10 @@ theme = ExtResource( 7 ) custom_styles/bg = SubResource( 4 ) script = ExtResource( 8 ) +[node name="OxygenTimer" type="Timer" parent="."] +wait_time = 20.0 +autostart = true + [connection signal="body_entered" from="Hitbox" to="." method="_on_Hitbox_body_entered"] [connection signal="state_physics_processing" from="StateChart/Root/Movement" to="." method="_process_movement"] [connection signal="state_entered" from="StateChart/Root/Movement/Grounded" to="." method="_on_Grounded_state_entered"] @@ -1289,3 +1349,4 @@ script = ExtResource( 8 ) [connection signal="state_physics_processing" from="StateChart/Root/Movement/Climbing" to="." method="_process_climbing"] [connection signal="state_entered" from="StateChart/Root/Health/Respawn" to="." method="_on_Respawn_state_entered"] [connection signal="state_entered" from="StateChart/Root/Health/Dead" to="." method="_on_Dead_state_entered"] +[connection signal="timeout" from="OxygenTimer" to="." method="_on_OxygenTimer_timeout"]