cool stuff

This commit is contained in:
Tabby 2025-05-25 15:14:49 +10:00
parent a9be913adb
commit 44be9924a6
11 changed files with 202 additions and 29 deletions

View file

@ -0,0 +1,14 @@
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://bsgjssu608suc"]
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_78k07"]
load_path = "res://.godot/imported/stone_2_gray_0.png-9d16a4858afb7acd70485069983b75ce.s3tc.ctex"
[resource]
albedo_color = Color(0, 0.678431, 1, 1)
albedo_texture = SubResource("CompressedTexture2D_78k07")
emission = Color(1, 1, 1, 1)
subsurf_scatter_strength = 1.0
uv1_scale = Vector3(3, 2, 1)
uv1_triplanar_sharpness = 0.0583145
uv2_triplanar_sharpness = 0.170755
texture_filter = 0

View file

@ -0,0 +1,14 @@
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://drp1q1n60kafj"]
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_78k07"]
load_path = "res://.godot/imported/stone_2_gray_0.png-9d16a4858afb7acd70485069983b75ce.s3tc.ctex"
[resource]
albedo_color = Color(0, 0.969035, 0.99025, 1)
albedo_texture = SubResource("CompressedTexture2D_78k07")
emission = Color(1, 1, 1, 1)
subsurf_scatter_strength = 1.0
uv1_scale = Vector3(3, 2, 1)
uv1_triplanar_sharpness = 0.0583145
uv2_triplanar_sharpness = 0.170755
texture_filter = 0

View file

@ -0,0 +1,14 @@
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://cbjq7ypah8w8a"]
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_78k07"]
load_path = "res://.godot/imported/stone_2_gray_0.png-9d16a4858afb7acd70485069983b75ce.s3tc.ctex"
[resource]
albedo_color = Color(0.684786, 0.470211, 1, 1)
albedo_texture = SubResource("CompressedTexture2D_78k07")
emission = Color(1, 1, 1, 1)
subsurf_scatter_strength = 1.0
uv1_scale = Vector3(3, 2, 1)
uv1_triplanar_sharpness = 0.0583145
uv2_triplanar_sharpness = 0.170755
texture_filter = 0

View file

@ -0,0 +1,14 @@
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://uprvwy7c55in"]
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_78k07"]
load_path = "res://.godot/imported/stone_2_gray_0.png-9d16a4858afb7acd70485069983b75ce.s3tc.ctex"
[resource]
albedo_color = Color(1, 0.124572, 0.0864943, 1)
albedo_texture = SubResource("CompressedTexture2D_78k07")
emission = Color(1, 1, 1, 1)
subsurf_scatter_strength = 1.0
uv1_scale = Vector3(3, 2, 1)
uv1_triplanar_sharpness = 0.0583145
uv2_triplanar_sharpness = 0.170755
texture_filter = 0

View file

