]> Untitled Git - mushroom-game.git/commitdiff
Squashed commit of the following: main
authorClifton Palmer <clifton.james.palmer@protonmail.com>
Sat, 14 Dec 2024 10:10:15 +0000 (12:10 +0200)
committerClifton Palmer <clifton.james.palmer@protonmail.com>
Sat, 14 Dec 2024 10:10:15 +0000 (12:10 +0200)
    * Added victory screen
    * Handling victory and quit conditions with signals now
    * Added mushroom tracking
    * Changed camera behavior
    * Changed display size
    * Player and mushroom glow

12 files changed:
mushroom/model/golden-chanterelle.blend
mushroom/model/golden-chanterelle.glb
mushroom/mushroom.gd
player/model/player.blend
player/model/player.glb
player/player.gd
player/player.tscn
project.godot
victory-screen.tscn [new file with mode: 0644]
victory_screen.gd [new file with mode: 0644]
world.gd
world.tscn

index a5e3436eb7e0c56d093dc091df72a85ccab8364b..e866556c9f9803ac131e13cea001bf7e33b10a37 100644 (file)
Binary files a/mushroom/model/golden-chanterelle.blend and b/mushroom/model/golden-chanterelle.blend differ
index a3a0ba89ea93f144ceaa7f71726e5817c4709e51..d05f2a7844af984ad875c2230f2c9cca245d1f33 100644 (file)
Binary files a/mushroom/model/golden-chanterelle.glb and b/mushroom/model/golden-chanterelle.glb differ
index a0100a23dd3e0d378f3de5595b2912b4457496ba..f62fb8c7358465589646ffd50495725368ca7166 100644 (file)
@@ -1,6 +1,8 @@
 extends Node3D
 
 extends Node3D
 
+
 signal picked
 signal picked
+var is_picked := false
 
 
 # Called when the node enters the scene tree for the first time.
 
 
 # Called when the node enters the scene tree for the first time.
@@ -15,7 +17,10 @@ func _process(_delta: float) -> void:
 
 func _on_area_3d_area_entered(area: Area3D) -> void:
        if(area.is_in_group("player")):
 
 func _on_area_3d_area_entered(area: Area3D) -> void:
        if(area.is_in_group("player")):
-               print("Player picked a mushroom!")
+               # make this instance vanish
                hide()
                hide()
-               picked.emit()
                $Area3D/CollisionShape3D.set_deferred("disabled", true)
                $Area3D/CollisionShape3D.set_deferred("disabled", true)
+               is_picked = true
+               
+               # emit "picked" signal
+               picked.emit()
index d81544fe0aa3fa6fef36f3b60f8c5d4b112e0d3b..9711721b05d66a6add4947c91a0a77021546e10d 100644 (file)
Binary files a/player/model/player.blend and b/player/model/player.blend differ
index f497a6a5df9b6d5c9083552a60add941f2a2f60e..a9d54bcd005276e99aac8f4ac6ccc32440579b54 100644 (file)
Binary files a/player/model/player.glb and b/player/model/player.glb differ
index fdaf988ece0afd1a1e223e68a5692f8218896488..21a930b7e1ca56db892f641df606189877e98334 100644 (file)
@@ -2,14 +2,14 @@ extends CharacterBody3D
 
 
 const SPEED = 5.0
 
 
 const SPEED = 5.0
-const CAMERA_ROTATE_RATE = PI / 12
+const CAMERA_ROTATE_RATE = PI / 6
 
 
 # rotate camera
 func _unhandled_input(event: InputEvent) -> void:
 
 
 # rotate camera
 func _unhandled_input(event: InputEvent) -> void:
-       if event.is_action("camera-rotate-left"):
+       if event.is_action_pressed("camera-rotate-left"):
                $cameraPivot.rotate_y(CAMERA_ROTATE_RATE)
                $cameraPivot.rotate_y(CAMERA_ROTATE_RATE)
-       elif event.is_action("camera-rotate-right"):
+       elif event.is_action_pressed("camera-rotate-right"):
                $cameraPivot.rotate_y(-CAMERA_ROTATE_RATE)
 
 
                $cameraPivot.rotate_y(-CAMERA_ROTATE_RATE)
 
 
