174 lines
4.5 KiB
C#
174 lines
4.5 KiB
C#
using RpgRoller.Contracts;
|
|
|
|
namespace RpgRoller.Components.Pages;
|
|
|
|
public partial class Home
|
|
{
|
|
private void SyncSelectedCharacter()
|
|
{
|
|
if (SelectedCampaign is null || SelectedCampaign.Characters.Count == 0)
|
|
{
|
|
SelectedCharacterId = null;
|
|
return;
|
|
}
|
|
|
|
var candidateIds = SelectedCampaign.Characters.Select(c => c.Id).ToHashSet();
|
|
if (SelectedCharacterId.HasValue && candidateIds.Contains(SelectedCharacterId.Value))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (ActiveCharacterId.HasValue && candidateIds.Contains(ActiveCharacterId.Value))
|
|
{
|
|
SelectedCharacterId = ActiveCharacterId;
|
|
return;
|
|
}
|
|
|
|
SelectedCharacterId = SelectedCampaign.Characters[0].Id;
|
|
}
|
|
|
|
private void SyncSelectedSkill()
|
|
{
|
|
var skills = SelectedCharacterSkills;
|
|
if (skills.Count == 0)
|
|
{
|
|
SelectedSkillId = null;
|
|
return;
|
|
}
|
|
|
|
if (SelectedSkillId.HasValue && skills.Any(skill => skill.Id == SelectedSkillId.Value))
|
|
{
|
|
return;
|
|
}
|
|
|
|
SelectedSkillId = skills[0].Id;
|
|
}
|
|
|
|
private string OwnerLabel(Guid ownerUserId)
|
|
{
|
|
if (User is not null && ownerUserId == User.Id)
|
|
{
|
|
return "You";
|
|
}
|
|
|
|
if (SelectedCampaign is not null && ownerUserId == SelectedCampaign.Gm.Id)
|
|
{
|
|
return $"{SelectedCampaign.Gm.DisplayName} (GM)";
|
|
}
|
|
|
|
return ownerUserId.ToString("N")[..8];
|
|
}
|
|
|
|
private string CharacterLabel(Guid characterId)
|
|
{
|
|
return SelectedCampaign?.Characters.FirstOrDefault(c => c.Id == characterId)?.Name ?? "Hidden character";
|
|
}
|
|
|
|
private string SkillLabel(Guid skillId)
|
|
{
|
|
return SelectedCampaign?.Skills.FirstOrDefault(s => s.Id == skillId)?.Name ?? "Hidden skill";
|
|
}
|
|
|
|
private string SkillDefinitionLabel(SkillSummary skill)
|
|
{
|
|
if (!string.Equals(SelectedCampaign?.RulesetId, "d6", StringComparison.OrdinalIgnoreCase))
|
|
{
|
|
return skill.DiceRollDefinition;
|
|
}
|
|
|
|
var fumbleLabel = skill.AllowFumble ? "fumble on" : "fumble off";
|
|
return $"{skill.DiceRollDefinition} | wild {skill.WildDice}, {fumbleLabel}";
|
|
}
|
|
|
|
private string RollerLabel(CampaignLogEntry entry)
|
|
{
|
|
if (User is not null && entry.RollerUserId == User.Id)
|
|
{
|
|
return "You";
|
|
}
|
|
|
|
if (SelectedCampaign is not null && entry.RollerUserId == SelectedCampaign.Gm.Id)
|
|
{
|
|
return "GM";
|
|
}
|
|
|
|
return "Participant";
|
|
}
|
|
|
|
private string VisibilityLabel(CampaignLogEntry entry)
|
|
{
|
|
if (!string.Equals(entry.Visibility, "private", StringComparison.OrdinalIgnoreCase))
|
|
{
|
|
return "Public";
|
|
}
|
|
|
|
if (User is not null && entry.RollerUserId == User.Id)
|
|
{
|
|
return "Private (you)";
|
|
}
|
|
|
|
return IsCurrentUserGm ? "Private (GM view)" : "Private";
|
|
}
|
|
|
|
private string VisibilityBadgeCssClass(CampaignLogEntry entry)
|
|
{
|
|
if (!string.Equals(entry.Visibility, "private", StringComparison.OrdinalIgnoreCase))
|
|
{
|
|
return "public";
|
|
}
|
|
|
|
if (User is not null && entry.RollerUserId == User.Id)
|
|
{
|
|
return "private-self";
|
|
}
|
|
|
|
return IsCurrentUserGm ? "private-gm" : "private-generic";
|
|
}
|
|
|
|
private string LogEntryCssClass(CampaignLogEntry entry)
|
|
{
|
|
if (!string.Equals(entry.Visibility, "private", StringComparison.OrdinalIgnoreCase))
|
|
{
|
|
return "public";
|
|
}
|
|
|
|
if (User is not null && entry.RollerUserId == User.Id)
|
|
{
|
|
return "private-self";
|
|
}
|
|
|
|
return IsCurrentUserGm ? "private-gm" : "private-generic";
|
|
}
|
|
|
|
private void ClearAuthenticatedState()
|
|
{
|
|
User = null;
|
|
ActiveCharacterId = null;
|
|
SelectedCampaignId = null;
|
|
SelectedCampaign = null;
|
|
Campaigns = [];
|
|
CampaignLog = [];
|
|
SelectedCharacterId = null;
|
|
SelectedSkillId = null;
|
|
LastRoll = null;
|
|
ShowCreateCharacterModal = false;
|
|
ShowEditCharacterModal = false;
|
|
CreateCharacterInitialModel = new();
|
|
EditCharacterInitialModel = new();
|
|
CreateCharacterFormVersion = 0;
|
|
EditCharacterFormVersion = 0;
|
|
}
|
|
|
|
private void SetStatus(string message, bool isError)
|
|
{
|
|
StatusMessage = message;
|
|
StatusIsError = isError;
|
|
Announce(message);
|
|
}
|
|
|
|
private void Announce(string message)
|
|
{
|
|
LiveAnnouncement = message;
|
|
}
|
|
}
|