Commit Graph

82 Commits

Author SHA1 Message Date
66213059e7 Merge branch 'main' into DamianBranch 2025-12-18 17:31:29 +01:00
38f6094842 Retouch of planes 2025-12-18 17:25:59 +01:00
6c5a396540 Rework how prefabs for cards are pre-defined (#88)
Co-authored-by: Michal Pikulski <michal.a.pikulski@gmail.com>
Reviewed-on: #88
2025-12-18 15:51:21 +00:00
Michal Pikulski
b2bc77674d Update bird pooper speed discrepancy 2025-12-18 14:09:05 +01:00
Michal Pikulski
ca56e748ba Screenshots in Diving Minigame 2025-12-18 10:52:12 +01:00
d8fc2f0889 Small Retouch to planes and obstacle spawning 2025-12-18 05:48:28 +01:00
b4deff3613 Merge branch 'main' into DamianBranch 2025-12-17 23:38:32 +01:00
b669ea1a55 Introduce background spawning with parallax effect (#86)
Co-authored-by: Michal Pikulski <michal.a.pikulski@gmail.com>
Reviewed-on: #86
2025-12-17 22:08:23 +00:00
b2967d51c3 Modified Pooping bird (Hopefully the feel i have is the real one) 2025-12-17 22:52:45 +01:00
45525295d1 Modifications to birdpooper 2025-12-17 13:56:18 +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
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
aaaeef19d7 Update the vacuum projectile logic 2025-12-16 19:42:48 +01:00
b39fa66625 Retouched the bird pooper. 2025-12-15 23:57:05 +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
569bbe62cb Modified the distance for target spawning 2025-12-15 06:20:06 +01:00
a72dc3ff0c Added different forts and configured minigame numbers 2025-12-15 04:26:20 +01:00
61ea4d56a9 Merge branch 'main' into DamianBranch 2025-12-15 02:08:19 +01:00
e54b8805d8 Done adding Obstacles and balancing BirdPooper 2025-12-15 02:08:01 +01:00
bf04f93d72 Added Obstacles Divided in difficulty 2025-12-15 00:14:44 +01:00
8259597442 Before placing PLaceholders 2025-12-14 20:55:37 +01:00
8ce4627e97 Outlines added to quarry 2025-12-12 14:36:39 +01:00
journaliciouz
ca84414998 Made outline shader debuggable in editor 2025-12-11 21:19:31 +01:00
journaliciouz
02e450271e Added outline settings 2025-12-11 13:23:46 +01:00
4a3214ea0f Modified the Pickupdistance and added a booster pack prefab in Prefabs/Items 2025-12-10 19:12:48 +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
41d99a1390 Some more airplane game doodles 2025-12-08 12:56:17 +01:00
3e1fd3fb95 Merge branch 'main' into DamianBranch 2025-12-08 10:18:38 +01:00
7de0e1776e MVP for Dump Puzzle 2025-12-08 08:48:35 +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
ce7ed89c4e Added the new decorations to the minigame 2025-12-02 03:31:14 +01:00
d1f1416025 Merge branch 'main' into DamianBranch and solved conflicts 2025-11-27 17:10:51 +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
9aafafece4 Added the Rube Goldberg MAchine 2025-11-25 20:41:14 +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
57be1a941c Added Cement Factory Puzzle Data 2025-11-25 03:52:47 +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
e33de5da3d Fix the sound bird interactaiblity issues. 2025-11-24 11:41:47 +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
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
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
235fa04eba Merge a card refresh (#59)
- **Refactored Card Placement Flow**
  - Separated card presentation from orchestration logic
  - Extracted `CornerCardManager` for pending card lifecycle (spawn, shuffle, rebuild)
  - Extracted `AlbumNavigationService` for book page navigation and zone mapping
  - Extracted `CardEnlargeController` for backdrop management and card reparenting
  - Implemented controller pattern (non-MonoBehaviour) for complex logic
  - Cards now unparent from slots before rebuild to prevent premature destruction

- **Improved Corner Card Display**
  - Fixed cards spawning on top of each other during rebuild
  - Implemented shuffle-to-front logic (remaining cards occupy slots 0→1→2)
  - Added smart card selection (prioritizes cards matching current album page)
  - Pending cards now removed from queue immediately on drag start
  - Corner cards rebuild after each placement with proper slot reassignment

- **Enhanced Album Card Viewing**
  - Added dramatic scale increase when viewing cards from album slots
  - Implemented shrink animation when dismissing enlarged cards
  - Cards transition: `PlacedInSlotState` → `AlbumEnlargedState` → `PlacedInSlotState`
  - Backdrop shows/hides with card enlarge/shrink cycle
  - Cards reparent to enlarged container while viewing, return to slot after

- **State Machine Improvements**
  - Added `CardStateNames` constants for type-safe state transitions
  - Implemented `ICardClickHandler` and `ICardStateDragHandler` interfaces
  - State transitions now use cached property indices
  - `BoosterCardContext` separated from `CardContext` for single responsibility

- **Code Cleanup**
  - Identified unused `SlotContainerHelper.cs` (superseded by `CornerCardManager`)
  - Identified unused `BoosterPackDraggable.canOpenOnDrop` field
  - Identified unused `AlbumViewPage._previousInputMode` (hardcoded value)
  - Identified unused `Card.OnPlacedInAlbumSlot` event (no subscribers)

Co-authored-by: Michal Pikulski <michal.a.pikulski@gmail.com>
Co-authored-by: Michal Pikulski <michal@foolhardyhorizons.com>
Reviewed-on: #59
2025-11-18 08:40:59 +00: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
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