index a10014c7f2ba38b76e24f1bcb6e37fba77fa78e1..4483e44adeca518257594173f9d20e0c238d65a8 100644 (file)
@@ -19,8 +19,8 @@ shape = SubResource("CapsuleShape3D_53x73")
 [node name="cameraPivot" type="Node3D" parent="."]
 
 [node name="SpringArm3D" type="SpringArm3D" parent="cameraPivot"]
 [node name="cameraPivot" type="Node3D" parent="."]
 
 [node name="SpringArm3D" type="SpringArm3D" parent="cameraPivot"]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0)
-spring_length = 3.0
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4, 0)
+spring_length = 10.0
 
 [node name="Camera3D" type="Camera3D" parent="cameraPivot/SpringArm3D"]
 
 
 [node name="Camera3D" type="Camera3D" parent="cameraPivot/SpringArm3D"]
 
index 9624c605a8782536f876f6f56b5abe762abc7e7a..f0cb58825c851a5588fde46d34e16ef1ec8708d6 100644 (file)
@@ -10,11 +10,16 @@ config_version=5
 
 [application]
 
 
 [application]
 
-config/name="mushroom-hunting"
+config/name="Mushroom Hunting"
 run/main_scene="res://world.tscn"
 config/features=PackedStringArray("4.3", "Forward Plus")
 config/icon="res://icon.svg"
 
 run/main_scene="res://world.tscn"
 config/features=PackedStringArray("4.3", "Forward Plus")
 config/icon="res://icon.svg"
 
+[display]
+
+window/size/viewport_width=2880
+window/size/viewport_height=1620
+
 [filesystem]
 
 import/blender/enabled=false
 [filesystem]
 
 import/blender/enabled=false
