Commit Graph

57 Commits

Author SHA1 Message Date
9aafafece4 Added the Rube Goldberg MAchine 2025-11-25 20:41:14 +01:00
17d48c5812 Flower and belt puzzle steps added (WIP, just skeleton) 2025-11-25 19:42:40 +01:00
c5736f836a Disabled Saves, moved Folders adn renamed Data files, and added a state machine to the cookie puzzle 2025-11-25 16:02:55 +01:00
Michal Pikulski
f0abc4760b Hide Ana-Lyse's dialogue component when taking photo, also correctly restore a hidden state with the dialogu turned off 2025-11-24 11:07:46 +01:00
Michal Pikulski
ff28bd23cb Fix up eagle eye's weirdness, add option to auto clear saves 2025-11-24 10:37:40 +01:00
282f77e764 Added crash sound to butterfly glass 2025-11-20 11:10:41 +01:00
DamianCorazza
19be64a75f Butterfly Distraction 2025-11-14 00:04:33 +01:00
c08fc4a720 WIP Butterfly can be set free, now only missing forcing the couple to look. 2025-11-13 16:23:52 +01:00
c3639bbb93 Added the Flying Butterfly WIP 2025-11-12 16:25:32 +01:00
0aa2270e1a Lifecycle System Refactor & Logging Centralization (#56)
## ManagedBehaviour System Refactor

- **Sealed `Awake()`** to prevent override mistakes that break singleton registration
- **Added `OnManagedAwake()`** for early initialization (fires during registration)
- **Renamed lifecycle hook:** `OnManagedAwake()` → `OnManagedStart()` (fires after boot, mirrors Unity's Awake→Start)
- **40 files migrated** to new pattern (2 core, 38 components)
- Eliminated all fragile `private new void Awake()` patterns
- Zero breaking changes - backward compatible

## Centralized Logging System

- **Automatic tagging** via `CallerMemberName` and `CallerFilePath` - logs auto-tagged as `[ClassName][MethodName] message`
- **Unified API:** Single `Logging.Debug/Info/Warning/Error()` replaces custom `LogDebugMessage()` implementations
- **~90 logging call sites** migrated across 10 files
- **10 redundant helper methods** removed
- All logs broadcast via `Logging.OnLogEntryAdded` event for real-time monitoring

## Custom Log Console (Editor Window)

- **Persistent filter popups** for multi-selection (classes, methods, log levels) - windows stay open during selection
- **Search** across class names, methods, and message content
- **Time range filter** with MinMaxSlider
- **Export** filtered logs to timestamped `.txt` files
- **Right-click context menu** for quick filtering and copy actions
- **Visual improvements:** White text, alternating row backgrounds, color-coded log levels
- **Multiple instances** supported for simultaneous system monitoring
- Open via `AppleHills > Custom Log Console`

Co-authored-by: Michal Pikulski <michal@foolhardyhorizons.com>
Co-authored-by: Michal Pikulski <michal.a.pikulski@gmail.com>
Reviewed-on: #56
2025-11-11 08:48:29 +00:00
Michal Pikulski
3ebbecc277 Clean up logging 2025-11-10 13:03:36 +01:00
e27bb7bfb6 Refactor interactions, introduce template-method lifecycle management, work on save-load system (#51)
# Lifecycle Management & Save System Revamp

## Overview
Complete overhaul of game lifecycle management, interactable system, and save/load architecture. Introduces centralized `ManagedBehaviour` base class for consistent initialization ordering and lifecycle hooks across all systems.

## Core Architecture

### New Lifecycle System
- **`LifecycleManager`**: Centralized coordinator for all managed objects
- **`ManagedBehaviour`**: Base class replacing ad-hoc initialization patterns
  - `OnManagedAwake()`: Priority-based initialization (0-100, lower = earlier)
  - `OnSceneReady()`: Scene-specific setup after managers ready
  - Replaces `BootCompletionService` (deleted)
- **Priority groups**: Infrastructure (0-20) → Game Systems (30-50) → Data (60-80) → UI/Gameplay (90-100)
- **Editor support**: `EditorLifecycleBootstrap` ensures lifecycle works in editor mode

### Unified SaveID System
- Consistent format: `{ParentName}_{ComponentType}`
- Auto-registration via `AutoRegisterForSave = true`
- New `DebugSaveIds` editor tool for inspection

## Save/Load Improvements

### Enhanced State Management
- **Extended SaveLoadData**: Unlocked minigames, card collection states, combination items, slot occupancy
- **Async loading**: `ApplyCardCollectionState()` waits for card definitions before restoring
- **New `SaveablePlayableDirector`**: Timeline sequences save/restore playback state
- **Fixed race conditions**: Proper initialization ordering prevents data corruption

## Interactable & Pickup System

- Migrated to `OnManagedAwake()` for consistent initialization
- Template method pattern for state restoration (`RestoreInteractionState()`)
- Fixed combination item save/load bugs (items in slots vs. follower hand)
- Dynamic spawning support for combined items on load
- **Breaking**: `Interactable.Awake()` now sealed, use `OnManagedAwake()` instead

##  UI System Changes

- **AlbumViewPage** and **BoosterNotificationDot**: Migrated to `ManagedBehaviour`
- **Fixed menu persistence bug**: Menus no longer reappear after scene transitions
- **Pause Menu**: Now reacts to all scene loads (not just first scene)
- **Orientation Enforcer**: Enforces per-scene via `SceneManagementService`
- **Loading Screen**: Integrated with new lifecycle

## ⚠️ Breaking Changes

1. **`BootCompletionService` removed** → Use `ManagedBehaviour.OnManagedAwake()` with priority
2. **`Interactable.Awake()` sealed** → Override `OnManagedAwake()` instead
3. **SaveID format changed** → Now `{ParentName}_{ComponentType}` consistently
4. **MonoBehaviours needing init ordering** → Must inherit from `ManagedBehaviour`

Co-authored-by: Michal Pikulski <michal.a.pikulski@gmail.com>
Co-authored-by: Michal Pikulski <michal@foolhardyhorizons.com>
Reviewed-on: #51
2025-11-07 15:38:31 +00:00
5e4de3ebef Added the Eagle Eye button, It's a standalone prefab that can be added to other canvases. 2025-11-06 17:11:30 +01:00
be22d09e39 Fixed SoundBird Bug 2025-11-04 16:26:33 +01:00
011901eb8f Refactoring of the interaction system and preliminary integration of save/load functionality across the game. (#44)
### Interactables Architecture Refactor
- Converted composition to inheritance, moved from component-based to class-based interactables. No more requirement for chain of "Interactable -> Item" etc.
- Created `InteractableBase` abstract base class with common functionality that replaces the old component
- Specialized child classes: `Pickup`, `ItemSlot`, `LevelSwitch`, `MinigameSwitch`, `CombinationItem`, `OneClickInteraction` are now children classes
- Light updates to the interactable inspector, moved some things arround, added collapsible inspector sections in the  UI for better editor experience

### State Machine Integration
- Custom `AppleMachine` inheritong from Pixelplacement's StateMachine which implements our own interface for saving, easy place for future improvements
- Replaced all previous StateMachines by `AppleMachine`
- Custom `AppleState`  extends from default `State`. Added serialization, split state logic into "EnterState", "RestoreState", "ExitState" allowing for separate logic when triggering in-game vs loading game
- Restores directly to target state without triggering transitional logic
- Migration tool converts existing instances

### Prefab Organization
- Saved changes from scenes into prefabs
- Cleaned up duplicated components, confusing prefabs hierarchies
- Created prefab variants where possible
- Consolidated Environment prefabs and moved them out of Placeholders subfolder into main Environment folder
- Organized item prefabs from PrefabsPLACEHOLDER into proper Items folder
- Updated prefab references - All scene references updated to new locations
- Removed placeholder files from Characters, Levels, UI, and Minigames folders

### Scene Updates
- Quarry scene with major updates
- Saved multiple working versions (Quarry, Quarry_Fixed, Quarry_OLD)
- Added proper lighting data
- Updated all interactable components to new architecture

### Minor editor tools
- New tool for testing cards from an editor window (no in-scene object required)
- Updated Interactable Inspector
- New debug option to opt in-and-out of the save/load system
- Tooling for easier migration

Co-authored-by: Michal Pikulski <michal.a.pikulski@gmail.com>
Reviewed-on: #44
2025-11-03 10:12:51 +00:00
journaliciouz
d48b459fea Audio refactor almost done 2025-10-30 16:31:01 +01:00
54f355beda Merge branch 'main' into DamianCardStyles 2025-10-29 12:34:48 +00:00
Michal Pikulski
c24c5df881 Update minigame switcher to only unlock when all puzzles completed 2025-10-29 11:19:17 +01:00
2ce6452d90 Trying to make text Warp 2025-10-28 19:10:56 +01:00
DamianCorazza
fd88698bee Modified Quarry To make the Sound Area easier to understand. 2025-10-21 12:42:28 +02:00
journaliciouz
cb3aa515d1 Cucumberattack sound and anne lise shush 2025-10-20 21:23:18 +02:00
journaliciouz
b7d7e5ae35 Scoffed picnic couple audio implementation 2025-10-20 21:01:10 +02:00
7f3dccf1ea Merge branch 'main' of https://homelab.tailf7f81b.ts.net/tschesky/AppleHillsProduction 2025-10-20 16:21:37 +02:00
c07f64ea4f Spatial lawnmower audio implemented 2025-10-20 16:21:32 +02:00
9df43b8f53 Implemented Flash Feedback to the Diving Minigame 2025-10-20 16:19:08 +02:00
Michal Pikulski
8274d70924 Remove superflous Update() methods and change the tile spawn buffer to 2 2025-10-17 11:55:30 +02:00
DamianCorazza
7f31ec8e6a Added CameraSwitcher to the nests and Repositioned elements for a more compact view 2025-10-17 00:26:22 +02:00
Michal Pikulski
e8180b21bf Strip debug logging from the game, fix screen weirdness 2025-10-14 15:54:11 +02:00
57652b87f6 Merge branch 'main' into DamianBranch 2025-10-10 16:49:25 +02:00
9359c47499 Added Decorations 2025-10-10 16:25:03 +02:00
1fe48c995b Commmit minigame and tile logic 2025-10-10 14:45:23 +02:00
92f935f272 Refactored Anne Lise bush into state machine 2025-10-08 15:47:36 +02:00
dea470f93f Replaced almost all placeholders with final art
Some animations still need to be added and replaced, but most of the sprites are final now.
2025-10-07 13:04:14 +02:00
7ed258f87a Added Sprites and Changed Placeholders for final art 2025-10-06 17:41:12 +02:00
01189acef1 Added Anne-Lise Hiding Spot plus Kids Hidding spots 2025-10-06 12:38:16 +02:00
DamianCorazza
fb24537daf Implemented Picnic Logic
(It can use some improvement)
2025-09-30 15:52:37 +02:00
f78c031cd3 Animations for Wolter 2025-09-29 14:10:14 +02:00
52139cbe64 Flying Bird Puzzle section Complete.
Finished with the logic of the flying bird step.
2025-09-26 15:12:18 +02:00
DamianCorazza
27b38ca9b1 Added new animas for Pulver
Added new sprite sheets and anims for pulver front and back walk/idle.
2025-09-26 00:23:27 +02:00
e69542879b Redid the SoundBird Logic of flight
changed the flight of the bird to be able to have more control over the takeoff, loops and landing.
2025-09-24 17:24:51 +02:00
f5a6eff85a Created art for the luring spot D
added a spot for the soundbird with a little sign
2025-09-24 13:51:39 +02:00
ceca90e058 Sound Bird First iteration Complete
Sound generator creates sound, bird gets spooked, is no longer interactable, and comes back after flying around.
2025-09-23 15:51:25 +02:00
322bd5377d SoundGenerator Puzzle Section WIP
Started on the sound generator section of the soundbird puzzle, plus organized folders.
2025-09-22 14:37:16 +02:00
2923ba0851 Lawnmowwer is working!
Done with the lawnmower section of the puzzle.
2025-09-22 14:37:16 +02:00
6abf25b2ad Working gardener chase without flipping 2025-09-22 14:37:15 +02:00
074b052abe Populate minigame with obstacles and monster spawns (#5)
- Simulated "fake" physics and collisions
- Object pooling for tiles, obstacles and monster spawns
- Base monster scoring with proximity triggers and depth multiplier

Co-authored-by: AlexanderT <alexander@foolhardyhorizons.com>
Co-authored-by: Michal Pikulski <michal.a.pikulski@gmail.com>
Reviewed-on: #5
2025-09-22 14:37:15 +02:00
24f5228003 Started to deal with the Gardener
This is driving slightly insane plus I forgot ALL the programs Alex told me about, i'll adress this tomorrow.
2025-09-17 15:30:59 +02:00
8b3c9a09cb Anna Lise is working!
A lot of hardcoded stuff but Anna Lise is working
2025-09-17 13:59:21 +02:00
DamianCorazza
6a24330ea0 Trying to make Anna Lise face the Bird before taking the picture to no avail
Can't make her look at the bird, got pissed off, gonna try tomorrow.
2025-09-16 23:52:28 +02:00
81723a3cdb Anna Lise Moves To the Spot and takes a picture when the bird is there. 2025-09-16 18:14:00 +02:00