@ -1,12 +1,16 @@
[gd_scene load_steps=25 format=3 uid="uid://bojbawyoy11i4"]
[gd_scene load_steps=29 format=3 uid="uid://bojbawyoy11i4"]
[ext_resource type="Script" uid="uid://byqcpfg6cmusc" path="res://Scripts/ChronoManager.gd" id="1_5b2rd"]
[ext_resource type="Material" uid="uid://cr4ra7ijk1uec" path="res://Assets/Materials/floor.tres" id="2_0aj3l"]
[ext_resource type="PackedScene" uid="uid://d34smep2ukq7w" path="res://player.tscn" id="2_hsi55"]
[ext_resource type="PackedScene" uid="uid://bnlexkofp68gv" path="res://gui.tscn" id="3_60lfp"]
[ext_resource type="Material" uid="uid://didvwdmm46bmq" path="res://Assets/Materials/green_floor.tres" id="3_mnhg8"]
[ext_resource type="Material" uid="uid://drp1q1n60kafj" path="res://Assets/Materials/light_blue_floor.tres" id="4_w835j"]
[ext_resource type="MeshLibrary" uid="uid://cymdsgto88uty" path="res://meshLib.tres" id="5_2x8rh"]
[ext_resource type="PackedScene" uid="uid://dqvq4ybcpws87" path="res://Commands/command_block.tscn" id="5_81jk1"]
[ext_resource type="Material" uid="uid://bsgjssu608suc" path="res://Assets/Materials/blue_floor.tres" id="5_cl7gu"]
[ext_resource type="Material" uid="uid://cbjq7ypah8w8a" path="res://Assets/Materials/purple_floor.tres" id="6_v2g4n"]
[ext_resource type="Material" uid="uid://uprvwy7c55in" path="res://Assets/Materials/red_floor.tres" id="7_kt6ss"]
[ext_resource type="Texture2D" uid="uid://vc7wwv4wgabf" path="res://Commands/jump.png" id="10_pecm3"]
[ext_resource type="PackedScene" uid="uid://cq4rfdsc5kghr" path="res://Commands/command_pedestal.tscn" id="10_sghta"]
[ext_resource type="Texture2D" uid="uid://cxljjpwweuds0" path="res://Commands/phase_shift_new.png" id="11_82hoi"]
@ -66,6 +70,7 @@ size = Vector3(1, 2, 1)
script = ExtResource("1_5b2rd")
pedestal_off_mat = ExtResource("2_0aj3l")
pedestal_on_mat = ExtResource("3_mnhg8")
pedestal_activated_cols = Array[Material]([ExtResource("4_w835j"), ExtResource("4_w835j"), ExtResource("4_w835j"), ExtResource("4_w835j"), ExtResource("4_w835j"), ExtResource("5_cl7gu"), ExtResource("5_cl7gu"), ExtResource("5_cl7gu"), ExtResource("6_v2g4n"), ExtResource("7_kt6ss")])
gui = NodePath("Gui")
pedstalContainer = NodePath("Pedestals")
chime_player = NodePath("AudioStreamPlayer")
@ -206,6 +211,7 @@ mesh = SubResource("CylinderMesh_vrcmc")
[node name="MenuButton" type="Area3D" parent="."]
transform = Transform3D(4.37114e-08, 1, 8.74228e-08, 1, -4.37114e-08, 0, 3.82138e-15, 8.74228e-08, -1, 5, 2.5, -1.5)
visible = false
[node name="CollisionShape3D" type="CollisionShape3D" parent="MenuButton"]
shape = SubResource("ConcavePolygonShape3D_jchw8")
@ -238,6 +244,7 @@ shape = SubResource("BoxShape3D_jvb5m")
[node name="Sign" parent="." instance=ExtResource("14_m7cxt")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 1.5, -1.5)
visible = false
sign_text = "Back to Menu"
[node name="doorSound" type="AudioStreamPlayer" parent="."]

View file

@ -9,16 +9,16 @@ https://freesound.org/people/primeval_polypod/sounds/156507/
# new TODO
- [x] when command blocks are propped they are placed as a root node, causing them to carry between rooms
- [ ] onscreen timer
- [ ] pedestal highlight should match clock
- [x] onscreen timer
- [x] pedestal highlight should match clock
- [ ] improve menu
- [ ] swap out to developer name
- [ ] make it a 3d environment with a rotating camera
- [ ] make kill zones check every frame, rather than just on entry
- [ ] increment version number
- [ ] pause menu on ESC
- [ ] replace back to menu button
- [ ] volume settings?
- [x] pause menu on ESC
- [x] replace back to menu button
- [x] volume settings?
- [ ] website splash page for SMASH
# old todo

View file

@ -20,6 +20,7 @@ var door_timer : float = 0
@export_group("Resources")
@export var pedestal_off_mat : Material
@export var pedestal_on_mat : Material
@export var pedestal_activated_cols : Array[Material]
@export_group("Node References")
@export var gui : Control
@ -57,8 +58,8 @@ func _process(delta):
#if Input.is_action_just_pressed("debug_start"):
#start_room()
if Input.is_action_just_pressed("interact"):
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
#if Input.is_action_just_pressed("interact"):
#Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
if Input.is_action_just_pressed("reset"):
gui.show_lose_screen("Reset Pressed", 2)
@ -81,7 +82,8 @@ func _process(delta):
for i in pedestals.size():
if i+1 == current_tick:
var activated_pedestal = pedestals[i]
activated_pedestal.mesh.mesh.material = pedestal_on_mat
#activated_pedestal.mesh.mesh.material = pedestal_on_mat
activated_pedestal.mesh.mesh.material = pedestal_activated_cols[i]
if activated_pedestal.has_command:
print("broadcasting: " + activated_pedestal.placed_command.command_name)
broadcast.emit(activated_pedestal.placed_command.command_name)
@ -190,3 +192,8 @@ func _player_area_entered(area : Area3D):
if not player.collider.disabled:
fail_room()
gui.show_lose_screen("Touched a reset block", 2)
func pause():
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
gui.open_pause()
process_mode = Node.PROCESS_MODE_DISABLED

View file