@@ -28,22 +33,22 @@ player=""
 
 player-forward={
 "deadzone": 0.5,
 
 player-forward={
 "deadzone": 0.5,
-"events": [null, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
+"events": [null, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null)
 ]
 }
 player-backward={
 "deadzone": 0.5,
 ]
 }
 player-backward={
 "deadzone": 0.5,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null)
 ]
 }
 player-turn-left={
 "deadzone": 0.5,
 ]
 }
 player-turn-left={
 "deadzone": 0.5,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
 ]
 }
 player-turn-right={
 "deadzone": 0.5,
 ]
 }
 player-turn-right={
 "deadzone": 0.5,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null)
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":70,"key_label":0,"unicode":102,"location":0,"echo":false,"script":null)
 ]
 }
 quit-game={
 ]
 }
 quit-game={
diff --git a/victory-screen.tscn b/victory-screen.tscn
new file mode 100644 (file)
index 0000000..6003247
--- /dev/null
@@ -0,0 +1,31 @@
+[gd_scene load_steps=3 format=3 uid="uid://4137e77qcp8n"]
+
+[ext_resource type="Script" path="res://victory_screen.gd" id="1_fj101"]
+
+[sub_resource type="LabelSettings" id="LabelSettings_to6tr"]
+font_size = 72
+font_color = Color(0.885467, 0.881632, 0, 1)
+outline_size = 20
+outline_color = Color(0.133196, 0.133196, 0.133196, 1)
+
+[node name="victory-screen" type="Node2D"]
+script = ExtResource("1_fj101")
+
+[node name="CenterContainer" type="CenterContainer" parent="."]
+offset_right = 2880.0
+offset_bottom = 1624.0
+
+[node name="VBoxContainer" type="VBoxContainer" parent="CenterContainer"]
+layout_mode = 2
+
+[node name="Label" type="Label" parent="CenterContainer/VBoxContainer"]
+layout_mode = 2
+text = "big win"
+label_settings = SubResource("LabelSettings_to6tr")
+horizontal_alignment = 1
+
+[node name="Button" type="Button" parent="CenterContainer/VBoxContainer"]
+layout_mode = 2
+text = "restart the fun"
+
+[connection signal="pressed" from="CenterContainer/VBoxContainer/Button" to="." method="_on_button_pressed"]
diff --git a/victory_screen.gd b/victory_screen.gd
new file mode 100644 (file)
index 0000000..ceb887b
--- /dev/null
@@ -0,0 +1,5 @@
+extends Node2D
+
+
+func _on_button_pressed() -> void:
+       get_tree().change_scene_to_file("res://world.tscn")
index 07e281ddcb72e8d47bcd463e90d5dfb1fa673e93..91b1bc68515c687c14b011e3357504c144c8edfb 100644 (file)
--- a/world.gd
+++ b/world.gd
@@ -1,12 +1,7 @@
 extends Node3D
 
 extends Node3D
 
-func quit_game() -> void:
-       get_tree().quit()
-       
-# Quit the game
-func _unhandled_input(event: InputEvent) -> void:
-       if event.is_action_pressed("quit-game"):
-               quit_game()
+signal victory
+signal quit
 
 
 # Called when the node enters the scene tree for the first time.
 
 
 # Called when the node enters the scene tree for the first time.
@@ -19,6 +14,28 @@ func _process(_delta: float) -> void:
        pass
 
 
        pass
 
 
+# Quit the game on user action
+func _unhandled_input(event: InputEvent) -> void:
+       if event.is_action_pressed("quit-game"):
+               quit.emit()
+
+
+# if all mushrooms have been picked,
+# then game is over
 func _on_mushroom_picked() -> void:
 func _on_mushroom_picked() -> void:
-       print("Player picked all mushrooms!")
-       #quit_game()
+       print("Player picked a mushroom!")
+       
+       for mushroom in $mushrooms.get_children():
+               if mushroom.is_picked == false:
+                       return
+                       
+       print("Player picked all mushrooms, game over")
+       victory.emit()
+
+
+func _on_victory() -> void:
+       get_tree().change_scene_to_file("res://victory-screen.tscn")
+
+
+func _on_quit() -> void:
+       get_tree().quit()
index d6d93968a409ec6be59fbf9fbec14c3c81ec04ec..ff2d3ddef6dbabd66ebee6eee6fa641beddd7506 100644 (file)
@@ -32,20 +32,36 @@ environment = SubResource("Environment_dvway")
 
 [node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
 transform = Transform3D(-0.866023, -0.433016, 0.250001, 0, 0.499998, 0.866027, -0.500003, 0.749999, -0.43301, 0, 0, 0)
 
 [node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
 transform = Transform3D(-0.866023, -0.433016, 0.250001, 0, 0.499998, 0.866027, -0.500003, 0.749999, -0.43301, 0, 0, 0)
+light_energy = 0.335
 shadow_enabled = true
 
 shadow_enabled = true
 
-[node name="ground" type="MeshInstance3D" parent="."]
-mesh = SubResource("PlaneMesh_p1m44")
-
-[node name="StaticBody3D" type="StaticBody3D" parent="ground"]
-
-[node name="CollisionShape3D" type="CollisionShape3D" parent="ground/StaticBody3D"]
-shape = SubResource("ConcavePolygonShape3D_tjuji")
-
 [node name="player" parent="." instance=ExtResource("2_i1nnw")]
 transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 7.20149)
 
 [node name="player" parent="." instance=ExtResource("2_i1nnw")]
 transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 7.20149)
 
-[node name="mushroom" parent="." instance=ExtResource("3_cq28e")]
+[node name="mushrooms" type="Node" parent="."]
+
+[node name="mushroom" parent="mushrooms" instance=ExtResource("3_cq28e")]
 transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.09446, -4.76837e-07, -4.56699)
 
 transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.09446, -4.76837e-07, -4.56699)
 
-[connection signal="picked" from="mushroom" to="." method="_on_mushroom_picked"]
+[node name="mushroom2" parent="mushrooms" instance=ExtResource("3_cq28e")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.26121, 0, 4.04727)
+
+[node name="mushroom3" parent="mushrooms" instance=ExtResource("3_cq28e")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.74696, 0, -5.19882)
+
+[node name="ground" type="Node3D" parent="."]
+
+[node name="test" type="MeshInstance3D" parent="ground"]
+mesh = SubResource("PlaneMesh_p1m44")
+skeleton = NodePath("../..")
+
+[node name="StaticBody3D" type="StaticBody3D" parent="ground/test"]
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="ground/test/StaticBody3D"]
+shape = SubResource("ConcavePolygonShape3D_tjuji")
+
+[connection signal="quit" from="." to="." method="_on_quit"]
+[connection signal="victory" from="." to="." method="_on_victory"]
+[connection signal="picked" from="mushrooms/mushroom" to="." method="_on_mushroom_picked"]
+[connection signal="picked" from="mushrooms/mushroom2" to="." method="_on_mushroom_picked"]
+[connection signal="picked" from="mushrooms/mushroom3" to="." method="_on_mushroom_picked"]