Пример #1
0
        /// <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));
            }
        }
Пример #2
0
        /// <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));
        }
Пример #3
0
 private void RollToHit()
 {
     _dialogService.ShowDiceRollDialog("Spell Attack", "1d20" + _statService.AddPlusOrMinus(_baseToHitBonus + _spellbookModel.AdditionalToHitBonus));
 }