/// <summary> /// Creates an instance of <see cref="EncounterCharacterDialogViewModel"/> /// </summary> public EncounterCharacterDialogViewModel(EncounterCharacterModel encounterCharacter) { _encounterCreatureModel = encounterCharacter; _characterOptions.Clear(); _characterOptions.Add(new KeyValuePair <CharacterModel, string>(null, "None")); foreach (CharacterModel characterModel in _compendium.Characters) { _characterOptions.Add(new KeyValuePair <CharacterModel, string>(characterModel, characterModel.Name)); } _selectedCharacterOption = _characterOptions[0]; _acceptCommand = new RelayCommand(obj => true, obj => OnAccept()); _rejectCommand = new RelayCommand(obj => true, obj => OnReject()); }
private void CopyCharacter(EncounterCharacterViewModel encounterCharacterModel) { EncounterCharacterModel copy = new EncounterCharacterModel(encounterCharacterModel.EncounterCharacterModel); copy.Name += " (copy)"; copy.ID = Guid.NewGuid(); _encounterModel.Creatures.Add(copy); CreateCreatureViewModels(); EstimateEncounterChallenge(); OnPropertyChanged(nameof(Characters)); OnPropertyChanged(nameof(AverageCharacterLevel)); OnPropertyChanged(nameof(AverageCharacterMaxHP)); OnPropertyChanged(nameof(AverageCharacterAC)); OnPropertyChanged(nameof(AverageCharacterSaveDC)); OnPropertyChanged(nameof(AverageCharacterPassivePerception)); OnPropertyChanged(nameof(AverageCharacterPassiveInvestigation)); }
private void ShowAddCharacterWindow() { EncounterCharacterModel encounterCharacterModel = _dialogService.ShowEncounterCharacterDialog("Add Character", new EncounterCharacterModel()); if (encounterCharacterModel != null) { _encounterModel.Creatures.Add(encounterCharacterModel); CreateCreatureViewModels(); EstimateEncounterChallenge(); OnPropertyChanged(nameof(Characters)); OnPropertyChanged(nameof(AverageCharacterLevel)); OnPropertyChanged(nameof(AverageCharacterMaxHP)); OnPropertyChanged(nameof(AverageCharacterAC)); OnPropertyChanged(nameof(AverageCharacterSaveDC)); OnPropertyChanged(nameof(AverageCharacterPassivePerception)); OnPropertyChanged(nameof(AverageCharacterPassiveInvestigation)); } }
/// <summary> /// Sets the creatures to roll initiative for /// </summary> /// <param name="creatures"></param> public void SetCreatures(List <EncounterCreatureViewModel> creatures) { _creatures = creatures; _characters.Clear(); _monsters.Clear(); foreach (EncounterCreatureViewModel encounterCreatureViewModel in _creatures) { if (encounterCreatureViewModel is EncounterCharacterViewModel encounterCharacterViewModel) { EncounterCharacterModel characterModelCopy = new EncounterCharacterModel(encounterCharacterViewModel.EncounterCharacterModel); characterModelCopy.Initiative = 0; _characters.Add(new EncounterCharacterViewModel(characterModelCopy)); } else if (encounterCreatureViewModel is EncounterMonsterViewModel encounterMonsterViewModel) { EncounterMonsterModel monsterModelCopy = new EncounterMonsterModel(encounterMonsterViewModel.EncounterMonsterModel); monsterModelCopy.Initiative = 0; _monsters.Add(new EncounterMonsterViewModel(monsterModelCopy)); } } }
/// <summary> /// Shows encounter character dialog /// </summary> public EncounterCharacterModel ShowEncounterCharacterDialog(string title, EncounterCharacterModel encounterCharacterModel) { ModalDialog modalDialog = new ModalDialog(); if (_parentWindow != null) { modalDialog.Owner = _parentWindow; } CreateEncounterCharacterView createEncounterCharacterView = new CreateEncounterCharacterView(); EncounterCharacterModel modelCopy = new EncounterCharacterModel(encounterCharacterModel); EncounterCharacterDialogViewModel viewModel = new EncounterCharacterDialogViewModel(modelCopy); createEncounterCharacterView.DataContext = viewModel; modalDialog.WindowTitle = title; modalDialog.Body = createEncounterCharacterView; modalDialog.Confirmation = viewModel; ShowDialog(modalDialog); return(modalDialog.Result == true ? viewModel.EncounterCharacterModel : null); }
private void ShowEditCharacterWindow(EncounterCharacterViewModel encounterCharacterModel) { EncounterCharacterModel editedCharacterModel = _dialogService.ShowEncounterCharacterDialog("Edit Character", encounterCharacterModel.EncounterCharacterModel); if (editedCharacterModel != null) { EncounterCreatureModel originalCharacter = _encounterModel.Creatures.FirstOrDefault(x => x.ID == encounterCharacterModel.EncounterCharacterModel.ID); if (originalCharacter != null) { _encounterModel.Creatures[_encounterModel.Creatures.IndexOf(originalCharacter)] = editedCharacterModel; CreateCreatureViewModels(); EstimateEncounterChallenge(); OnPropertyChanged(nameof(Characters)); OnPropertyChanged(nameof(AverageCharacterLevel)); OnPropertyChanged(nameof(AverageCharacterMaxHP)); OnPropertyChanged(nameof(AverageCharacterAC)); OnPropertyChanged(nameof(AverageCharacterSaveDC)); OnPropertyChanged(nameof(AverageCharacterPassivePerception)); OnPropertyChanged(nameof(AverageCharacterPassiveInvestigation)); } } }
/// <summary> /// Creates an instance of <see cref="EncounterCharacterViewModel"/> /// </summary> public EncounterCharacterViewModel(EncounterCharacterModel encounterCharacterModel) : base(encounterCharacterModel) { _encounterCharacterModel = encounterCharacterModel; }