78 lines
3.1 KiB
Markdown
78 lines
3.1 KiB
Markdown
# HanjaKanaMun - Project Plan
|
|
|
|
## Overview
|
|
Odin + raylib multilingual memory card game for learning Japanese (Hiragana/Katakana), Korean (Hangul), and Thai scripts.
|
|
|
|
## Current Status
|
|
|
|
### Completed
|
|
- [x] Created AGENTS.md project plan
|
|
- [x] Created src/ directory structure with subdirectories (themes, card, memory, screens, assets)
|
|
- [x] Separated themes into themes/themes.odin (colors, constants)
|
|
- [x] Separated card logic into card/card.odin (Card struct, rendering, click detection)
|
|
- [x] Separated memory game into memory/memory.odin (game state, logic)
|
|
- [x] Separated screens into screens/screens.odin (UI screens, buttons)
|
|
- [x] Added font loading in assets/assets.odin
|
|
- [x] Fixed card positioning (removed -40 offset that pushed cards off screen)
|
|
- [x] Fixed card selection (now allows selection in both WAITING and FIRST states)
|
|
- [x] Added flip animations for cards (visual feedback when flipping)
|
|
- [x] Improved visual styling (rounded corners, theme colors)
|
|
|
|
### In Progress
|
|
- [ ] Fix Japanese font rendering (TTF loading fails in raylib with "Failed to process TTF font data")
|
|
|
|
### Pending
|
|
- [ ] Add keyboard support for card selection (1-9, A-L, etc.)
|
|
- [ ] Add proper Japanese font that works with raylib
|
|
- [ ] Add Korean and Thai language support
|
|
- [ ] Add more animations (win screen, transitions)
|
|
- [ ] Add sound effects
|
|
- [ ] Add score tracking and high scores
|
|
- [ ] Add difficulty levels
|
|
- [ ] Test all changes work together
|
|
|
|
## Known Issues
|
|
1. **Font rendering**: Japanese characters show as "?" - raylib's TTF loader fails with CJK fonts. Current workaround: using default font with romanji characters (A, I, U, etc.)
|
|
2. **Keyboard support**: Not yet implemented
|
|
|
|
## File Structure
|
|
```
|
|
HanjaKanaMun/
|
|
├── AGENTS.md # Project plan (this file)
|
|
├── README.md # Project overview
|
|
├── odin.json # Odin config
|
|
├── main.odin # Entry point only
|
|
├── src/
|
|
│ ├── themes/
|
|
│ │ └── themes.odin # Color themes, styling constants
|
|
│ ├── card/
|
|
│ │ └── card.odin # Card struct and rendering
|
|
│ ├── memory/
|
|
│ │ └── memory.odin # Memory game logic
|
|
│ ├── screens/
|
|
│ │ └── screens.odin # Screen management (main menu, language screens)
|
|
│ └── assets/
|
|
│ └── assets.odin # Font loading, resource management
|
|
└── assets/ # Font files, images (future)
|
|
└── DroidSansJapanese.ttf
|
|
```
|
|
|
|
## Next Steps
|
|
1. **Font rendering**: Try alternative approaches:
|
|
- Use raylib's LoadFontFromImage to create font from bitmap
|
|
- Use pre-converted font files
|
|
- Use system fonts via platform-specific APIs
|
|
- Use a different font format that raylib supports
|
|
|
|
2. **Keyboard support**: Add number/letter keys to select cards
|
|
|
|
3. **Testing**: Verify all current changes work together
|
|
|
|
## Notes
|
|
- NO rm -rf or starting over
|
|
- Make small, incremental changes
|
|
- Test after each change
|
|
- Keep existing functionality working
|
|
- All code is now properly separated into modules
|
|
- Game is playable with mouse (romanji characters display correctly)
|