This commit is contained in:
Tabby 2025-05-17 14:21:38 +10:00
parent c9286e8c12
commit ecd9ebd486
22 changed files with 308 additions and 32 deletions

26
bugs.md
View file

@ -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

View file

@ -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()

View file

@ -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():

View file

@ -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"):

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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")

View file

@ -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)

View file

@ -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

View file

@ -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

View file

@ -0,0 +1 @@
uid://bnprbj4be8n7j

View file

@ -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

View file

@ -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)

BIN
sprites/battery.pdn Normal file

Binary file not shown.

BIN
sprites/batteryEmpty.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

View file

@ -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

BIN
sprites/batteryFull.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 458 B

View file

@ -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

BIN
sprites/heart.pdn Normal file

Binary file not shown.

BIN
sprites/heart.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 454 B

34
sprites/heart.png.import Normal file
View file

@ -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