Adds saving throws editor.
This commit is contained in:
@@ -109,6 +109,13 @@ public class EditMonsterFragment extends MCFragment {
|
|||||||
Navigation.findNavController(view).navigate(action);
|
Navigation.findNavController(view).navigate(action);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
mHolder.savingThrows.setOnClickListener(v -> {
|
||||||
|
NavDirections action = EditMonsterFragmentDirections.actionEditMonsterFragmentToEditSavingThrowsFragment();
|
||||||
|
View view = getView();
|
||||||
|
assert view != null;
|
||||||
|
Navigation.findNavController(view).navigate(action);
|
||||||
|
});
|
||||||
|
|
||||||
requireActivity().getOnBackPressedDispatcher().addCallback(getViewLifecycleOwner(), new OnBackPressedCallback(true) {
|
requireActivity().getOnBackPressedDispatcher().addCallback(getViewLifecycleOwner(), new OnBackPressedCallback(true) {
|
||||||
@Override
|
@Override
|
||||||
public void handleOnBackPressed() {
|
public void handleOnBackPressed() {
|
||||||
@@ -162,12 +169,42 @@ public class EditMonsterFragment extends MCFragment {
|
|||||||
TextView armorButton;
|
TextView armorButton;
|
||||||
TextView speedButton;
|
TextView speedButton;
|
||||||
TextView abilityScoresButton;
|
TextView abilityScoresButton;
|
||||||
|
TextView savingThrows;
|
||||||
|
TextView skills;
|
||||||
|
TextView conditionImmunities;
|
||||||
|
TextView damageImmunities;
|
||||||
|
TextView damageResistances;
|
||||||
|
TextView damageVulnerabilities;
|
||||||
|
TextView senses;
|
||||||
|
TextView languages;
|
||||||
|
TextView challengeRating;
|
||||||
|
TextView abilities;
|
||||||
|
TextView actions;
|
||||||
|
TextView reactions;
|
||||||
|
TextView legendaryActions;
|
||||||
|
TextView lairActions;
|
||||||
|
TextView regionalActions;
|
||||||
|
|
||||||
ViewHolder(View root) {
|
ViewHolder(View root) {
|
||||||
basicInfoButton = root.findViewById(R.id.basicInfo);
|
basicInfoButton = root.findViewById(R.id.basicInfo);
|
||||||
armorButton = root.findViewById(R.id.armor);
|
armorButton = root.findViewById(R.id.armor);
|
||||||
speedButton = root.findViewById(R.id.speed);
|
speedButton = root.findViewById(R.id.speed);
|
||||||
abilityScoresButton = root.findViewById(R.id.abilityScores);
|
abilityScoresButton = root.findViewById(R.id.abilityScores);
|
||||||
|
savingThrows = root.findViewById(R.id.savingThrows);
|
||||||
|
skills = root.findViewById(R.id.skills);
|
||||||
|
conditionImmunities = root.findViewById(R.id.conditionImmunities);
|
||||||
|
damageImmunities = root.findViewById(R.id.damageImmunities);
|
||||||
|
damageResistances = root.findViewById(R.id.damageResistances);
|
||||||
|
damageVulnerabilities = root.findViewById(R.id.damageVulnerabilities);
|
||||||
|
senses = root.findViewById(R.id.senses);
|
||||||
|
languages = root.findViewById(R.id.languages);
|
||||||
|
challengeRating = root.findViewById(R.id.challengeRating);
|
||||||
|
abilities = root.findViewById(R.id.abilities);
|
||||||
|
actions = root.findViewById(R.id.actions);
|
||||||
|
reactions = root.findViewById(R.id.reactions);
|
||||||
|
legendaryActions = root.findViewById(R.id.legendaryActions);
|
||||||
|
lairActions = root.findViewById(R.id.lairActions);
|
||||||
|
regionalActions = root.findViewById(R.id.regionalActions);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,7 +5,9 @@ import androidx.lifecycle.LiveData;
|
|||||||
import androidx.lifecycle.MutableLiveData;
|
import androidx.lifecycle.MutableLiveData;
|
||||||
import androidx.lifecycle.ViewModel;
|
import androidx.lifecycle.ViewModel;
|
||||||
|
|
||||||
|
import com.majinnaibu.monstercards.data.enums.AdvantageType;
|
||||||
import com.majinnaibu.monstercards.data.enums.ArmorType;
|
import com.majinnaibu.monstercards.data.enums.ArmorType;
|
||||||
|
import com.majinnaibu.monstercards.data.enums.ProficiencyType;
|
||||||
import com.majinnaibu.monstercards.helpers.StringHelper;
|
import com.majinnaibu.monstercards.helpers.StringHelper;
|
||||||
import com.majinnaibu.monstercards.models.Monster;
|
import com.majinnaibu.monstercards.models.Monster;
|
||||||
import com.majinnaibu.monstercards.utils.Logger;
|
import com.majinnaibu.monstercards.utils.Logger;
|
||||||
@@ -24,6 +26,18 @@ public class EditMonsterViewModel extends ViewModel {
|
|||||||
private final MutableLiveData<Boolean> mCanHover;
|
private final MutableLiveData<Boolean> mCanHover;
|
||||||
private final MutableLiveData<Boolean> mHasCustomSpeed;
|
private final MutableLiveData<Boolean> mHasCustomSpeed;
|
||||||
private final MutableLiveData<ArmorType> mArmorType;
|
private final MutableLiveData<ArmorType> mArmorType;
|
||||||
|
private final MutableLiveData<ProficiencyType> mStrengthProficiency;
|
||||||
|
private final MutableLiveData<AdvantageType> mStrengthAdvantage;
|
||||||
|
private final MutableLiveData<ProficiencyType> mDexterityProficiency;
|
||||||
|
private final MutableLiveData<AdvantageType> mDexterityAdvantage;
|
||||||
|
private final MutableLiveData<ProficiencyType> mConstitutionProficiency;
|
||||||
|
private final MutableLiveData<AdvantageType> mConstitutionAdvantage;
|
||||||
|
private final MutableLiveData<ProficiencyType> mIntelligenceProficiency;
|
||||||
|
private final MutableLiveData<AdvantageType> mIntelligenceAdvantage;
|
||||||
|
private final MutableLiveData<ProficiencyType> mWisdomProficiency;
|
||||||
|
private final MutableLiveData<AdvantageType> mWisdomAdvantage;
|
||||||
|
private final MutableLiveData<ProficiencyType> mCharismaProficiency;
|
||||||
|
private final MutableLiveData<AdvantageType> mCharismaAdvantage;
|
||||||
private final MutableLiveData<Integer> mHitDice;
|
private final MutableLiveData<Integer> mHitDice;
|
||||||
private final MutableLiveData<Integer> mNaturalArmorBonus;
|
private final MutableLiveData<Integer> mNaturalArmorBonus;
|
||||||
private final MutableLiveData<Integer> mShieldBonus;
|
private final MutableLiveData<Integer> mShieldBonus;
|
||||||
@@ -81,6 +95,18 @@ public class EditMonsterViewModel extends ViewModel {
|
|||||||
mIntelligence = new MutableLiveData<>(10);
|
mIntelligence = new MutableLiveData<>(10);
|
||||||
mWisdom = new MutableLiveData<>(10);
|
mWisdom = new MutableLiveData<>(10);
|
||||||
mCharisma = new MutableLiveData<>(10);
|
mCharisma = new MutableLiveData<>(10);
|
||||||
|
mStrengthProficiency = new MutableLiveData<>(ProficiencyType.NONE);
|
||||||
|
mStrengthAdvantage = new MutableLiveData<>(AdvantageType.NONE);
|
||||||
|
mDexterityProficiency = new MutableLiveData<>(ProficiencyType.NONE);
|
||||||
|
mDexterityAdvantage = new MutableLiveData<>(AdvantageType.NONE);
|
||||||
|
mConstitutionProficiency = new MutableLiveData<>(ProficiencyType.NONE);
|
||||||
|
mConstitutionAdvantage = new MutableLiveData<>(AdvantageType.NONE);
|
||||||
|
mIntelligenceProficiency = new MutableLiveData<>(ProficiencyType.NONE);
|
||||||
|
mIntelligenceAdvantage = new MutableLiveData<>(AdvantageType.NONE);
|
||||||
|
mWisdomProficiency = new MutableLiveData<>(ProficiencyType.NONE);
|
||||||
|
mWisdomAdvantage = new MutableLiveData<>(AdvantageType.NONE);
|
||||||
|
mCharismaProficiency = new MutableLiveData<>(ProficiencyType.NONE);
|
||||||
|
mCharismaAdvantage = new MutableLiveData<>(AdvantageType.NONE);
|
||||||
|
|
||||||
// TODO: consider initializing this to true so all new monsters need saving
|
// TODO: consider initializing this to true so all new monsters need saving
|
||||||
mHasChanges = new MutableLiveData<>(false);
|
mHasChanges = new MutableLiveData<>(false);
|
||||||
@@ -116,6 +142,18 @@ public class EditMonsterViewModel extends ViewModel {
|
|||||||
mIntelligence.setValue(monster.intelligenceScore);
|
mIntelligence.setValue(monster.intelligenceScore);
|
||||||
mWisdom.setValue(monster.wisdomScore);
|
mWisdom.setValue(monster.wisdomScore);
|
||||||
mCharisma.setValue(monster.charismaScore);
|
mCharisma.setValue(monster.charismaScore);
|
||||||
|
mStrengthProficiency.setValue(monster.strengthSavingThrowProficiency);
|
||||||
|
mStrengthAdvantage.setValue(monster.strengthSavingThrowAdvantage);
|
||||||
|
mDexterityProficiency.setValue(monster.dexteritySavingThrowProficiency);
|
||||||
|
mDexterityAdvantage.setValue(monster.dexteritySavingThrowAdvantage);
|
||||||
|
mConstitutionProficiency.setValue(monster.constitutionSavingThrowProficiency);
|
||||||
|
mConstitutionAdvantage.setValue(monster.constitutionSavingThrowAdvantage);
|
||||||
|
mIntelligenceProficiency.setValue(monster.intelligenceSavingThrowProficiency);
|
||||||
|
mIntelligenceAdvantage.setValue(monster.intelligenceSavingThrowAdvantage);
|
||||||
|
mWisdomProficiency.setValue(monster.wisdomSavingThrowProficiency);
|
||||||
|
mWisdomAdvantage.setValue(monster.wisdomSavingThrowAdvantage);
|
||||||
|
mCharismaProficiency.setValue(monster.charismaSavingThrowProficiency);
|
||||||
|
mCharismaAdvantage.setValue(monster.charismaSavingThrowAdvantage);
|
||||||
|
|
||||||
mHasChanges.setValue(false);
|
mHasChanges.setValue(false);
|
||||||
}
|
}
|
||||||
@@ -589,6 +627,138 @@ public class EditMonsterViewModel extends ViewModel {
|
|||||||
setCharisma(mCharisma.getValue() - 1);
|
setCharisma(mCharisma.getValue() - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public LiveData<ProficiencyType> getStrengthProficiency() {
|
||||||
|
return mStrengthProficiency;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStrengthProficiency(ProficiencyType proficiency) {
|
||||||
|
if (!Objects.equals(mStrengthProficiency.getValue(), proficiency)) {
|
||||||
|
mStrengthProficiency.setValue(proficiency);
|
||||||
|
mHasChanges.setValue(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public LiveData<AdvantageType> getStrengthAdvantage() {
|
||||||
|
return mStrengthAdvantage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStrengthAdvantage(AdvantageType advantage) {
|
||||||
|
if (!Objects.equals(mStrengthAdvantage.getValue(), advantage)) {
|
||||||
|
mStrengthAdvantage.setValue(advantage);
|
||||||
|
mHasChanges.setValue(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public LiveData<ProficiencyType> getDexterityProficiency() {
|
||||||
|
return mDexterityProficiency;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDexterityProficiency(ProficiencyType proficiency) {
|
||||||
|
if (!Objects.equals(mDexterityProficiency.getValue(), proficiency)) {
|
||||||
|
mDexterityProficiency.setValue(proficiency);
|
||||||
|
mHasChanges.setValue(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public LiveData<AdvantageType> getDexterityAdvantage() {
|
||||||
|
return mDexterityAdvantage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDexterityAdvantage(AdvantageType advantage) {
|
||||||
|
if (!Objects.equals(mDexterityAdvantage.getValue(), advantage)) {
|
||||||
|
mDexterityAdvantage.setValue(advantage);
|
||||||
|
mHasChanges.setValue(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public LiveData<ProficiencyType> getConstitutionProficiency() {
|
||||||
|
return mConstitutionProficiency;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setConstitutionProficiency(ProficiencyType proficiency) {
|
||||||
|
if (!Objects.equals(mConstitutionProficiency.getValue(), proficiency)) {
|
||||||
|
mConstitutionProficiency.setValue(proficiency);
|
||||||
|
mHasChanges.setValue(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public LiveData<AdvantageType> getConstitutionAdvantage() {
|
||||||
|
return mConstitutionAdvantage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setConstitutionAdvantage(AdvantageType advantage) {
|
||||||
|
if (!Objects.equals(mConstitutionAdvantage.getValue(), advantage)) {
|
||||||
|
mConstitutionAdvantage.setValue(advantage);
|
||||||
|
mHasChanges.setValue(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public LiveData<ProficiencyType> getIntelligenceProficiency() {
|
||||||
|
return mIntelligenceProficiency;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIntelligenceProficiency(ProficiencyType proficiency) {
|
||||||
|
if (!Objects.equals(mIntelligenceProficiency.getValue(), proficiency)) {
|
||||||
|
mIntelligenceProficiency.setValue(proficiency);
|
||||||
|
mHasChanges.setValue(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public LiveData<AdvantageType> getIntelligenceAdvantage() {
|
||||||
|
return mIntelligenceAdvantage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIntelligenceAdvantage(AdvantageType advantage) {
|
||||||
|
if (!Objects.equals(mIntelligenceAdvantage.getValue(), advantage)) {
|
||||||
|
mIntelligenceAdvantage.setValue(advantage);
|
||||||
|
mHasChanges.setValue(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public LiveData<ProficiencyType> getWisdomProficiency() {
|
||||||
|
return mWisdomProficiency;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWisdomProficiency(ProficiencyType proficiency) {
|
||||||
|
if (!Objects.equals(mWisdomProficiency.getValue(), proficiency)) {
|
||||||
|
mWisdomProficiency.setValue(proficiency);
|
||||||
|
mHasChanges.setValue(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public LiveData<AdvantageType> getWisdomAdvantage() {
|
||||||
|
return mWisdomAdvantage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWisdomAdvantage(AdvantageType advantage) {
|
||||||
|
if (!Objects.equals(mWisdomAdvantage.getValue(), advantage)) {
|
||||||
|
mWisdomAdvantage.setValue(advantage);
|
||||||
|
mHasChanges.setValue(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public LiveData<ProficiencyType> getCharismaProficiency() {
|
||||||
|
return mCharismaProficiency;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCharismaProficiency(ProficiencyType proficiency) {
|
||||||
|
if (!Objects.equals(mCharismaProficiency.getValue(), proficiency)) {
|
||||||
|
mCharismaProficiency.setValue(proficiency);
|
||||||
|
mHasChanges.setValue(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public LiveData<AdvantageType> getCharismaAdvantage() {
|
||||||
|
return mCharismaAdvantage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCharismaAdvantage(AdvantageType advantage) {
|
||||||
|
if (!Objects.equals(mCharismaAdvantage.getValue(), advantage)) {
|
||||||
|
mCharismaAdvantage.setValue(advantage);
|
||||||
|
mHasChanges.setValue(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public Monster buildMonster() {
|
public Monster buildMonster() {
|
||||||
Monster monster = new Monster();
|
Monster monster = new Monster();
|
||||||
|
|
||||||
@@ -619,6 +789,18 @@ public class EditMonsterViewModel extends ViewModel {
|
|||||||
monster.intelligenceScore = mIntelligence.getValue();
|
monster.intelligenceScore = mIntelligence.getValue();
|
||||||
monster.wisdomScore = mWisdom.getValue();
|
monster.wisdomScore = mWisdom.getValue();
|
||||||
monster.charismaScore = mCharisma.getValue();
|
monster.charismaScore = mCharisma.getValue();
|
||||||
|
monster.strengthSavingThrowAdvantage = mStrengthAdvantage.getValue();
|
||||||
|
monster.strengthSavingThrowProficiency = mStrengthProficiency.getValue();
|
||||||
|
monster.dexteritySavingThrowAdvantage = mDexterityAdvantage.getValue();
|
||||||
|
monster.dexteritySavingThrowProficiency = mDexterityProficiency.getValue();
|
||||||
|
monster.constitutionSavingThrowAdvantage = mConstitutionAdvantage.getValue();
|
||||||
|
monster.constitutionSavingThrowProficiency = mConstitutionProficiency.getValue();
|
||||||
|
monster.intelligenceSavingThrowAdvantage = mIntelligenceAdvantage.getValue();
|
||||||
|
monster.intelligenceSavingThrowProficiency = mIntelligenceProficiency.getValue();
|
||||||
|
monster.wisdomSavingThrowAdvantage = mWisdomAdvantage.getValue();
|
||||||
|
monster.wisdomSavingThrowProficiency = mWisdomProficiency.getValue();
|
||||||
|
monster.charismaSavingThrowAdvantage = mCharismaAdvantage.getValue();
|
||||||
|
monster.charismaSavingThrowProficiency = mCharismaProficiency.getValue();
|
||||||
|
|
||||||
return monster;
|
return monster;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,95 @@
|
|||||||
|
package com.majinnaibu.monstercards.ui.editmonster;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
|
import androidx.fragment.app.Fragment;
|
||||||
|
import androidx.lifecycle.ViewModelProvider;
|
||||||
|
import androidx.navigation.NavBackStackEntry;
|
||||||
|
import androidx.navigation.NavController;
|
||||||
|
import androidx.navigation.Navigation;
|
||||||
|
|
||||||
|
import com.majinnaibu.monstercards.R;
|
||||||
|
import com.majinnaibu.monstercards.ui.components.AdvantagePicker;
|
||||||
|
import com.majinnaibu.monstercards.ui.components.ProficiencyPicker;
|
||||||
|
|
||||||
|
public class EditSavingThrowsFragment extends Fragment {
|
||||||
|
private EditMonsterViewModel mViewModel;
|
||||||
|
private ViewHolder mViewHolder;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
|
Bundle savedInstanceState) {
|
||||||
|
NavController navController = Navigation.findNavController(requireActivity(), R.id.nav_host_fragment);
|
||||||
|
NavBackStackEntry backStackEntry = navController.getBackStackEntry(R.id.edit_monster_navigation);
|
||||||
|
mViewModel = new ViewModelProvider(backStackEntry).get(EditMonsterViewModel.class);
|
||||||
|
|
||||||
|
// Inflate the layout for this fragment
|
||||||
|
View root = inflater.inflate(R.layout.fragment_edit_saving_throws, container, false);
|
||||||
|
|
||||||
|
mViewHolder = new ViewHolder(root);
|
||||||
|
mViewHolder.strengthProficiency.setValue(mViewModel.getStrengthProficiency().getValue());
|
||||||
|
mViewHolder.strengthProficiency.setOnValueChangedListener(value -> mViewModel.setStrengthProficiency(value));
|
||||||
|
mViewHolder.strengthAdvantage.setValue(mViewModel.getStrengthAdvantage().getValue());
|
||||||
|
mViewHolder.strengthAdvantage.setOnValueChangedListener(value -> mViewModel.setStrengthAdvantage(value));
|
||||||
|
|
||||||
|
mViewHolder.dexterityProficiency.setValue(mViewModel.getDexterityProficiency().getValue());
|
||||||
|
mViewHolder.dexterityProficiency.setOnValueChangedListener(value -> mViewModel.setDexterityProficiency(value));
|
||||||
|
mViewHolder.dexterityAdvantage.setValue(mViewModel.getDexterityAdvantage().getValue());
|
||||||
|
mViewHolder.dexterityAdvantage.setOnValueChangedListener(value -> mViewModel.setDexterityAdvantage(value));
|
||||||
|
|
||||||
|
mViewHolder.constitutionProficiency.setValue(mViewModel.getConstitutionProficiency().getValue());
|
||||||
|
mViewHolder.constitutionProficiency.setOnValueChangedListener(value -> mViewModel.setConstitutionProficiency(value));
|
||||||
|
mViewHolder.constitutionAdvantage.setValue(mViewModel.getConstitutionAdvantage().getValue());
|
||||||
|
mViewHolder.constitutionAdvantage.setOnValueChangedListener(value -> mViewModel.setConstitutionAdvantage(value));
|
||||||
|
|
||||||
|
mViewHolder.intelligenceProficiency.setValue(mViewModel.getIntelligenceProficiency().getValue());
|
||||||
|
mViewHolder.intelligenceProficiency.setOnValueChangedListener(value -> mViewModel.setIntelligenceProficiency(value));
|
||||||
|
mViewHolder.intelligenceAdvantage.setValue(mViewModel.getIntelligenceAdvantage().getValue());
|
||||||
|
mViewHolder.intelligenceAdvantage.setOnValueChangedListener(value -> mViewModel.setIntelligenceAdvantage(value));
|
||||||
|
|
||||||
|
mViewHolder.wisdomProficiency.setValue(mViewModel.getWisdomProficiency().getValue());
|
||||||
|
mViewHolder.wisdomProficiency.setOnValueChangedListener(value -> mViewModel.setWisdomProficiency(value));
|
||||||
|
mViewHolder.wisdomAdvantage.setValue(mViewModel.getWisdomAdvantage().getValue());
|
||||||
|
mViewHolder.wisdomAdvantage.setOnValueChangedListener(value -> mViewModel.setWisdomAdvantage(value));
|
||||||
|
|
||||||
|
mViewHolder.charismaProficiency.setValue(mViewModel.getCharismaProficiency().getValue());
|
||||||
|
mViewHolder.charismaProficiency.setOnValueChangedListener(value -> mViewModel.setCharismaProficiency(value));
|
||||||
|
mViewHolder.charismaAdvantage.setValue(mViewModel.getCharismaAdvantage().getValue());
|
||||||
|
mViewHolder.charismaAdvantage.setOnValueChangedListener(value -> mViewModel.setCharismaAdvantage(value));
|
||||||
|
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class ViewHolder {
|
||||||
|
AdvantagePicker strengthAdvantage;
|
||||||
|
ProficiencyPicker strengthProficiency;
|
||||||
|
AdvantagePicker dexterityAdvantage;
|
||||||
|
ProficiencyPicker dexterityProficiency;
|
||||||
|
AdvantagePicker constitutionAdvantage;
|
||||||
|
ProficiencyPicker constitutionProficiency;
|
||||||
|
AdvantagePicker intelligenceAdvantage;
|
||||||
|
ProficiencyPicker intelligenceProficiency;
|
||||||
|
AdvantagePicker wisdomAdvantage;
|
||||||
|
ProficiencyPicker wisdomProficiency;
|
||||||
|
AdvantagePicker charismaAdvantage;
|
||||||
|
ProficiencyPicker charismaProficiency;
|
||||||
|
|
||||||
|
ViewHolder(View root) {
|
||||||
|
strengthAdvantage = root.findViewById(R.id.strengthAdvantage);
|
||||||
|
strengthProficiency = root.findViewById(R.id.strengthProficiency);
|
||||||
|
dexterityAdvantage = root.findViewById(R.id.dexterityAdvantage);
|
||||||
|
dexterityProficiency = root.findViewById(R.id.dexterityProficiency);
|
||||||
|
constitutionAdvantage = root.findViewById(R.id.constitutionAdvantage);
|
||||||
|
constitutionProficiency = root.findViewById(R.id.constitutionProficiency);
|
||||||
|
intelligenceAdvantage = root.findViewById(R.id.intelligenceAdvantage);
|
||||||
|
intelligenceProficiency = root.findViewById(R.id.intelligenceProficiency);
|
||||||
|
wisdomAdvantage = root.findViewById(R.id.wisdomAdvantage);
|
||||||
|
wisdomProficiency = root.findViewById(R.id.wisdomProficiency);
|
||||||
|
charismaAdvantage = root.findViewById(R.id.charismaAdvantage);
|
||||||
|
charismaProficiency = root.findViewById(R.id.charismaProficiency);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="wrap_content"
|
||||||
android:layout_margin="@dimen/text_margin"
|
android:layout_margin="@dimen/text_margin"
|
||||||
tools:context=".ui.components.Stepper">
|
tools:context=".ui.components.Stepper">
|
||||||
|
|
||||||
|
|||||||
111
app/src/main/res/layout/fragment_edit_saving_throws.xml
Normal file
111
app/src/main/res/layout/fragment_edit_saving_throws.xml
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
tools:context=".ui.editmonster.EditSavingThrowsFragment">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="start"
|
||||||
|
android:text="@string/label_strength" />
|
||||||
|
|
||||||
|
<com.majinnaibu.monstercards.ui.components.ProficiencyPicker
|
||||||
|
android:id="@+id/strengthProficiency"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
<com.majinnaibu.monstercards.ui.components.AdvantagePicker
|
||||||
|
android:id="@+id/strengthAdvantage"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="start"
|
||||||
|
android:text="@string/label_dexterity" />
|
||||||
|
|
||||||
|
<com.majinnaibu.monstercards.ui.components.ProficiencyPicker
|
||||||
|
android:id="@+id/dexterityProficiency"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
<com.majinnaibu.monstercards.ui.components.AdvantagePicker
|
||||||
|
android:id="@+id/dexterityAdvantage"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="start"
|
||||||
|
android:text="@string/label_constitution" />
|
||||||
|
|
||||||
|
<com.majinnaibu.monstercards.ui.components.ProficiencyPicker
|
||||||
|
android:id="@+id/constitutionProficiency"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
<com.majinnaibu.monstercards.ui.components.AdvantagePicker
|
||||||
|
android:id="@+id/constitutionAdvantage"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="start"
|
||||||
|
android:text="@string/label_intelligence" />
|
||||||
|
|
||||||
|
<com.majinnaibu.monstercards.ui.components.ProficiencyPicker
|
||||||
|
android:id="@+id/intelligenceProficiency"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
<com.majinnaibu.monstercards.ui.components.AdvantagePicker
|
||||||
|
android:id="@+id/intelligenceAdvantage"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="start"
|
||||||
|
android:text="@string/label_wisdom" />
|
||||||
|
|
||||||
|
<com.majinnaibu.monstercards.ui.components.ProficiencyPicker
|
||||||
|
android:id="@+id/wisdomProficiency"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
<com.majinnaibu.monstercards.ui.components.AdvantagePicker
|
||||||
|
android:id="@+id/wisdomAdvantage"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="start"
|
||||||
|
android:text="@string/label_charisma" />
|
||||||
|
|
||||||
|
<com.majinnaibu.monstercards.ui.components.ProficiencyPicker
|
||||||
|
android:id="@+id/charismaProficiency"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
<com.majinnaibu.monstercards.ui.components.AdvantagePicker
|
||||||
|
android:id="@+id/charismaAdvantage"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</ScrollView>
|
||||||
@@ -84,6 +84,9 @@
|
|||||||
<action
|
<action
|
||||||
android:id="@+id/action_editMonsterFragment_to_editAbilityScoresFragment"
|
android:id="@+id/action_editMonsterFragment_to_editAbilityScoresFragment"
|
||||||
app:destination="@id/editAbilityScoresFragment" />
|
app:destination="@id/editAbilityScoresFragment" />
|
||||||
|
<action
|
||||||
|
android:id="@+id/action_editMonsterFragment_to_editSavingThrowsFragment"
|
||||||
|
app:destination="@id/editSavingThrowsFragment" />
|
||||||
</fragment>
|
</fragment>
|
||||||
<fragment
|
<fragment
|
||||||
android:id="@+id/editBasicInfoFragment"
|
android:id="@+id/editBasicInfoFragment"
|
||||||
@@ -104,6 +107,11 @@
|
|||||||
android:id="@+id/editAbilityScoresFragment"
|
android:id="@+id/editAbilityScoresFragment"
|
||||||
android:name="com.majinnaibu.monstercards.ui.editmonster.EditAbilityScoresFragment"
|
android:name="com.majinnaibu.monstercards.ui.editmonster.EditAbilityScoresFragment"
|
||||||
android:label="EditAbilityScoresFragment" />
|
android:label="EditAbilityScoresFragment" />
|
||||||
|
<fragment
|
||||||
|
android:id="@+id/editSavingThrowsFragment"
|
||||||
|
android:name="com.majinnaibu.monstercards.ui.editmonster.EditSavingThrowsFragment"
|
||||||
|
android:label="fragment_edit_saving_throws"
|
||||||
|
tools:layout="@layout/fragment_edit_saving_throws" />
|
||||||
</navigation>
|
</navigation>
|
||||||
|
|
||||||
</navigation>
|
</navigation>
|
||||||
@@ -35,6 +35,7 @@
|
|||||||
<string name="label_damage_vulnerabilities">Damage Vulnerabilities</string>
|
<string name="label_damage_vulnerabilities">Damage Vulnerabilities</string>
|
||||||
<string name="label_decrement_field">-</string>
|
<string name="label_decrement_field">-</string>
|
||||||
<string name="label_dexterity">Dexterity</string>
|
<string name="label_dexterity">Dexterity</string>
|
||||||
|
<string name="label_fly_speed">Fly Speed</string>
|
||||||
<string name="label_has_custom_hp">Has Custom HP</string>
|
<string name="label_has_custom_hp">Has Custom HP</string>
|
||||||
<string name="label_has_custom_speed">Has Custom Speed</string>
|
<string name="label_has_custom_speed">Has Custom Speed</string>
|
||||||
<string name="label_has_a_shield">Has a Shield</string>
|
<string name="label_has_a_shield">Has a Shield</string>
|
||||||
@@ -61,6 +62,7 @@
|
|||||||
<string name="label_speed">Speed</string>
|
<string name="label_speed">Speed</string>
|
||||||
<string name="label_strength">Strength</string>
|
<string name="label_strength">Strength</string>
|
||||||
<string name="label_subtype">Subtype</string>
|
<string name="label_subtype">Subtype</string>
|
||||||
|
<string name="label_swim_speed">Swim Speed</string>
|
||||||
<string name="label_type">Type</string>
|
<string name="label_type">Type</string>
|
||||||
<string name="label_wisdom">Wisdom</string>
|
<string name="label_wisdom">Wisdom</string>
|
||||||
<string name="section_divider">section divider</string>
|
<string name="section_divider">section divider</string>
|
||||||
@@ -73,7 +75,4 @@
|
|||||||
<string name="title_library">Library</string>
|
<string name="title_library">Library</string>
|
||||||
<string name="title_search">Search</string>
|
<string name="title_search">Search</string>
|
||||||
<string name="wisdom_abbreviation">WIS</string>
|
<string name="wisdom_abbreviation">WIS</string>
|
||||||
<string name="label_fly_speed">Fly Speed</string>
|
|
||||||
<string name="label_swim_speed">Swim Speed</string>
|
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
Reference in New Issue
Block a user