Releases: achtaitaipai/odyc
Releases · achtaitaipai/odyc
Release list
v0.0.125
What's Changed
- Feature: add
onCollideStartby @gibsonsmog in #50 - Feature: add
onEnterStartby @gibsonsmog in #50
New Contributors
- @gibsonsmog made their first contribution in #50
Full Changelog: v0.0.123...v0.0.125
v0.0.123
Full Changelog: v0.0.122...v0.0.123
v0.0.122
What's Changed
- Fix/stable onturn events by @achtaitaipai in #46
- Feat/cell.move at by @achtaitaipai in #47
- feat: add sendMessageToCells API for cell communication by @achtaitaipai in #45
Full Changelog: v0.0.121...v0.0.122
v0.0.121
What's Changed
- Feat/input repeat acceleration by @achtaitaipai in #37
- feat: add glow filter by @neagix in #39
- Feat/cells system improvements by @achtaitaipai in #41
- Fix/rerender when map is updated by @achtaitaipai in #42
- feat: add git commit hash to bundled module by @achtaitaipai in #44
- fix: do not run onTurn events when map changed by @neagix in #43
New Contributors
Full Changelog: v0.0.120...v0.0.121
v0.0.120
What's Changed
- Fix: flaky tests by @Meldiron in #33
- feat: monorepo-structure by @achtaitaipai in #34
- feat: add manhattanDistance method to vec2 class
- feat: pass position parameter to template functions
- feat: support array of symbols in getCells query
- feat: add bulk cell operations and improve type system
✨ New Features
🔍 Query-Based Cell Operations
// Find cells by properties
game.getCells({ solid: true, visible: false })
// Filter by coordinates
game.getCells({ x: 5, y: 10 })
// Multiple symbol support
game.getCells({ symbol: ['@', '#'] })🎯 Bulk Cell Operations
Perform operations on multiple cells simultaneously:
// Update multiple cells at once
game.updateCells({ symbol: '!' }, { sprite: 2, dialog: 'Powered up!' })
// Convert cell types in bulk
game.setCells({ solid: true }, '#')
// Remove cells by criteria
game.clearCells({ symbol: ['#', '!'] })🎨 Dynamic Template Functions
Template functions now receive position parameters for context-aware behavior:
const templates = {
'#': (position) => ({
sprite: position[0] > 10 ? 3 : 4,
dialog: `Found at ${position}!`,
}),
}📐 Manhattan Distance for vec2
const distance = vec2([0, 0]).manhattanDistance([3, 4]) // 7🔄 Migration & Compatibility
All existing code continues to work without changes. Deprecated methods are marked with JSDoc warnings:
// ✅ Still works (deprecated)
game.getAll('#')
game.setAll('#', { sprite: 2 })
// 🚀 New recommended approach
game.getCells({ symbol: '#' })
game.updateCells({ symbol: '#' }, { sprite: 2 })Full Changelog: v0.0.118...v0.0.120
v0.0.118
Odyc.js v0.0.118 - Sprite Merging & Enhanced Dialog System
✨ New Features
Sprite Composition System
mergeSprites()helper - Merge multiple sprites with transparency layering for dynamic character equipment, visual effects, and sprite composition- Perfect for RPG-style character customization and layered visual elements
Render Synchronization
tick()system - New render synchronization system for smoother game state updates
Enhanced Dialog Experience
- Named dialog speed constants - Use
'SLOW','NORMAL','FAST'instead of magic numbers - Improved timing separation between character typing and animation frames
🤝 Contributors
- @Meldiron - Dialog speed improvements and render callbacks
- Enhanced sprite system and core improvements
Full Changelog: v0.0.117...v0.0.118
v0.0.117
What's Changed
- Feat: Player visible param by @Meldiron in #26
- Tests: openMessage + player.onInput by @Meldiron in #25
Full Changelog: v0.0.116...v0.0.117
v0.0.116
Full Changelog: v0.0.115...v0.0.116
v0.0.115
Full Changelog: v0.0.114...v0.0.115
v0.0.113
- feat vec2 helper
- feat charToSprite helper
- feat game.clear