@ -39,10 +39,11 @@ func _physics_process(delta):
#free the mouse for debugging
if Input.is_action_just_pressed("esc"):
if (Input.mouse_mode == Input.MOUSE_MODE_CAPTURED):
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
else:
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
#if (Input.mouse_mode == Input.MOUSE_MODE_CAPTURED):
#Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
#else:
#Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
get_parent().pause()
# interact with stuff
if Input.is_action_just_pressed("drop"):

View file

@ -8,12 +8,17 @@ extends Control
@export var level_title : Label
@export var clock_progress : TextureProgressBar
@export var clock_label : Label
@export var volume_slider : HSlider
@export var level_name : Label
@export var pause_menu : MarginContainer
var title_fade : float = 2.5
var sound = AudioServer.get_bus_index("Master")
# Called when the node enters the scene tree for the first time.
func _ready():
lose_panel.visible = false
volume_slider.value = db_to_linear(AudioServer.get_bus_volume_db(sound))
pass # Replace with function body.
@ -37,6 +42,7 @@ func hide_lose_screen():
func show_level_title(title : String):
level_title.text = title
level_name.text = title
title_fade = 2
func onTick(tick : int):
@ -45,3 +51,20 @@ func onTick(tick : int):
clock_label.text = str(10)
else:
clock_label.text = str(tick)
func open_pause():
pause_menu.show()
func close_pause():
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
pause_menu.hide()
get_parent().process_mode = Node.PROCESS_MODE_INHERIT
func goto_menu():
get_tree().change_scene_to_file(GameManager.menu_scene_path)
func _on_h_slider_value_changed(value: float) -> void:
AudioServer.set_bus_volume_db(sound, linear_to_db(value))

109
gui.tscn
View file

