diff --git a/bugs.md b/bugs.md index 64af132..df06a9e 100644 --- a/bugs.md +++ b/bugs.md @@ -2,10 +2,11 @@ - [x] Finish Platformer - [ ] Finish Space Invaders - [ ] Finish Bullet Hell -- [ ] Finish Bomb Defusal -- [ ] Finish DDR +- [x] Finish Bomb Defusal +- [x] Finish DDR - [ ] Finish Asteroids -- [ ] Finish Crafting +- [x] Finish Crafting +- [ ] Game Over # High Priority - [ ] remote breaking animation not working @@ -13,13 +14,28 @@ - [x] lasers not appearing - [x] only 1 lane getting warning - [x] platformer works once but having trouble getting it to replay +- [ ] menu credits +- [ ] menu exit? (not visible in web build) +- [ ] still need a player!!! (make it the cat from catdash?) + +## Publishing +- [ ] check if web build works well +- [ ] finish itch page +- [ ] upload game and possible executable +- [ ] submit to jam! # Minor -- [ ] score text is infront of the player -- [ ] warning areas are infront of the player +- [x] score text is infront of the player +- [x] warning areas are infront of the player +- [ ] make score and life only appear when game starts # Ideas - [x] Have tick/cross effect appear on a won/failed game - [ ] 1 more game - [ ] 2 more games - [ ] standardized timer display + +# Sounds +- [ ] win sound +- [ ] lose sound +- [ ] kanes zoom out sound diff --git a/game_logic.gd b/game_logic.gd index abecfa0..8ae9208 100644 --- a/game_logic.gd +++ b/game_logic.gd @@ -35,9 +35,11 @@ func _ready() -> void: GameManager.channel_win.connect(rec_channel_win) GameManager.channel_lose.connect(rec_channel_lose) if(gamemode == Gamemode.Story): + main_camera.zoom = Vector2(3.1,3.1) main_channel.start_specific_channel(platformer_game) if(GameManager.are_we_skipping_intro): + zooming_out = true main_camera.zoom = Vector2(1,1) GameManager.skip_intro.emit() @@ -47,7 +49,10 @@ func _process(delta: float) -> void: #if(Input.is_action_just_pressed("ui_down")): #main_channel.start_channel() #so this works if(zooming_out): - var zoom_amount : float = clampf(main_camera.zoom.x - delta * zoom_speed,1, 4 ) + var zoom_amount : float = clampf(main_camera.zoom.x - delta * zoom_speed,1, 3.1 ) #was 4? + main_camera.zoom = Vector2(zoom_amount,zoom_amount) + else: + var zoom_amount : float = clampf(main_camera.zoom.x + delta * zoom_speed,1, 3.1 ) #was 4? main_camera.zoom = Vector2(zoom_amount,zoom_amount) if(gameplay): game_loop(delta) @@ -55,6 +60,9 @@ func _process(delta: float) -> void: func zoom_out(): zooming_out = true +func zoom_in(): + zooming_out = false + func get_ready(): for channel in outer_channels: channel.channel_mode = channel.Mode.Static @@ -99,4 +107,12 @@ func rec_channel_lose(): lives -= 1 GameManager.send_update_data(score, lives) if(lives <= 0): - game_over.emit() + game_over_gg() + +func game_over_gg(): + zoom_in() + game_over.emit() + gameplay = false + main_channel.end_channel() + for channel in outer_channels: + channel.make_offline() diff --git a/game_manager.gd b/game_manager.gd index 9f90057..1a3fdb6 100644 --- a/game_manager.gd +++ b/game_manager.gd @@ -44,7 +44,7 @@ func prepare_for_gaming(): prepare.emit() # as soon as the player dismisses this chat the game is afoot GameManager.show_item("Broken TV Remote", broken_tv_remote) - GameManager.show_chat("[color=red]ALERT: Intruder Detected... Initiating Security Protocol...") + GameManager.show_chat("[color=red][shake]ALERT: Intruder Detected... Initiating Security Protocol...") pass func actually_gaming(): diff --git a/games/bomb defusal/bomb_defusal.gd b/games/bomb defusal/bomb_defusal.gd index 6531144..971ea86 100644 --- a/games/bomb defusal/bomb_defusal.gd +++ b/games/bomb defusal/bomb_defusal.gd @@ -40,8 +40,8 @@ func _process(delta: float) -> void: prompt.modulate = Color(1, timer/time_limit, timer/time_limit) progress1.modulate = Color(1, timer/time_limit, timer/time_limit) progress2.modulate = Color(1, timer/time_limit, timer/time_limit) - camera.zoom = Vector2(2 - timer/time_limit,2 - timer/time_limit) - camera.rotation_degrees = rot_dir * (1-timer/time_limit) * 30 + camera.zoom = Vector2(1.5 - (timer/time_limit)*0.5,1.5 - (timer/time_limit)*0.5) + camera.rotation_degrees = rot_dir * (1-timer/time_limit) * 15 #TODO Surely theres a better way if Input.is_action_just_pressed("bomb_0"): diff --git a/games/bomb defusal/bomb_defusal.tscn b/games/bomb defusal/bomb_defusal.tscn index 9e76329..f11b322 100644 --- a/games/bomb defusal/bomb_defusal.tscn +++ b/games/bomb defusal/bomb_defusal.tscn @@ -73,3 +73,27 @@ show_percentage = false [node name="Camera2D" type="Camera2D" parent="."] position = Vector2(320, 180) ignore_rotation = false + +[node name="RichTextLabel" type="RichTextLabel" parent="."] +offset_left = 429.0 +offset_top = 338.0 +offset_right = 746.0 +offset_bottom = 416.0 +rotation = -1.57079 +theme_override_font_sizes/normal_font_size = 45 +bbcode_enabled = true +text = "[shake]Type the Code" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="RichTextLabel2" type="RichTextLabel" parent="."] +offset_left = 211.0 +offset_top = 23.0 +offset_right = 528.0 +offset_bottom = 101.0 +rotation = 1.57079 +theme_override_font_sizes/normal_font_size = 45 +bbcode_enabled = true +text = "[shake]Type the Code" +horizontal_alignment = 1 +vertical_alignment = 1 diff --git a/games/crafting/crafting.gd b/games/crafting/crafting.gd index 052fa79..f93a557 100644 --- a/games/crafting/crafting.gd +++ b/games/crafting/crafting.gd @@ -8,7 +8,7 @@ signal game_lose @export_group("Node References") @export var pixel_grid : GridContainer -@export var timer_progress : ProgressBar +@export var timer_progress : TextureProgressBar var pixels : Array[Control] var current_time : float = 25 diff --git a/games/crafting/crafting.tscn b/games/crafting/crafting.tscn index 91ddf18..069b453 100644 --- a/games/crafting/crafting.tscn +++ b/games/crafting/crafting.tscn @@ -1,33 +1,51 @@ -[gd_scene load_steps=5 format=3 uid="uid://drk2fwkv816qv"] +[gd_scene load_steps=6 format=3 uid="uid://drk2fwkv816qv"] [ext_resource type="Script" uid="uid://b4ps00o1tpuft" path="res://games/crafting/crafting.gd" id="1_51qhm"] +[ext_resource type="Texture2D" uid="uid://cfyjy4tgni7oe" path="res://games/crafting/craftingbg.tres" id="2_51qhm"] -[sub_resource type="Gradient" id="Gradient_51qhm"] -colors = PackedColorArray(0.774014, 0.581042, 1, 1, 1, 0.595754, 0.986362, 1) +[sub_resource type="Gradient" id="Gradient_8e2i7"] +colors = PackedColorArray(0.392157, 0.588235, 1, 1, 1, 0, 0, 1) -[sub_resource type="FastNoiseLite" id="FastNoiseLite_8e2i7"] -noise_type = 0 -fractal_type = 3 - -[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_26tlc"] +[sub_resource type="GradientTexture2D" id="GradientTexture2D_26tlc"] +gradient = SubResource("Gradient_8e2i7") width = 360 height = 180 -color_ramp = SubResource("Gradient_51qhm") -noise = SubResource("FastNoiseLite_8e2i7") +fill_from = Vector2(1, 0) +fill_to = Vector2(1, 1) + +[sub_resource type="LabelSettings" id="LabelSettings_51qhm"] +font_size = 32 +font_color = Color(0, 0, 0, 1) [node name="Crafting" type="Node" node_paths=PackedStringArray("pixel_grid", "timer_progress")] script = ExtResource("1_51qhm") keys = Array[String](["Q", "E", "R", "T", "Y", "U", "F", "M"]) pixel_grid = NodePath("CenterContainer/VBoxContainer/GridContainer") -timer_progress = NodePath("CenterContainer/VBoxContainer/Timer") +timer_progress = NodePath("TextureProgressBar") -[node name="TextureRect" type="TextureRect" parent="."] +[node name="TextureProgressBar" type="TextureProgressBar" parent="."] anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 -texture = SubResource("NoiseTexture2D_26tlc") +max_value = 1.0 +step = 0.0 +value = 1.0 +fill_mode = 3 +nine_patch_stretch = true +texture_under = SubResource("GradientTexture2D_26tlc") +texture_progress = ExtResource("2_51qhm") + +[node name="TextureRect" type="TextureRect" parent="."] +visible = false +self_modulate = Color(0.564962, 0.564962, 0.564962, 1) +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("2_51qhm") [node name="CenterContainer" type="CenterContainer" parent="."] anchors_preset = 15 @@ -44,6 +62,14 @@ layout_mode = 2 columns = 5 [node name="Timer" type="ProgressBar" parent="CenterContainer/VBoxContainer"] +visible = false layout_mode = 2 max_value = 1.0 step = 0.0 + +[node name="Label" type="Label" parent="CenterContainer/VBoxContainer"] +layout_mode = 2 +text = "Press the Letters!" +label_settings = SubResource("LabelSettings_51qhm") +horizontal_alignment = 1 +vertical_alignment = 1 diff --git a/games/crafting/craftingbg.tres b/games/crafting/craftingbg.tres new file mode 100644 index 0000000..58e68b1 --- /dev/null +++ b/games/crafting/craftingbg.tres @@ -0,0 +1,14 @@ +[gd_resource type="NoiseTexture2D" load_steps=3 format=3 uid="uid://cfyjy4tgni7oe"] + +[sub_resource type="Gradient" id="Gradient_51qhm"] +colors = PackedColorArray(0.774014, 0.581042, 1, 1, 1, 0.595754, 0.986362, 1) + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_8e2i7"] +noise_type = 0 +fractal_type = 3 + +[resource] +width = 360 +height = 180 +color_ramp = SubResource("Gradient_51qhm") +noise = SubResource("FastNoiseLite_8e2i7") diff --git a/games/ddr/ddr.gd b/games/ddr/ddr.gd index 02af982..259d7f9 100644 --- a/games/ddr/ddr.gd +++ b/games/ddr/ddr.gd @@ -10,7 +10,7 @@ var next_note : float = 99 @export_group("Node References") -@export var combo_label : Label +@export var score_label : Label var score: int = 0 @@ -36,6 +36,7 @@ func _process(delta: float) -> void: detect_hit(2) if(Input.is_action_just_pressed("ddr_right")): detect_hit(3) + score_label.text = str(score) + "/" + str(win_amount) func spawn_note(): var ran_path = randi_range(0, paths.size()-1) diff --git a/games/ddr/ddr.tscn b/games/ddr/ddr.tscn index 90a0e65..0f46d9a 100644 --- a/games/ddr/ddr.tscn +++ b/games/ddr/ddr.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=8 format=3 uid="uid://b5lh8cnwu8xhg"] +[gd_scene load_steps=10 format=3 uid="uid://b5lh8cnwu8xhg"] [ext_resource type="PackedScene" uid="uid://dgg4fsg4xhdwa" path="res://games/ddr/note_path.tscn" id="1_wdky4"] [ext_resource type="Script" uid="uid://dv72o4x8p6raq" path="res://games/ddr/ddr.gd" id="1_wvoco"] @@ -17,9 +17,16 @@ fill = 2 fill_from = Vector2(0.542735, 1) fill_to = Vector2(0.487179, 0) -[node name="Ddr" type="Node" node_paths=PackedStringArray("paths")] +[sub_resource type="LabelSettings" id="LabelSettings_i3ush"] +font_size = 36 + +[sub_resource type="LabelSettings" id="LabelSettings_wvoco"] +font_size = 121 + +[node name="Ddr" type="Node" node_paths=PackedStringArray("paths", "score_label")] script = ExtResource("1_wvoco") paths = [NodePath("left_path"), NodePath("down_path"), NodePath("up_path"), NodePath("right_path")] +score_label = NodePath("VBoxContainer/Score") [node name="TextureRect" type="TextureRect" parent="."] anchors_preset = 15 @@ -46,3 +53,31 @@ arrow_texture = ExtResource("3_wvoco") position = Vector2(577, 40) arrow_texture = ExtResource("4_i3ush") arrow_rotation = 90 + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +offset_left = 4.0 +offset_top = 15.0 +offset_right = 341.0 +offset_bottom = 350.0 + +[node name="Label" type="Label" parent="VBoxContainer"] +layout_mode = 2 +text = "Press the Arrows!" +label_settings = SubResource("LabelSettings_i3ush") +horizontal_alignment = 1 + +[node name="RichTextLabel" type="RichTextLabel" parent="VBoxContainer"] +layout_mode = 2 +theme_override_font_sizes/normal_font_size = 81 +bbcode_enabled = true +text = "[wave amp=100][rainbow freq=0.1 speed=10]Combo" +fit_content = true +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="Score" type="Label" parent="VBoxContainer"] +layout_mode = 2 +text = "0/5" +label_settings = SubResource("LabelSettings_wvoco") +horizontal_alignment = 1 +vertical_alignment = 1 diff --git a/games/platformer/existWhenGaming.gd b/games/platformer/existWhenGaming.gd new file mode 100644 index 0000000..8083711 --- /dev/null +++ b/games/platformer/existWhenGaming.gd @@ -0,0 +1,19 @@ +extends Control + +var become_real : bool = false +var realness : float = 0 +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + GameManager.gaming.connect(appear) + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + if(become_real): + realness += delta/2 + modulate = Color(1,1,1,clampf(realness, 0,0.5)) + if(realness > 0.5): + become_real = false + +func appear(): + become_real = true diff --git a/games/platformer/existWhenGaming.gd.uid b/games/platformer/existWhenGaming.gd.uid new file mode 100644 index 0000000..0690a84 --- /dev/null +++ b/games/platformer/existWhenGaming.gd.uid @@ -0,0 +1 @@ +uid://bnprbj4be8n7j diff --git a/games/platformer/platformer.gd b/games/platformer/platformer.gd index 3adfd7e..f817321 100644 --- a/games/platformer/platformer.gd +++ b/games/platformer/platformer.gd @@ -19,6 +19,7 @@ enum GameStage{ @export var timer : Timer @export var warning_areas : Array[Node2D] @export var laser_areas : Array[Area2D] +@export var lifebar : TextureProgressBar var game_active : bool = false var stage : GameStage = GameStage.None @@ -49,6 +50,7 @@ func _process(delta: float) -> void: func update_ui(score : int, lives :int): score_label.text = str(score) + lifebar.value = lives func rec_skip_intro(): #teleport player to doorway @@ -65,6 +67,7 @@ func start_game(): func end_game(): # set stage back to none? + stage = GameStage.None game_active = false pass diff --git a/games/platformer/platformer.tscn b/games/platformer/platformer.tscn index 7111f6b..b049938 100644 --- a/games/platformer/platformer.tscn +++ b/games/platformer/platformer.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=36 format=4 uid="uid://ckbyiwy0dxbsd"] +[gd_scene load_steps=39 format=4 uid="uid://ckbyiwy0dxbsd"] [ext_resource type="Script" uid="uid://dqyddqx8xm0gw" path="res://games/platformer/player.gd" id="1_1wj3w"] [ext_resource type="Script" uid="uid://bs4keltwfbrrn" path="res://games/platformer/platformer.gd" id="1_mauky"] @@ -15,7 +15,10 @@ [ext_resource type="Texture2D" uid="uid://r71wb0u4bsxw" path="res://sprites/broken_tv_remote.png" id="11_vuxiy"] [ext_resource type="Script" uid="uid://bl7sx7fl7ye4a" path="res://games/platformer/tv_remote.gd" id="13_7gl5q"] [ext_resource type="PackedScene" uid="uid://dv4ex5tshavff" path="res://games/platformer/door.tscn" id="14_yphhh"] +[ext_resource type="Script" uid="uid://bnprbj4be8n7j" path="res://games/platformer/existWhenGaming.gd" id="16_g0mja"] +[ext_resource type="Texture2D" uid="uid://dwwqsaepieo3c" path="res://sprites/batteryEmpty.png" id="16_p7238"] [ext_resource type="Texture2D" uid="uid://bvnudttaiaab5" path="res://sprites/platformer_lab_laser.png" id="16_wtveo"] +[ext_resource type="Texture2D" uid="uid://bm6lkjpvfdqn3" path="res://sprites/batteryFull.png" id="17_g0mja"] [ext_resource type="Texture2D" uid="uid://dyfubdnvunea2" path="res://sprites/whiteSqaure.png" id="17_x1jr7"] [ext_resource type="Script" uid="uid://bvldm4nv0g3" path="res://games/platformer/flasher.gd" id="18_x1jr7"] @@ -191,7 +194,7 @@ font_color = Color(1, 1, 1, 0.439216) [sub_resource type="RectangleShape2D" id="RectangleShape2D_gyyvr"] size = Vector2(576, 64) -[node name="Platformer" type="Node" node_paths=PackedStringArray("score_label", "player", "skip_location", "timer", "warning_areas", "laser_areas")] +[node name="Platformer" type="Node" node_paths=PackedStringArray("score_label", "player", "skip_location", "timer", "warning_areas", "laser_areas", "lifebar")] script = ExtResource("1_mauky") score_label = NodePath("Score") player = NodePath("Player") @@ -199,6 +202,7 @@ skip_location = NodePath("IntroSkipLocation") timer = NodePath("Timer") warning_areas = [NodePath("Warnings/WarningNode"), NodePath("Warnings/WarningNode2"), NodePath("Warnings/WarningNode3")] laser_areas = [NodePath("Lasers/LaserSet"), NodePath("Lasers/LaserSet2"), NodePath("Lasers/LaserSet3")] +lifebar = NodePath("Lifebar") [node name="Parallax2D" type="Parallax2D" parent="."] scroll_scale = Vector2(0, 0) @@ -330,12 +334,27 @@ move_speed = 1000.0 [node name="Score" type="Label" parent="."] z_index = -1 offset_left = 208.0 -offset_top = 160.0 +offset_top = 176.0 offset_right = 432.0 -offset_bottom = 279.0 -text = "00" +offset_bottom = 295.0 +text = "0" label_settings = SubResource("LabelSettings_yphhh") horizontal_alignment = 1 +script = ExtResource("16_g0mja") + +[node name="Lifebar" type="TextureProgressBar" parent="."] +modulate = Color(1, 1, 1, 0.678431) +z_index = -1 +offset_left = 248.0 +offset_top = 144.0 +offset_right = 296.0 +offset_bottom = 160.0 +scale = Vector2(3, 3) +max_value = 3.0 +value = 3.0 +texture_under = ExtResource("16_p7238") +texture_progress = ExtResource("17_g0mja") +script = ExtResource("16_g0mja") [node name="IntroSkipLocation" type="Marker2D" parent="."] position = Vector2(-40, 256) diff --git a/sprites/battery.pdn b/sprites/battery.pdn new file mode 100644 index 0000000..a56e2c7 Binary files /dev/null and b/sprites/battery.pdn differ diff --git a/sprites/batteryEmpty.png b/sprites/batteryEmpty.png new file mode 100644 index 0000000..02ef231 Binary files /dev/null and b/sprites/batteryEmpty.png differ diff --git a/sprites/batteryEmpty.png.import b/sprites/batteryEmpty.png.import new file mode 100644 index 0000000..7db72f6 --- /dev/null +++ b/sprites/batteryEmpty.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dwwqsaepieo3c" +path="res://.godot/imported/batteryEmpty.png-f8c68902e582ef025e9bbf7513fdbae4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/batteryEmpty.png" +dest_files=["res://.godot/imported/batteryEmpty.png-f8c68902e582ef025e9bbf7513fdbae4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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/sprites/batteryFull.png b/sprites/batteryFull.png new file mode 100644 index 0000000..80bf027 Binary files /dev/null and b/sprites/batteryFull.png differ diff --git a/sprites/batteryFull.png.import b/sprites/batteryFull.png.import new file mode 100644 index 0000000..795d956 --- /dev/null +++ b/sprites/batteryFull.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bm6lkjpvfdqn3" +path="res://.godot/imported/batteryFull.png-e1026c09e19cc616ab0956d4183030f9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/batteryFull.png" +dest_files=["res://.godot/imported/batteryFull.png-e1026c09e19cc616ab0956d4183030f9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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/sprites/heart.pdn b/sprites/heart.pdn new file mode 100644 index 0000000..138e5b7 Binary files /dev/null and b/sprites/heart.pdn differ diff --git a/sprites/heart.png b/sprites/heart.png new file mode 100644 index 0000000..ca7e030 Binary files /dev/null and b/sprites/heart.png differ diff --git a/sprites/heart.png.import b/sprites/heart.png.import new file mode 100644 index 0000000..adb77a8 --- /dev/null +++ b/sprites/heart.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bimh4p8dfpm0c" +path="res://.godot/imported/heart.png-69bff64251259751f4bcc5909839a008.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/heart.png" +dest_files=["res://.godot/imported/heart.png-69bff64251259751f4bcc5909839a008.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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