This commit is contained in:
Aspergerli
2026-03-09 19:18:47 +01:00
commit ade3d0fb01
240 changed files with 12324 additions and 0 deletions

236
CLAUDE.md Normal file
View File

@@ -0,0 +1,236 @@
# Card Framework - Claude Code Project Guide
## Project Overview
**Card Framework** is a professional-grade Godot 4.x addon for creating 2D card games. This lightweight, extensible toolkit supports various card game genres from classic Solitaire to complex TCGs and deck-building roguelikes.
### Key Characteristics
- **Target Engine**: Godot 4.4.1
- **Architecture**: Modular addon with factory patterns and inheritance hierarchy
- **License**: Open source with CC0 assets
- **Status**: Production-ready (v1.1.3) with comprehensive examples
## Architecture Overview
### Core Components
```
CardManager (Root orchestrator)
├── CardFactory (Abstract) → JsonCardFactory (Concrete)
├── CardContainer (Abstract) → Pile/Hand (Specialized containers)
├── Card (extends DraggableObject)
└── DropZone (Interaction handling)
```
### Design Patterns in Use
- **Factory Pattern**: Flexible card creation via CardFactory/JsonCardFactory
- **Template Method**: CardContainer with overridable methods for game-specific logic
- **Observer Pattern**: Event-driven card movement and interaction callbacks
- **Strategy Pattern**: Pluggable drag-and-drop via DraggableObject inheritance
### File Structure
- `addons/card-framework/` - Core framework code
- `example1/` - Basic demonstration project
- `freecell/` - Complete FreeCell game implementation
- `project.godot` - Godot 4.4+ project configuration
## Development Guidelines
### Code Standards
1. **GDScript Best Practices**
- Use strong typing: `func create_card(name: String) -> Card`
- Follow naming conventions: `card_container`, `front_face_texture`
- Document public APIs with `##` comments
- Use `@export` for designer-configurable properties
2. **Godot 4.x Compliance**
- Use `class_name` declarations for reusable classes
- Prefer `@onready` for node references
- Use signals for decoupled communication
- Leverage Resource system for configuration (Curve resources)
3. **Framework Architecture Rules**
- Inherit from CardContainer for new container types
- Extend CardFactory for custom card creation logic
- Use CardManager as the central orchestrator
- Maintain JSON compatibility for card data when using JsonCardFactory
### Extension Patterns
#### Creating Custom Card Containers
```gdscript
class_name MyCustomContainer
extends CardContainer
func check_card_can_be_dropped(cards: Array) -> bool:
# Implement game-specific rules
return true
func add_card(card: Card, index: int = -1) -> void:
# Custom card placement logic
super.add_card(card, index)
```
#### Extending Card Properties
```gdscript
class_name GameCard
extends Card
@export var power: int
@export var cost: int
@export var effect: String
func _ready():
super._ready()
# Initialize custom properties from card_info
```
## Claude Code Usage Patterns
### Quick Commands for Development
#### Analysis and Exploration
```bash
# Analyze specific components
/godot-analyze Card
/godot-analyze CardContainer
/godot-analyze "drag and drop system"
# Review architecture
/analyze addons/card-framework/ --focus architecture
```
#### Implementation Tasks
```bash
# Add new features
/godot-implement "deck shuffling animation"
/godot-implement "card effect system"
# Create custom containers
/godot-implement "discard pile with auto-organize"
```
#### Testing and Validation
```bash
# Create tests
/godot-test unit Card
/godot-test integration "hand reordering"
/godot-test performance "large deck handling"
```
### Development Workflow
#### 1. Understanding Existing Code
- Start with `/godot-analyze [component]` to understand structure
- Use `/analyze` for deeper architectural investigation
- Read example implementations in `freecell/` for complex patterns
#### 2. Planning New Features
- Create task breakdown using TodoWrite
- Consider compatibility with existing CardContainer interface
- Plan JSON schema changes if extending card properties
#### 3. Implementation Best Practices
- Always extend base classes rather than modifying core framework
- Test with both `example1` and `freecell` projects
- Maintain backwards compatibility with existing JSON card data
#### 4. Quality Assurance
- Run both example scenes to verify functionality
- Check performance with large card collections
- Validate proper cleanup and memory management
## Key Configuration Areas
### CardManager Setup
- `card_size`: Default dimensions for all cards
- `card_factory_scene`: Factory responsible for card creation
- `debug_mode`: Enable visual debugging for drop zones
### CardFactory Configuration
- `card_asset_dir`: Location of card image assets
- `card_info_dir`: Directory containing JSON card definitions
- `back_image`: Default card back texture
### JSON Card Schema
```json
{
"name": "card_identifier",
"front_image": "texture_filename.png",
"suit": "optional_game_data",
"value": "additional_properties"
}
```
## Common Implementation Patterns
### Card Movement and Animation
- Use `card.move(target_position, rotation)` for programmatic movement
- Leverage `moving_speed` property for consistent animation timing
- Handle movement completion via `on_card_move_done()` callbacks
### Game Rules Implementation
- Override `check_card_can_be_dropped()` in custom containers
- Use `move_cards()` with history tracking for undo/redo support
- Implement game state validation in container logic
### Performance Optimization
- Preload card data using `factory.preload_card_data()`
- Limit visual card display with `max_stack_display` in Pile containers
- Use `debug_mode` to identify performance bottlenecks
## Integration Points
### Asset Pipeline
- Card images in `card_asset_dir` (typically PNG format)
- JSON metadata in `card_info_dir` matching image filenames
- Support for Kenney.nl asset packs (included in examples)
### Scene Structure
- CardManager as root node in card-enabled scenes
- CardContainers as children of CardManager
- Cards instantiated dynamically via factory pattern
### Extensibility Hooks
- Virtual methods in CardContainer for custom behavior
- Card property extensions via inheritance
- Factory pattern for alternative card creation strategies
## Task Master AI Integration
This project includes Task Master AI for advanced project management:
```bash
# Initialize task tracking
task-master init
# Create tasks from project requirements
task-master parse-prd .taskmaster/docs/prd.txt
# Track development progress
task-master next # Get next task
task-master show <id> # View task details
task-master set-status --id=<id> --status=done
```
See `.taskmaster/CLAUDE.md` for detailed Task Master workflows.
## Troubleshooting Guide
### Common Issues
- **Cards not appearing**: Check `card_asset_dir` path and file naming
- **JSON loading errors**: Verify JSON syntax and required fields
- **Drag-and-drop issues**: Ensure CardContainer has `enable_drop_zone = true`
- **Performance problems**: Use `debug_mode` to visualize sensor areas
### Debug Tools
- Enable `debug_mode` in CardManager for visual debugging
- Use Godot's remote inspector for runtime state examination
- Check console output for framework-specific error messages
---
*This project demonstrates professional Godot addon development with comprehensive documentation, clean architecture, and production-ready examples. It serves as an excellent foundation for 2D card game development.*
## Task Master AI Instructions
**Import Task Master's development workflow commands and guidelines, treat as if import is in the main CLAUDE.md file.**
@./.taskmaster/CLAUDE.md