Skip to content

Releases: achtaitaipai/odyc

v0.0.125

Choose a tag to compare

@achtaitaipai achtaitaipai released this 09 Aug 08:28
b013693

What's Changed

New Contributors

Full Changelog: v0.0.123...v0.0.125

v0.0.123

Choose a tag to compare

@achtaitaipai achtaitaipai released this 05 Jul 12:14

Full Changelog: v0.0.122...v0.0.123

v0.0.122

Choose a tag to compare

@achtaitaipai achtaitaipai released this 04 Jul 10:35
67b5c26

What's Changed

Full Changelog: v0.0.121...v0.0.122

v0.0.121

Choose a tag to compare

@achtaitaipai achtaitaipai released this 30 Jun 22:07
279a347

What's Changed

New Contributors

Full Changelog: v0.0.120...v0.0.121

v0.0.120

Choose a tag to compare

@achtaitaipai achtaitaipai released this 26 Jun 14:55

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

Choose a tag to compare

@achtaitaipai achtaitaipai released this 23 Jun 09:34

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

Choose a tag to compare

@achtaitaipai achtaitaipai released this 21 Jun 21:23

What's Changed

Full Changelog: v0.0.116...v0.0.117

v0.0.116

Choose a tag to compare

@achtaitaipai achtaitaipai released this 21 Jun 16:22

Full Changelog: v0.0.115...v0.0.116

v0.0.115

Choose a tag to compare

@achtaitaipai achtaitaipai released this 21 Jun 15:25

Full Changelog: v0.0.114...v0.0.115

v0.0.113

Choose a tag to compare

@achtaitaipai achtaitaipai released this 20 Jun 18:17
  • feat vec2 helper
  • feat charToSprite helper
  • feat game.clear