diff --git a/project.godot b/project.godot index a1b0395..734472b 100644 --- a/project.godot +++ b/project.godot @@ -39,6 +39,15 @@ theme/custom_font="uid://n1nd5m2kwexu" [input] +ui_accept={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194309,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194310,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":true,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":3,"pressure":0.0,"pressed":true,"script":null) +] +} ui_select={ "deadzone": 0.5, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) @@ -57,28 +66,24 @@ turn_left={ "deadzone": 0.2, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null) , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":-1.0,"script":null) -, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":-1.0,"script":null) ] } turn_right={ "deadzone": 0.2, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null) , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":1.0,"script":null) -, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":1.0,"script":null) ] } forward={ "deadzone": 0.2, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null) , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":-1.0,"script":null) -, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":-1.0,"script":null) ] } backward={ "deadzone": 0.2, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null) , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":1.0,"script":null) -, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":1.0,"script":null) ] } fire={ diff --git a/scenes/enemy.tscn b/scenes/enemy.tscn index f467bd0..34d92fb 100644 --- a/scenes/enemy.tscn +++ b/scenes/enemy.tscn @@ -1,11 +1,14 @@ -[gd_scene load_steps=9 format=3 uid="uid://dy6dv2tio433m"] +[gd_scene load_steps=15 format=3 uid="uid://dy6dv2tio433m"] [ext_resource type="Script" uid="uid://8d4jhy3fo32b" path="res://scripts/enemy.gd" id="1_xwavj"] [ext_resource type="AudioStream" uid="uid://brqjxveo53kco" path="res://sounds/boost.mp3" id="2_nenq2"] [ext_resource type="AudioStream" uid="uid://b1ung55xg31l3" path="res://sounds/boost_finish.mp3" id="3_md484"] [ext_resource type="AudioStream" uid="uid://5tr30e1tmdp6" path="res://sounds/collision.mp3" id="4_ipns3"] -[ext_resource type="AudioStream" uid="uid://y7lhonymtk3t" path="res://sounds/fire.mp3" id="5_8qclf"] +[ext_resource type="AudioStream" uid="uid://bney1c4julhfk" path="res://sounds/explode.mp3" id="5_ipns3"] [ext_resource type="Texture2D" uid="uid://dtwo7g0ipc4k" path="res://textures/ship_1.png" id="6_w8i8w"] +[ext_resource type="Script" uid="uid://ck38qwl4qytnt" path="res://scripts/particle_group.gd" id="7_md484"] +[ext_resource type="Texture2D" uid="uid://5iimabvyld40" path="res://textures/particles/basic.png" id="7_nenq2"] +[ext_resource type="Texture2D" uid="uid://bpe67g6185n5v" path="res://textures/particles/fire.png" id="9_ipns3"] [sub_resource type="CircleShape2D" id="CircleShape2D_uwrxv"] radius = 16.0 @@ -13,6 +16,28 @@ radius = 16.0 [sub_resource type="CircleShape2D" id="CircleShape2D_lnu2h"] radius = 20.0 +[sub_resource type="Curve" id="Curve_ipns3"] +_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(0.7512195, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] +point_count = 3 + +[sub_resource type="CurveTexture" id="CurveTexture_8qclf"] +curve = SubResource("Curve_ipns3") + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_w8i8w"] +particle_flag_disable_z = true +angle_min = -720.0 +angle_max = 720.0 +spread = 180.0 +initial_velocity_min = 30.3 +initial_velocity_max = 260.81 +gravity = Vector3(0, 0, 0) +damping_min = 2.0 +damping_max = 14.000001 +scale_min = 0.099999994 +scale_max = 0.25 +alpha_curve = SubResource("CurveTexture_8qclf") +collision_use_scale = true + [node name="Enemy" type="RigidBody2D"] linear_damp = 6.247 script = ExtResource("1_xwavj") @@ -33,7 +58,10 @@ pitch_scale = 0.75 bus = &"Sound Effects" [node name="Fire" type="AudioStreamPlayer" parent="."] -stream = ExtResource("5_8qclf") +stream = ExtResource("5_ipns3") + +[node name="Explode" type="AudioStreamPlayer" parent="."] +stream = ExtResource("5_ipns3") [node name="Sprite" type="Sprite2D" parent="."] texture = ExtResource("6_w8i8w") @@ -53,4 +81,25 @@ target_position = Vector2(0, -256) [node name="FireCast" type="RayCast2D" parent="."] target_position = Vector2(0, -1024) +[node name="Explosion" type="Node2D" parent="."] +script = ExtResource("7_md484") + +[node name="GPUParticles2D" type="GPUParticles2D" parent="Explosion"] +emitting = false +amount = 24 +texture = ExtResource("7_nenq2") +lifetime = 10.0 +one_shot = true +explosiveness = 1.0 +process_material = SubResource("ParticleProcessMaterial_w8i8w") + +[node name="GPUParticles2D2" type="GPUParticles2D" parent="Explosion"] +emitting = false +amount = 24 +texture = ExtResource("9_ipns3") +lifetime = 10.0 +one_shot = true +explosiveness = 1.0 +process_material = SubResource("ParticleProcessMaterial_w8i8w") + [connection signal="body_shape_entered" from="Hitbox" to="." method="_on_hitbox_body_shape_entered"] diff --git a/scenes/game.tscn b/scenes/game.tscn index 6e0f718..5b7abd7 100644 --- a/scenes/game.tscn +++ b/scenes/game.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=28 format=4 uid="uid://bauklhpieuivd"] +[gd_scene load_steps=33 format=4 uid="uid://bauklhpieuivd"] [ext_resource type="Script" uid="uid://d0qswyhwbhdua" path="res://scripts/game.gd" id="1_u5sy4"] [ext_resource type="Texture2D" uid="uid://dtwo7g0ipc4k" path="res://textures/ship_1.png" id="1_uwrxv"] @@ -14,7 +14,9 @@ [ext_resource type="Shader" uid="uid://bk7q00br1ms30" path="res://scripts/retro.gdshader" id="12_kvuet"] [ext_resource type="Texture2D" uid="uid://hgfmjw6gbdnn" path="res://textures/blank.png" id="12_trtic"] [ext_resource type="Script" uid="uid://d0txwo63hlrsy" path="res://scripts/enterable.gd" id="13_trtic"] +[ext_resource type="Script" uid="uid://b2maxk5g6yb0i" path="res://addons/super_awesome_input_icons/classes/input_icon_texture_rect.gd" id="15_ca42v"] [ext_resource type="Theme" uid="uid://dtc7h6gpwpend" path="res://scenes/ui.tres" id="15_ir15t"] +[ext_resource type="Script" uid="uid://dqiaioigmj5wb" path="res://scripts/pause_menu.gd" id="15_rysoc"] [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_ir15t"] texture = ExtResource("12_trtic") @@ -59,6 +61,19 @@ outline_size = 2 bg_color = Color(1, 0, 0, 1) corner_detail = 1 +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_264po"] +bg_color = Color(0, 0, 0, 1) +border_color = Color(0.53333336, 0.53333336, 0.53333336, 1) +corner_detail = 1 + +[sub_resource type="LabelSettings" id="LabelSettings_1kice"] +font_size = 48 +outline_size = 2 + +[sub_resource type="LabelSettings" id="LabelSettings_ssvqc"] +font_size = 32 +outline_size = 2 + [sub_resource type="ShaderMaterial" id="ShaderMaterial_trtic"] shader = ExtResource("12_kvuet") shader_parameter/shake = 0.002000000095 @@ -310,6 +325,281 @@ label_settings = SubResource("LabelSettings_ca42v") horizontal_alignment = 1 vertical_alignment = 1 +[node name="PauseMenu" type="Panel" parent="UI/Control"] +process_mode = 3 +self_modulate = Color(1, 1, 1, 0.53333336) +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_264po") +script = ExtResource("15_rysoc") + +[node name="Panel" type="PanelContainer" parent="UI/Control/PauseMenu"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -130.0 +offset_top = -26.0 +offset_right = 130.0 +offset_bottom = 26.0 +grow_horizontal = 2 +grow_vertical = 2 +theme = ExtResource("15_ir15t") + +[node name="Flow" type="HFlowContainer" parent="UI/Control/PauseMenu/Panel"] +layout_mode = 2 +alignment = 1 + +[node name="Label" type="Label" parent="UI/Control/PauseMenu/Panel/Flow"] +custom_minimum_size = Vector2(512, 0) +layout_mode = 2 +text = "PAUSED" +label_settings = SubResource("LabelSettings_1kice") +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="HFlowContainer" type="HFlowContainer" parent="UI/Control/PauseMenu/Panel/Flow"] +custom_minimum_size = Vector2(257, 0) +layout_mode = 2 +alignment = 1 + +[node name="InputIconTextureRect2" type="TextureRect" parent="UI/Control/PauseMenu/Panel/Flow/HFlowContainer"] +custom_minimum_size = Vector2(48, 48) +layout_mode = 2 +expand_mode = 1 +script = ExtResource("15_ca42v") +action_name = "ui_up" +metadata/_custom_type_script = "uid://b2maxk5g6yb0i" + +[node name="InputIconTextureRect3" type="TextureRect" parent="UI/Control/PauseMenu/Panel/Flow/HFlowContainer"] +custom_minimum_size = Vector2(48, 48) +layout_mode = 2 +expand_mode = 1 +script = ExtResource("15_ca42v") +action_name = "ui_down" +metadata/_custom_type_script = "uid://b2maxk5g6yb0i" + +[node name="InputIconTextureRect" type="TextureRect" parent="UI/Control/PauseMenu/Panel/Flow/HFlowContainer"] +custom_minimum_size = Vector2(48, 48) +layout_mode = 2 +expand_mode = 1 +script = ExtResource("15_ca42v") +action_name = "dialogue_continue" +metadata/_custom_type_script = "uid://b2maxk5g6yb0i" + +[node name="Resume" type="Button" parent="UI/Control/PauseMenu/Panel/Flow"] +custom_minimum_size = Vector2(257, 0) +layout_mode = 2 +focus_neighbor_top = NodePath("../QuitToTitle") +text = "Resume" + +[node name="Settings" type="Button" parent="UI/Control/PauseMenu/Panel/Flow"] +custom_minimum_size = Vector2(257, 0) +layout_mode = 2 +text = "Settings" + +[node name="QuitToTitle" type="Button" parent="UI/Control/PauseMenu/Panel/Flow"] +custom_minimum_size = Vector2(257, 0) +layout_mode = 2 +focus_neighbor_bottom = NodePath("../Resume") +text = "Quit to Title" + +[node name="Label2" type="Label" parent="UI/Control/PauseMenu/Panel/Flow"] +custom_minimum_size = Vector2(512, 0) +layout_mode = 2 +text = "PAUSED" +label_settings = SubResource("LabelSettings_1kice") +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="Settings" type="PanelContainer" parent="UI/Control/PauseMenu"] +visible = false +custom_minimum_size = Vector2(640, 0) +layout_mode = 1 +anchors_preset = 13 +anchor_left = 0.5 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -258.0 +offset_right = 258.0 +grow_horizontal = 2 +grow_vertical = 2 +theme = ExtResource("15_ir15t") + +[node name="Scroll" type="ScrollContainer" parent="UI/Control/PauseMenu/Settings"] +custom_minimum_size = Vector2(640, 0) +layout_mode = 2 + +[node name="Flow" type="HFlowContainer" parent="UI/Control/PauseMenu/Settings/Scroll"] +custom_minimum_size = Vector2(640, 0) +layout_mode = 2 +size_flags_horizontal = 3 +alignment = 1 + +[node name="Label" type="Label" parent="UI/Control/PauseMenu/Settings/Scroll/Flow"] +custom_minimum_size = Vector2(512, 0) +layout_mode = 2 +text = "SETTINGS" +label_settings = SubResource("LabelSettings_1kice") +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="Flow" type="HFlowContainer" parent="UI/Control/PauseMenu/Settings/Scroll/Flow"] +custom_minimum_size = Vector2(500, 0) +layout_mode = 2 +alignment = 1 + +[node name="InputIconTextureRect2" type="TextureRect" parent="UI/Control/PauseMenu/Settings/Scroll/Flow/Flow"] +custom_minimum_size = Vector2(48, 48) +layout_mode = 2 +expand_mode = 1 +script = ExtResource("15_ca42v") +action_name = "ui_up" +metadata/_custom_type_script = "uid://b2maxk5g6yb0i" + +[node name="InputIconTextureRect3" type="TextureRect" parent="UI/Control/PauseMenu/Settings/Scroll/Flow/Flow"] +custom_minimum_size = Vector2(48, 48) +layout_mode = 2 +expand_mode = 1 +script = ExtResource("15_ca42v") +action_name = "ui_down" +metadata/_custom_type_script = "uid://b2maxk5g6yb0i" + +[node name="InputIconTextureRect" type="TextureRect" parent="UI/Control/PauseMenu/Settings/Scroll/Flow/Flow"] +custom_minimum_size = Vector2(48, 48) +layout_mode = 2 +expand_mode = 1 +script = ExtResource("15_ca42v") +action_name = "dialogue_continue" +metadata/_custom_type_script = "uid://b2maxk5g6yb0i" + +[node name="Resume" type="Button" parent="UI/Control/PauseMenu/Settings/Scroll/Flow"] +custom_minimum_size = Vector2(300, 0) +layout_mode = 2 +text = "Back" + +[node name="Label2" type="Label" parent="UI/Control/PauseMenu/Settings/Scroll/Flow"] +custom_minimum_size = Vector2(512, 0) +layout_mode = 2 +text = "SOUND" +label_settings = SubResource("LabelSettings_ssvqc") +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="Flow2" type="HFlowContainer" parent="UI/Control/PauseMenu/Settings/Scroll/Flow"] +custom_minimum_size = Vector2(608, 0) +layout_mode = 2 + +[node name="Label" type="Label" parent="UI/Control/PauseMenu/Settings/Scroll/Flow/Flow2"] +layout_mode = 2 +text = "Master Volume" + +[node name="MasterVolume" type="HSlider" parent="UI/Control/PauseMenu/Settings/Scroll/Flow/Flow2"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 4 + +[node name="Label" type="Label" parent="UI/Control/PauseMenu/Settings/Scroll/Flow/Flow2/MasterVolume"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -115.5 +offset_top = -12.0 +offset_right = 115.5 +offset_bottom = 12.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "100%" +horizontal_alignment = 1 + +[node name="Flow3" type="HFlowContainer" parent="UI/Control/PauseMenu/Settings/Scroll/Flow"] +custom_minimum_size = Vector2(608, 0) +layout_mode = 2 + +[node name="Label" type="Label" parent="UI/Control/PauseMenu/Settings/Scroll/Flow/Flow3"] +layout_mode = 2 +text = "Music Volume" + +[node name="MasterVolume" type="HSlider" parent="UI/Control/PauseMenu/Settings/Scroll/Flow/Flow3"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 4 + +[node name="Label" type="Label" parent="UI/Control/PauseMenu/Settings/Scroll/Flow/Flow3/MasterVolume"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -115.5 +offset_top = -12.0 +offset_right = 115.5 +offset_bottom = 12.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "100%" +horizontal_alignment = 1 + +[node name="Flow4" type="HFlowContainer" parent="UI/Control/PauseMenu/Settings/Scroll/Flow"] +custom_minimum_size = Vector2(608, 0) +layout_mode = 2 + +[node name="Label" type="Label" parent="UI/Control/PauseMenu/Settings/Scroll/Flow/Flow4"] +layout_mode = 2 +text = "Sound Effects Volume" + +[node name="MasterVolume" type="HSlider" parent="UI/Control/PauseMenu/Settings/Scroll/Flow/Flow4"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 4 + +[node name="Label" type="Label" parent="UI/Control/PauseMenu/Settings/Scroll/Flow/Flow4/MasterVolume"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -115.5 +offset_top = -12.0 +offset_right = 115.5 +offset_bottom = 12.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "100%" +horizontal_alignment = 1 + +[node name="Label3" type="Label" parent="UI/Control/PauseMenu/Settings/Scroll/Flow"] +custom_minimum_size = Vector2(512, 0) +layout_mode = 2 +text = "CONTROLS" +label_settings = SubResource("LabelSettings_ssvqc") +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="Flow5" type="HFlowContainer" parent="UI/Control/PauseMenu/Settings/Scroll/Flow"] +custom_minimum_size = Vector2(608, 0) +layout_mode = 2 + +[node name="Label" type="Label" parent="UI/Control/PauseMenu/Settings/Scroll/Flow/Flow5"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Southpaw" + +[node name="Button" type="Button" parent="UI/Control/PauseMenu/Settings/Scroll/Flow/Flow5"] +layout_mode = 2 +text = "NO" + [node name="FadeToBlack" type="ColorRect" parent="UI"] process_mode = 3 modulate = Color(1, 1, 1, 0) @@ -333,3 +623,5 @@ color = Color(1, 1, 1, 0) [connection signal="area_entered" from="SpaceStation1/EnterHitbox" to="SpaceStation1" method="_on_enter_hitbox_area_entered"] [connection signal="body_entered" from="SpaceStation1/EnterHitbox" to="SpaceStation1" method="_on_enter_hitbox_body_entered"] [connection signal="body_shape_entered" from="Player/Hitbox" to="Player" method="_on_hitbox_body_shape_entered"] +[connection signal="pressed" from="UI/Control/PauseMenu/Panel/Flow/Resume" to="UI/Control/PauseMenu" method="_on_resume_pressed"] +[connection signal="pressed" from="UI/Control/PauseMenu/Settings/Scroll/Flow/Resume" to="UI/Control/PauseMenu" method="_on_resume_pressed"] diff --git a/scenes/ui.tres b/scenes/ui.tres index 3a832cf..ba17c04 100644 --- a/scenes/ui.tres +++ b/scenes/ui.tres @@ -8,26 +8,14 @@ border_width_right = 4 border_width_bottom = 4 border_color = Color(1, 1, 1, 1) corner_detail = 1 -expand_margin_left = 2.0 -expand_margin_top = 2.0 -expand_margin_right = 2.0 -expand_margin_bottom = 2.0 [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ue5e3"] bg_color = Color(0, 0, 0, 1) corner_detail = 1 -expand_margin_left = 2.0 -expand_margin_top = 2.0 -expand_margin_right = 2.0 -expand_margin_bottom = 2.0 [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_oei2i"] bg_color = Color(1, 1, 1, 1) corner_detail = 1 -expand_margin_left = 2.0 -expand_margin_top = 2.0 -expand_margin_right = 2.0 -expand_margin_bottom = 2.0 [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_s6eqm"] bg_color = Color(0, 0, 0, 1) diff --git a/scripts/dialogue_select_button.gd b/scripts/dialogue_select_button.gd index e74b65b..eff9132 100644 --- a/scripts/dialogue_select_button.gd +++ b/scripts/dialogue_select_button.gd @@ -4,7 +4,3 @@ var game = null func _on_pressed() -> void: game.choice_made.emit(get_name()) - -func _input(event: InputEvent) -> void: - if has_focus() and (event.is_action_pressed("interact") or event.is_action_pressed("dialogue_continue")): - _on_pressed() diff --git a/scripts/enemy.gd b/scripts/enemy.gd index dc11731..e308612 100644 --- a/scripts/enemy.gd +++ b/scripts/enemy.gd @@ -1,12 +1,13 @@ extends RigidBody2D -var health = 1000 +var health = 500 var boost = 100 -var speed = 480 +var speed = 372 var time_since_last_collision = 1 var time_since_last_fire = 0 var boosting = false var firing = true +var dead = false var axis = 0 var movement_axis = -1 @@ -72,11 +73,25 @@ func check_front(): return 1 func _process(delta: float) -> void: + if dead: return + modulate.g = health / 1000.0 modulate.b = health / 1000.0 if health <= 0: - queue_free() + dead = true + + modulate = Color(1,1,1) + + $Explode.play() + $Explosion.play() + + $Sprite.queue_free() + $CollisionShape.queue_free() + linear_velocity = Vector2() + + + await get_tree().create_timer(10.5).timeout ai_tick -= delta @@ -166,7 +181,7 @@ func _process(delta: float) -> void: var angular_target = wrapf(angle - rotation, -PI, PI) - if abs(rad_to_deg(rotation - angular_target)) < 15: + if abs(rad_to_deg(angle - angular_target)) < 25: if player_distance > 480: boost_pressed = true firing = true @@ -194,6 +209,8 @@ func _process(delta: float) -> void: func _physics_process(delta: float) -> void: axis = 0 + if dead: return + var difference = fmod(target_rotation, deg_to_rad(360)) - fmod(rotation, deg_to_rad(360)) var normalized_difference = fmod(difference + deg_to_rad(180), deg_to_rad(360)) - deg_to_rad(180) var target_distance = normalized_difference diff --git a/scripts/game.gd b/scripts/game.gd index 6f77d53..fb725e4 100644 --- a/scripts/game.gd +++ b/scripts/game.gd @@ -54,6 +54,9 @@ func _ready() -> void: LimboConsole.register_command(ship_health, "ship_health", "Sets the ship's health.") LimboConsole.register_command(summon_enemy, "summon_enemy", "Summons an enemy.") + var events = InputMap.action_get_events("forward") + print(events) + if global.ground_location: $Player.global_position = get_node(global.ground_location + "/ExitPoint").global_position $Player.rotation = get_node(global.ground_location + "/ExitPoint").rotation @@ -139,3 +142,11 @@ func _process(delta: float) -> void: n.queue_free() elif abs(n_pos.y - player_chunk.y) > chunk_process_distance: n.queue_free() + +func _input(event: InputEvent) -> void: + if event.is_action_pressed("pause"): + $UI/Control/PauseMenu.visible = true + + $UI/Control/PauseMenu/Panel/Flow/Resume.grab_focus() + + get_tree().paused = true diff --git a/scripts/game_ground.gd b/scripts/game_ground.gd index 44ad222..b11e0b2 100644 --- a/scripts/game_ground.gd +++ b/scripts/game_ground.gd @@ -79,6 +79,6 @@ func make_choice(options: Dictionary = {}) -> String: func _input(event: InputEvent) -> void: - if event.is_action_pressed("dialogue_continue"): + if event.is_action_released("dialogue_continue"): dialogue_continue.emit() diff --git a/scripts/particle_group.gd b/scripts/particle_group.gd new file mode 100644 index 0000000..cd1e2de --- /dev/null +++ b/scripts/particle_group.gd @@ -0,0 +1,5 @@ +extends Node2D + +func play(): + for n in get_children(): + n.restart() diff --git a/scripts/particle_group.gd.uid b/scripts/particle_group.gd.uid new file mode 100644 index 0000000..179a256 --- /dev/null +++ b/scripts/particle_group.gd.uid @@ -0,0 +1 @@ +uid://ck38qwl4qytnt diff --git a/scripts/pause_menu.gd b/scripts/pause_menu.gd new file mode 100644 index 0000000..fbf349c --- /dev/null +++ b/scripts/pause_menu.gd @@ -0,0 +1,18 @@ +extends Panel + +@onready var game = get_parent().get_parent().get_parent() + +func _resume() -> void: + while Input.is_action_pressed("pause"): + await get_tree().create_timer(0).timeout + + visible = false + get_tree().paused = false + + +func _on_resume_pressed() -> void: + _resume() + +func _input(event: InputEvent) -> void: + if visible: + if event.is_action_pressed("pause"): _resume() diff --git a/scripts/pause_menu.gd.uid b/scripts/pause_menu.gd.uid new file mode 100644 index 0000000..fe5d2e7 --- /dev/null +++ b/scripts/pause_menu.gd.uid @@ -0,0 +1 @@ +uid://dqiaioigmj5wb diff --git a/sounds/explode.mp3 b/sounds/explode.mp3 index 3613eb3..9cecba0 100644 Binary files a/sounds/explode.mp3 and b/sounds/explode.mp3 differ diff --git a/textures/particles/basic.png b/textures/particles/basic.png new file mode 100644 index 0000000..a449dec Binary files /dev/null and b/textures/particles/basic.png differ diff --git a/textures/particles/basic.png.import b/textures/particles/basic.png.import new file mode 100644 index 0000000..169ab21 --- /dev/null +++ b/textures/particles/basic.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://5iimabvyld40" +path="res://.godot/imported/basic.png-f749616d20d10b57013ca34e4fbe18d6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://textures/particles/basic.png" +dest_files=["res://.godot/imported/basic.png-f749616d20d10b57013ca34e4fbe18d6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/textures/particles/fire.png b/textures/particles/fire.png new file mode 100644 index 0000000..0ae12b9 Binary files /dev/null and b/textures/particles/fire.png differ diff --git a/textures/particles/fire.png.import b/textures/particles/fire.png.import new file mode 100644 index 0000000..5414a7d --- /dev/null +++ b/textures/particles/fire.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bpe67g6185n5v" +path="res://.godot/imported/fire.png-4943b9c019d398746e81c45fb94e60cc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://textures/particles/fire.png" +dest_files=["res://.godot/imported/fire.png-4943b9c019d398746e81c45fb94e60cc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/textures/particles/laser.png b/textures/particles/laser.png new file mode 100644 index 0000000..e1430a4 Binary files /dev/null and b/textures/particles/laser.png differ diff --git a/textures/particles/laser.png.import b/textures/particles/laser.png.import new file mode 100644 index 0000000..8498a3a --- /dev/null +++ b/textures/particles/laser.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ccfofitk3x5jj" +path="res://.godot/imported/laser.png-6a2a4b804cd3e33f82aba28a4e561dc2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://textures/particles/laser.png" +dest_files=["res://.godot/imported/laser.png-6a2a4b804cd3e33f82aba28a4e561dc2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1