Adds ability scores to monster card.
This commit is contained in:
@@ -432,4 +432,28 @@ public class Monster {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getStrengthDescription() {
|
||||||
|
return String.format(Locale.US, "%d (%+d)", getStrengthScore(), getStrengthModifier());
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDexterityDescription() {
|
||||||
|
return String.format(Locale.US, "%d (%+d)", getDexterityScore(), getDexterityModifier());
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getConstitutionDescription() {
|
||||||
|
return String.format(Locale.US, "%d (%+d)", getConstitutionScore(), getConstitutionModifier());
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getIntelligenceDescription() {
|
||||||
|
return String.format(Locale.US, "%d (%+d)", getIntelligenceScore(), getIntelligenceModifier());
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getWisdomDescription() {
|
||||||
|
return String.format(Locale.US, "%d (%+d)", getWisdomScore(), getWisdomModifier());
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCharismaDescription() {
|
||||||
|
return String.format(Locale.US, "%d (%+d)", getCharismaScore(), getCharismaModifier());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,6 +50,13 @@ public class MonsterFragment extends Fragment {
|
|||||||
monster.setSwimSpeed("0");
|
monster.setSwimSpeed("0");
|
||||||
monster.setCustomSpeed(false);
|
monster.setCustomSpeed(false);
|
||||||
monster.setSpeedDescription("30 ft., swim 30 ft.");
|
monster.setSpeedDescription("30 ft., swim 30 ft.");
|
||||||
|
// Ability Scores
|
||||||
|
monster.setStrengthScore(Integer.parseInt("2"));
|
||||||
|
monster.setDexterityScore(Integer.parseInt("20"));
|
||||||
|
monster.setConstitutionScore(Integer.parseInt("8"));
|
||||||
|
monster.setIntelligenceScore(Integer.parseInt("10"));
|
||||||
|
monster.setWisdomScore(Integer.parseInt("14"));
|
||||||
|
monster.setCharismaScore(Integer.parseInt("15"));
|
||||||
|
|
||||||
// END remove block
|
// END remove block
|
||||||
monsterViewModel = new ViewModelProvider(this).get(MonsterViewModel.class);
|
monsterViewModel = new ViewModelProvider(this).get(MonsterViewModel.class);
|
||||||
@@ -96,6 +103,54 @@ public class MonsterFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
final TextView monsterStrength = root.findViewById(R.id.strength);
|
||||||
|
monsterViewModel.getStrength().observe(getViewLifecycleOwner(), new Observer<String>() {
|
||||||
|
@Override
|
||||||
|
public void onChanged(String strength) {
|
||||||
|
monsterStrength.setText(strength);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
final TextView monsterDexterity = root.findViewById(R.id.dexterity);
|
||||||
|
monsterViewModel.getDexterity().observe(getViewLifecycleOwner(), new Observer<String>() {
|
||||||
|
@Override
|
||||||
|
public void onChanged(String dexterity) {
|
||||||
|
monsterDexterity.setText(dexterity);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
final TextView monsterConstitution = root.findViewById(R.id.constitution);
|
||||||
|
monsterViewModel.getConstitution().observe(getViewLifecycleOwner(), new Observer<String>() {
|
||||||
|
@Override
|
||||||
|
public void onChanged(String constitution) {
|
||||||
|
monsterConstitution.setText(constitution);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
final TextView monsterIntelligence = root.findViewById(R.id.intelligence);
|
||||||
|
monsterViewModel.getIntelligence().observe(getViewLifecycleOwner(), new Observer<String>() {
|
||||||
|
@Override
|
||||||
|
public void onChanged(String intelligence) {
|
||||||
|
monsterIntelligence.setText(intelligence);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
final TextView monsterWisdom = root.findViewById(R.id.wisdom);
|
||||||
|
monsterViewModel.getWisdom().observe(getViewLifecycleOwner(), new Observer<String>() {
|
||||||
|
@Override
|
||||||
|
public void onChanged(String wisdom) {
|
||||||
|
monsterWisdom.setText(wisdom);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
final TextView monsterCharisma = root.findViewById(R.id.charisma);
|
||||||
|
monsterViewModel.getCharisma().observe(getViewLifecycleOwner(), new Observer<String>() {
|
||||||
|
@Override
|
||||||
|
public void onChanged(String charisma) {
|
||||||
|
monsterCharisma.setText(charisma);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
return root;
|
return root;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,18 @@ public class MonsterViewModel extends ViewModel {
|
|||||||
mHitPoints.setValue("");
|
mHitPoints.setValue("");
|
||||||
mSpeed = new MutableLiveData<>();
|
mSpeed = new MutableLiveData<>();
|
||||||
mSpeed.setValue("");
|
mSpeed.setValue("");
|
||||||
|
mStrength = new MutableLiveData<>();
|
||||||
|
mStrength.setValue("");
|
||||||
|
mDexterity = new MutableLiveData<>();
|
||||||
|
mDexterity.setValue("");
|
||||||
|
mConstitution = new MutableLiveData<>();
|
||||||
|
mConstitution.setValue("");
|
||||||
|
mIntelligence = new MutableLiveData<>();
|
||||||
|
mIntelligence.setValue("");
|
||||||
|
mWisdom = new MutableLiveData<>();
|
||||||
|
mWisdom.setValue("");
|
||||||
|
mCharisma = new MutableLiveData<>();
|
||||||
|
mCharisma.setValue("");
|
||||||
}
|
}
|
||||||
|
|
||||||
private MutableLiveData<String> mName;
|
private MutableLiveData<String> mName;
|
||||||
@@ -42,6 +54,30 @@ public class MonsterViewModel extends ViewModel {
|
|||||||
public LiveData<String> getSpeed() {
|
public LiveData<String> getSpeed() {
|
||||||
return mSpeed;
|
return mSpeed;
|
||||||
}
|
}
|
||||||
|
private MutableLiveData<String> mStrength;
|
||||||
|
public LiveData<String> getStrength() {
|
||||||
|
return mStrength;
|
||||||
|
}
|
||||||
|
private MutableLiveData<String> mDexterity;
|
||||||
|
public LiveData<String> getDexterity() {
|
||||||
|
return mDexterity;
|
||||||
|
}
|
||||||
|
private MutableLiveData<String> mConstitution;
|
||||||
|
public LiveData<String> getConstitution() {
|
||||||
|
return mConstitution;
|
||||||
|
}
|
||||||
|
private MutableLiveData<String> mIntelligence;
|
||||||
|
public LiveData<String> getIntelligence() {
|
||||||
|
return mIntelligence;
|
||||||
|
}
|
||||||
|
private MutableLiveData<String> mWisdom;
|
||||||
|
public LiveData<String> getWisdom() {
|
||||||
|
return mWisdom;
|
||||||
|
}
|
||||||
|
private MutableLiveData<String> mCharisma;
|
||||||
|
public LiveData<String> getCharisma() {
|
||||||
|
return mCharisma;
|
||||||
|
}
|
||||||
|
|
||||||
private Monster mMonster;
|
private Monster mMonster;
|
||||||
public void setMonster(Monster monster) {
|
public void setMonster(Monster monster) {
|
||||||
@@ -51,5 +87,11 @@ public class MonsterViewModel extends ViewModel {
|
|||||||
mArmorClass.setValue(mMonster.getArmorClass());
|
mArmorClass.setValue(mMonster.getArmorClass());
|
||||||
mHitPoints.setValue(mMonster.getHitPoints());
|
mHitPoints.setValue(mMonster.getHitPoints());
|
||||||
mSpeed.setValue(mMonster.getSpeedText());
|
mSpeed.setValue(mMonster.getSpeedText());
|
||||||
|
mStrength.setValue(monster.getStrengthDescription());
|
||||||
|
mDexterity.setValue(monster.getDexterityDescription());
|
||||||
|
mConstitution.setValue(monster.getConstitutionDescription());
|
||||||
|
mIntelligence.setValue(monster.getIntelligenceDescription());
|
||||||
|
mWisdom.setValue(monster.getWisdomDescription());
|
||||||
|
mCharisma.setValue(monster.getCharismaDescription());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -95,5 +95,201 @@
|
|||||||
app:layout_constraintTop_toBottomOf="@+id/hit_points"
|
app:layout_constraintTop_toBottomOf="@+id/hit_points"
|
||||||
tools:text="10 ft., fly 30 ft." />
|
tools:text="10 ft., fly 30 ft." />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/divider2"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="8dp"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:contentDescription="@string/section_divider"
|
||||||
|
android:scaleType="fitXY"
|
||||||
|
android:src="@drawable/ic_section_divider"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/speed" />
|
||||||
|
|
||||||
|
<!-- Strength -->
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/label_str"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintEnd_toStartOf="@+id/label_dex"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/divider2"
|
||||||
|
android:text="@string/strength_abbreviation"
|
||||||
|
android:textAlignment="center"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/strength"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
app:layout_constraintStart_toStartOf="@+id/label_str"
|
||||||
|
app:layout_constraintEnd_toEndOf="@+id/label_str"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/label_str"
|
||||||
|
android:textAlignment="center"
|
||||||
|
tools:text="2 (-4)" />
|
||||||
|
|
||||||
|
<!-- Dexterity -->
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/label_dex"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
app:layout_constraintStart_toEndOf="@+id/label_str"
|
||||||
|
app:layout_constraintEnd_toStartOf="@+id/label_con"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/divider2"
|
||||||
|
android:text="@string/dexterity_abbreviation"
|
||||||
|
android:textAlignment="center"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/dexterity"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
app:layout_constraintStart_toStartOf="@+id/label_dex"
|
||||||
|
app:layout_constraintEnd_toEndOf="@+id/label_dex"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/label_dex"
|
||||||
|
android:textAlignment="center"
|
||||||
|
tools:text="20 (+5)" />
|
||||||
|
|
||||||
|
<!-- Constitution -->
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/label_con"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
app:layout_constraintStart_toEndOf="@+id/label_dex"
|
||||||
|
app:layout_constraintEnd_toStartOf="@+id/label_int"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/divider2"
|
||||||
|
android:text="@string/constitution_abbreviation"
|
||||||
|
android:textAlignment="center"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/constitution"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textAlignment="center"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
app:layout_constraintStart_toStartOf="@+id/label_con"
|
||||||
|
app:layout_constraintEnd_toEndOf="@+id/label_con"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/label_con"
|
||||||
|
tools:text="8 (-1)" />
|
||||||
|
|
||||||
|
<!-- Intelligence -->
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/label_int"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
app:layout_constraintStart_toEndOf="@+id/label_con"
|
||||||
|
app:layout_constraintEnd_toStartOf="@+id/label_wis"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/divider2"
|
||||||
|
android:text="@string/intelligence_abbreviation"
|
||||||
|
android:textAlignment="center"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/intelligence"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
app:layout_constraintStart_toStartOf="@+id/label_int"
|
||||||
|
app:layout_constraintEnd_toEndOf="@+id/label_int"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/label_int"
|
||||||
|
android:textAlignment="center"
|
||||||
|
tools:text="10 (+0)" />
|
||||||
|
|
||||||
|
<!-- Wisdom -->
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/label_wis"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
app:layout_constraintStart_toEndOf="@+id/label_int"
|
||||||
|
app:layout_constraintEnd_toStartOf="@+id/label_cha"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/divider2"
|
||||||
|
android:text="@string/wisdom_abbreviation"
|
||||||
|
android:textAlignment="center"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/wisdom"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
app:layout_constraintStart_toStartOf="@+id/label_wis"
|
||||||
|
app:layout_constraintEnd_toEndOf="@+id/label_wis"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/label_wis"
|
||||||
|
android:textAlignment="center"
|
||||||
|
tools:text="14 (+2)" />
|
||||||
|
|
||||||
|
<!-- Charisma -->
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/label_cha"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
app:layout_constraintStart_toEndOf="@+id/label_wis"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/divider2"
|
||||||
|
android:text="@string/charisma_abbreviation"
|
||||||
|
android:textAlignment="center"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/charisma"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
app:layout_constraintStart_toStartOf="@+id/label_cha"
|
||||||
|
app:layout_constraintEnd_toEndOf="@+id/label_cha"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/label_cha"
|
||||||
|
android:textAlignment="center"
|
||||||
|
tools:text="15 (+2)" />
|
||||||
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
@@ -7,4 +7,10 @@
|
|||||||
<string name="action_search">Search</string>
|
<string name="action_search">Search</string>
|
||||||
<string name="label_search_query">Query</string>
|
<string name="label_search_query">Query</string>
|
||||||
<string name="section_divider">section divider</string>
|
<string name="section_divider">section divider</string>
|
||||||
|
<string name="strength_abbreviation">STR</string>
|
||||||
|
<string name="dexterity_abbreviation">DEX</string>
|
||||||
|
<string name="constitution_abbreviation">CON</string>
|
||||||
|
<string name="intelligence_abbreviation">INT</string>
|
||||||
|
<string name="wisdom_abbreviation">WIS</string>
|
||||||
|
<string name="charisma_abbreviation">CHA</string>
|
||||||
</resources>
|
</resources>
|
||||||
Reference in New Issue
Block a user