77 lines
1.9 KiB
C#
77 lines
1.9 KiB
C#
using RpgRoller.Contracts;
|
|
|
|
namespace RpgRoller.Components.Pages;
|
|
|
|
public partial class Home
|
|
{
|
|
private async Task OnSkillCreatedAsync(Guid _)
|
|
{
|
|
await RefreshCampaignScopeAsync();
|
|
SetStatus("Skill created.", false);
|
|
}
|
|
|
|
private async Task OnSkillUpdatedAsync(Guid skillId)
|
|
{
|
|
SelectedSkillId = skillId;
|
|
await RefreshCampaignScopeAsync();
|
|
SetStatus("Skill updated.", false);
|
|
}
|
|
|
|
private async Task RollSelectedSkillAsync()
|
|
{
|
|
if (SelectedSkill is null)
|
|
{
|
|
SetStatus("Select a skill to roll.", true);
|
|
return;
|
|
}
|
|
|
|
IsMutating = true;
|
|
try
|
|
{
|
|
LastRoll = await RequestAsync<RollResult>(
|
|
"POST",
|
|
$"/api/skills/{SelectedSkill.Id}/roll",
|
|
new RollSkillRequest(RollVisibility));
|
|
|
|
await RefreshCampaignScopeAsync();
|
|
SetStatus("Roll recorded.", false);
|
|
Announce("Roll result updated.");
|
|
}
|
|
catch (ApiRequestException ex)
|
|
{
|
|
SetStatus(ex.Message, true);
|
|
}
|
|
finally
|
|
{
|
|
IsMutating = false;
|
|
}
|
|
}
|
|
|
|
private Task OnRollVisibilityChanged(string visibility)
|
|
{
|
|
RollVisibility = string.Equals(visibility, "private", StringComparison.OrdinalIgnoreCase) ? "private" : "public";
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
private void SelectSkill(Guid skillId)
|
|
{
|
|
SelectedSkillId = skillId;
|
|
}
|
|
|
|
private bool CanEditSkill(SkillSummary skill)
|
|
{
|
|
if (SelectedCampaign is null)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
var character = SelectedCampaign.Characters.FirstOrDefault(c => c.Id == skill.CharacterId);
|
|
return character is not null && CanEditCharacter(character);
|
|
}
|
|
|
|
private bool CanRollSkill(SkillSummary skill)
|
|
{
|
|
return CanEditSkill(skill);
|
|
}
|
|
}
|