Commit Graph

9 Commits

Author SHA1 Message Date
Cal Corum
42b71e3447 Add sprite padding, updated values, and deploy improvements
Sprite fixes:
- Pad rectangular card images to squares with transparent pixels
- Centers image to maintain aspect ratio in game preview UI

Card values updated to new scale:
- Common: 25, Uncommon: 100, Rare: 500
- Very Rare: 2500, Ultra Rare: 12500, Legendary: 62500

Deploy script improvements:
- Add --no-example flag to exclude ExampleSet during testing
- Show which sets are copied/skipped during deployment

Git configuration:
- Only track ExampleSet in CardSets/, ignore user content

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-19 23:02:17 -06:00
Cal Corum
b10ecbf733 Add unit tests for pack system
Add comprehensive test coverage for CardPack, PackSlot, DefaultPackSlots,
and PackParser classes. Tests verify TypeID generation, slot weight
configurations, file parsing with various formats, and default pack creation.

Test coverage:
- CardPack: GenerateTypeID consistency and uniqueness
- PackSlot: Default values, rarity/card weight population
- DefaultPackSlots: Slot weight distributions, GetDefaultSlots
- PackParser: File parsing, multiple packs/slots, card-specific weights

Total: 60 tests (29 existing + 31 new)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-19 22:12:54 -06:00
Cal Corum
80da308d17 Add ModConfig integration for card set info display
Integrate with ModOptions workshop mod to display loaded card sets
information in the game's Settings menu. Uses read-only dropdowns
(single-option) to show data without allowing user modification.

Features:
- ModConfigApi.cs wrapper for safe ModConfig interaction
- Auto-detect ModConfig availability via OnModActivated event
- Display total cards, total packs, and per-set card counts
- Graceful fallback when ModConfig not installed

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-19 22:06:15 -06:00
Cal Corum
91ee0333db Implement card pack system with gacha mechanics
Add card packs that can be opened via right-click Use menu to receive
random cards based on weighted slot configurations. Packs support
customizable rarity-based or card-specific drop rates.

Key features:
- CardPack/PackSlot data classes with weighted random selection
- PackParser for user-defined pack configurations
- PackUsageBehavior extending game's UsageBehavior system
- Runtime data lookup to handle Unity serialization limitations
- Pack consumption after opening with stack support
- Auto-generated default packs per card set

Technical notes:
- UsageUtilities registration for context menu integration
- All non-serializable fields (Dictionary, List<PackSlot>) looked up
  at runtime from ModBehaviour to survive Unity instantiation
- F9 debug spawn now uses InstantiateSync for proper item copies

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-19 21:44:29 -06:00
Cal Corum
0d9ab65422 Implement Phase 3: Storage system with slot filtering
- Add StorageHelper.cs for creating filtered storage items
- Create Card Binder (9 slots) and Card Box (36 slots)
- Slots use requireTags to only accept TradingCard tagged items
- Update debug spawn (F9) to cycle through cards and storage items
- Move initialization from Start() to Awake() to fix save/load crash
- Add safety patch for missing item warnings
- Items now persist correctly across game saves

Storage items clone base item 1255 which has slot support, then
configure slots with TradingCard tag requirement.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-19 17:12:03 -06:00
Cal Corum
6536a7126a Update CLAUDE.md for Phase 2 completion
- Add deployment section with deploy.sh/remove.sh usage
- Document all key classes (CardParser, ItemExtensions, TagHelper)
- Update project status to Phase 2 Complete
- Add log file location for debugging
- Document next implementation steps for Phase 3

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-19 16:57:18 -06:00
Cal Corum
d05ba64700 Implement Phase 2: Core card framework with clone + reflection
- Add ItemExtensions.cs with reflection helpers for private field access
- Add TagHelper.cs for game tag operations and custom TradingCard tag
- Rewrite ModBehaviour.cs with complete item creation pipeline:
  - Clone base game item (ID 135) as template
  - Set properties via reflection (typeID, weight, value, quality)
  - Load PNG sprites from CardSets/*/images/
  - Register items with ItemAssetsCollection
  - Proper cleanup on mod unload
- Add F9 debug key to spawn cards for testing
- Add deploy.sh and remove.sh scripts for quick mod installation
- Add placeholder card images for ExampleSet
- Add Unity module references (ImageConversion, InputLegacy)

Cards now appear in-game with custom icons and can be spawned to inventory.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-19 16:56:04 -06:00
Cal Corum
8d23f152eb Add unit testing framework and refactor parsing logic
- Created TradingCardMod.Tests.csproj with xUnit for testable components
- Extracted CardParser.cs with pure parsing logic (no Unity deps)
- Extracted TradingCard.cs data class from ModBehaviour
- Added 37 unit tests covering parsing, validation, rarity mapping
- Updated cards.txt format with optional description field
- Fixed DLL references (explicit HintPath for paths with spaces)
- Fixed Harmony UnpatchAll API usage
- Updated CLAUDE.md with test commands and current project status

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-18 19:40:43 -06:00
Cal Corum
9704516dd7 Initial commit: Trading Card Mod scaffold for Escape from Duckov
Set up project structure with:
- .NET Standard 2.1 project targeting Duckov modding API
- ModBehaviour entry point with card set loading system
- Harmony patching infrastructure (depends on HarmonyLoadMod)
- Pipe-separated card definition format for user-generated content
- Example card set and documentation

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-18 18:55:04 -06:00