Commit Graph

31 Commits

Author SHA1 Message Date
Steven Wroblewski
9b91e78c20 feat(patientroom): add Patient Room with two beds, TV, and bedside table 2026-04-17 14:32:07 +02:00
Steven Wroblewski
8773ecfa6a feat(lab): add Lab room with bench, sink, and interactive lab equipment 2026-04-17 14:30:31 +02:00
Steven Wroblewski
c1f742ae61 feat(pharmacy): add Pharmacy room with double medicine shelf and positive medicine objects 2026-04-17 14:28:48 +02:00
Steven Wroblewski
e14303da9b feat(xray): add XRay Room scene with exam table and XRayMachine 2026-04-17 14:26:14 +02:00
Steven Wroblewski
5f33e16165 feat(xray): add XRayMachine component with plate slide-in animation 2026-04-17 14:25:04 +02:00
Steven Wroblewski
353efc100f docs: mark Sprint 5-7 as complete 2026-04-17 14:14:39 +02:00
Steven Wroblewski
c4e33aef62 fix(emergency): explicitly set ambulance trigger_floor and trigger_room to prevent silent failure on room reorder 2026-04-17 14:01:56 +02:00
Steven Wroblewski
c0c86b0998 feat(floor0): wire up all four ground-floor rooms with horizontal navigation arrows 2026-04-17 13:59:01 +02:00
Steven Wroblewski
cc44519d62 feat(emergency): add Emergency Room scene with ambulance bay, medical table, and interactive objects 2026-04-17 13:57:30 +02:00
Steven Wroblewski
045aa8c3b6 feat(ambulance): add Ambulance component with drive-in/out animation triggered by room navigation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 13:56:11 +02:00
Steven Wroblewski
b1ea85a449 feat(restaurant): add Restaurant room with three tables and interactive food objects 2026-04-17 13:54:35 +02:00
Steven Wroblewski
35ab8ffeb3 feat(giftshop): add Gift Shop room with shelf, counter, and interactive gift objects 2026-04-17 13:53:40 +02:00
Steven Wroblewski
a48539d410 feat(reception): complete Reception with waiting benches, bell, and potted plant 2026-04-17 13:52:42 +02:00
Steven Wroblewski
130317b516 feat(navigation): add NavigationArrow component for within-floor room navigation 2026-04-17 13:51:32 +02:00
Steven Wroblewski
903df578e2 feat(navigation): extend RoomNavigator for horizontal room-within-floor navigation 2026-04-17 13:50:00 +02:00
Steven Wroblewski
2bb73c905c fix(ui): sync settings sliders to saved values when menu opens
show_menu() now calls set_value_no_signal() to reflect the current
GameState volume values without re-triggering value_changed handlers.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 13:28:57 +02:00
Steven Wroblewski
6bc199f6c1 fix(core): correct camera Y offset in RoomNavigator floor navigation
Floor N spans from N*-720 to (N-1)*-720. The camera must center at the
floor midpoint, so target_y = floor_index * -720 + 360 (half floor height).
Previous formula placed the camera at the floor boundary, showing content
split between two floors.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 13:26:03 +02:00
Steven Wroblewski
f4611e2443 fix(core): serialize character positions as [x,y] arrays for JSON compatibility
Vector2 is not a JSON-native type — JSON.stringify converts it to a string,
which cannot be assigned back to a Vector2 return type on load. Positions are
now saved as [x, y] float arrays and reconstructed as Vector2 in apply_save_data.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 13:22:56 +02:00
Steven Wroblewski
22f4b23897 fix(objects): replace Area2D.input_event with _input() for reliable Android touch
Area2D.input_event is unreliable on Android with gl_compatibility renderer.
Switched to manual _input() hit detection using canvas_transform coordinate
conversion, consistent with the DragDropComponent approach already used in
this project.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 13:20:14 +02:00
Steven Wroblewski
51bfd1718b fix(core): enforce CharacterData compile order and remove ClassDB type lookup on export
character.gd referenced CharacterData.State as a compile-time constant dict,
causing export to fail when character.gd was compiled before character_data.gd
(alphabetical order). The preload forces character_data.gd to be compiled first.
Changing SubResource type to "Resource" removes the ClassDB lookup for the
custom class name during scene export, relying on the explicit script reference
instead.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 13:11:30 +02:00
Steven Wroblewski
8f416b8999 fix(core): add explicit script reference for CharacterData SubResource in Main.tscn
Godot 4 Android export cannot resolve custom class names from the global
script cache during scene export. Adding an explicit ExtResource reference
to character_data.gd ensures the type is resolved at load time without
relying on the class cache.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 12:57:39 +02:00
Steven Wroblewski
19d1ec1fe5 fix(core): remove class_name from autoload scripts to prevent singleton conflict
Godot 4 throws "Class hides an autoload singleton" when a script declares
class_name with the same name as its registered autoload. Removed class_name
from AudioManager and RoomNavigator — both are accessible globally via their
autoload name without it. Also ignores Godot-generated *.uid files.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 12:44:31 +02:00
Steven Wroblewski
6b0c41bbfd fix(core): resolve review findings in Sprint 3-4
- Fix SaveManager reset_game to use DirAccess.remove correctly
- Add null check for FileAccess.open in save_game
- Fix AudioManager crossfade tween callback chain
- Replace fragile absolute HUD path with relative onready
- Guard character position save against empty id
- Add GameState.has_character_position helper
- Emit room_changed signal after tween completes
- Add target_floor validation in ElevatorButton
- Persist audio settings via GameState
- Add class_name to RoomNavigator, AudioManager, HUD

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 12:22:27 +02:00
Steven Wroblewski
13db45bb04 feat(core): implement room navigation, character states, save/load and settings menu
- RoomNavigator autoload: smooth camera pan between floors
- Floor1 and Floor2 placeholder rooms with elevator buttons
- CharacterData Resource with State enum (HEALTHY/SICK/SLEEPING/TIRED)
- Character visual state feedback via ColorRect color
- Main scene loads saved state on startup
- SettingsMenu with music/sfx sliders and game reset
- HUD settings button to open SettingsMenu

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 12:17:56 +02:00
Steven Wroblewski
ace7d722ed chore: enable ETC2/ASTC texture compression for Android export 2026-04-17 11:53:04 +02:00
Steven Wroblewski
f7c8a7ec03 fix(poc): resolve evaluator and review findings
- Add RectangleShape2D to Character and InteractiveObject collision areas
- Fix HUD button signal connections in _ready()
- Fix character_placed signal emitting global_position
- Extract DEFAULT_DRAG_RADIUS constant in DragDropComponent
- Type Variant on JSON parsed variable in SaveManager
- Extract music symbol constants in HUD
- Refactor duplicated drag input code in InputManager

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 11:16:05 +02:00
Steven Wroblewski
9a1e30d808 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>
2026-04-17 11:16:04 +02:00
Steven Wroblewski
c2028edb2f chore(setup): update Godot version to 4.6 in project.godot 2026-04-17 11:12:38 +02:00
Steven Wroblewski
9daf06c9b1 chore(setup): add minimal project.godot for Godot 4 2026-04-17 11:06:56 +02:00
Steven Wroblewski
2ebed0a511 chore(setup): add editorconfig and smoke-test checklist
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 11:05:18 +02:00
Steven Wroblewski
d1b771ddcb chore: initialize project structure for Sprint 0 2026-04-17 10:23:48 +02:00