private void RemoveMonster(EncounterMonsterViewModel encounterMonsterModel) { bool?result = _dialogService.ShowConfirmationDialog("Remove Monster", "Are you sure you want to remove " + encounterMonsterModel.Name + "?", "Yes", "No", null); if (result == true) { _encounterModel.Creatures.RemoveAll(x => x.ID == encounterMonsterModel.EncounterMonsterModel.ID); CreateCreatureViewModels(); EstimateEncounterChallenge(); OnPropertyChanged(nameof(Monsters)); OnPropertyChanged(nameof(TotalMonsterXP)); OnPropertyChanged(nameof(AverageMonsterCR)); OnPropertyChanged(nameof(AverageMonsterMaxHP)); OnPropertyChanged(nameof(AverageMonsterAC)); OnPropertyChanged(nameof(AverageMonsterSaveDC)); OnPropertyChanged(nameof(AverageMonsterPassivePerception)); OnPropertyChanged(nameof(AverageMonsterDamageTurn)); OnPropertyChanged(nameof(OverallMonsterDamageVulnerabilities)); OnPropertyChanged(nameof(OverallMonsterDamageResistances)); OnPropertyChanged(nameof(OverallMonsterDamageImmunities)); OnPropertyChanged(nameof(OverallMonsterConditionImmunities)); } }
private void ShowEditMonsterWindow(EncounterMonsterViewModel encounterMonsterViewModel) { EncounterMonsterModel editedMonsterModel = _dialogService.ShowEncounterMonsterDialog("Edit Monster", encounterMonsterViewModel.EncounterMonsterModel); if (editedMonsterModel != null) { EncounterCreatureModel originalMonster = _encounterModel.Creatures.FirstOrDefault(x => x.ID == encounterMonsterViewModel.EncounterMonsterModel.ID); if (originalMonster != null) { _encounterModel.Creatures[_encounterModel.Creatures.IndexOf(originalMonster)] = editedMonsterModel; CreateCreatureViewModels(); EstimateEncounterChallenge(); OnPropertyChanged(nameof(Monsters)); OnPropertyChanged(nameof(TotalMonsterXP)); OnPropertyChanged(nameof(AverageMonsterCR)); OnPropertyChanged(nameof(AverageMonsterMaxHP)); OnPropertyChanged(nameof(AverageMonsterAC)); OnPropertyChanged(nameof(AverageMonsterSaveDC)); OnPropertyChanged(nameof(AverageMonsterPassivePerception)); OnPropertyChanged(nameof(AverageMonsterDamageTurn)); OnPropertyChanged(nameof(OverallMonsterDamageVulnerabilities)); OnPropertyChanged(nameof(OverallMonsterDamageResistances)); OnPropertyChanged(nameof(OverallMonsterDamageImmunities)); OnPropertyChanged(nameof(OverallMonsterConditionImmunities)); } } }
private void CreateCreatureViewModels() { _creatures.Clear(); _creaturesExpanded.Clear(); foreach (EncounterCreatureModel encounterCreatureModel in _encounterModel.Creatures) { if (encounterCreatureModel is EncounterCharacterModel) { EncounterCharacterViewModel encounterCharacterViewModel = new EncounterCharacterViewModel(encounterCreatureModel as EncounterCharacterModel); _creatures.Add(encounterCharacterViewModel); _creaturesExpanded.Add(encounterCharacterViewModel); } else if (encounterCreatureModel is EncounterMonsterModel) { EncounterMonsterViewModel encounterMonsterViewModel = new EncounterMonsterViewModel(encounterCreatureModel as EncounterMonsterModel); _creatures.Add(encounterMonsterViewModel); if (encounterMonsterViewModel.Quantity > 1) { for (int i = 0; i < encounterMonsterViewModel.Quantity; ++i) { EncounterMonsterModel encounterMonsterModelCopy = new EncounterMonsterModel(encounterCreatureModel as EncounterMonsterModel); EncounterMonsterViewModel encounterMonsterViewModelCopy = new EncounterMonsterViewModel(encounterMonsterModelCopy); encounterMonsterViewModelCopy.Name += $" ({i + 1})"; _creaturesExpanded.Add(encounterMonsterViewModelCopy); } } else { _creaturesExpanded.Add(encounterMonsterViewModel); } } } _creatures = _creatures.OrderByDescending(x => x.Initiative).ToList(); _creaturesExpanded = _creaturesExpanded.OrderByDescending(x => x.Initiative).ToList(); }
private void CopyMonster(EncounterMonsterViewModel encounterMonsterModel) { EncounterMonsterModel copy = new EncounterMonsterModel(encounterMonsterModel.EncounterMonsterModel); copy.Name += " (copy)"; copy.ID = Guid.NewGuid(); _encounterModel.Creatures.Add(copy); CreateCreatureViewModels(); EstimateEncounterChallenge(); OnPropertyChanged(nameof(Monsters)); OnPropertyChanged(nameof(TotalMonsterXP)); OnPropertyChanged(nameof(AverageMonsterCR)); OnPropertyChanged(nameof(AverageMonsterMaxHP)); OnPropertyChanged(nameof(AverageMonsterAC)); OnPropertyChanged(nameof(AverageMonsterSaveDC)); OnPropertyChanged(nameof(AverageMonsterPassivePerception)); OnPropertyChanged(nameof(AverageMonsterDamageTurn)); OnPropertyChanged(nameof(OverallMonsterDamageVulnerabilities)); OnPropertyChanged(nameof(OverallMonsterDamageResistances)); OnPropertyChanged(nameof(OverallMonsterDamageImmunities)); OnPropertyChanged(nameof(OverallMonsterConditionImmunities)); }