Files
RpgRoller/RpgRoller/Domain/GameModels.cs
2026-02-26 11:08:02 +01:00

73 lines
2.1 KiB
C#

namespace RpgRoller.Domain;
public enum RulesetKind
{
D6,
Dnd5e
}
public enum RollVisibility
{
Public,
Private
}
public sealed class UserAccount
{
public required Guid Id { get; init; }
public required string Username { get; init; }
public required string UsernameNormalized { get; init; }
public required string PasswordHash { get; set; }
public required string DisplayName { get; set; }
public Guid? ActiveCharacterId { get; set; }
}
public sealed class UserSession
{
public required string Token { get; init; }
public required Guid UserId { get; init; }
public required DateTimeOffset CreatedAtUtc { get; init; }
}
public sealed class Campaign
{
public required Guid Id { get; init; }
public required Guid GmUserId { get; init; }
public required string Name { get; set; }
public required RulesetKind Ruleset { get; set; }
public long Version { get; set; }
}
public sealed class Character
{
public required Guid Id { get; init; }
public required Guid OwnerUserId { get; init; }
public required Guid CampaignId { get; set; }
public required string Name { get; set; }
}
public sealed class Skill
{
public required Guid Id { get; init; }
public required Guid CharacterId { get; set; }
public required string Name { get; set; }
public required string DiceRollDefinition { get; set; }
public required int WildDice { get; set; }
public required bool AllowFumble { get; set; }
}
public sealed class RollLogEntry
{
public required Guid Id { get; init; }
public required Guid CampaignId { get; init; }
public required Guid CharacterId { get; init; }
public required Guid SkillId { get; init; }
public required Guid RollerUserId { get; init; }
public required RollVisibility Visibility { get; init; }
public required int Result { get; init; }
public required string Breakdown { get; init; }
public required string Dice { get; init; }
public required DateTimeOffset TimestampUtc { get; init; }
}
public sealed record DiceExpression(int DiceCount, int Sides, int Modifier, string Canonical);