@ -1,4 +1,4 @@
[gd_scene load_steps=9 format=3 uid="uid://bnlexkofp68gv"]
[gd_scene load_steps=11 format=3 uid="uid://bnlexkofp68gv"]
[ext_resource type="Script" uid="uid://co8tfbsod875o" path="res://Scripts/gui.gd" id="1_7s0l7"]
[ext_resource type="Texture2D" uid="uid://buafet16thf3p" path="res://Assets/crosshair.png" id="1_mpwvh"]
@ -21,7 +21,13 @@ font_color = Color(0.686086, 0.00014728, 0.612691, 1)
outline_size = 8
outline_color = Color(0.658824, 1, 1, 1)
[node name="Gui" type="Control" node_paths=PackedStringArray("lose_panel", "lose_label", "reset_label", "start_level", "level_title", "clock_progress", "clock_label")]
[sub_resource type="LabelSettings" id="LabelSettings_u77ya"]
font_size = 61
[sub_resource type="LabelSettings" id="LabelSettings_jf511"]
font_size = 26
[node name="Gui" type="Control" node_paths=PackedStringArray("lose_panel", "lose_label", "reset_label", "start_level", "level_title", "clock_progress", "clock_label", "volume_slider", "level_name", "pause_menu")]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
@ -29,13 +35,16 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_7s0l7")
lose_panel = NodePath("MarginContainer/PanelContainer")
lose_label = NodePath("MarginContainer/PanelContainer/VBoxContainer/LoseText")
reset_label = NodePath("MarginContainer/PanelContainer/VBoxContainer/LoseTimer")
start_level = NodePath("MarginContainer/StartPanel")
level_title = NodePath("MarginContainer/StartPanel/VBoxContainer/LevelTitle")
lose_panel = NodePath("starting and game over/PanelContainer")
lose_label = NodePath("starting and game over/PanelContainer/VBoxContainer/LoseText")
reset_label = NodePath("starting and game over/PanelContainer/VBoxContainer/LoseTimer")
start_level = NodePath("starting and game over/StartPanel")
level_title = NodePath("starting and game over/StartPanel/VBoxContainer/LevelTitle")
clock_progress = NodePath("ClockProgress")
clock_label = NodePath("ClockProgress/CenterContainer/Label")
volume_slider = NodePath("PauseMenu/PanelContainer/VBoxContainer/HBoxContainer/HSlider")
level_name = NodePath("PauseMenu/PanelContainer/VBoxContainer/Level Name")
pause_menu = NodePath("PauseMenu")
[node name="Label" type="Label" parent="."]
visible = false
@ -60,7 +69,7 @@ layout_mode = 2
texture = ExtResource("1_mpwvh")
expand_mode = 1
[node name="MarginContainer" type="MarginContainer" parent="."]
[node name="starting and game over" type="MarginContainer" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
@ -72,33 +81,33 @@ theme_override_constants/margin_top = 150
theme_override_constants/margin_right = 200
theme_override_constants/margin_bottom = 150
[node name="StartPanel" type="PanelContainer" parent="MarginContainer"]
[node name="StartPanel" type="PanelContainer" parent="starting and game over"]
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/StartPanel"]
[node name="VBoxContainer" type="VBoxContainer" parent="starting and game over/StartPanel"]
layout_mode = 2
alignment = 1
[node name="LevelTitle" type="Label" parent="MarginContainer/StartPanel/VBoxContainer"]
[node name="LevelTitle" type="Label" parent="starting and game over/StartPanel/VBoxContainer"]
layout_mode = 2
text = "Level Failed"
label_settings = SubResource("LabelSettings_v7sqr")
horizontal_alignment = 1
[node name="PanelContainer" type="PanelContainer" parent="MarginContainer"]
[node name="PanelContainer" type="PanelContainer" parent="starting and game over"]
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/PanelContainer"]
[node name="VBoxContainer" type="VBoxContainer" parent="starting and game over/PanelContainer"]
layout_mode = 2
alignment = 1
[node name="LoseText" type="Label" parent="MarginContainer/PanelContainer/VBoxContainer"]
[node name="LoseText" type="Label" parent="starting and game over/PanelContainer/VBoxContainer"]
layout_mode = 2
text = "Level Failed"
label_settings = SubResource("LabelSettings_v7sqr")
horizontal_alignment = 1
[node name="LoseTimer" type="Label" parent="MarginContainer/PanelContainer/VBoxContainer"]
[node name="LoseTimer" type="Label" parent="starting and game over/PanelContainer/VBoxContainer"]
layout_mode = 2
text = "Resetting in: 3.0"
label_settings = SubResource("LabelSettings_rdkfa")
@ -127,3 +136,73 @@ offset_bottom = 63.5
layout_mode = 2
text = "0"
label_settings = SubResource("LabelSettings_cor1f")
[node name="PauseMenu" type="MarginContainer" parent="."]
process_mode = 3
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/margin_left = 170
theme_override_constants/margin_top = 100
theme_override_constants/margin_right = 170
theme_override_constants/margin_bottom = 100
[node name="PanelContainer" type="PanelContainer" parent="PauseMenu"]
layout_mode = 2
size_flags_vertical = 4
[node name="VBoxContainer" type="VBoxContainer" parent="PauseMenu/PanelContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="PauseMenu/PanelContainer/VBoxContainer"]
layout_mode = 2
text = "Paused"
label_settings = SubResource("LabelSettings_u77ya")
horizontal_alignment = 1
[node name="Level Name" type="Label" parent="PauseMenu/PanelContainer/VBoxContainer"]
layout_mode = 2
text = "Current Level:"
horizontal_alignment = 1
[node name="HBoxContainer" type="HBoxContainer" parent="PauseMenu/PanelContainer/VBoxContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="PauseMenu/PanelContainer/VBoxContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
text = "Volume"
label_settings = SubResource("LabelSettings_jf511")
horizontal_alignment = 1
[node name="HSlider" type="HSlider" parent="PauseMenu/PanelContainer/VBoxContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 1
max_value = 2.0
step = 0.0
[node name="HBoxContainer2" type="HBoxContainer" parent="PauseMenu/PanelContainer/VBoxContainer"]
layout_mode = 2
[node name="MenuButton" type="Button" parent="PauseMenu/PanelContainer/VBoxContainer/HBoxContainer2"]
modulate = Color(1, 0, 0, 1)
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 26
text = "Back to Menu"
[node name="ResumeButton" type="Button" parent="PauseMenu/PanelContainer/VBoxContainer/HBoxContainer2"]
modulate = Color(0, 1, 0, 1)
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 26
text = "Resume"
[connection signal="value_changed" from="PauseMenu/PanelContainer/VBoxContainer/HBoxContainer/HSlider" to="." method="_on_h_slider_value_changed"]
[connection signal="pressed" from="PauseMenu/PanelContainer/VBoxContainer/HBoxContainer2/MenuButton" to="." method="goto_menu"]
[connection signal="pressed" from="PauseMenu/PanelContainer/VBoxContainer/HBoxContainer2/ResumeButton" to="." method="close_pause"]

View file

@ -45,7 +45,7 @@ horizontal_alignment = 1
[node name="Credit" type="Label" parent="MarginContainer/VBoxContainer"]
layout_mode = 2
text = "by Tom Howarth"
text = "by Tabby :3"
horizontal_alignment = 1
[node name="PanelContainer" type="PanelContainer" parent="MarginContainer/VBoxContainer"]