Commit Graph

90 Commits

Author SHA1 Message Date
Michal Pikulski
c6d2ca4e5c Valentine Notes Dlivery game flow changes and improvements. 2025-12-17 02:15:43 +01:00
Michal Pikulski
6133caec53 Time-based difficulty scaling with object pools and bird pooper restart improvements to the minigame 2025-12-16 23:21:27 +01:00
journaliciouz
0ff3fbbc70 Merge branch 'main' of https://homelab.tailf7f81b.ts.net/tschesky/AppleHillsProduction 2025-12-16 21:39:50 +01:00
journaliciouz
cf23e9ad38 Frakke puzzle implemented 2025-12-16 21:39:28 +01:00
Michal Pikulski
4063e66362 Update the photo taking mode to automatic and hone in visual feedback 2025-12-16 21:31:06 +01:00
Michal Pikulski
ecb9bf1b2b Pigman AI input to detonate trashbag 2025-12-16 19:51:14 +01:00
Michal Pikulski
aaaeef19d7 Update the vacuum projectile logic 2025-12-16 19:42:48 +01:00
Michal Pikulski
c5f37a5df4 Fix weapon selection issues and shot tracking 2025-12-16 19:29:01 +01:00
Michal Pikulski
bd4c365d98 Cleanup the block HP and material setup 2025-12-16 19:16:57 +01:00
Michal Pikulski
a2eb27f8f3 Update double input issues, pigman is no longer unbound, limit his weapon access too 2025-12-16 18:58:50 +01:00
Michal Pikulski
0055efaee2 Fix scaling issues in the statue minigame sprites 2025-12-16 18:01:44 +01:00
Michal Pikulski
ba1e506bc6 Fix card cleanup after dismissing minigame 2025-12-16 17:35:05 +01:00
Michal Pikulski
f72b8f3cf5 Add seeing mr Cement photos in the album 2025-12-15 15:24:17 +01:00
Michal Pikulski
de02394198 Fix game over screen 2025-12-15 13:04:46 +01:00
Michal Pikulski
a45ab2f543 Add booster scoring to card sorting 2025-12-15 12:29:06 +01:00
Michal Pikulski
bb332933ec Make a generic booster pack giver 2025-12-15 11:59:40 +01:00
c62f169d08 maze_switching (#82)
Co-authored-by: Michal Pikulski <michal.a.pikulski@gmail.com>
Reviewed-on: #82
2025-12-15 09:20:15 +00:00
5b6725a0ba Added Cooldown to pooping 2025-12-15 02:19:09 +01:00
e54b8805d8 Done adding Obstacles and balancing BirdPooper 2025-12-15 02:08:01 +01:00
8259597442 Before placing PLaceholders 2025-12-14 20:55:37 +01:00
Michal Pikulski
0b4def8a05 Add pinch controls to statue dressup game 2025-12-10 15:15:11 +01:00
082ce98f79 Trash maze MVP (#79)
Co-authored-by: Michal Pikulski <michal@foolhardyhorizons.com>
Co-authored-by: Michal Pikulski <michal.a.pikulski@gmail.com>
Reviewed-on: #79
2025-12-10 11:14:10 +00:00
Michal Pikulski
e338e28673 Update the statue game to include rotation etc. 2025-12-08 14:48:09 +01:00
Michal Pikulski
41d99a1390 Some more airplane game doodles 2025-12-08 12:56:17 +01:00
c27f22ef0a MVP of the plane throwing game (#77)
Co-authored-by: Michal Pikulski <michal@foolhardyhorizons.com>
Co-authored-by: Michal Pikulski <michal.a.pikulski@gmail.com>
Reviewed-on: #77
2025-12-07 19:36:57 +00:00
Michal Pikulski
edb83ef13d Simple Pigman AI 2025-12-04 11:34:05 +01:00
e60d516e7e Implement Fort Fight minigame (#75)
Co-authored-by: Michal Pikulski <michal.a.pikulski@gmail.com>
Reviewed-on: #75
2025-12-04 01:18:29 +00:00
journaliciouz
652e3ab814 Added audio to the decorations minigame and switched the rock for the fez 2025-11-28 15:28:15 +01:00
83aa3d5e6d Implement MVP for the statue decoration minigame (#65)
MVP implemented with:
- placing, removing etc. decorations
- saving the state, displaying it on the map, restoring when game restarts
- saving screenshots to folder on device

Co-authored-by: Michal Pikulski <michal@foolhardyhorizons.com>
Co-authored-by: Michal Pikulski <michal.a.pikulski@gmail.com>
Reviewed-on: #65
2025-11-27 13:21:22 +00:00
Michal Pikulski
a02b70e1f7 Fix method signatures for apple machines 2025-11-25 15:48:18 +01:00
86c1df55f2 First pass over MPV for the cement-statue-sticker minigame (#63)
Co-authored-by: Michal Pikulski <michal.a.pikulski@gmail.com>
Co-authored-by: Michal Pikulski <michal@foolhardyhorizons.com>
Reviewed-on: #63
2025-11-24 14:55:45 +00:00
Michal Pikulski
e9320c6d03 Poop obstacle pipeline working 2025-11-21 11:33:49 +01:00
Michal Pikulski
b4b17c18ed Some b ase obstacle and poop spawning 2025-11-21 09:22:06 +01:00
058af331e0 pooper_minigame (#62)
Co-authored-by: Michal Pikulski <michal.a.pikulski@gmail.com>
Reviewed-on: #62
2025-11-20 15:16:57 +00:00
Michal Pikulski
43fc6c327a Fix initialization bug 2025-11-19 23:57:44 +01:00
Michal Pikulski
6b8420c8c7 Update card sorting MVP 2025-11-19 23:48:41 +01:00
fee5515bbd First MVP of sorting minigame (#60)
Co-authored-by: Michal Pikulski <michal.a.pikulski@gmail.com>
Co-authored-by: Michal Pikulski <michal@foolhardyhorizons.com>
Reviewed-on: #60
2025-11-19 13:56:10 +00:00
2c4e90b698 Finished changing score to amount of photos 2025-11-18 12:45:36 +01:00
219f2239a1 Added number of photos scoring 2025-11-18 11:33:16 +01:00
acf46c701e Last life cycle refactor updates + add comprehensive documentation (#57)
Co-authored-by: Michal Pikulski <michal.a.pikulski@gmail.com>
Reviewed-on: #57
2025-11-11 12:32:36 +00:00
fe2eb0a280 Merge remote-tracking branch 'origin/kill-json-player' 2025-11-11 10:06:23 +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
MacBuilder
d647bb5707 Target eliminated, good job 47 2025-11-10 15:55:28 +01:00
Michal Pikulski
2127bf37b2 Add boosters to minigame again 2025-11-07 17:26:29 +01:00
d2e79f058b Merge branch 'ui-overhaul' 2025-11-07 16:56:51 +01:00
de2966fb1e Cinematics and UI overhaul 2025-11-07 16:47:10 +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
Michal Pikulski
43779c560e Cleanup compile warnings, cleanup logs, spruce up level selection menu 2025-10-28 14:31:17 +01:00
Michal Pikulski
cc797f09ef Update the rotation enforcement to automatically lock device into
desired orientation.
2025-10-24 16:48:45 +02:00
5a85a602bd Revamp game pausing and input handling. Fix minigame tutorial and end sequence. (#39)
- Revamp pausing and centralize management in GameManager
- Switch Pause implementation to be counter-based to solve corner case of multiple pause requests
- Remove duplicated Pause logic from other components
- Add pausing when browsing the card album
- Fully deliver the exclusive UI implementation
- Spruce up the MiniGame tutorial with correct pausing, hiding other UI
- Correctly unpause after showing tutorial
- Fix minigame ending sequence. The cinematic correctly plays only once now
- Replaying the minigame works

Co-authored-by: Michal Adam Pikulski <michal@foolhardyhorizons.com>
Co-authored-by: Michal Pikulski <michal@foolhardyhorizons.com>
Reviewed-on: #39
2025-10-24 11:09:32 +00:00