Generalize Rolemaster standard dice parsing
This commit is contained in:
@@ -22,13 +22,11 @@ public partial class CharacterPanel
|
||||
SkillGroupId = selectedGroup?.Id.ToString() ?? string.Empty,
|
||||
WildDice = selectedGroup?.WildDice ?? (IsD6Ruleset ? 1 : 0),
|
||||
AllowFumble = selectedGroup?.AllowFumble ?? IsD6Ruleset,
|
||||
FumbleRange = selectedGroup?.FumbleRange,
|
||||
RolemasterRollType = RulesetFormHelpers.InferRolemasterRollType(selectedGroup?.DiceRollDefinition),
|
||||
RolemasterModifier = RulesetFormHelpers.InferRolemasterModifier(selectedGroup?.DiceRollDefinition)
|
||||
FumbleRange = selectedGroup?.FumbleRange
|
||||
};
|
||||
|
||||
if (IsRolemasterRuleset && string.IsNullOrWhiteSpace(CreateSkillInitialModel.DiceRollDefinition))
|
||||
CreateSkillInitialModel.DiceRollDefinition = RulesetFormHelpers.BuildRolemasterExpression(CreateSkillInitialModel.RolemasterRollType, CreateSkillInitialModel.RolemasterModifier);
|
||||
CreateSkillInitialModel.DiceRollDefinition = "d100";
|
||||
|
||||
CreateSkillFormVersion++;
|
||||
ShowCreateSkillModal = true;
|
||||
@@ -45,9 +43,7 @@ public partial class CharacterPanel
|
||||
SkillGroupId = skill.SkillGroupId?.ToString() ?? string.Empty,
|
||||
WildDice = skill.WildDice,
|
||||
AllowFumble = skill.AllowFumble,
|
||||
FumbleRange = skill.FumbleRange,
|
||||
RolemasterRollType = RulesetFormHelpers.InferRolemasterRollType(skill.DiceRollDefinition),
|
||||
RolemasterModifier = RulesetFormHelpers.InferRolemasterModifier(skill.DiceRollDefinition)
|
||||
FumbleRange = skill.FumbleRange
|
||||
};
|
||||
|
||||
EditSkillFormVersion++;
|
||||
@@ -113,10 +109,8 @@ public partial class CharacterPanel
|
||||
SkillGroupState.Model.WildDice = IsD6Ruleset ? 1 : 0;
|
||||
SkillGroupState.Model.AllowFumble = IsD6Ruleset;
|
||||
SkillGroupState.Model.FumbleRange = null;
|
||||
SkillGroupState.Model.RolemasterRollType = RulesetFormHelpers.RolemasterRollTypes.Initiative;
|
||||
SkillGroupState.Model.RolemasterModifier = 0;
|
||||
if (IsRolemasterRuleset)
|
||||
SynchronizeSkillGroupExpression();
|
||||
SkillGroupState.Model.DiceRollDefinition = "d100";
|
||||
SkillGroupState.ResetValidation();
|
||||
ShowCreateSkillGroupModal = true;
|
||||
}
|
||||
@@ -130,8 +124,6 @@ public partial class CharacterPanel
|
||||
SkillGroupState.Model.WildDice = skillGroup.WildDice;
|
||||
SkillGroupState.Model.AllowFumble = skillGroup.AllowFumble;
|
||||
SkillGroupState.Model.FumbleRange = skillGroup.FumbleRange;
|
||||
SkillGroupState.Model.RolemasterRollType = RulesetFormHelpers.InferRolemasterRollType(skillGroup.DiceRollDefinition);
|
||||
SkillGroupState.Model.RolemasterModifier = RulesetFormHelpers.InferRolemasterModifier(skillGroup.DiceRollDefinition);
|
||||
NormalizeSkillGroupFumbleRange();
|
||||
SkillGroupState.ResetValidation();
|
||||
ShowEditSkillGroupModal = true;
|
||||
@@ -325,36 +317,7 @@ public partial class CharacterPanel
|
||||
{
|
||||
SkillGroupState.Model.DiceRollDefinition = args.Value?.ToString() ?? string.Empty;
|
||||
if (IsRolemasterRuleset)
|
||||
{
|
||||
SkillGroupState.Model.RolemasterRollType = RulesetFormHelpers.InferRolemasterRollType(SkillGroupState.Model.DiceRollDefinition);
|
||||
SkillGroupState.Model.RolemasterModifier = RulesetFormHelpers.InferRolemasterModifier(SkillGroupState.Model.DiceRollDefinition);
|
||||
NormalizeSkillGroupFumbleRange();
|
||||
}
|
||||
}
|
||||
|
||||
private void OnSkillGroupRolemasterRollTypeChanged(ChangeEventArgs args)
|
||||
{
|
||||
SkillGroupState.Model.RolemasterRollType = args.Value?.ToString() ?? RulesetFormHelpers.RolemasterRollTypes.Initiative;
|
||||
NormalizeSkillGroupFumbleRange();
|
||||
SynchronizeSkillGroupExpression();
|
||||
}
|
||||
|
||||
private void OnSkillGroupRolemasterModifierChanged(ChangeEventArgs args)
|
||||
{
|
||||
var rawValue = args.Value?.ToString();
|
||||
if (!int.TryParse(rawValue, NumberStyles.Integer, CultureInfo.InvariantCulture, out var modifier))
|
||||
modifier = 0;
|
||||
|
||||
SkillGroupState.Model.RolemasterModifier = modifier;
|
||||
SynchronizeSkillGroupExpression();
|
||||
}
|
||||
|
||||
private void SynchronizeSkillGroupExpression()
|
||||
{
|
||||
if (!IsRolemasterRuleset)
|
||||
return;
|
||||
|
||||
SkillGroupState.Model.DiceRollDefinition = RulesetFormHelpers.BuildRolemasterExpression(SkillGroupState.Model.RolemasterRollType, SkillGroupState.Model.RolemasterModifier);
|
||||
}
|
||||
|
||||
private void NormalizeSkillGroupFumbleRange()
|
||||
@@ -376,9 +339,9 @@ public partial class CharacterPanel
|
||||
|
||||
private bool IsD6Ruleset => RulesetFormHelpers.IsD6(SelectedCampaignRulesetId);
|
||||
private bool IsRolemasterRuleset => RulesetFormHelpers.IsRolemaster(SelectedCampaignRulesetId);
|
||||
private bool IsSkillGroupRolemasterOpenEnded => string.Equals(SkillGroupState.Model.RolemasterRollType, RulesetFormHelpers.RolemasterRollTypes.OpenEndedPercentile, StringComparison.OrdinalIgnoreCase);
|
||||
private bool IsSkillGroupRolemasterOpenEnded => RulesetFormHelpers.IsRolemasterOpenEndedExpression(SkillGroupState.Model.DiceRollDefinition);
|
||||
private string SkillGroupExpressionHelpText => IsRolemasterRuleset
|
||||
? $"{RulesetFormHelpers.RolemasterExampleText(SkillGroupState.Model.RolemasterRollType)}. Negative modifiers are allowed."
|
||||
? $"{RulesetFormHelpers.RolemasterExampleText()}. Negative modifiers are allowed."
|
||||
: "Enter the default expression for skills created in this group.";
|
||||
|
||||
private bool ShowCreateSkillModal { get; set; }
|
||||
|
||||
Reference in New Issue
Block a user