feat(poc): implement Sprint 1 proof of concept
- project.godot with autoload configuration - Reception room with placeholder visuals - Draggable Character with DragDropComponent - Interactive flower object with bounce animation - GameState, SaveManager, AudioManager, InputManager autoloads - HUD with back button and music toggle Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
46
scenes/characters/Character.tscn
Normal file
46
scenes/characters/Character.tscn
Normal file
@@ -0,0 +1,46 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://cozypaw_char"]
|
||||
|
||||
[ext_resource type="Script" path="res://scripts/characters/character.gd" id="1_char"]
|
||||
[ext_resource type="Script" path="res://scripts/systems/drag_drop_component.gd" id="2_drag"]
|
||||
|
||||
[node name="Character" type="Node2D"]
|
||||
script = ExtResource("1_char")
|
||||
character_id = "bunny_01"
|
||||
display_name = "Bunny"
|
||||
|
||||
[node name="Visual" type="ColorRect" parent="."]
|
||||
color = Color(0.95, 0.85, 0.9, 1)
|
||||
size = Vector2(64, 80)
|
||||
position = Vector2(-32, -80)
|
||||
|
||||
[node name="Eyes" type="Node2D" parent="Visual"]
|
||||
|
||||
[node name="EyeLeft" type="ColorRect" parent="Visual/Eyes"]
|
||||
color = Color(0.1, 0.1, 0.1, 1)
|
||||
size = Vector2(8, 8)
|
||||
position = Vector2(14, 20)
|
||||
|
||||
[node name="EyeRight" type="ColorRect" parent="Visual/Eyes"]
|
||||
color = Color(0.1, 0.1, 0.1, 1)
|
||||
size = Vector2(8, 8)
|
||||
position = Vector2(42, 20)
|
||||
|
||||
[node name="Ears" type="Node2D" parent="."]
|
||||
|
||||
[node name="EarLeft" type="ColorRect" parent="Ears"]
|
||||
color = Color(0.95, 0.85, 0.9, 1)
|
||||
size = Vector2(18, 36)
|
||||
position = Vector2(-22, -114)
|
||||
|
||||
[node name="EarRight" type="ColorRect" parent="Ears"]
|
||||
color = Color(0.95, 0.85, 0.9, 1)
|
||||
size = Vector2(18, 36)
|
||||
position = Vector2(4, -114)
|
||||
|
||||
[node name="DragDropComponent" type="Node" parent="."]
|
||||
script = ExtResource("2_drag")
|
||||
|
||||
[node name="CollisionArea" type="Area2D" parent="."]
|
||||
input_pickable = true
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape2D" parent="CollisionArea"]
|
||||
23
scenes/main/Main.tscn
Normal file
23
scenes/main/Main.tscn
Normal file
@@ -0,0 +1,23 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://cozypaw_main"]
|
||||
|
||||
[ext_resource type="PackedScene" path="res://scenes/rooms/floor0/Reception.tscn" id="1_reception"]
|
||||
[ext_resource type="PackedScene" path="res://scenes/characters/Character.tscn" id="2_char"]
|
||||
[ext_resource type="PackedScene" path="res://scenes/ui/HUD.tscn" id="3_hud"]
|
||||
|
||||
[node name="Main" type="Node2D"]
|
||||
|
||||
[node name="Hospital" type="Node2D" parent="."]
|
||||
|
||||
[node name="Floor0" type="Node2D" parent="Hospital"]
|
||||
|
||||
[node name="Reception" parent="Hospital/Floor0" instance=ExtResource("1_reception")]
|
||||
position = Vector2(0, 0)
|
||||
|
||||
[node name="Characters" type="Node2D" parent="."]
|
||||
|
||||
[node name="Bunny1" parent="Characters" instance=ExtResource("2_char")]
|
||||
position = Vector2(300, 400)
|
||||
|
||||
[node name="UI" type="CanvasLayer" parent="."]
|
||||
|
||||
[node name="HUD" parent="UI" instance=ExtResource("3_hud")]
|
||||
28
scenes/objects/InteractiveObject.tscn
Normal file
28
scenes/objects/InteractiveObject.tscn
Normal file
@@ -0,0 +1,28 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://cozypaw_iobj"]
|
||||
|
||||
[ext_resource type="Script" path="res://scripts/objects/interactive_object.gd" id="1_iobj"]
|
||||
[ext_resource type="Script" path="res://scripts/systems/drag_drop_component.gd" id="2_drag"]
|
||||
|
||||
[node name="InteractiveObject" type="Node2D"]
|
||||
script = ExtResource("1_iobj")
|
||||
object_id = "flower_01"
|
||||
|
||||
[node name="Visual" type="Node2D" parent="."]
|
||||
|
||||
[node name="Stem" type="ColorRect" parent="Visual"]
|
||||
color = Color(0.2, 0.7, 0.2, 1)
|
||||
size = Vector2(8, 40)
|
||||
position = Vector2(-4, -40)
|
||||
|
||||
[node name="Bloom" type="ColorRect" parent="Visual"]
|
||||
color = Color(1.0, 0.4, 0.6, 1)
|
||||
size = Vector2(32, 32)
|
||||
position = Vector2(-16, -72)
|
||||
|
||||
[node name="DragDropComponent" type="Node" parent="."]
|
||||
script = ExtResource("2_drag")
|
||||
|
||||
[node name="CollisionArea" type="Area2D" parent="."]
|
||||
input_pickable = true
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape2D" parent="CollisionArea"]
|
||||
41
scenes/rooms/floor0/Reception.tscn
Normal file
41
scenes/rooms/floor0/Reception.tscn
Normal file
@@ -0,0 +1,41 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://cozypaw_reception"]
|
||||
|
||||
[ext_resource type="PackedScene" path="res://scenes/objects/InteractiveObject.tscn" id="1_iobj"]
|
||||
|
||||
[node name="Reception" type="Node2D"]
|
||||
|
||||
[node name="Background" type="ColorRect" parent="."]
|
||||
color = Color(0.78, 0.94, 0.80, 1)
|
||||
size = Vector2(1280, 720)
|
||||
position = Vector2(0, 0)
|
||||
|
||||
[node name="Counter" type="ColorRect" parent="."]
|
||||
color = Color(0.55, 0.35, 0.18, 1)
|
||||
size = Vector2(300, 80)
|
||||
position = Vector2(490, 610)
|
||||
|
||||
[node name="CounterTop" type="ColorRect" parent="."]
|
||||
color = Color(0.70, 0.50, 0.28, 1)
|
||||
size = Vector2(300, 12)
|
||||
position = Vector2(490, 598)
|
||||
|
||||
[node name="Floor" type="ColorRect" parent="."]
|
||||
color = Color(0.88, 0.80, 0.68, 1)
|
||||
size = Vector2(1280, 100)
|
||||
position = Vector2(0, 620)
|
||||
|
||||
[node name="WallLeft" type="ColorRect" parent="."]
|
||||
color = Color(0.92, 0.88, 0.82, 1)
|
||||
size = Vector2(40, 620)
|
||||
position = Vector2(0, 0)
|
||||
|
||||
[node name="WallRight" type="ColorRect" parent="."]
|
||||
color = Color(0.92, 0.88, 0.82, 1)
|
||||
size = Vector2(40, 620)
|
||||
position = Vector2(1240, 0)
|
||||
|
||||
[node name="CharacterSpawn" type="Marker2D" parent="."]
|
||||
position = Vector2(300, 520)
|
||||
|
||||
[node name="Flower" parent="." instance=ExtResource("1_iobj")]
|
||||
position = Vector2(200, 560)
|
||||
35
scenes/ui/HUD.tscn
Normal file
35
scenes/ui/HUD.tscn
Normal file
@@ -0,0 +1,35 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://cozypaw_hud"]
|
||||
|
||||
[ext_resource type="Script" path="res://scripts/systems/hud.gd" id="1_hud"]
|
||||
|
||||
[node name="HUD" type="CanvasLayer"]
|
||||
script = ExtResource("1_hud")
|
||||
|
||||
[node name="BackButton" type="Button" parent="."]
|
||||
anchors_preset = 0
|
||||
anchor_left = 0.0
|
||||
anchor_top = 0.0
|
||||
anchor_right = 0.0
|
||||
anchor_bottom = 0.0
|
||||
offset_left = 16.0
|
||||
offset_top = 16.0
|
||||
offset_right = 80.0
|
||||
offset_bottom = 80.0
|
||||
text = "←"
|
||||
flat = false
|
||||
|
||||
[node name="MusicToggle" type="Button" parent="."]
|
||||
anchors_preset = 1
|
||||
anchor_left = 1.0
|
||||
anchor_top = 0.0
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 0.0
|
||||
offset_left = -80.0
|
||||
offset_top = 16.0
|
||||
offset_right = -16.0
|
||||
offset_bottom = 80.0
|
||||
text = "♪"
|
||||
flat = false
|
||||
|
||||
[connection signal="pressed" from="BackButton" to="." method="_on_back_button_pressed"]
|
||||
[connection signal="pressed" from="MusicToggle" to="." method="_on_music_toggle_pressed"]
|
||||
Reference in New Issue
Block a user