feat: Phase 1 - safe constructors and _Drawable foundation
Closes #7 - Make all UI class constructors safe: - Added safe default constructors for UISprite, UIGrid, UIEntity, UICaption - Initialize all members to predictable values - Made Python init functions accept no arguments - Added x,y properties to UIEntity Closes #71 - Create _Drawable Python base class: - Created PyDrawable.h/cpp with base type (not yet inherited by UI types) - Registered in module initialization Closes #87 - Add visible property: - Added bool visible=true to UIDrawable base class - All render methods check visibility before drawing Closes #88 - Add opacity property: - Added float opacity=1.0 to UIDrawable base class - UICaption and UISprite apply opacity to alpha channel Closes #89 - Add get_bounds() method: - Virtual method returns sf::FloatRect(x,y,w,h) - Implemented in Frame, Caption, Sprite, Grid Closes #98 - Add move() and resize() methods: - move(dx,dy) for relative movement - resize(w,h) for absolute sizing - Caption resize is no-op (size controlled by font) 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
a88ce0e259
commit
f1b354e47d
15 changed files with 531 additions and 161 deletions
141
ROADMAP.md
141
ROADMAP.md
|
|
@ -155,7 +155,7 @@ Rendering Layer:
|
|||
- from_hex("#FF0000"), to_hex()
|
||||
- lerp(other_color, t) for interpolation
|
||||
|
||||
4. NEW - Timer objects
|
||||
4. #103 - Timer objects
|
||||
timer = mcrfpy.Timer("my_timer", callback, 1000)
|
||||
timer.pause()
|
||||
timer.resume()
|
||||
|
|
@ -180,7 +180,7 @@ Rendering Layer:
|
|||
- scene.find("button1") returns element
|
||||
- collection.find("enemy*") returns list
|
||||
|
||||
4. NEW - Basic profiling/metrics
|
||||
4. #104 - Basic profiling/metrics
|
||||
- Frame time tracking
|
||||
- Draw call counting
|
||||
- Python vs C++ time split
|
||||
|
|
@ -211,7 +211,7 @@ Rendering Layer:
|
|||
- Option 2: mcrfpy.sfml submodule
|
||||
- Option 3: Direct integration
|
||||
|
||||
5. NEW - Scene transitions
|
||||
5. 105 - Scene transitions
|
||||
scene.fade_to(next_scene, duration=1.0)
|
||||
scene.slide_out(direction="left")
|
||||
```
|
||||
|
|
@ -232,10 +232,10 @@ Rendering Layer:
|
|||
3. #50 - Grid background colors
|
||||
grid.background_color = mcrfpy.Color(50, 50, 50)
|
||||
|
||||
4. NEW - Shader support (stretch goal)
|
||||
4. #106 - Shader support
|
||||
sprite.shader = "glow.frag"
|
||||
|
||||
5. NEW - Particle system (stretch goal)
|
||||
5. #107 - Particle system
|
||||
particles = mcrfpy.ParticleEmitter()
|
||||
```
|
||||
*Rationale*: This unlocks professional visual effects but is complex.
|
||||
|
|
@ -245,7 +245,7 @@ Rendering Layer:
|
|||
```
|
||||
1. #85 - Replace all "docstring" placeholders
|
||||
2. #86 - Add parameter documentation
|
||||
3. Generate .pyi type stubs for IDE support
|
||||
3. #108 - Generate .pyi type stubs for IDE support
|
||||
4. #70 - PyPI wheel preparation
|
||||
5. API reference generator tool
|
||||
```
|
||||
|
|
@ -259,7 +259,7 @@ Rendering Layer:
|
|||
|
||||
**Track A: Entity Systems**
|
||||
- Entity/Grid integration (#30)
|
||||
- Timer objects (NEW)
|
||||
- Timer objects (#103)
|
||||
- Vector/Color helpers (#93, #94)
|
||||
|
||||
**Track B: API Polish**
|
||||
|
|
@ -270,7 +270,7 @@ Rendering Layer:
|
|||
**Track C: Performance**
|
||||
- Grid culling (#52)
|
||||
- Visibility culling (part of #10)
|
||||
- Profiling tools (NEW)
|
||||
- Profiling tools (#104)
|
||||
|
||||
### 💎 **Quick Wins to Sprinkle Throughout**
|
||||
1. Color helpers (#94) - 1 hour
|
||||
|
|
@ -289,14 +289,14 @@ Rendering Layer:
|
|||
|
||||
### 🆕 **New Issues to Create**
|
||||
|
||||
1. **Timer Objects** - Pythonic timer management
|
||||
1. **Timer Objects** - Pythonic timer management (#103)
|
||||
2. **Event System Enhancement** - Mouse enter/leave, drag, right-click
|
||||
3. **Resource Manager** - Centralized asset loading
|
||||
4. **Serialization System** - Save/load game state
|
||||
5. **Scene Transitions** - Fade, slide, custom effects
|
||||
6. **Profiling Tools** - Performance metrics
|
||||
7. **Particle System** - Visual effects framework
|
||||
8. **Shader Support** - Custom rendering effects
|
||||
5. **Scene Transitions** - Fade, slide, custom effects (#105)
|
||||
6. **Profiling Tools** - Performance metrics (#104)
|
||||
7. **Particle System** - Visual effects framework (#107)
|
||||
8. **Shader Support** - Custom rendering effects (#106)
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -312,6 +312,7 @@ Rendering Layer:
|
|||
- [x] **#77** - Fix error message copy/paste bug - *Fixed*
|
||||
- [x] **#74** - Add missing `Grid.grid_y` property - *Fixed*
|
||||
- [ ] **#37** - Fix Windows build module import from "scripts" directory - *Isolated Fix*
|
||||
Issue #37 is **on hold** until we have a Windows build environment available. I actually suspect this is already fixed by the updates to the makefile, anyway.
|
||||
- [x] **Entity Property Setters** - Fix "new style getargs format" error - *Fixed*
|
||||
- [x] **Sprite Texture Setter** - Fix "error return without exception set" - *Fixed*
|
||||
- [x] **keypressScene() Validation** - Add proper error handling - *Fixed*
|
||||
|
|
@ -327,21 +328,6 @@ Rendering Layer:
|
|||
|
||||
---
|
||||
|
||||
## ✅ ALPHA 0.1 RELEASE ACHIEVED! (All Blockers Complete)
|
||||
|
||||
### ✅ All Alpha Requirements Complete!
|
||||
- [x] **#69** - Collections use Python Sequence Protocol - *Completed! (2025-07-05)*
|
||||
- [x] **#63** - Z-order rendering for UIDrawables - *Completed! (2025-07-05)*
|
||||
- [x] **#59** - Animation system for arbitrary UIDrawable fields - *Completed! (2025-07-05)*
|
||||
- [x] **#47** - New README.md for Alpha release - *Completed*
|
||||
- [x] **#3** - Remove deprecated `McRFPy_API::player_input` - *Completed*
|
||||
- [x] **#2** - Remove `registerPyAction` system - *Completed*
|
||||
|
||||
### 📋 Moved to Beta:
|
||||
- [ ] **#6** - RenderTexture concept - *Moved to Beta (not needed for Alpha)*
|
||||
|
||||
---
|
||||
|
||||
## 🗂 ISSUE TRIAGE BY SYSTEM (78 Total Issues)
|
||||
|
||||
### 🎮 Core Engine Systems
|
||||
|
|
@ -351,7 +337,7 @@ Rendering Layer:
|
|||
- [x] **#69** ⚠️ **Alpha Blocker** - Sequence Protocol refactor - *Completed! (2025-07-05)*
|
||||
|
||||
#### Python/C++ Integration (7 issues)
|
||||
- [ ] **#76** - UIEntity derived type preservation in collections - *Multiple Integrations*
|
||||
- [x] **#76** - UIEntity derived type preservation in collections - *Multiple Integrations*
|
||||
- [ ] **#71** - Drawable base class hierarchy - *Extensive Overhaul*
|
||||
- [ ] **#70** - PyPI wheel distribution - *Extensive Overhaul*
|
||||
- [~] **#32** - Executable behave like `python` command - *Extensive Overhaul* *(90% Complete: -h, -V, -c, -m, -i, script execution, sys.argv, --exec all implemented. Only stdin (-) support missing)*
|
||||
|
|
@ -360,12 +346,12 @@ Rendering Layer:
|
|||
- [ ] **#46** - Subinterpreter threading tests - *Multiple Integrations*
|
||||
|
||||
#### UI/Rendering System (12 issues)
|
||||
- [ ] **#63** ⚠️ **Alpha Blocker** - Z-order for UIDrawables - *Multiple Integrations*
|
||||
- [x] **#63** ⚠️ **Alpha Blocker** - Z-order for UIDrawables - *Multiple Integrations*
|
||||
- [x] **#59** ⚠️ **Alpha Blocker** - Animation system - *Completed! (2025-07-05)*
|
||||
- [ ] **#6** ⚠️ **Alpha Blocker** - RenderTexture for all UIDrawables - *Extensive Overhaul*
|
||||
- [ ] **#10** - UIDrawable visibility/AABB system - *Extensive Overhaul*
|
||||
- [ ] **#8** - UIGrid RenderTexture viewport sizing - *Multiple Integrations*
|
||||
- [ ] **#9** - UIGrid RenderTexture resize handling - *Multiple Integrations*
|
||||
- [x] **#9** - UIGrid RenderTexture resize handling - *Multiple Integrations*
|
||||
- [ ] **#52** - UIGrid skip out-of-bounds entities - *Isolated Fix*
|
||||
- [ ] **#50** - UIGrid background color field - *Isolated Fix*
|
||||
- [ ] **#19** - Sprite get/set texture methods - *Multiple Integrations*
|
||||
|
|
@ -378,7 +364,7 @@ Rendering Layer:
|
|||
- [ ] **#67** - Grid stitching for infinite worlds - *Extensive Overhaul*
|
||||
- [ ] **#15** - UIGridPointState cleanup and standardization - *Multiple Integrations*
|
||||
- [ ] **#20** - UIGrid get_grid_size standardization - *Multiple Integrations*
|
||||
- [ ] **#12** - GridPoint/GridPointState forbid direct init - *Isolated Fix*
|
||||
- [x] **#12** - GridPoint/GridPointState forbid direct init - *Isolated Fix*
|
||||
|
||||
#### Scene/Window Management (5 issues)
|
||||
- [ ] **#61** - Scene object encapsulating key callbacks - *Extensive Overhaul*
|
||||
|
|
@ -411,7 +397,7 @@ Rendering Layer:
|
|||
### 📚 Demo & Documentation
|
||||
|
||||
#### Documentation (2 issues)
|
||||
- [ ] **#47** ⚠️ **Alpha Blocker** - Alpha release README.md - *Isolated Fix*
|
||||
- [x] **#47** ⚠️ **Alpha Blocker** - Alpha release README.md - *Isolated Fix*
|
||||
- [ ] **#48** - Dependency compilation documentation - *Isolated Fix*
|
||||
|
||||
#### Demo Projects (6 issues)
|
||||
|
|
@ -424,83 +410,6 @@ Rendering Layer:
|
|||
|
||||
---
|
||||
|
||||
## 🎯 RECOMMENDED TRIAGE SEQUENCE
|
||||
|
||||
### Phase 1: Foundation Stabilization (1-2 weeks)
|
||||
```
|
||||
✅ COMPLETE AS OF 2025-01-03:
|
||||
1. ✅ Fix Grid Segfault - Grid now supports None/null textures
|
||||
2. ✅ Fix #78 Middle Mouse Click bug - Event type checking added
|
||||
3. ✅ Fix Entity/Sprite property setters - PyVector conversion fixed
|
||||
4. ✅ Fix #77 - Error message copy/paste bug fixed
|
||||
5. ✅ Fix #74 - Grid.grid_y property added
|
||||
6. ✅ Fix keypressScene() validation - Now rejects non-callable
|
||||
7. ✅ Fix Sprite texture setter - No longer returns error without exception
|
||||
8. ✅ Fix PyVector x/y properties - Were returning None
|
||||
|
||||
REMAINING IN PHASE 1:
|
||||
9. ✅ Fix #73 - Entity.index() method for removal
|
||||
10. ✅ Fix #27 - EntityCollection.extend() method
|
||||
11. ✅ Fix #33 - Sprite index validation
|
||||
12. Alpha Blockers (#3, #2) - Remove deprecated methods
|
||||
```
|
||||
|
||||
### Phase 2: Alpha Release Preparation (4-6 weeks)
|
||||
```
|
||||
1. Collections Sequence Protocol (#69) - Major refactor, alpha blocker
|
||||
2. Z-order rendering (#63) - Essential UI improvement, alpha blocker
|
||||
3. RenderTexture overhaul (#6) - Core rendering improvement, alpha blocker
|
||||
4. ✅ Animation system (#59) - COMPLETE! 30+ easing functions, all UI properties
|
||||
5. ✅ Documentation (#47) - README.md complete, #48 dependency docs remaining
|
||||
```
|
||||
|
||||
### Phase 3: Engine Architecture (6-8 weeks)
|
||||
```
|
||||
1. Drawable base class (#71) - Clean up inheritance patterns
|
||||
2. Entity/Grid associations (#30) - Proper lifecycle management
|
||||
3. Window object (#34) - Scene/window architecture
|
||||
4. UIDrawable visibility (#10) - Rendering optimization
|
||||
```
|
||||
|
||||
### Phase 4: Advanced Features (8-12 weeks)
|
||||
```
|
||||
1. Grid strict mode (#16) - Entity knowledge/visibility system
|
||||
2. SFML/TCOD integration (#14, #35) - Expose native libraries
|
||||
3. Scene object refactor (#61) - Better input handling
|
||||
4. Name-based finding (#39, #40, #41) - UI element management
|
||||
5. Demo projects (#54, #55, #36) - Showcase capabilities
|
||||
```
|
||||
|
||||
### Ongoing/Low Priority
|
||||
```
|
||||
- PyPI distribution (#70) - Community access
|
||||
- Multiple windows (#62) - Advanced use cases
|
||||
- Grid stitching (#67) - Infinite world support
|
||||
- Accessibility (#45) - Important but not blocking
|
||||
- Subinterpreter tests (#46) - Performance research
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 DIFFICULTY ASSESSMENT SUMMARY
|
||||
|
||||
**Isolated Fixes (24 issues)**: Single file/function changes
|
||||
- Bugfixes: #77, #74, #37, #78
|
||||
- Simple features: #73, #52, #50, #33, #17, #38, #42, #27, #28, #26, #12, #1
|
||||
- Cleanup: #3, #2, #21, #47, #48
|
||||
|
||||
**Multiple Integrations (28 issues)**: Cross-system changes
|
||||
- UI/Rendering: #63, #8, #9, #19, #39, #40, #41
|
||||
- Grid/Entity: #15, #20, #76, #46, #49, #75
|
||||
- Features: #54, #55, #53, #45, #7
|
||||
|
||||
**Extensive Overhauls (26 issues)**: Major architectural changes
|
||||
- Core Systems: #69, #59, #6, #10, #30, #16, #67, #61, #34, #62
|
||||
- Integration: #71, #70, #32, #35, #14
|
||||
- Advanced: #36, #65
|
||||
|
||||
---
|
||||
|
||||
## 🎮 STRATEGIC DIRECTION
|
||||
|
||||
### Engine Philosophy Maintained
|
||||
|
|
@ -514,13 +423,6 @@ REMAINING IN PHASE 1:
|
|||
3. **Resource Management**: RAII everywhere, proper lifecycle handling
|
||||
4. **Multi-Platform**: Windows/Linux feature parity maintained
|
||||
|
||||
### Success Metrics for Alpha 0.1
|
||||
- [ ] All Alpha Blocker issues resolved (5 of 7 complete: #69, #59, #47, #3, #2)
|
||||
- [ ] Grid point iteration complete and tested
|
||||
- [ ] Clean build on Windows and Linux
|
||||
- [ ] Documentation sufficient for external developers
|
||||
- [ ] At least one compelling demo (Wumpus or Jupyter integration)
|
||||
|
||||
---
|
||||
|
||||
## 📚 REFERENCES & CONTEXT
|
||||
|
|
@ -544,8 +446,3 @@ REMAINING IN PHASE 1:
|
|||
---
|
||||
|
||||
*Last Updated: 2025-07-05*
|
||||
*Total Open Issues: 62* (from original 78)
|
||||
*Alpha Status: 🎉 COMPLETE! All blockers resolved!*
|
||||
*Achievement Unlocked: Alpha 0.1 Release Ready*
|
||||
*Next Phase: Beta features including RenderTexture (#6), advanced UI patterns, and platform polish*
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue