diff --git a/assets/images/brief/brief1.png b/assets/images/brief/brief1.png new file mode 100644 index 0000000..ef51064 Binary files /dev/null and b/assets/images/brief/brief1.png differ diff --git a/assets/images/brief/brief1.png.import b/assets/images/brief/brief1.png.import new file mode 100644 index 0000000..53da22a --- /dev/null +++ b/assets/images/brief/brief1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://0bjiw8ginkre" +path="res://.godot/imported/brief1.png-be9df2717b0013c7e6171cd19cf58904.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/images/brief/brief1.png" +dest_files=["res://.godot/imported/brief1.png-be9df2717b0013c7e6171cd19cf58904.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/assets/images/brief/brief2.png b/assets/images/brief/brief2.png new file mode 100644 index 0000000..5acfeb7 Binary files /dev/null and b/assets/images/brief/brief2.png differ diff --git a/assets/images/brief/brief2.png.import b/assets/images/brief/brief2.png.import new file mode 100644 index 0000000..f950077 --- /dev/null +++ b/assets/images/brief/brief2.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://berrjgsj72xx3" +path="res://.godot/imported/brief2.png-3e182da98e45f0bb7821bc9cf292ccef.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/images/brief/brief2.png" +dest_files=["res://.godot/imported/brief2.png-3e182da98e45f0bb7821bc9cf292ccef.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/assets/images/brief/brief3.png b/assets/images/brief/brief3.png new file mode 100644 index 0000000..3e78a6b Binary files /dev/null and b/assets/images/brief/brief3.png differ diff --git a/assets/images/brief/brief3.png.import b/assets/images/brief/brief3.png.import new file mode 100644 index 0000000..0130801 --- /dev/null +++ b/assets/images/brief/brief3.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://css7hk4mnxkv7" +path="res://.godot/imported/brief3.png-a9240b9484cade6c76fc412f23ffcd97.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/images/brief/brief3.png" +dest_files=["res://.godot/imported/brief3.png-a9240b9484cade6c76fc412f23ffcd97.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/assets/images/brief/brief4.png b/assets/images/brief/brief4.png new file mode 100644 index 0000000..65e71df Binary files /dev/null and b/assets/images/brief/brief4.png differ diff --git a/assets/images/brief/brief4.png.import b/assets/images/brief/brief4.png.import new file mode 100644 index 0000000..b32f2f3 --- /dev/null +++ b/assets/images/brief/brief4.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cvt5ykdeo4ado" +path="res://.godot/imported/brief4.png-f988d801e4534f251177346aba9e84af.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/images/brief/brief4.png" +dest_files=["res://.godot/imported/brief4.png-f988d801e4534f251177346aba9e84af.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/assets/images/heythatsme.png b/assets/images/heythatsme.png new file mode 100644 index 0000000..7b6b1fa Binary files /dev/null and b/assets/images/heythatsme.png differ diff --git a/assets/images/heythatsme.png.import b/assets/images/heythatsme.png.import new file mode 100644 index 0000000..c7e6408 --- /dev/null +++ b/assets/images/heythatsme.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dnlw2xffd05ty" +path="res://.godot/imported/heythatsme.png-0bea74de7e1ec1c0b0a274b703fc917f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/images/heythatsme.png" +dest_files=["res://.godot/imported/heythatsme.png-0bea74de7e1ec1c0b0a274b703fc917f.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/assets/images/themilojko.png b/assets/images/themilojko.png new file mode 100644 index 0000000..8b224a4 Binary files /dev/null and b/assets/images/themilojko.png differ diff --git a/assets/images/themilojko.png.import b/assets/images/themilojko.png.import new file mode 100644 index 0000000..f8e14fb --- /dev/null +++ b/assets/images/themilojko.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d2on83l113tdy" +path="res://.godot/imported/themilojko.png-4968bac7c783c95a044473860056a9d8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/images/themilojko.png" +dest_files=["res://.godot/imported/themilojko.png-4968bac7c783c95a044473860056a9d8.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/assets/images/tilebg.png b/assets/images/tilebg.png new file mode 100644 index 0000000..5d31491 Binary files /dev/null and b/assets/images/tilebg.png differ diff --git a/assets/images/tilebg.png.import b/assets/images/tilebg.png.import new file mode 100644 index 0000000..7b37021 --- /dev/null +++ b/assets/images/tilebg.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bm47o35ooevh" +path="res://.godot/imported/tilebg.png-6e939ad754ff12401b5ee93af3c6415e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/images/tilebg.png" +dest_files=["res://.godot/imported/tilebg.png-6e939ad754ff12401b5ee93af3c6415e.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/assets/images/upgrades/stopwatch.png b/assets/images/upgrades/stopwatch.png new file mode 100644 index 0000000..b9b542b Binary files /dev/null and b/assets/images/upgrades/stopwatch.png differ diff --git a/assets/images/upgrades/stopwatch.png.import b/assets/images/upgrades/stopwatch.png.import new file mode 100644 index 0000000..64936f4 --- /dev/null +++ b/assets/images/upgrades/stopwatch.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://kcvgew3l6huv" +path="res://.godot/imported/stopwatch.png-2a23707986e1960592390d2a430f0a6a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/images/upgrades/stopwatch.png" +dest_files=["res://.godot/imported/stopwatch.png-2a23707986e1960592390d2a430f0a6a.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/assets/scenes/explosion.tscn b/assets/scenes/explosion.tscn new file mode 100644 index 0000000..e7bebcd --- /dev/null +++ b/assets/scenes/explosion.tscn @@ -0,0 +1,41 @@ +[gd_scene format=3 uid="uid://22g17a7hdwdi"] + +[ext_resource type="Script" uid="uid://ca8an62xpl0e4" path="res://assets/scripts/disposableParticles.gd" id="1_452fg"] +[ext_resource type="Script" uid="uid://dt85erj8ktqmq" path="res://assets/scripts/kaboom.gd" id="2_75x3p"] + +[sub_resource type="Curve" id="Curve_x06pf"] +_data = [Vector2(0.39071038, 1), 0.0, 0.0, 0, 0, Vector2(0.4043716, 1), 0.0, 0.0, 0, 0, Vector2(1, 0.012084603), 0.0, 0.0, 0, 0] +point_count = 3 + +[sub_resource type="Gradient" id="Gradient_x06pf"] +offsets = PackedFloat32Array(0.016025642, 0.42628205, 0.75641024, 1) +colors = PackedColorArray(1, 0.48800004, 0.04000002, 1, 0.9756667, 1, 0.26999998, 1, 0.63, 0.14490001, 0.14490001, 1, 0, 0, 0, 1) + +[sub_resource type="CircleShape2D" id="CircleShape2D_8sg6u"] +radius = 213.00938 + +[node name="Explosion" type="CPUParticles2D" unique_id=839131906] +z_index = -1 +amount = 50 +lifetime = 10.0 +explosiveness = 1.0 +spread = 180.0 +gravity = Vector2(0, 0) +initial_velocity_min = 300.0 +initial_velocity_max = 500.0 +linear_accel_min = -500.0 +linear_accel_max = -500.0 +scale_amount_min = 24.0 +scale_amount_max = 48.0 +scale_amount_curve = SubResource("Curve_x06pf") +color_ramp = SubResource("Gradient_x06pf") +script = ExtResource("1_452fg") + +[node name="kaboom" type="Area2D" parent="." unique_id=1425329322] +collision_layer = 2 +collision_mask = 2 +script = ExtResource("2_75x3p") +metadata/kaboom = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="kaboom" unique_id=624235433] +shape = SubResource("CircleShape2D_8sg6u") diff --git a/assets/scenes/mainMenu.tscn b/assets/scenes/mainMenu.tscn index b4ab9a4..a2b51bc 100644 --- a/assets/scenes/mainMenu.tscn +++ b/assets/scenes/mainMenu.tscn @@ -1,8 +1,26 @@ [gd_scene format=3 uid="uid://ff2uc6ruj6q8"] -[ext_resource type="Texture2D" uid="uid://d1f75fetro2se" path="res://assets/images/mainmenubg.png" id="1_8at84"] [ext_resource type="Script" uid="uid://jgx43t3crrqe" path="res://assets/scripts/main_menu.gd" id="1_n76nl"] [ext_resource type="FontFile" uid="uid://ha2vel05pr1v" path="res://assets/fonts/AnonymousPro-Bold.ttf" id="2_2cgkr"] +[ext_resource type="Texture2D" uid="uid://bm47o35ooevh" path="res://assets/images/tilebg.png" id="2_n76nl"] +[ext_resource type="AudioStream" uid="uid://cnx8twenag0nx" path="res://assets/sounds/click.wav" id="4_cmwfe"] +[ext_resource type="AudioStream" uid="uid://c3gxbppnkybp6" path="res://assets/sounds/select.wav" id="5_0cygf"] +[ext_resource type="Shader" uid="uid://b5ke0njvd8rj7" path="res://assets/shaders/blur.gdshader" id="6_0cygf"] +[ext_resource type="Texture2D" uid="uid://dnlw2xffd05ty" path="res://assets/images/heythatsme.png" id="7_fk7uv"] +[ext_resource type="Texture2D" uid="uid://d2on83l113tdy" path="res://assets/images/themilojko.png" id="8_gmlb3"] +[ext_resource type="Texture2D" uid="uid://0bjiw8ginkre" path="res://assets/images/brief/brief1.png" id="9_f1sm1"] +[ext_resource type="Texture2D" uid="uid://cs35h4es4e6p" path="res://assets/images/gun1.png" id="10_gcs4w"] +[ext_resource type="Texture2D" uid="uid://berrjgsj72xx3" path="res://assets/images/brief/brief2.png" id="11_t87kn"] +[ext_resource type="Texture2D" uid="uid://css7hk4mnxkv7" path="res://assets/images/brief/brief3.png" id="12_dbk30"] +[ext_resource type="Texture2D" uid="uid://cvt5ykdeo4ado" path="res://assets/images/brief/brief4.png" id="13_wavvg"] + +[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_ulh05"] +light_mode = 1 + +[sub_resource type="LabelSettings" id="LabelSettings_cmwfe"] +font = ExtResource("2_2cgkr") +font_size = 64 +font_color = Color(1, 0.23000002, 0.23000002, 0.1254902) [sub_resource type="LabelSettings" id="LabelSettings_n76nl"] font = ExtResource("2_2cgkr") @@ -17,6 +35,33 @@ font_color = Color(1, 0.23137255, 0.23137255, 1) font = ExtResource("2_2cgkr") font_size = 32 +[sub_resource type="ShaderMaterial" id="ShaderMaterial_8sg6u"] +shader = ExtResource("6_0cygf") +shader_parameter/lod = 3.0000001425 +shader_parameter/color_tint = Color(0, 0, 0, 0.5019608) + +[sub_resource type="LabelSettings" id="LabelSettings_8sg6u"] +font = ExtResource("2_2cgkr") +font_size = 56 +font_color = Color(1, 0.24705882, 0.24705882, 1) + +[sub_resource type="LabelSettings" id="LabelSettings_0cygf"] +font = ExtResource("2_2cgkr") +font_size = 28 + +[sub_resource type="LabelSettings" id="LabelSettings_f1sm1"] +font = ExtResource("2_2cgkr") +font_size = 20 +font_color = Color(1, 1, 1, 0.5019608) + +[sub_resource type="LabelSettings" id="LabelSettings_gmlb3"] +font = ExtResource("2_2cgkr") +font_size = 30 +font_color = Color(0.9471801, 0.57589805, 1.540184e-06, 1) + +[sub_resource type="LabelSettings" id="LabelSettings_gcs4w"] +font_size = 14 + [node name="MainMenu" type="Control" unique_id=580589415] layout_mode = 3 anchors_preset = 15 @@ -38,17 +83,55 @@ offset_bottom = 57.0 grow_horizontal = 2 grow_vertical = 2 pivot_offset_ratio = Vector2(0.5, 0.5) -texture = ExtResource("1_8at84") +texture = ExtResource("2_n76nl") +stretch_mode = 1 + +[node name="ColorRect" type="ColorRect" parent="." unique_id=1289750966] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -24.0 +offset_top = -24.0 +offset_right = 24.0 +offset_bottom = 24.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(1, 0, 0, 1) + +[node name="sprite" type="Sprite2D" parent="ColorRect" unique_id=1118350154] +material = SubResource("CanvasItemMaterial_ulh05") +position = Vector2(24, 24) +scale = Vector2(2, 2) +texture = ExtResource("10_gcs4w") +region_enabled = true +region_rect = Rect2(64, 80, 32, 16) + +[node name="title3" type="Label" parent="." unique_id=495025501] +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -300.0 +offset_top = 136.0 +offset_right = 294.0 +offset_bottom = 201.0 +grow_horizontal = 2 +text = "countdown mayhem_" +label_settings = SubResource("LabelSettings_cmwfe") +horizontal_alignment = 1 [node name="title2" type="Label" parent="." unique_id=613048176] layout_mode = 1 anchors_preset = 5 anchor_left = 0.5 anchor_right = 0.5 -offset_left = 277.5 -offset_top = 118.0 -offset_right = 312.5 -offset_bottom = 183.0 +offset_left = 258.5 +offset_top = 136.0 +offset_right = 293.5 +offset_bottom = 201.0 grow_horizontal = 2 text = "_" label_settings = SubResource("LabelSettings_n76nl") @@ -59,15 +142,55 @@ layout_mode = 1 anchors_preset = 5 anchor_left = 0.5 anchor_right = 0.5 -offset_left = -282.5 -offset_top = 120.0 -offset_right = 276.5 -offset_bottom = 185.0 +offset_left = -300.5 +offset_top = 136.0 +offset_right = 258.5 +offset_bottom = 201.0 grow_horizontal = 2 text = "countdown mayhem" label_settings = SubResource("LabelSettings_xyegg") horizontal_alignment = 1 +[node name="playButton" type="Label" parent="." unique_id=2094623257] +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -99.0 +offset_top = -97.0 +offset_right = -29.0 +offset_bottom = -64.0 +grow_horizontal = 2 +grow_vertical = 0 +pivot_offset_ratio = Vector2(0.5, 0.5) +mouse_filter = 0 +text = "play" +label_settings = SubResource("LabelSettings_4agkw") +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="aboutButton" type="Label" parent="." unique_id=317431764] +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = 20.5 +offset_top = -97.0 +offset_right = 107.5 +offset_bottom = -64.0 +grow_horizontal = 2 +grow_vertical = 0 +pivot_offset_ratio = Vector2(0.5, 0.5) +mouse_filter = 0 +text = "about" +label_settings = SubResource("LabelSettings_4agkw") +horizontal_alignment = 1 +vertical_alignment = 1 + [node name="HBoxContainer" type="HBoxContainer" parent="." unique_id=1343435685] layout_mode = 1 anchors_preset = 7 @@ -83,18 +206,289 @@ grow_horizontal = 2 grow_vertical = 0 theme_override_constants/separation = 100 -[node name="playButton" type="Label" parent="HBoxContainer" unique_id=2094623257] -layout_mode = 2 -text = "play" -label_settings = SubResource("LabelSettings_4agkw") -horizontal_alignment = 1 -vertical_alignment = 1 +[node name="clilcksfx" type="AudioStreamPlayer2D" parent="." unique_id=1008041222] +stream = ExtResource("4_cmwfe") -[node name="aboutButton" type="Label" parent="HBoxContainer" unique_id=317431764] -layout_mode = 2 -text = "about" -label_settings = SubResource("LabelSettings_4agkw") -horizontal_alignment = 1 -vertical_alignment = 1 +[node name="selectsfx" type="AudioStreamPlayer2D" parent="." unique_id=139827277] +stream = ExtResource("5_0cygf") -[connection signal="mouse_entered" from="HBoxContainer/playButton" to="." method="_on_play_button_mouse_entered"] +[node name="shader" type="ColorRect" parent="." unique_id=1249808979] +material = SubResource("ShaderMaterial_8sg6u") +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="aboutPage" type="Control" parent="." unique_id=545745061] +modulate = Color(1, 1, 1, 0) +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Label" type="Label" parent="aboutPage" unique_id=879411857] +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -153.0 +offset_top = 141.0 +offset_right = 153.0 +offset_bottom = 198.0 +grow_horizontal = 2 +text = "about page" +label_settings = SubResource("LabelSettings_8sg6u") + +[node name="Label2" type="Label" parent="aboutPage" unique_id=59567339] +custom_minimum_size = Vector2(866, 253) +custom_maximum_size = Vector2(866, 253) +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -433.0 +offset_top = 237.0 +offset_right = 433.0 +offset_bottom = 490.0 +grow_horizontal = 2 +text = "thanks for playing! + +it has been a pleasure making this game and i hope i made something at least somewhat fun :) + +no assets or code has been directly made by any LLM/AI model." +label_settings = SubResource("LabelSettings_0cygf") +horizontal_alignment = 1 +autowrap_mode = 3 + +[node name="TextureRect" type="TextureRect" parent="aboutPage" unique_id=325492280] +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -191.5 +offset_top = 528.0 +offset_right = -63.5 +offset_bottom = 656.0 +grow_horizontal = 2 +texture = ExtResource("7_fk7uv") + +[node name="TextureRect2" type="TextureRect" parent="aboutPage" unique_id=1405964109] +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_top = 528.0 +offset_right = 256.0 +offset_bottom = 784.0 +grow_horizontal = 2 +scale = Vector2(0.5, 0.5) +pivot_offset_ratio = Vector2(0.5, 0) +texture = ExtResource("8_gmlb3") + +[node name="Label5" type="Label" parent="aboutPage" unique_id=1012251158] +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -137.0 +offset_top = -37.0 +offset_right = 137.0 +offset_bottom = -16.0 +grow_horizontal = 2 +grow_vertical = 0 +text = "click anywhere to go back" +label_settings = SubResource("LabelSettings_f1sm1") +horizontal_alignment = 1 + +[node name="Label3" type="Label" parent="aboutPage" unique_id=855079292] +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -213.0 +offset_top = 668.0 +offset_right = -49.0 +offset_bottom = 699.0 +grow_horizontal = 2 +text = "vekidev +(developer)" +label_settings = SubResource("LabelSettings_gmlb3") +horizontal_alignment = 1 + +[node name="Label4" type="Label" parent="aboutPage" unique_id=1694835121] +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = 39.0 +offset_top = 668.0 +offset_right = 219.0 +offset_bottom = 733.0 +grow_horizontal = 2 +text = "AleksSR +(playtester)" +label_settings = SubResource("LabelSettings_gmlb3") +horizontal_alignment = 1 + +[node name="briefPage" type="Control" parent="." unique_id=2114111699] +modulate = Color(1, 1, 1, 0) +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Label" type="Label" parent="briefPage" unique_id=897035668] +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -153.0 +offset_top = 37.0 +offset_right = 153.0 +offset_bottom = 94.0 +grow_horizontal = 2 +text = "brief info" +label_settings = SubResource("LabelSettings_8sg6u") + +[node name="cover1" type="TextureRect" parent="briefPage" unique_id=2144631177] +layout_mode = 0 +offset_left = 64.00004 +offset_top = 136.0 +offset_right = 564.00006 +offset_bottom = 436.0 +scale = Vector2(0.8, 0.8) +texture = ExtResource("9_f1sm1") + +[node name="text1" type="Label" parent="briefPage" unique_id=985115148] +custom_minimum_size = Vector2(400, 24) +custom_maximum_size = Vector2(400, 56) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -536.0 +offset_top = -12.0 +offset_right = -136.0 +offset_bottom = 12.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "enemies speed up time when they hit you. when you kill an enemy, your health countdown gets rollbacked." +label_settings = SubResource("LabelSettings_gcs4w") +horizontal_alignment = 1 +autowrap_mode = 3 + +[node name="Label5" type="Label" parent="briefPage" unique_id=335043325] +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -137.0 +offset_top = -37.0 +offset_right = 137.0 +offset_bottom = -16.0 +grow_horizontal = 2 +grow_vertical = 0 +text = "click anywhere to continue" +label_settings = SubResource("LabelSettings_f1sm1") +horizontal_alignment = 1 + +[node name="cover2" type="TextureRect" parent="briefPage" unique_id=2035607867] +layout_mode = 0 +offset_left = 728.00006 +offset_top = 136.0 +offset_right = 1228.0 +offset_bottom = 436.0 +scale = Vector2(0.8, 0.8) +texture = ExtResource("11_t87kn") + +[node name="text2" type="Label" parent="briefPage" unique_id=2022091928] +custom_minimum_size = Vector2(400, 24) +custom_maximum_size = Vector2(400, 76) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = 128.0 +offset_top = -21.5 +offset_right = 528.0 +offset_bottom = 53.5 +grow_horizontal = 2 +grow_vertical = 2 +text = "every wave you get a new upgrade. every upgrade explodes after its countdown ends. (golden upgrades are permanent)" +label_settings = SubResource("LabelSettings_gcs4w") +horizontal_alignment = 1 +autowrap_mode = 3 + +[node name="cover3" type="TextureRect" parent="briefPage" unique_id=1727248208] +layout_mode = 0 +offset_left = 64.00012 +offset_top = 448.0 +offset_right = 564.0001 +offset_bottom = 748.0 +scale = Vector2(0.8, 0.8) +texture = ExtResource("12_dbk30") + +[node name="text3" type="Label" parent="briefPage" unique_id=46298891] +custom_minimum_size = Vector2(400, 24) +custom_maximum_size = Vector2(400, 56) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -536.0 +offset_top = 287.5 +offset_right = -136.0 +offset_bottom = 336.5 +grow_horizontal = 2 +grow_vertical = 2 +text = "move with WSAD, shoot with LEFT MOUSE CLICK, dash with SPACE" +label_settings = SubResource("LabelSettings_gcs4w") +horizontal_alignment = 1 +autowrap_mode = 3 + +[node name="cover4" type="TextureRect" parent="briefPage" unique_id=1333388801] +layout_mode = 0 +offset_left = 728.00006 +offset_top = 448.00003 +offset_right = 1228.0 +offset_bottom = 748.0 +scale = Vector2(0.8, 0.8) +texture = ExtResource("13_wavvg") + +[node name="text4" type="Label" parent="briefPage" unique_id=960783645] +custom_minimum_size = Vector2(400, 24) +custom_maximum_size = Vector2(400, 56) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = 128.0 +offset_top = 287.5 +offset_right = 528.0 +offset_bottom = 336.5 +grow_horizontal = 2 +grow_vertical = 2 +text = "enemies get exponentially harder every round. your main objective is to go as far as you can." +label_settings = SubResource("LabelSettings_gcs4w") +horizontal_alignment = 1 +autowrap_mode = 3 + +[connection signal="mouse_entered" from="playButton" to="." method="_on_play_button_mouse_entered"] diff --git a/assets/scenes/player.tscn b/assets/scenes/player.tscn index ab8f54a..e2c3c79 100644 --- a/assets/scenes/player.tscn +++ b/assets/scenes/player.tscn @@ -115,7 +115,7 @@ material = SubResource("CanvasItemMaterial_14505") scale = Vector2(2, 2) texture = ExtResource("2_s027a") region_enabled = true -region_rect = Rect2(0, 112, 16, 16) +region_rect = Rect2(64, 80, 32, 16) [node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=993544515] libraries/ = SubResource("AnimationLibrary_4wcc8") diff --git a/assets/scenes/playerBullet.tscn b/assets/scenes/playerBullet.tscn index dd25f7b..7473399 100644 --- a/assets/scenes/playerBullet.tscn +++ b/assets/scenes/playerBullet.tscn @@ -4,8 +4,8 @@ [ext_resource type="Script" uid="uid://dnxmn06yejksk" path="res://assets/scripts/player_bullet.gd" id="2_qweep"] [node name="EnemyBullet" unique_id=822797430 instance=ExtResource("1_3t5k8")] -z_index = 1 script = ExtResource("2_qweep") +metadata/dontKillUrselfPlease = true [node name="MeshInstance2D" parent="." index="0" unique_id=903508644] modulate = Color(1, 0, 0, 1) diff --git a/assets/scenes/walkingBomb.tscn b/assets/scenes/walkingBomb.tscn new file mode 100644 index 0000000..09d052b --- /dev/null +++ b/assets/scenes/walkingBomb.tscn @@ -0,0 +1,230 @@ +[gd_scene format=3 uid="uid://b8gstr4nrohwu"] + +[ext_resource type="Script" uid="uid://b4mt2p1i8cdix" path="res://assets/scripts/walkingbomb.gd" id="1_us3df"] +[ext_resource type="Script" uid="uid://ca8an62xpl0e4" path="res://assets/scripts/disposableParticles.gd" id="2_2knv6"] +[ext_resource type="AudioStream" uid="uid://5b7eonllfufp" path="res://assets/sounds/hitHurt.wav" id="3_gecmd"] +[ext_resource type="AudioStream" uid="uid://cb4tk7lhsuwoj" path="res://assets/sounds/kaboom.wav" id="4_us3df"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_xyegg"] +size = Vector2(30, 30) + +[sub_resource type="Animation" id="Animation_kvq5h"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Polygon2D:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1, 1)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Polygon2D:rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [1.5707964] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Polygon2D:color") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(0.16083348, 0.050000012, 1, 1)] +} + +[sub_resource type="Animation" id="Animation_ag6wx"] +resource_name = "flash" +length = 0.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = false +tracks/0/path = NodePath("Polygon2D:color") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0.06666667, 0.16666667, 0.3), +"transitions": PackedFloat32Array(3.605001, 3.732124, 1), +"update": 0, +"values": [Color(0.6166668, 0, 1, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Polygon2D:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.13333334, 0.5), +"transitions": PackedFloat32Array(4.1410594, 0.34151012, 1), +"update": 0, +"values": [Vector2(1, 1), Vector2(0.3, 0.3), Vector2(1, 1)] +} + +[sub_resource type="Animation" id="Animation_kbpvo"] +resource_name = "shoot" +length = 0.4 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Polygon2D:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.4), +"transitions": PackedFloat32Array(0.13869622, 2, 0.73204285), +"update": 0, +"values": [Vector2(1, 1), Vector2(1.2, 0.5), Vector2(1, 1)] +} + +[sub_resource type="Animation" id="Animation_fg8cn"] +resource_name = "spawn" +length = 0.8 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Polygon2D:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.33333334, 0.8), +"transitions": PackedFloat32Array(0.36602157, 1.0352651, 3.1383355), +"update": 0, +"values": [Vector2(0, 0), Vector2(1.25, 1.25), Vector2(1, 1)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Polygon2D:rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.6), +"transitions": PackedFloat32Array(1.8025008, 1), +"update": 0, +"values": [0.0, 1.5707963267948966] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_55kjn"] +_data = { +&"RESET": SubResource("Animation_kvq5h"), +&"flash": SubResource("Animation_ag6wx"), +&"shoot": SubResource("Animation_kbpvo"), +&"spawn": SubResource("Animation_fg8cn") +} + +[sub_resource type="Curve" id="Curve_xyegg"] +_data = [Vector2(0.66548043, 0.9809523), 0.0, 0.0, 0, 0, Vector2(1, 0.009523869), 0.0, 0.0, 0, 0] +point_count = 2 + +[sub_resource type="Gradient" id="Gradient_pymst"] +offsets = PackedFloat32Array(0, 0.69411767, 0.69803923, 0.8745098, 1) +colors = PackedColorArray(1, 1, 1, 1, 0.48555556, 0.48555556, 0.48555556, 1, 0.46, 0.46, 0.46, 1, 0.51, 0.51, 0.51, 1, 1, 1, 1, 0) + +[sub_resource type="Curve" id="Curve_8sg6u"] +_data = [Vector2(0.24590164, 0.9788519), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] +point_count = 2 + +[node name="Enemy" type="CharacterBody2D" unique_id=1421049985] +collision_layer = 16 +collision_mask = 16 +script = ExtResource("1_us3df") +metadata/enemy = 1 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1723115153] +visible = false +shape = SubResource("RectangleShape2D_xyegg") + +[node name="Polygon2D" type="Polygon2D" parent="." unique_id=274914633] +rotation = 1.5707964 +color = Color(0.16083348, 0.050000012, 1, 1) +polygon = PackedVector2Array(-8.999999, 19, -8.999999, 19, -27, 1.1802075e-06, -9.000001, -21, 14.999999, -15.000001, 15.000001, 14.999999) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1072188506] +libraries/ = SubResource("AnimationLibrary_55kjn") + +[node name="NavigationAgent2D" type="NavigationAgent2D" parent="." unique_id=1305506168] + +[node name="Timer" type="Timer" parent="." unique_id=437715343] +wait_time = 0.1 +autostart = true + +[node name="RayCast2D" type="RayCast2D" parent="." unique_id=957428599] +target_position = Vector2(400, 0) +collision_mask = 512 + +[node name="explode" type="CPUParticles2D" parent="." unique_id=1638487851] +z_index = -3 +emitting = false +amount = 20 +lifetime = 10.0 +one_shot = true +explosiveness = 1.0 +spread = 180.0 +gravity = Vector2(0, 0) +initial_velocity_min = 20.0 +initial_velocity_max = 50.0 +linear_accel_min = -25.0 +linear_accel_max = -25.0 +scale_amount_min = 8.0 +scale_amount_max = 16.0 +scale_amount_curve = SubResource("Curve_xyegg") +color = Color(0, 0.3083334, 0.74, 1) +color_ramp = SubResource("Gradient_pymst") +script = ExtResource("2_2knv6") + +[node name="ColorRect" type="ColorRect" parent="." unique_id=1205892242] +offset_left = -15.0 +offset_top = -27.0 +offset_right = 15.0 +offset_bottom = -24.0 +color = Color(1, 1, 1, 0.2509804) + +[node name="health" type="ColorRect" parent="." unique_id=1962272317] +offset_left = -15.0 +offset_top = -27.0 +offset_right = 15.0 +offset_bottom = -24.0 +color = Color(0.8124417, 0, 0.111754455, 1) + +[node name="hitsfx" type="AudioStreamPlayer2D" parent="." unique_id=2128530763] +stream = ExtResource("3_gecmd") + +[node name="shootsfx" type="AudioStreamPlayer2D" parent="." unique_id=408136521] +stream = ExtResource("4_us3df") +volume_db = -10.0 + +[node name="snappie" type="Timer" parent="." unique_id=807725500] +wait_time = 0.05 +autostart = true +ignore_time_scale = true + +[node name="CPUParticles2D" type="CPUParticles2D" parent="." unique_id=1945075138] +amount = 30 +emission_shape = 1 +emission_sphere_radius = 32.0 +spread = 180.0 +gravity = Vector2(0, 0) +initial_velocity_min = 20.0 +initial_velocity_max = 50.0 +scale_amount_min = 2.0 +scale_amount_max = 2.0 +scale_amount_curve = SubResource("Curve_8sg6u") +color = Color(1, 0.92, 0.19999999, 1) + +[connection signal="timeout" from="Timer" to="." method="_on_new_path"] +[connection signal="timeout" from="snappie" to="." method="_on_snappie_timeout"] diff --git a/assets/scripts/enemy.gd b/assets/scripts/enemy.gd index 8e9756b..9b8f8d0 100644 --- a/assets/scripts/enemy.gd +++ b/assets/scripts/enemy.gd @@ -1,8 +1,11 @@ extends CharacterBody2D @onready var bullet = preload("res://assets/scenes/enemyBullet.tscn") +#@onready var bullet = preload("res://assets/scenes/enemyBullet.tscn") @onready var explosionSFX = preload("res://assets/scenes/explosionsfx.tscn") +@onready var rollbackPickup = preload("res://assets/scenes/pickupables/stopwatch.tscn") + @onready var player = $"../../Player" @onready var poly = $"Polygon2D" @onready var animations = $AnimationPlayer @@ -74,6 +77,11 @@ func _process(delta: float) -> void: var exlopsion = explosionSFX.instantiate() get_parent().get_parent().add_child(exlopsion) + if randi_range(1,5) == 1: + var instantiated = rollbackPickup.instantiate() + instantiated.global_position = global_position + get_parent().get_parent().add_child(instantiated) + queue_free() func _physics_process(delta: float) -> void: @@ -143,7 +151,7 @@ func _physics_process(delta: float) -> void: instantiated.rotation = poly.rotation instantiated.velocity.x = cos(poly.rotation) * 500 instantiated.velocity.y = sin(poly.rotation) * 500 - instantiated.dealtScale = 1.5 * pow(wave, 0.2) + instantiated.dealtScale = 1.5 * pow(1.02, wave) get_parent().get_parent().add_child(instantiated) animations.play("shoot") diff --git a/assets/scripts/globals.gd b/assets/scripts/globals.gd index 0ae2260..5697530 100644 --- a/assets/scripts/globals.gd +++ b/assets/scripts/globals.gd @@ -1,6 +1,7 @@ extends Node var availableUpgrades := ["dumbbell","firstAidKit", "rollback", "fasterFaster", "speedMayhem", "thoseWereTheDays", "dashMachine", "shotgun"] +var availableGoldUpgrade := ["shotgun", "dashMachine", "firstAidKit", "stopwatch"] var upgradeDescriptions := { "firstAidKit": "+50% time back", @@ -8,15 +9,16 @@ var upgradeDescriptions := { "rollback": "-20% speed up when taking damage", "fasterFaster": "+15% speed", "speedMayhem": "deal more damage with more speed", - "thoseWereTheDays": "every rollback, gain +10% damage", + "thoseWereTheDays": "every rollback, gain permanent +10% damage", "dashMachine": "just a better dash.", "shotgun": "a shotgun. literally just a fricking shotgun." } var goldUpgradeDescriptionOverrides := { + "firstAidKit": "i mean its now the second aid kit, right?", "shotgun": "still a shotgun, but now shiny ooo", "dashMachine": "dash everywhere, go wild.", - "stopwatch": "countdowns are 50% slower. its cool isn't it?", + "stopwatch": "new upgrade countdowns are 50% slower.", "adrenaline": "when 5 seconds left on the health countdown, recieve a 75% buff on EVERYTHING.", "threeWaves": "something is coming in three waves." } diff --git a/assets/scripts/kaboom.gd b/assets/scripts/kaboom.gd new file mode 100644 index 0000000..bfb8eaa --- /dev/null +++ b/assets/scripts/kaboom.gd @@ -0,0 +1,9 @@ +extends Area2D + +var timer := 0.0 + +func _process(delta): + timer += delta + + if timer > 1: + queue_free() diff --git a/assets/scripts/kaboom.gd.uid b/assets/scripts/kaboom.gd.uid new file mode 100644 index 0000000..ff265c5 --- /dev/null +++ b/assets/scripts/kaboom.gd.uid @@ -0,0 +1 @@ +uid://dt85erj8ktqmq diff --git a/assets/scripts/main_menu.gd b/assets/scripts/main_menu.gd index 9f92fd2..2664725 100644 --- a/assets/scripts/main_menu.gd +++ b/assets/scripts/main_menu.gd @@ -3,18 +3,113 @@ extends Control @onready var bg = $TextureRect @onready var title1 = $title1 @onready var title2 = $title2 +@onready var title3 = $title3 + +@onready var playButton = $playButton +@onready var aboutButton = $aboutButton + +@onready var shader = $shader + +@onready var gun = $ColorRect/sprite var timer := 0.0 +var hoverPlay := false +var hoverSelect := false + +var lock := false + +var blurVal := 0.0 +var tintVal := 0.0 +var blurred := false + +var currentPage := 0 + +func _ready(): + Globals.unlockedUpgrades = {} + # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: + shader.material.set_shader_parameter("lod", blurVal) + shader.material.set_shader_parameter("color_tint", Color(0.0, 0.0, 0.0, tintVal)) + + gun.look_at(get_global_mouse_position()) + + if blurred: + blurVal += (3.0 - blurVal) * 5 * delta + tintVal += (0.5 - tintVal) * 5 * delta + + if currentPage == 1: + $aboutPage.modulate.a += (1.0 - $aboutPage.modulate.a) * 5 * delta + + if $aboutPage.modulate.a > 0.9 and Input.is_action_just_pressed("shoot"): + blurred = false + currentPage = 0 + + if currentPage == 2: + $briefPage.modulate.a += (1.0 - $briefPage.modulate.a) * 5 * delta + + if $briefPage.modulate.a > 0.9 and Input.is_action_just_pressed("shoot"): + blurred = false + get_tree().change_scene_to_file("res://rootnode.tscn") + + return + + if currentPage == 0: + $aboutPage.modulate.a += (- $aboutPage.modulate.a) * 10 * delta + + blurVal += (- blurVal) * 10 * delta + tintVal += (- tintVal) * 5 * delta + timer += delta - bg.position = get_local_mouse_position() / 200 - Vector2(16, 8) + #bg.position = get_local_mouse_position() / 200 - Vector2(16, 8) + bg.position.x = fmod((timer * 16), 48) - 48 + bg.position.y = fmod((timer * 16), 48) - 48 title1.position.y = 120 + sin(timer) * 16 title2.position.y = 120 + sin(timer) * 16 + title3.position.y = 120 + sin(timer - 1) * 16 + if playButton.get_global_rect().has_point(get_global_mouse_position()): + if not hoverPlay: + $clilcksfx.play() + + if Input.is_action_pressed("shoot"): + blurred = true + currentPage = 2 + + playButton.scale += (Vector2(1.25, 1.25) - playButton.scale) * 5 * delta + playButton.modulate.g += (0.23 - playButton.modulate.g) * 5 * delta + playButton.modulate.b += (0.23 - playButton.modulate.b) * 5 * delta + + hoverPlay = true + else: + playButton.scale += (Vector2(1, 1) - playButton.scale) * 5 * delta + playButton.modulate.g += (1.0 - playButton.modulate.g) * 5 * delta + playButton.modulate.b += (1.0 - playButton.modulate.b) * 5 * delta + + hoverPlay = false + + if aboutButton.get_global_rect().has_point(get_global_mouse_position()): + if not hoverSelect: + $clilcksfx.play() + + if Input.is_action_pressed("shoot"): + blurred = true + currentPage = 1 + + aboutButton.scale += (Vector2(1.25, 1.25) - aboutButton.scale) * 5 * delta + aboutButton.modulate.g += (0.23 - aboutButton.modulate.g) * 5 * delta + aboutButton.modulate.b += (0.23 - aboutButton.modulate.b) * 5 * delta + + hoverSelect = true + else: + aboutButton.scale += (Vector2(1, 1) - aboutButton.scale) * 5 * delta + aboutButton.modulate.g += (1.0 - aboutButton.modulate.g) * 5 * delta + aboutButton.modulate.b += (1.0 - aboutButton.modulate.b) * 5 * delta + + hoverSelect = false func _on_play_button_mouse_entered() -> void: pass # Replace with function body. diff --git a/assets/scripts/player.gd b/assets/scripts/player.gd index b232e1b..44a253a 100644 --- a/assets/scripts/player.gd +++ b/assets/scripts/player.gd @@ -39,7 +39,13 @@ var targetState = [] var dead := false +var damage_stack := 1.0 + +var shotgun := 0 + func heal(seconds): + damage_stack *= pow(1.1, Globals.unlockedUpgrades.get("thoseWereTheDays", 0)) + newHealth = health + seconds transitionStart.emit(seconds) #print(frameData) @@ -53,6 +59,11 @@ func _process(delta: float) -> void: if damageScale > minDamageScale: damageScale -= delta damageScale = max(damageScale, minDamageScale) + shotgun = Globals.unlockedUpgrades.get("shotgun", 0) + if shotgun > 0: + gunSprite.region_rect = Rect2(64, 80, 32, 16) + else: + gunSprite.region_rect = Rect2(0, 112, 16, 16) #ticks += 1 dashRect.position.y = 31 * dashTimer / Globals.DASH_WAIT / 2 - 31.0 / 2 @@ -69,6 +80,7 @@ func _process(delta: float) -> void: dead = true hide() + var grayscaleVal := 1.0 func _physics_process(delta: float) -> void: @@ -138,8 +150,8 @@ func _physics_process(delta: float) -> void: var ang = gun.rotation + gun.get_angle_to(get_global_mouse_position()) if Input.is_action_just_pressed("dash") and dashTimer == 0: - dashVel = Vector2(cos(ang), sin(ang)) * Globals.DASH_LENGTH - dashTimer = Globals.DASH_WAIT + dashVel = Vector2(cos(ang), sin(ang)) * Globals.DASH_LENGTH * pow(1.5, Globals.unlockedUpgrades.get("dashMachine", 0)) + dashTimer = Globals.DASH_WAIT * pow(0.8, Globals.unlockedUpgrades.get("dashMachine", 0)) if dashTimer > 0: dashTimer -= delta else: dashTimer = 0 @@ -147,11 +159,19 @@ func _physics_process(delta: float) -> void: if Input.is_action_just_pressed("shoot"): if not animations.is_playing(): #var ang = gun.rotation + gun.get_angle_to(get_global_mouse_position()) - var instantiated = bullet.instantiate() - instantiated.global_position = global_position - instantiated.velocity.x = cos(ang) * 700 - instantiated.velocity.y = sin(ang) * 700 - get_parent().add_child(instantiated) + if shotgun > 0: + for ind in range(-shotgun, shotgun + 1): + var instantiated = bullet.instantiate() + instantiated.global_position = global_position# + Vector2(cos(ang + ind * 0.2) * 16, sin(ang + ind * 0.3) * 16) + instantiated.velocity.x = cos(ang + ind * 0.2) * 700 + instantiated.velocity.y = sin(ang + ind * 0.2) * 700 + get_parent().add_child(instantiated) + else: + var instantiated = bullet.instantiate() + instantiated.global_position = global_position + instantiated.velocity.x = cos(ang) * 700 + instantiated.velocity.y = sin(ang) * 700 + get_parent().add_child(instantiated) shootsfx.play() @@ -197,3 +217,9 @@ func _on_hitbox_area_entered(area: Area2D) -> void: area.queue_free() $"../hud/AnimationPlayer2".play("global/popItUp") + + if area.has_meta("kaboom"): + speedScale = 2 * pow(0.8, Globals.unlockedUpgrades.get("rollback", 0)) + speedUp = 0.5 + damageScale += 2 * pow(0.8, Globals.unlockedUpgrades.get("rollback", 0)) + knockback = Vector2(sin(rotation) * 2000 * [0.5, -0.5].pick_random(), cos(rotation) * 2000 * [0.5, -0.5].pick_random()) diff --git a/assets/scripts/player_bullet.gd b/assets/scripts/player_bullet.gd index 1b54bb1..4e801c4 100644 --- a/assets/scripts/player_bullet.gd +++ b/assets/scripts/player_bullet.gd @@ -21,9 +21,8 @@ func _physics_process(delta: float) -> void: move_and_collide(velocity * delta) func _on_area_entered(area: Area2D) -> void: - print("yes") - - queue_free() + if not area.get_parent().has_meta("dontKillUrselfPlease"): + queue_free() func _on_body_entered(body: Node2D) -> void: @@ -31,7 +30,7 @@ func _on_body_entered(body: Node2D) -> void: #body.get_node("explode").emitting = true #body.get_node("explode").reparent(body.geat_parent()) - body.health -= dmgtotal + body.health -= dmgtotal * player.damage_stack body.knockback = Vector2(velocity.x * 0.5, velocity.y * 0.5) body.hitsfx.play() #AnimationPlayer.new().stop() @@ -47,4 +46,6 @@ func _on_body_entered(body: Node2D) -> void: #player.heal(randi_range(3,5)) #body.queue_free() + + print(body.name) queue_free() diff --git a/assets/scripts/upgrade_ui.gd b/assets/scripts/upgrade_ui.gd index 072ccda..bc620bb 100644 --- a/assets/scripts/upgrade_ui.gd +++ b/assets/scripts/upgrade_ui.gd @@ -7,14 +7,21 @@ extends Control @export var imDead := false var upgradeID := "" -#var amount := 1 -var timer := Globals.UPGRADE_TIMERSTART +var amount := 1 +var timer = Globals.UPGRADE_TIMERSTART * pow(1.5, Globals.unlockedUpgrades.get("stopwatch", 0)) +var goldUpgrade := false + +func _ready(): + if goldUpgrade: + progressRect.hide() + $goldrect.show() + timer = 999 func _process(delta: float) -> void: if imDead and not $particles.emitting: queue_free() - timer -= delta * Engine.time_scale + if not goldUpgrade: timer -= delta * Engine.time_scale texture.scale += (Vector2(1, 1) - texture.scale) * 7 * delta texture.modulate.a += (1 - texture.modulate.a) * 7 * delta @@ -22,13 +29,14 @@ func _process(delta: float) -> void: progressRect.position.x += (timer / Globals.UPGRADE_TIMERSTART * 48 - progressRect.position.x) * 5 * delta progressRect.size.x += (48 - timer / Globals.UPGRADE_TIMERSTART * 48 - progressRect.size.x) * 5 * delta - amountLabel.text = str("x", Globals.unlockedUpgrades.get(upgradeID, -1)) - + amountLabel.text = str("x", amount)#Globals.unlockedUpgrades.get(upgradeID, -1)) + if timer < 0 and not imDead: + amount -= 1 Globals.unlockedUpgrades[upgradeID] -= 1 timer = Globals.UPGRADE_TIMERSTART - if Globals.unlockedUpgrades[upgradeID] == 0: - Globals.unlockedUpgrades.erase(upgradeID) + if amount == 0: + #Globals.unlockedUpgrades.erase(upgradeID) imDead = true $texture.hide() $progress.hide() diff --git a/assets/scripts/walkingbomb.gd b/assets/scripts/walkingbomb.gd new file mode 100644 index 0000000..21fc7f0 --- /dev/null +++ b/assets/scripts/walkingbomb.gd @@ -0,0 +1,168 @@ +extends CharacterBody2D + +@onready var bullet = preload("res://assets/scenes/enemyBullet.tscn") +#@onready var bullet = preload("res://assets/scenes/enemyBullet.tscn") +@onready var explosionSFX = preload("res://assets/scenes/explosionsfx.tscn") +@onready var explosion = preload("res://assets/scenes/explosion.tscn") + +@onready var player = $"../../Player" +@onready var poly = $"Polygon2D" +@onready var animations = $AnimationPlayer +@onready var healthBar = $health +@onready var healthBg = $ColorRect +@onready var nav_agent: NavigationAgent2D = $NavigationAgent2D +@onready var ray:= $RayCast2D +@onready var hitsfx = $hitsfx +@onready var shootsfx = $shootsfx +const RANGE = 400.0 + +var curShootVal := 1.0 +var lock := true +@export var shootDelay := 1.0 + +var health := 100.0 +var maxHealth := 100.0 + +var wave := 1 + +var flash := 0.0 + +var knockback := Vector2.ZERO + +var frameData = {} + +var transitioning := false +var transitionState = [false, false, false] +var targetState = [] + +var ticks = 0 +var tickToDel = 0 + +var boomTimer := 0.0 + +func moveback(seconds): + if ticks < 5: return + + print("lets go") + targetState = frameData[max(tickToDel, ticks - (int(floor(seconds)) * 20))] + transitioning = true + +func _ready(): + animations.play("spawn") + + await get_tree().create_timer(0.7).timeout + lock = false + + call_deferred("actor_setup") + +func actor_setup() -> void: + await get_tree().physics_frame + if player: + nav_agent.target_position = player.global_position + +func _process(delta: float) -> void: + healthBar.size.x += ((health / maxHealth) * healthBg.size.x - healthBar.size.x) * 5 * delta + + if health < 0: + if player: + + if Globals.unlockedUpgrades.get("firstAidKit", 0) > 0: + player.heal(randf_range(3,5)) + else: + player.heal(randf_range(2,3)) + + get_node("explode").emitting = true + get_node("explode").unlock = true + get_node("explode").reparent(get_parent().get_parent()) + + var exlopsion = explosionSFX.instantiate() + get_parent().get_parent().add_child(exlopsion) + + queue_free() + +func _physics_process(delta: float) -> void: + if lock: + return + + + if transitioning: + + position += (targetState[0] - position) * 5 * delta / Engine.time_scale + rotation += (targetState[1] - rotation) * 5 * delta / Engine.time_scale + velocity += (targetState[2] - velocity) * 5 * delta / Engine.time_scale + + # + #position = position.round() + #rotation = round(rotation) + #velocity = velocity.round() + + #print((position - targetState[0]).length(), " ", abs(rotation - targetState[1]), " ", (velocity - targetState[2]).length()) + + if (position - targetState[0]).length() < 2: + position = targetState[0] + transitionState[0] = true + if abs(rotation - targetState[1]) < 0.05: + rotation = targetState[1] + transitionState[1] = true + if (velocity - targetState[2]).length() < 2: + velocity = targetState[2] + transitionState[2] = true + + if transitionState.count(true) == len(transitionState): + transitioning = false + transitionState = [false, false, false] + targetState = [] + + return + + var nextpos := nav_agent.get_next_path_position() + + ray.rotation += ray.get_angle_to(player.global_position) + + var distance = global_position.distance_to(player.global_position) + ray.target_position.x = min(distance, 400) + if not ray.is_colliding(): + poly.rotation += poly.get_angle_to(player.global_position) * 5 * delta + + velocity.x += (cos(poly.rotation) * 200 - velocity.x) * 5 * delta + velocity.y += (sin(poly.rotation) * 200 - velocity.y) * 5 * delta + else: + var newvel := (nextpos - global_position).normalized() * 200 + poly.rotation += poly.get_angle_to(nextpos) * 5 * delta + velocity = newvel + + #velocity += (newvel - velocity) * 5 * delta + + #velocity.x += (cos(rotation) * 200 - velocity.x) * 5 * delta + #velocity.y += (sin(rotation) * 200 - velocity.y) * 5 * delta + + knockback += -knockback * 5 * delta + + boomTimer += delta + + $Polygon2D.modulate.v = boomTimer / 5.0 + + if boomTimer > 5: + var instantiated = explosion.instantiate() + shootsfx.play() + instantiated.global_position = global_position + get_parent().get_parent().add_child(instantiated) + queue_free() + + move_and_collide((velocity + knockback) * delta) + + + + +func _on_new_path() -> void: + if player: + nav_agent.target_position = player.global_position - Vector2(16, 16) + + +func _on_snappie_timeout() -> void: + frameData[ticks] = [position, rotation, velocity] + ticks += 1 + + if ticks > 240: + frameData.erase(tickToDel) + tickToDel += 1 diff --git a/assets/scripts/walkingbomb.gd.uid b/assets/scripts/walkingbomb.gd.uid new file mode 100644 index 0000000..27f69fc --- /dev/null +++ b/assets/scripts/walkingbomb.gd.uid @@ -0,0 +1 @@ +uid://b4mt2p1i8cdix diff --git a/assets/shaders/blur.gdshader b/assets/shaders/blur.gdshader new file mode 100644 index 0000000..55e0382 --- /dev/null +++ b/assets/shaders/blur.gdshader @@ -0,0 +1,12 @@ +shader_type canvas_item; + +// Allows you to sample the pixels rendered behind this node +uniform sampler2D screen_texture : hint_screen_texture, filter_linear_mipmap; + +uniform float lod : hint_range(0.0, 5.0) = 2.0; +uniform vec4 color_tint : source_color = vec4(1.0, 1.0, 1.0, 0.1); + +void fragment() { + vec4 blurred_screen = textureLod(screen_texture, SCREEN_UV, lod); + COLOR = mix(blurred_screen, vec4(color_tint.rgb, 1.0), color_tint.a); +} \ No newline at end of file diff --git a/assets/shaders/blur.gdshader.uid b/assets/shaders/blur.gdshader.uid new file mode 100644 index 0000000..6188a13 --- /dev/null +++ b/assets/shaders/blur.gdshader.uid @@ -0,0 +1 @@ +uid://b5ke0njvd8rj7 diff --git a/assets/sounds/click.wav b/assets/sounds/click.wav new file mode 100644 index 0000000..580d75b Binary files /dev/null and b/assets/sounds/click.wav differ diff --git a/assets/sounds/click.wav.import b/assets/sounds/click.wav.import new file mode 100644 index 0000000..7886266 --- /dev/null +++ b/assets/sounds/click.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://cnx8twenag0nx" +path="res://.godot/imported/click.wav-6af01c357158287f6c248cf59f42edea.sample" + +[deps] + +source_file="res://assets/sounds/click.wav" +dest_files=["res://.godot/imported/click.wav-6af01c357158287f6c248cf59f42edea.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/assets/sounds/kaboom.wav b/assets/sounds/kaboom.wav new file mode 100644 index 0000000..b8a1097 Binary files /dev/null and b/assets/sounds/kaboom.wav differ diff --git a/assets/sounds/kaboom.wav.import b/assets/sounds/kaboom.wav.import new file mode 100644 index 0000000..aa6f82c --- /dev/null +++ b/assets/sounds/kaboom.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://cb4tk7lhsuwoj" +path="res://.godot/imported/kaboom.wav-86b74bcd4c752d481f1906ef536b9a41.sample" + +[deps] + +source_file="res://assets/sounds/kaboom.wav" +dest_files=["res://.godot/imported/kaboom.wav-86b74bcd4c752d481f1906ef536b9a41.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/assets/sounds/select.wav b/assets/sounds/select.wav new file mode 100644 index 0000000..15a0739 Binary files /dev/null and b/assets/sounds/select.wav differ diff --git a/assets/sounds/select.wav.import b/assets/sounds/select.wav.import new file mode 100644 index 0000000..ec18929 --- /dev/null +++ b/assets/sounds/select.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://c3gxbppnkybp6" +path="res://.godot/imported/select.wav-5c513b8003f93446e91f1963597d7cd6.sample" + +[deps] + +source_file="res://assets/sounds/select.wav" +dest_files=["res://.godot/imported/select.wav-5c513b8003f93446e91f1963597d7cd6.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/export_presets.cfg b/export_presets.cfg new file mode 100644 index 0000000..00d8fec --- /dev/null +++ b/export_presets.cfg @@ -0,0 +1,171 @@ +[runnable_presets] + +"Windows Desktop"="Windows Desktop" +Web="Web" +Linux="Linux" + +[preset.0] + +name="Windows Desktop" +platform="Windows Desktop" +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="../BUGIHSFGIGISH/windows/countdownMayhem.exe" +patches=PackedStringArray() +patch_delta_encoding=false +patch_delta_compression_level_zstd=19 +patch_delta_min_reduction=0.1 +patch_delta_include_filters="*" +patch_delta_exclude_filters="" +encryption_include_filters="" +encryption_exclude_filters="" +seed=0 +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.0.options] + +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=0 +binary_format/embed_pck=false +texture_format/s3tc_bptc=true +texture_format/etc2_astc=false +shader_baker/enabled=false +binary_format/architecture="x86_64" +codesign/enable=false +codesign/timestamp=true +codesign/timestamp_server_url="" +codesign/digest_algorithm=1 +codesign/description="" +codesign/custom_options=PackedStringArray() +application/modify_resources=true +application/icon="" +application/console_wrapper_icon="" +application/icon_interpolation=4 +application/file_version="" +application/product_version="" +application/company_name="" +application/product_name="" +application/file_description="" +application/copyright="" +application/trademarks="" +application/export_angle=0 +application/export_d3d12=0 +application/d3d12_agility_sdk_multiarch=true +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}' +$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}' +$trigger = New-ScheduledTaskTrigger -Once -At 00:00 +$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries +$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings +Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true +Start-ScheduledTask -TaskName godot_remote_debug +while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 } +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue" +ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue +Remove-Item -Recurse -Force '{temp_dir}'" + +[preset.1] + +name="Web" +platform="Web" +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="../BUGIHSFGIGISH/web/index.html" +patches=PackedStringArray() +patch_delta_encoding=false +patch_delta_compression_level_zstd=19 +patch_delta_min_reduction=0.1 +patch_delta_include_filters="*" +patch_delta_exclude_filters="" +encryption_include_filters="" +encryption_exclude_filters="" +seed=0 +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.1.options] + +custom_template/debug="" +custom_template/release="" +variant/extensions_support=false +variant/thread_support=true +vram_texture_compression/for_desktop=true +vram_texture_compression/for_mobile=false +html/export_icon=true +html/custom_html_shell="" +html/head_include="" +html/canvas_resize_policy=2 +html/focus_canvas_on_start=true +html/experimental_virtual_keyboard=false +progressive_web_app/enabled=false +progressive_web_app/ensure_cross_origin_isolation_headers=true +progressive_web_app/offline_page="" +progressive_web_app/display=1 +progressive_web_app/orientation=0 +progressive_web_app/icon_144x144="" +progressive_web_app/icon_180x180="" +progressive_web_app/icon_512x512="" +progressive_web_app/background_color=Color(0, 0, 0, 1) +threads/emscripten_pool_size=8 +threads/godot_pool_size=4 + +[preset.2] + +name="Linux" +platform="Linux" +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="../BUGIHSFGIGISH/linux/countdownMayhem.x86_64" +patches=PackedStringArray() +patch_delta_encoding=false +patch_delta_compression_level_zstd=19 +patch_delta_min_reduction=0.1 +patch_delta_include_filters="*" +patch_delta_exclude_filters="" +encryption_include_filters="" +encryption_exclude_filters="" +seed=0 +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.2.options] + +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=0 +binary_format/embed_pck=false +texture_format/s3tc_bptc=true +texture_format/etc2_astc=false +shader_baker/enabled=false +binary_format/architecture="x86_64" +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="#!/usr/bin/env bash +export DISPLAY=:0 +unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\" +\"{temp_dir}/{exe_name}\" {cmd_args}" +ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash +pkill -x -f \"{temp_dir}/{exe_name} {cmd_args}\" +rm -rf \"{temp_dir}\"" diff --git a/logo.svg b/logo.svg new file mode 100644 index 0000000..47a8627 --- /dev/null +++ b/logo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/logo.svg.import b/logo.svg.import new file mode 100644 index 0000000..0042ca2 --- /dev/null +++ b/logo.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://l8sjke6mmq3o" +path="res://.godot/imported/logo.svg-8d8cf086b974db23ad31f8a2f3ea7d0f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://logo.svg" +dest_files=["res://.godot/imported/logo.svg-8d8cf086b974db23ad31f8a2f3ea7d0f.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 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/project.godot b/project.godot index e81b413..fd9d4c0 100644 --- a/project.godot +++ b/project.godot @@ -11,12 +11,12 @@ config_version=5 [application] config/name="countdown mayhem" -run/main_scene="uid://beviqs1f22d1c" +run/main_scene="uid://ff2uc6ruj6q8" config/features=PackedStringArray("4.7", "Forward Plus") boot_splash/bg_color=Color(0, 0, 0, 1) boot_splash/stretch_mode=0 boot_splash/image="uid://dbhwfxaqgogb3" -config/icon="res://icon.svg" +config/icon="uid://l8sjke6mmq3o" [autoload] @@ -26,6 +26,7 @@ Globals="*uid://ce6cecb4wunfi" window/size/viewport_width=1200 window/size/viewport_height=800 +window/size/mode=2 window/stretch/mode="canvas_items" [global_group] diff --git a/rootnode.gd b/rootnode.gd index d4d1a61..69fc7d9 100644 --- a/rootnode.gd +++ b/rootnode.gd @@ -8,6 +8,7 @@ extends Node2D @onready var healthLabel = $hud/healthlabel @onready var slowdown = $hud/slowdown @onready var upgradesHUD = $hud/upgrades +@onready var goldupgradesHUD = $hud/goldupgrades @onready var ff = $hud/ff @onready var beep = $hud/beep @onready var beep2 = $hud/beep2 @@ -22,6 +23,7 @@ extends Node2D # @onready var shooter = preload("res://assets/scenes/shooter.tscn") +@onready var bomber = preload("res://assets/scenes/walkingBomb.tscn") @onready var upgradeUI = preload("res://assets/scenes/upgradeUI.tscn") var healthLast = 0 @@ -59,15 +61,43 @@ func wfc(): pass func appendUpgrade(upgradeID : String): - print(upgradeUnlocksPerTick) + + if randi_range(1,10) == 1: + # gold upgrade + + var upgradeIDE = Globals.availableGoldUpgrade.pick_random() + Globals.unlockedUpgrades[upgradeIDE] = Globals.unlockedUpgrades.get(upgradeIDE, 0) + 1 + + var instantiated = upgradeUI.instantiate() + instantiated.get_node("texture").texture = load(str("res://assets/images/upgrades/", upgradeIDE, ".png")) + #instantiated.timer = Globals.UPGRADE_TIMERSTART + instantiated.goldUpgrade = true + instantiated.upgradeID = upgradeIDE + #instantiated.get_node("animations").play("init") + goldupgradesHUD.add_child(instantiated) + + $newupgrade/title.text = "[GOLD] " + upgradeIDE.capitalize().to_lower() + $newupgrade/icon.texture = load(str("res://assets/images/upgrades/", upgradeID, ".png")) + + if Globals.goldUpgradeDescriptionOverrides.get(upgradeIDE, "") == "": + $newupgrade/text.text = Globals.upgradeDescriptions[upgradeIDE] + else: + $newupgrade/text.text = Globals.goldUpgradeDescriptionOverrides[upgradeIDE] + + $newupgrade/animations.stop() + $newupgrade/animations.play("newUpgrade") + + return + + #print(upgradeID) Globals.unlockedUpgrades[upgradeID] = Globals.unlockedUpgrades.get(upgradeID, 0) + 1 - upgradeUnlocksPerTick[ticks].append(upgradeID) + #upgradeUnlocksPerTick[ticks].append(upgradeID) #TextureRect.new().texture.resource_path var modified := false for icon in upgradesHUD.get_children(): if icon.upgradeID == upgradeID: - #icon.amount += 1 + icon.amount += 1 modified = true break @@ -87,7 +117,9 @@ func appendUpgrade(upgradeID : String): $newupgrade/animations.play("newUpgrade") func _ready(): - #appendUpgrade("rollback") + + #appendUpgrade("stopwatch") + #appendUpgrade("shotgun") for i in range(11): patterns.append(tilemap.tile_set.get_pattern(i)) @@ -111,6 +143,17 @@ var timer := 0.0 func _process(delta: float) -> void: waveTimer -= delta + if player.health <= 0: + Engine.time_scale = 1 + $hud/deathrect.modulate.a += (1 - $hud/deathrect.modulate.a) * delta + + if Input.is_action_just_pressed("shoot"): + get_tree().change_scene_to_file("res://assets/scenes/mainMenu.tscn") + + return + + #appendUpgrade("shotgun") + if not baked: timer += delta $bakewait/Label.text = "baking collisions" @@ -164,7 +207,6 @@ func _process(delta: float) -> void: healthLast = int(player.health) slowdown.material.set_shader_parameter('saturation', player.grayscaleVal) #a - func _on_navigation_bake_finished() -> void: $bakewait.queue_free() @@ -174,21 +216,28 @@ func _on_navigation_bake_finished() -> void: func _on_spawntimer_timeout() -> void: var newEnemy = shooter.instantiate() - newEnemy.health = 100 * pow(currentWave, 0.7) - newEnemy.maxHealth = 100 * pow(currentWave, 0.7) + newEnemy.health = 80 * pow(currentWave, 0.7) + newEnemy.maxHealth = 80 * pow(currentWave, 0.7) newEnemy.wave = currentWave newEnemy.global_position = player.global_position + Vector2(randi_range(-500, 500), randi_range(-100, 100)) get_node("enemies").add_child(newEnemy) + if currentWave >= 3 and randi_range(1, 5) == 1: + var thebomba = bomber.instantiate() + thebomba.health = 200 * pow(currentWave, 0.7) + thebomba.maxHealth = 200 * pow(currentWave, 0.7) + thebomba.wave = currentWave + thebomba.global_position = player.global_position + Vector2(randi_range(-500, 500), randi_range(-100, 100)) + get_node("enemies").add_child(thebomba) func _on_player_transition_start(seconds: Variant) -> void: for enemy in get_node("enemies").get_children(): enemy.moveback(max(seconds, enemy.ticks / 20)) print("moveback1") - print(upgradeUnlocksPerTick, "\n", max(ticks - int(seconds) - 1,tickToDel)) - for upgrade in upgradeUnlocksPerTick[max(ticks - int(seconds) - 1,tickToDel)]: - appendUpgrade(upgrade) + #print(upgradeUnlocksPerTick, "\n", max(ticks - int(seconds) - 1,tickToDel)) + #for upgrade in upgradeUnlocksPerTick[max(ticks - int(seconds) - 1,tickToDel)]: + #appendUpgrade(upgrade) func _on_upgradetick_timeout() -> void: diff --git a/rootnode.tscn b/rootnode.tscn index cb700dc..fe83508 100644 --- a/rootnode.tscn +++ b/rootnode.tscn @@ -11,6 +11,7 @@ [ext_resource type="AudioStream" uid="uid://cxub0psx0jhru" path="res://assets/sounds/powerUp.wav" id="9_03kpu"] [ext_resource type="FontFile" uid="uid://ha2vel05pr1v" path="res://assets/fonts/AnonymousPro-Bold.ttf" id="10_hw0nj"] [ext_resource type="Texture2D" uid="uid://pb14cjjw7aa8" path="res://assets/images/upgrades/shotgun.png" id="10_ptsbx"] +[ext_resource type="PackedScene" uid="uid://b8gstr4nrohwu" path="res://assets/scenes/walkingBomb.tscn" id="12_hx4w7"] [sub_resource type="NavigationPolygon" id="NavigationPolygon_xyegg"] outlines = Array[PackedVector2Array]([PackedVector2Array(-1567, -1568, 1601, -1567, 1600, 1600, -1570, 1601)]) @@ -216,6 +217,15 @@ _data = { &"popItUp": SubResource("Animation_d1xn1") } +[sub_resource type="LabelSettings" id="LabelSettings_8sg6u"] +font = ExtResource("10_hw0nj") +font_size = 48 +font_color = Color(1, 0.2509804, 0.2509804, 1) + +[sub_resource type="LabelSettings" id="LabelSettings_hx4w7"] +font = ExtResource("10_hw0nj") +font_size = 32 + [sub_resource type="LabelSettings" id="LabelSettings_xyegg"] [sub_resource type="Environment" id="Environment_xyegg"] @@ -339,13 +349,16 @@ tile_set = SubResource("TileSet_xyegg") [node name="Player" parent="." unique_id=1190467346 instance=ExtResource("1_btclk")] [node name="Pickupable" parent="." unique_id=448556835 instance=ExtResource("8_d1xn1")] -position = Vector2(95, -501) +position = Vector2(100000, -501) collision_priority = 100.0 [node name="enemies" type="Node2D" parent="." unique_id=1230721986] [node name="Enemy" parent="enemies" unique_id=1421049985 instance=ExtResource("2_46mya")] -position = Vector2(-1, 133) +position = Vector2(-1, 100000) + +[node name="Enemy2" parent="enemies" unique_id=791204310 instance=ExtResource("12_hx4w7")] +position = Vector2(1, 100000) [node name="hud" type="CanvasLayer" parent="." unique_id=1713327920] @@ -490,12 +503,13 @@ offset_transform_enabled = true theme_override_constants/separation = 56 [node name="goldupgrades" type="VBoxContainer" parent="hud" unique_id=640079106] -anchors_preset = 9 +anchors_preset = 11 +anchor_left = 1.0 +anchor_right = 1.0 anchor_bottom = 1.0 -offset_left = 64.0 -offset_top = 8.0 -offset_right = 112.0 -offset_bottom = -8.0 +offset_left = -56.0 +offset_right = -8.0 +grow_horizontal = 0 grow_vertical = 2 offset_transform_enabled = true theme_override_constants/separation = 56 @@ -511,7 +525,7 @@ offset_bottom = 71.0 grow_horizontal = 2 scale = Vector2(1e-05, 1e-05) pivot_offset_ratio = Vector2(0.5, 0.5) -text = "+3 seconds ig" +text = "+3s" label_settings = SubResource("LabelSettings_ptsbx") [node name="AnimationPlayer2" type="AnimationPlayer" parent="hud" unique_id=454507892] @@ -528,6 +542,44 @@ volume_db = -10.0 max_distance = 10000.0 attenuation = 1e-05 +[node name="deathrect" type="ColorRect" parent="hud" unique_id=394171848] +modulate = Color(1, 1, 1, 0) +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0, 0, 0, 1) + +[node name="Label" type="Label" parent="hud/deathrect" unique_id=1703912318] +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -118.0 +offset_top = 288.0 +offset_right = 118.0 +offset_bottom = 337.0 +grow_horizontal = 2 +text = "you died." +label_settings = SubResource("LabelSettings_8sg6u") + +[node name="Label2" type="Label" parent="hud/deathrect" unique_id=1652205310] +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -331.0 +offset_top = 384.0 +offset_right = 331.0 +offset_bottom = 489.0 +grow_horizontal = 2 +text = "well thats unfortunate. + +click anywhere to go to the main menu." +label_settings = SubResource("LabelSettings_hx4w7") +horizontal_alignment = 1 + [node name="bakewait" type="CanvasLayer" parent="." unique_id=1005630157] visible = false @@ -603,6 +655,21 @@ text = "new upgrade!" label_settings = SubResource("LabelSettings_pymst") horizontal_alignment = 1 +[node name="goldrect" type="ColorRect" parent="newupgrade" unique_id=1803253903] +visible = false +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -24.0 +offset_top = -24.0 +offset_right = 24.0 +offset_bottom = 24.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0.8, 0.6, 0, 1) + [node name="icon" type="TextureRect" parent="newupgrade" unique_id=1212657862] anchors_preset = 8 anchor_left = 0.5