/// <summary> /// Creates an instance of <see cref="RaceViewModel"/> /// </summary> public RaceViewModel(RaceModel raceModel) { _raceModel = raceModel; _size = _raceModel.Size != CreatureSize.None ? _stringService.GetString(_raceModel.Size) : "Unknown"; _speed = raceModel.WalkSpeed.ToString() + " ft."; if (_raceModel.FlySpeed > 0) { _speed += ", Fly" + _raceModel.FlySpeed.ToString() + " ft."; } if (_raceModel.Abilities.Count > 0) { List <string> abilities = new List <string>(); foreach (KeyValuePair <Ability, int> pair in _raceModel.Abilities) { abilities.Add(_stringService.GetString(pair.Key) + " " + _statService.AddPlusOrMinus(pair.Value)); } _abilities = String.Join(", ", abilities); } else { _abilities = "None"; } foreach (TraitModel trait in _raceModel.Traits) { _traits.Add(new TraitViewModel(trait)); } }
/// <summary> /// Creates an instance of <see cref="MonsterViewModel"/> /// </summary> public MonsterViewModel(MonsterModel monsterModel) { _monsterModel = monsterModel; _size = _monsterModel.Size != CreatureSize.None ? _stringService.GetString(_monsterModel.Size) : "Unknown"; _alignment = !String.IsNullOrWhiteSpace(_monsterModel.Alignment) ? _stringService.CapitalizeWords(_monsterModel.Alignment) : "Unknown"; _ac = !String.IsNullOrWhiteSpace(_monsterModel.AC) ? _stringService.CapitalizeWords(_monsterModel.AC) : "Unknown"; _hp = !String.IsNullOrWhiteSpace(_monsterModel.HP) ? _monsterModel.HP : "Unknown"; _type = !String.IsNullOrWhiteSpace(_monsterModel.Type) ? _stringService.CapitalizeWords(_monsterModel.Type) : "Unknown"; if (!String.IsNullOrWhiteSpace(_monsterModel.CR)) { string xp = _stringService.CRXPString(_monsterModel.CR); if (!String.IsNullOrWhiteSpace(xp)) { _cr = String.Format("{0} ({1} XP)", _monsterModel.CR, xp); } else { _cr = _monsterModel.CR; } } else { _cr = "Unknown"; } _passivePerception = _monsterModel.PassivePerception.ToString(); _speed = !String.IsNullOrWhiteSpace(_monsterModel.Speed) ? _stringService.CapitalizeWords(_monsterModel.Speed) : "Unknown"; _strength = _monsterModel.Strength.ToString(); _dexterity = _monsterModel.Dexterity.ToString(); _constitution = _monsterModel.Constitution.ToString(); _intelligence = _monsterModel.Intelligence.ToString(); _wisdom = _monsterModel.Wisdom.ToString(); _charisma = _monsterModel.Charisma.ToString(); _strengthBonus = _statService.GetStatBonusString(_monsterModel.Strength); _dexterityBonus = _statService.GetStatBonusString(_monsterModel.Dexterity); _constitutionBonus = _statService.GetStatBonusString(_monsterModel.Constitution); _intelligenceBonus = _statService.GetStatBonusString(_monsterModel.Intelligence); _wisdomBonus = _statService.GetStatBonusString(_monsterModel.Wisdom); _charismaBonus = _statService.GetStatBonusString(_monsterModel.Charisma); _strengthSave = _monsterModel.Saves.ContainsKey(Ability.Strength) ? _statService.AddPlusOrMinus(_monsterModel.Saves[Ability.Strength]) : _strengthBonus; _dexteritySave = _monsterModel.Saves.ContainsKey(Ability.Dexterity) ? _statService.AddPlusOrMinus(_monsterModel.Saves[Ability.Dexterity]) : _dexterityBonus; _constitutionSave = _monsterModel.Saves.ContainsKey(Ability.Constitution) ? _statService.AddPlusOrMinus(_monsterModel.Saves[Ability.Constitution]) : _constitutionBonus; _intelligenceSave = _monsterModel.Saves.ContainsKey(Ability.Intelligence) ? _statService.AddPlusOrMinus(_monsterModel.Saves[Ability.Intelligence]) : _intelligenceBonus; _wisdomSave = _monsterModel.Saves.ContainsKey(Ability.Wisdom) ? _statService.AddPlusOrMinus(_monsterModel.Saves[Ability.Wisdom]) : _wisdomBonus; _charismaSave = _monsterModel.Saves.ContainsKey(Ability.Charisma) ? _statService.AddPlusOrMinus(_monsterModel.Saves[Ability.Charisma]) : _charismaBonus; foreach (KeyValuePair <Skill, int> skillPair in _monsterModel.Skills) { string skillString = _stringService.GetString(skillPair.Key); string skillRoll = _statService.AddPlusOrMinus(skillPair.Value); _skills[skillString] = skillRoll; } _vulnerabilities = !String.IsNullOrWhiteSpace(_monsterModel.Vulnerabilities) ? _stringService.CapitalizeWords(_monsterModel.Vulnerabilities) : "None"; _resistances = !String.IsNullOrWhiteSpace(_monsterModel.Resistances) ? _stringService.CapitalizeWords(_monsterModel.Resistances) : "None"; _immunities = !String.IsNullOrWhiteSpace(_monsterModel.Immunities) ? _stringService.CapitalizeWords(_monsterModel.Immunities) : "None"; _conditionImmunities = !String.IsNullOrWhiteSpace(_monsterModel.ConditionImmunities) ? _stringService.CapitalizeWords(_monsterModel.ConditionImmunities) : "None"; _senses = !String.IsNullOrWhiteSpace(_monsterModel.Senses) ? _stringService.CapitalizeWords(_monsterModel.Senses) : "None"; _languages = _monsterModel.Languages.Count > 0 ? _stringService.CapitalizeWords(String.Join(", ", _monsterModel.Languages)) : "None"; _environment = !String.IsNullOrWhiteSpace(_monsterModel.Environment) ? _stringService.CapitalizeWords(_monsterModel.Environment) : "Unknown"; _description = _monsterModel.Description; foreach (TraitModel traitModel in _monsterModel.Traits) { _traits.Add(new TraitViewModel(traitModel)); } foreach (MonsterActionModel monsterAction in _monsterModel.Actions) { _actions.Add(new MonsterActionViewModel(monsterAction)); } foreach (MonsterActionModel monsterAction in _monsterModel.Reactions) { _reactions.Add(new MonsterActionViewModel(monsterAction)); } foreach (MonsterActionModel monsterAction in _monsterModel.LegendaryActions) { _legendaryActions.Add(new MonsterActionViewModel(monsterAction)); } _spellSlots = new List <string>(_monsterModel.SpellSlots); while (_spellSlots.Count < 9) { _spellSlots.Add("0"); } _spells = new List <string>(_monsterModel.Spells); _rollAbilityBonusCommand = new RelayCommand(obj => true, obj => RollAbilityBonus((Ability)obj)); _rollAbilitySaveCommand = new RelayCommand(obj => true, obj => RollAbilitySave((Ability)obj)); _rollSkillCommand = new RelayCommand(obj => true, obj => RollSkill((string)obj)); _rollAttackToHitCommand = new RelayCommand(obj => true, obj => RollAttackToHit((MonsterAttackViewModel)obj)); _rollAttackDamageCommand = new RelayCommand(obj => true, obj => RollAttackDamage((MonsterAttackViewModel)obj)); _showSpellDialogCommand = new RelayCommand(obj => true, obj => ShowSpellDialog((string)obj)); }
private void RollToHit() { _dialogService.ShowDiceRollDialog("Spell Attack", "1d20" + _statService.AddPlusOrMinus(_baseToHitBonus + _spellbookModel.AdditionalToHitBonus)); }