inial impl
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
namespace Faraon.Client.Services;
|
||||
|
||||
using Microsoft.JSInterop;
|
||||
using Faraon.Core.Models;
|
||||
|
||||
public class FxService
|
||||
|
||||
{
|
||||
private readonly IJSRuntime _js;
|
||||
|
||||
public FxService(IJSRuntime js)
|
||||
{
|
||||
_js = js;
|
||||
}
|
||||
|
||||
public async ValueTask InitParticlesAsync(string canvasId = "particle-canvas")
|
||||
{
|
||||
try { await _js.InvokeVoidAsync("FaraonFx.initParticles", canvasId); } catch { }
|
||||
}
|
||||
|
||||
public async ValueTask PlayCardSnapAsync()
|
||||
{
|
||||
try { await _js.InvokeVoidAsync("FaraonFx.playCardSnap"); } catch { }
|
||||
}
|
||||
|
||||
public async ValueTask PlayCardDrawAsync()
|
||||
{
|
||||
try { await _js.InvokeVoidAsync("FaraonFx.playCardDraw"); } catch { }
|
||||
}
|
||||
|
||||
public async ValueTask PlaySevenStackAsync(int level)
|
||||
{
|
||||
try
|
||||
{
|
||||
await _js.InvokeVoidAsync("FaraonFx.playSevenStack", level);
|
||||
await _js.InvokeVoidAsync("FaraonFx.triggerFireParticles", null, null, 25 * level);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
public async ValueTask PlayAceFreezeAsync()
|
||||
{
|
||||
try
|
||||
{
|
||||
await _js.InvokeVoidAsync("FaraonFx.playAceFreeze");
|
||||
await _js.InvokeVoidAsync("FaraonFx.triggerIceParticles", null, null, 35);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
public async ValueTask PlayHornikChimeAsync()
|
||||
{
|
||||
try { await _js.InvokeVoidAsync("FaraonFx.playHornikChime"); } catch { }
|
||||
}
|
||||
|
||||
public async ValueTask PlayBurnExplosionAsync()
|
||||
{
|
||||
try
|
||||
{
|
||||
await _js.InvokeVoidAsync("FaraonFx.playBurnExplosion");
|
||||
await _js.InvokeVoidAsync("FaraonFx.triggerBurnExplosion", null, null);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
public async ValueTask PlayVictoryAsync()
|
||||
{
|
||||
try
|
||||
{
|
||||
await _js.InvokeVoidAsync("FaraonFx.playVictory");
|
||||
await _js.InvokeVoidAsync("FaraonFx.triggerConfetti");
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
public async ValueTask PlayHeartbeatAsync()
|
||||
{
|
||||
try { await _js.InvokeVoidAsync("FaraonFx.playHeartbeat"); } catch { }
|
||||
}
|
||||
|
||||
public async ValueTask TriggerScreenShakeAsync(int intensity = 5)
|
||||
{
|
||||
try { await _js.InvokeVoidAsync("FaraonFx.triggerScreenShake", intensity); } catch { }
|
||||
}
|
||||
|
||||
public async ValueTask AnimateCardPlayAsync(string sourcePosition, Card card, string deck = "original")
|
||||
{
|
||||
try
|
||||
{
|
||||
var cardInfo = new
|
||||
{
|
||||
deck = deck,
|
||||
suit = card.Suit.ToString(),
|
||||
rank = card.Rank.ToString(),
|
||||
shortName = card.ShortName,
|
||||
suitSymbol = card.SuitSymbol,
|
||||
suitColor = card.SuitColor,
|
||||
rankName = card.RankName,
|
||||
suitName = card.SuitName,
|
||||
isHornik = card.IsHornik,
|
||||
isRedSeven = card.IsRedSeven
|
||||
};
|
||||
await _js.InvokeVoidAsync("FaraonFx.animateCardPlay", sourcePosition, cardInfo);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
public async ValueTask AnimateCardDrawAsync(string targetPosition, string deck = "original")
|
||||
{
|
||||
try
|
||||
{
|
||||
await _js.InvokeVoidAsync("FaraonFx.animateCardDraw", targetPosition, deck);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
public async ValueTask<bool> ToggleMuteAsync()
|
||||
{
|
||||
try { return await _js.InvokeAsync<bool>("FaraonFx.toggleMute"); } catch { return false; }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user