From a9be913adbd57364580f8abd5f0346d0df99bee2 Mon Sep 17 00:00:00 2001 From: Tabby <41929769+tabby-cat-nya@users.noreply.github.com> Date: Sun, 25 May 2025 14:31:14 +1000 Subject: [PATCH] clock gui and command block fix --- README.md | 5 ++++- Scripts/ChronoManager.gd | 1 + Scripts/Player.gd | 2 +- Scripts/gui.gd | 11 +++++++++++ Sprites/clock.pdn | Bin 0 -> 5104 bytes Sprites/clockOff.png | Bin 0 -> 579 bytes Sprites/clockOff.png.import | 34 ++++++++++++++++++++++++++++++++ Sprites/clockOn.png | Bin 0 -> 597 bytes Sprites/clockOn.png.import | 34 ++++++++++++++++++++++++++++++++ gui.tscn | 38 ++++++++++++++++++++++++++++++++++-- player.tscn | 1 - 11 files changed, 121 insertions(+), 5 deletions(-) create mode 100644 Sprites/clock.pdn create mode 100644 Sprites/clockOff.png create mode 100644 Sprites/clockOff.png.import create mode 100644 Sprites/clockOn.png create mode 100644 Sprites/clockOn.png.import diff --git a/README.md b/README.md index 8486219..5091714 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,9 @@ Puzzle game made by Tom for the Playmakers August Jam 2024 https://freesound.org/people/primeval_polypod/sounds/156507/ # new TODO -- [ ] when command blocks are propped they are placed as a root node, causing them to carry between rooms +- [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 - [ ] improve menu - [ ] swap out to developer name - [ ] make it a 3d environment with a rotating camera @@ -17,6 +19,7 @@ https://freesound.org/people/primeval_polypod/sounds/156507/ - [ ] pause menu on ESC - [ ] replace back to menu button - [ ] volume settings? +- [ ] website splash page for SMASH # old todo - [x] FPS Controller diff --git a/Scripts/ChronoManager.gd b/Scripts/ChronoManager.gd index eada8f8..a6a8550 100644 --- a/Scripts/ChronoManager.gd +++ b/Scripts/ChronoManager.gd @@ -36,6 +36,7 @@ var pedestals : Array[Pedestal] # Called when the node enters the scene tree for the first time. func _ready(): + tick.connect(gui.onTick) player.area.area_entered.connect(_player_area_entered) var temp_pedestals = pedstalContainer.get_children() for temp in temp_pedestals: diff --git a/Scripts/Player.gd b/Scripts/Player.gd index 84b5cc0..3d75e93 100644 --- a/Scripts/Player.gd +++ b/Scripts/Player.gd @@ -127,7 +127,7 @@ func _input(event): func drop(): if has_object: - held_object.reparent(get_tree().get_root()) + held_object.reparent(get_parent()) held_object.freeze = false held_object.collider.disabled = false has_object = false diff --git a/Scripts/gui.gd b/Scripts/gui.gd index 363cb8b..8643acf 100644 --- a/Scripts/gui.gd +++ b/Scripts/gui.gd @@ -6,6 +6,8 @@ extends Control @export var reset_label : Label @export var start_level : PanelContainer @export var level_title : Label +@export var clock_progress : TextureProgressBar +@export var clock_label : Label var title_fade : float = 2.5 @@ -29,8 +31,17 @@ func show_lose_screen(lose_text : String, reset_timer : float): func hide_lose_screen(): lose_panel.visible = false + clock_progress.value = 0 + clock_label.text = str(0) pass func show_level_title(title : String): level_title.text = title title_fade = 2 + +func onTick(tick : int): + clock_progress.value = tick + if(tick == 11): + clock_label.text = str(10) + else: + clock_label.text = str(tick) diff --git a/Sprites/clock.pdn b/Sprites/clock.pdn new file mode 100644 index 0000000000000000000000000000000000000000..0aac5da03fc4e3f9535dfedf3d00fb72fe62104e GIT binary patch literal 5104 zcmd^BYj7LY71qYKY$e7H2?->STBvCPm19YkEK9{ovMb59Y|DDvk<(z-(rUHVYFF7^ zS&>_hGX)BrOi5{z@+J%&Xc#6F9u1UqS`P&ZZF#hXkkHnoJPPSFBu%O9Bz~y(tYljb zP-tiRE34VF_ndp~ckVr}E3c!|=qOP%rJ|fGNz#-$!$hUHO=C7`)NzWT<5GUil37X+ zZ5kvN$pI?b%}DVsBw={YrfH}%=n8=ItfI@zaAakNdt zbP*nZM&I5-^Ei4s1EIJxM5B=tSOT}>ZuGTBB~z;i5`0T%z^`}Vf@q4EeIW32zL0@H zIy?F^1D3Ea1j4?Mb4SR(#e#-}E~bO8L#H!D@K~b@*JX(ISjHaGWstZf(dN^e&;W0X zHn({~y7>oh?(|ZGOP-53<2@0i?+{@>jSf5#9oXIi8?ci-UGcV_1l!h5&L_s#LnFyQgH58=rBhb2TRolxcl81WX&<> zFr-G1um~JT%!9$!e8`=$5hCCTB1pOjCy0YLaNOk#_+0|)&$7+HW}U3l*X0lUwe`V_ z&+K&JJDibd)S!)72BK{HcAgBkX44F7=`r{+rU5tG+}6gS5c2MHkf8blCY)<03>j@l zvyN`@XNkrROSq@QDrD_R+Gp{1h+^0$W!P@sEfVPg4duU6uHK7X!`aaFTp3T30y12Uvl(^DIk6B-9SXx)zF~ z1SV34Hr++CX$rv!H`H(4T2Kv00>ja@>ZBOq1(xZXcZaD?55Ld%LSJJe*$`~hX zrMFnO)&4)hw{6`9hgYad5ZPRKRmfKgRT&~>ApUfpfsQgo3Me#7aX}!n;7DyR1J154 z5{S$owXBFA$amIK1pldV&c_0%3UWbJj)-gvzA(5TO!8c>o9yQWWv`pz;6tENj;eb7 z)Bpor94$iOt*C$##n8L&%L>KnJqkrR2;{^DkdpT=ih!4%MMZpZ92JtNBtd1%2B1_i zOsPVGOV(05m{^@e(#Ea&ZOX++36u?WzDfMh_+EFd~ZVb}8)Z~^%AEby`gz-9nmejza0*cSy} zI$Nu%%Mglc1(20ME=Q#D3Pcv%7j|Bt<{RYycwc~}%Zr;j!AMCmCAW6@%18-(iV`G- z63fN35F;bhQh8E4f0r!D3*@V$GC$5=Cf)s<*~fum)QUxfy$HHgeBdQdoDG)isD$V7aoRs8#)k^>UKQZLYUhQ2}W1 zU{D8gv3wOcC?;WE|`O`%X1Lrg>y?#cR<4YW31U#ksmGo=vf1# z`!64ud4#U4c_1&HqdQ+!zTUWm$(x^Bk5w0~zvH)6 M|oXhQd_{XibpImxy^w4)V zY;PlCwYRn=ZhLR-L)Ewa>6?4cTi$v0kIqt^y*kXs*96a~|K**YX;YR?EM9q2dO{oS zh`)W;H&2|p{oY#>8+Yyf^|b5xbGtUI|7m#CbLP>r6H7)jO;?O$b5DGnJFskW_vAGP zrdOpl^zg_VLvOq`Gye1lcak5TJlIR`o<40WIX}hcRt-N?6}vAu{i9ReW8Eii zIO2R|c+C1i)xetI)T1Bnf9YE8S3{}0?|S6MYr4$CPd&5h>@SY4^jE*t(Yhx1xLWeQ z;yqOJyK!=5_1zO!ZhijTk|RSmWyW&%yzq@TBeDJOn|ohmUOK0+RDAn}3w)#aO_6Wz z#;bO!D@(JhbGbeDTlSY4E_?0?qpITzOhbk~Wk+s7Sa2kx}pKJ?!1ktc@_z4`7bJ%0KjUFSGhaV&=LFdv7@F4J|KS7Y5AS}QtBRd^ zP1K9M*Oi}r@8HRU*XQc?OxB!qJbuRn>ALlp@yOASuF}}6H2ojEY_nHAIJj=+takFz zqa#oKFqK0MWasp?w`6OcT9q;S#>OVDxbCli;nv;%%;`Nh_R^ZEGu`9e2Zuje_0A0Z zW&GaIy2a1rJYQRW%b#=WZOd;S&Aq#Ok44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h2Ka=y0%->a2O#Nx=kX07#at5P7ySP}!}U|VK(!2<1s;*b3=DjSL74G) z{)!Z!phSslL`iUdT1k0gQ7S_~VrE{6o}X)of~lUNp3(0;%-eu!wxvdRrg?g5F>nAm ztPE0&tPG4mmKP99L)jn~YcMi{#hHL?Lq;YB0U#X(#F_0ZVDT&<8w3)77^ELYqgl!T z^z#IE1{RSYP${yRZ&~9U)&hTNpVtPuHg4ke+7W-9&pnt{TIn|BVsEOgYFpuQ&4x1L z{JTk44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`032l#}z)&m*!_5Xq7|Nr3(^_v*}GkDcAOaTdGayt6~DbA80zu^B+z!2lBSEK+1B}!Z)N`mv#O3D+9QW*jgGxJLH{9Hp6O!W-)jDGK7 z-Ud{&Ej7Y3&C^qhfdj~4WsqWIWncudynt95$_DvFgOM35&IDu|GBPm;0O=?o&TMA^ zi)R7ZAdmpWApI~J%~A$nSWIANU;(NyFfuk^TmUf@q=R(<#H1-eHV7~Q&0zwo46?KU zvY@&Q4GciCFRy;HICU$h3dlU+>Eaj?;r@2=LB19R9+$%Fr9c1cmj$g_xQzYOi=`ju z1|04_GbPA#o}kEr)00_WTzbHHiao|oC;ow?OyisV5-Iz$PiQW1KH|OUn80?<84!lhUi`;keeiprPFM4_~u4$bX)$elF{r5}E+0Q>iNe literal 0 HcmV?d00001 diff --git a/Sprites/clockOn.png.import b/Sprites/clockOn.png.import new file mode 100644 index 0000000..ec163bc --- /dev/null +++ b/Sprites/clockOn.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bxqb0vw8nouea" +path="res://.godot/imported/clockOn.png-fc2c530b0fcad697dfb0078c2b7e77a6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Sprites/clockOn.png" +dest_files=["res://.godot/imported/clockOn.png-fc2c530b0fcad697dfb0078c2b7e77a6.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/gui.tscn b/gui.tscn index cc24645..5767cfb 100644 --- a/gui.tscn +++ b/gui.tscn @@ -1,7 +1,9 @@ -[gd_scene load_steps=6 format=3 uid="uid://bnlexkofp68gv"] +[gd_scene load_steps=9 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"] +[ext_resource type="Texture2D" uid="uid://dbjlesgbl3b5e" path="res://Sprites/clockOff.png" id="3_cor1f"] +[ext_resource type="Texture2D" uid="uid://bxqb0vw8nouea" path="res://Sprites/clockOn.png" id="4_u77ya"] [sub_resource type="LabelSettings" id="LabelSettings_lrnc3"] font_color = Color(1, 0, 0, 1) @@ -13,7 +15,13 @@ font_size = 60 font_size = 30 font_color = Color(0.662452, 0.662452, 0.662452, 1) -[node name="Gui" type="Control" node_paths=PackedStringArray("lose_panel", "lose_label", "reset_label", "start_level", "level_title")] +[sub_resource type="LabelSettings" id="LabelSettings_cor1f"] +font_size = 31 +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")] layout_mode = 3 anchors_preset = 15 anchor_right = 1.0 @@ -26,6 +34,8 @@ 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") +clock_progress = NodePath("ClockProgress") +clock_label = NodePath("ClockProgress/CenterContainer/Label") [node name="Label" type="Label" parent="."] visible = false @@ -93,3 +103,27 @@ layout_mode = 2 text = "Resetting in: 3.0" label_settings = SubResource("LabelSettings_rdkfa") horizontal_alignment = 1 + +[node name="ClockProgress" type="TextureProgressBar" parent="."] +layout_mode = 2 +offset_left = 10.0 +offset_top = 10.0 +offset_right = 74.0 +offset_bottom = 74.0 +scale = Vector2(2, 2) +max_value = 10.0 +fill_mode = 4 +texture_under = ExtResource("3_cor1f") +texture_progress = ExtResource("4_u77ya") + +[node name="CenterContainer" type="CenterContainer" parent="ClockProgress"] +layout_mode = 1 +offset_left = -0.5 +offset_top = -0.5 +offset_right = 63.5 +offset_bottom = 63.5 + +[node name="Label" type="Label" parent="ClockProgress/CenterContainer"] +layout_mode = 2 +text = "0" +label_settings = SubResource("LabelSettings_cor1f") diff --git a/player.tscn b/player.tscn index bf8344f..cbe2284 100644 --- a/player.tscn +++ b/player.tscn @@ -14,7 +14,6 @@ radius = 0.47 height = 1.9 [node name="Player" type="CharacterBody3D" node_paths=PackedStringArray("camera", "raycast", "hand", "collider", "area", "interact_sound", "dash_node")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.83982, 0) script = ExtResource("1_tc5d2") camera = NodePath("Camera3D") raycast = NodePath("Camera3D/RayCast3D")