Commit Graph

32 Commits

Author SHA1 Message Date
7bb992acb8 Made apple audio sources use OnManagedAwake 2025-11-10 12:19:20 +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
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
cdbb2e0d3f Added audio of Pulver combining stuff 2025-10-31 15:45:28 +01:00
journaliciouz
2b41a9f200 Gardener audio refactor 2025-10-30 15:25:07 +01:00
988bc53ec8 Finally, priority VO 2025-10-29 17:01:02 +01:00
Michal Pikulski
fdfddaec95 Make combine animations and smacks ground Pulve 2025-10-27 14:43:24 +01:00
c07f64ea4f Spatial lawnmower audio implemented 2025-10-20 16:21:32 +02:00
67b8aea93a Pulver can carry shit 2025-10-14 16:20:57 +02:00
10992b43cc Unity Timeline Interaction System Integration (#17)
- Added InteractionTimelineAction component for timeline-driven interactions
- Implemented custom editor for timeline event mapping
- Updated interaction event flow to support timeline actions
- Enhanced character move target configuration
- Improved inspector UI for interactable components
- Added technical documentation for interaction system
- Refactored interaction action base classes for extensibility
- Fixed issues with character binding in timelines

Co-authored-by: Michal Pikulski <michal@foolhardyhorizons.com>
Co-authored-by: Michal Pikulski <michal.a.pikulski@gmail.com>
Reviewed-on: #17
2025-10-07 10:57:11 +00:00
Michal Pikulski
4b206b9b2e Little Trafalgar dust trail fun 2025-09-23 11:05:35 +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
Michal Pikulski
ef96d80d51 Small touchups of input and A* graphing 2025-09-12 10:36:23 +02:00
9b590ca6ec Made Changes To slotted items (not fully functional but progressing)
Added Unity events to the Slotting Items, the eyes react fine but sometimes they fuck up. gonna check that out later.
2025-09-11 17:03:56 +02:00
Michal Pikulski
e1ff13db30 Rework interactables into a flatter hierarchy, reenable puzzles as well 2025-09-11 14:07:57 +02:00
1c987af2b8 Added animations, two state machines 2025-09-10 22:17:51 +02:00
36ab5864e5 Placeholder for bike horn + Pulver grid change + changed gardener tag 2025-09-10 13:38:40 +02:00
6f65297ba1 Gardener and his animations implemented 2025-09-09 17:45:51 +02:00
Michal Pikulski
c15f207415 Fake Physics on Player 2025-09-09 14:18:19 +02:00
Michal Pikulski
32888a6843 [Interactions] Switch interactables to trace on layer configured in game settings 2025-09-08 12:51:33 +02:00
045bd7966e PLaceholder Items and organization
Items Placeholder Art Upload
2025-09-05 17:37:21 +02:00
15326d4658 Created Placeholder Prefabs + Player Prefab
Changed Trafalgar Prefab
2025-09-05 11:40:26 +02:00
6a3135d7ec Forgot to add all changes
I forgot to select all the changes in my previous commit
2025-09-04 16:13:58 +02:00
Michal Pikulski
65d8be6cf2 Pulver correctly goes and retrieves the item. Items still need to be enabled again after a failed couroutine 2025-09-04 00:14:31 +02:00
Michal Pikulski
0c930d09a4 [Player][Interactions] Pulver moves to item and goes back. Item disappears, but in wrong order 2025-09-04 00:00:46 +02:00
Michal Pikulski
bd3140b10f [Player] Re-setup Pulver prefabs and configure the scale and follow component 2025-09-02 14:08:36 +02:00
Michal Pikulski
39eeb044fd Setup correct sizes and Quarry level switch 2025-09-02 13:59:31 +02:00
7be3af146d Merge branch 'main' of https://homelab.tailf7f81b.ts.net/tschesky/AppleHillsProduction 2025-09-02 13:49:21 +02:00
ef4458eb07 Added pulver anims 2025-09-02 13:46:27 +02:00
Michal Pikulski
48c4992517 [Player] Add simple Pulver point-based following behind Trafalgar. Leave option for manually-directed movement. 2025-09-02 13:20:25 +02:00
Michal Pikulski
d0dd3cdd17 [Player] Setup pulver player prefab 2025-09-02 12:33:36 +02:00