feat: implement Music and SoundEffects systems for enhanced audio management, including background music and sound effects playback
All checks were successful
Build and Publish Docker Image / Build and Validate (pull_request) Successful in 10s
All checks were successful
Build and Publish Docker Image / Build and Validate (pull_request) Successful in 10s
This commit is contained in:
parent
143072f0a0
commit
2213f64e60
16 changed files with 739 additions and 14 deletions
|
|
@ -179,7 +179,6 @@ export class RenderSystem extends System {
|
|||
let frames = spriteData[sprite.animationState as string] || spriteData[AnimationState.IDLE];
|
||||
|
||||
if (!frames || !Array.isArray(frames)) {
|
||||
// Fallback to default slime animation if data structure is unexpected
|
||||
frames = SpriteLibrary[EntityType.SLIME][AnimationState.IDLE];
|
||||
}
|
||||
|
||||
|
|
@ -414,28 +413,24 @@ export class RenderSystem extends System {
|
|||
*/
|
||||
drawGlowEffect(sprite: Sprite): void {
|
||||
const ctx = this.ctx;
|
||||
const time = Date.now() * 0.001; // Time in seconds for pulsing
|
||||
const pulse = 0.5 + Math.sin(time * 3) * 0.3; // Pulsing between 0.2 and 0.8
|
||||
const time = Date.now() * 0.001;
|
||||
const pulse = 0.5 + Math.sin(time * 3) * 0.3;
|
||||
const baseRadius = Math.max(sprite.width, sprite.height) / 2;
|
||||
const glowRadius = baseRadius + 4 + pulse * 2;
|
||||
|
||||
// Create radial gradient for soft glow
|
||||
const gradient = ctx.createRadialGradient(0, 0, baseRadius, 0, 0, glowRadius);
|
||||
gradient.addColorStop(0, `rgba(255, 255, 255, ${0.4 * pulse})`);
|
||||
gradient.addColorStop(0.5, `rgba(0, 230, 255, ${0.3 * pulse})`);
|
||||
gradient.addColorStop(1, 'rgba(0, 230, 255, 0)');
|
||||
|
||||
// Draw multiple layers for a softer glow effect
|
||||
ctx.save();
|
||||
ctx.globalCompositeOperation = 'screen';
|
||||
|
||||
// Outer glow layer
|
||||
ctx.fillStyle = gradient;
|
||||
ctx.beginPath();
|
||||
ctx.arc(0, 0, glowRadius, 0, Math.PI * 2);
|
||||
ctx.fill();
|
||||
|
||||
// Inner bright core
|
||||
const innerGradient = ctx.createRadialGradient(0, 0, 0, 0, 0, baseRadius * 0.6);
|
||||
innerGradient.addColorStop(0, `rgba(255, 255, 255, ${0.6 * pulse})`);
|
||||
innerGradient.addColorStop(1, 'rgba(0, 230, 255, 0)');
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue