You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
classGameManagerextendsEventEmitter{constructor(){super();}// Emit eventonPlayerDamage(amount){this.emit('playerDamaged',{ amount });}}constgame=newGameManager();// Listen to eventgame.on('playerDamaged',(data)=>{console.log(`Damage: ${data.amount}`);});// One-time listenergame.once('gameOver',()=>{console.log('Game ended!');});// Remove listenerconsthandler=(data)=>console.log(data);game.on('event',handler);game.off('event',handler);// Remove all listenersgame.off('event');
Common Events
// Player eventsthis.emit('playerDamaged',{ amount, source });this.emit('playerHealed',{ amount });this.emit('playerDied',{});this.emit('playerLevelUp',{ level });// Combat eventsthis.emit('enemySpawned',{ enemy });this.emit('enemyKilled',{ enemy, xp });this.emit('projectileFired',{ projectile });// Game eventsthis.emit('gameStarted',{});this.emit('gamePaused',{});this.emit('gameOver',{ score });
🔄 ObjectPool Cheat Sheet
Basic Usage
// Create poolconstbulletPool=newObjectPool(()=>createBullet(),// Factory function50,// Initial size200// Max size (optional));// Get object from poolconstbullet=bulletPool.acquire();if(bullet){bullet.fire(position,direction);}// Return to poolbulletPool.release(bullet);// Get statsconsole.log(bulletPool.stats);// { total: 50, available: 45, inUse: 5 }
With Lifecycle Hooks
constparticlePool=newObjectPool(()=>{constparticle=createParticle();return{mesh: particle,velocity: newBABYLON.Vector3(),// Called when acquiredonAcquire(){this.mesh.setEnabled(true);},// Called when releasedonRelease(){this.mesh.setEnabled(false);},// Called when releasedreset(){this.velocity.set(0,0,0);this.mesh.position.set(0,0,0);}};},100);
importgameStoragefrom'./src/utils/storage/GameStorageService.js';// Save character (auto-syncs to cloud if signed in)awaitgameStorage.saveCharacter('hero1',{name: 'Aragorn',level: 10,health: 100,position: {x: 0,y: 0,z: 0}});// Load character (gets newest from cloud or local)const{ data, source }=awaitgameStorage.loadCharacter('hero1');console.log(`Loaded from ${source}`);// 'cloud' or 'local'// Save progressawaitgameStorage.saveProgress({currentLevel: 5,completedQuests: ['quest1','quest2'],unlockedAreas: ['forest','cave']});// Load progressconst{ data }=awaitgameStorage.loadProgress();// List charactersconstcharacters=awaitgameStorage.listCharacters();// [{ id: 'hero1', name: 'Aragorn', level: 10, lastModified: 123456 }]// Delete characterawaitgameStorage.deleteCharacter('hero1');// Export/ImportconstexportData=awaitgameStorage.exportCharacter('hero1');awaitgameStorage.importCharacter(exportData,'hero2');