115 lines
4.4 KiB
Markdown
115 lines
4.4 KiB
Markdown
|
|
# Card System Implementation Plan
|
||
|
|
|
||
|
|
## Current Implementation Analysis
|
||
|
|
|
||
|
|
### Data Layer
|
||
|
|
|
||
|
|
1. **CardData.cs**:
|
||
|
|
- Represents an instance of a card in the player's collection
|
||
|
|
- Contains unique ID, rarity, and copies owned
|
||
|
|
- Has a reference to its CardDefinition for display information
|
||
|
|
- Includes methods for rarity upgrades when collecting duplicates
|
||
|
|
- Well-structured with proper serialization support
|
||
|
|
|
||
|
|
2. **CardDefinition.cs**:
|
||
|
|
- ScriptableObject template for creating card instances
|
||
|
|
- Contains basic info (name, description), visuals, and collection data
|
||
|
|
- Provides helper methods like CreateCardData() and GetBackgroundColor()
|
||
|
|
- Supports different zones (AppleHills, Quarry, Forest, Mountain, Beach)
|
||
|
|
|
||
|
|
3. **CardSystemManager.cs**:
|
||
|
|
- Singleton manager for the card system
|
||
|
|
- Manages available card definitions and player inventory
|
||
|
|
- Includes event callbacks for booster packs and card collection
|
||
|
|
- Implements functionality for adding and opening booster packs
|
||
|
|
|
||
|
|
4. **CardInventory.cs**:
|
||
|
|
- Fully implemented management of the player's card collection
|
||
|
|
- Includes methods for adding cards and tracking booster packs
|
||
|
|
- Provides filtering methods for different card types
|
||
|
|
- Supports card lookup by various properties (zone, rarity)
|
||
|
|
|
||
|
|
5. **CardVisualConfig.cs**:
|
||
|
|
- ScriptableObject for configuring the visual appearance of cards
|
||
|
|
- Maps rarities to colors and zones to colors/shapes
|
||
|
|
- Uses dictionary lookups for efficient access
|
||
|
|
|
||
|
|
### UI Layer
|
||
|
|
|
||
|
|
1. **CardUIElement.cs**:
|
||
|
|
- Handles displaying a single card in the UI
|
||
|
|
- Updates visuals based on card data (rarity, zone)
|
||
|
|
- References UI elements like card name text, images, frames, etc.
|
||
|
|
|
||
|
|
2. **UIPageController.cs**:
|
||
|
|
- Manages UI page transitions with a stack-based navigation system
|
||
|
|
- Provides methods for pushing, popping, and clearing the page stack
|
||
|
|
- Uses events to notify when pages change
|
||
|
|
|
||
|
|
3. **UI Page Components**:
|
||
|
|
- **CardMenuPage.cs**: Main menu for card system navigation
|
||
|
|
- **AlbumViewPage.cs**: Simplified implementation that shows filtered cards in grid
|
||
|
|
- **BoosterOpeningPage.cs**: Interactive card reveal experience
|
||
|
|
- **CardAlbumUI.cs**: Main controller for the card system UI
|
||
|
|
- **UIPage.cs**: Base class for common page functionality
|
||
|
|
|
||
|
|
## Implementation Status
|
||
|
|
|
||
|
|
### Completed
|
||
|
|
1. **Complete CardInventory Implementation**:
|
||
|
|
- Full implementation with methods to manage the player's card collection
|
||
|
|
- Filtering, sorting, and organization features
|
||
|
|
- Integration with CardSystemManager
|
||
|
|
|
||
|
|
2. **Booster Pack Generation**:
|
||
|
|
- Logic to generate random booster packs with appropriate rarity distribution
|
||
|
|
- Methods for awarding booster packs to the player
|
||
|
|
- Events for notifying UI when booster packs are obtained
|
||
|
|
|
||
|
|
3. **Card Collection UI**:
|
||
|
|
- Simplified album browsing UI with filtering and sorting options
|
||
|
|
- Removed unnecessary card stack and slot system
|
||
|
|
- Updated AlbumViewPage to use TextMeshPro components
|
||
|
|
|
||
|
|
4. **Booster Pack Opening UI (In Progress)**:
|
||
|
|
- Implemented interactive card reveal system
|
||
|
|
- Added card back prefabs for clickable reveal experience
|
||
|
|
- Created flip animations and particle effects for card reveals
|
||
|
|
- Updated to support revealing three cards individually
|
||
|
|
|
||
|
|
### Still Needed
|
||
|
|
1. **Booster Opening UI Refinement**:
|
||
|
|
- Fine-tune animation timings and transitions
|
||
|
|
- Implement custom card back designs
|
||
|
|
- Add more visual/audio feedback for different rarities
|
||
|
|
|
||
|
|
2. **Save/Load System**:
|
||
|
|
- Implement persistence for the player's card collection
|
||
|
|
- Add autosave functionality for cards and booster packs
|
||
|
|
|
||
|
|
3. **Card Collection Statistics**:
|
||
|
|
- Add UI for tracking collection completion
|
||
|
|
- Implement achievements for collecting sets
|
||
|
|
|
||
|
|
## Next Steps
|
||
|
|
|
||
|
|
### 1. Complete the Booster Opening Experience
|
||
|
|
- Create proper card back prefab with appropriate design
|
||
|
|
- Test and refine the card reveal animations
|
||
|
|
- Ensure particle effects and sounds play correctly
|
||
|
|
|
||
|
|
### 2. Add Save/Load System
|
||
|
|
- Implement JSON serialization for CardInventory
|
||
|
|
- Add autosave triggers after obtaining new cards
|
||
|
|
- Create save/load methods in CardSystemManager
|
||
|
|
|
||
|
|
### 3. Polish the Overall Experience
|
||
|
|
- Add transition animations between pages
|
||
|
|
- Improve visual feedback for obtaining new cards
|
||
|
|
- Implement collection statistics display
|
||
|
|
|
||
|
|
### 4. Additional Features (Optional)
|
||
|
|
- Special collection bonuses for completing sets
|
||
|
|
- Card trading system with NPCs
|
||
|
|
- Card usage mechanics beyond collection
|