Moves DiffCallback methods into Monster class.

This commit is contained in:
2021-08-28 21:16:26 -07:00
committed by Tom Hicks
parent e598b2984a
commit a5eec5c4c8
2 changed files with 84 additions and 15 deletions

View File

@@ -23,6 +23,7 @@ import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
@@ -270,6 +271,69 @@ public class Monster {
regionalActions = new ArrayList<>(); regionalActions = new ArrayList<>();
} }
public static boolean areItemsTheSame(@NonNull Monster oldItem, @NonNull Monster newItem) {
return Objects.equals(oldItem.id, newItem.id);
}
public static boolean areContentsTheSame(@NonNull Monster oldItem, @NonNull Monster newItem) {
return Objects.equals(oldItem.abilities, newItem.abilities) &&
Objects.equals(oldItem.actions, newItem.actions) &&
Objects.equals(oldItem.alignment, newItem.alignment) &&
Objects.equals(oldItem.armorType, newItem.armorType) &&
Objects.equals(oldItem.burrowSpeed, newItem.burrowSpeed) &&
Objects.equals(oldItem.canHover, newItem.canHover) &&
Objects.equals(oldItem.challengeRating, newItem.challengeRating) &&
Objects.equals(oldItem.charismaSavingThrowAdvantage, newItem.charismaSavingThrowAdvantage) &&
Objects.equals(oldItem.charismaSavingThrowProficiency, newItem.charismaSavingThrowProficiency) &&
Objects.equals(oldItem.charismaScore, newItem.charismaScore) &&
Objects.equals(oldItem.climbSpeed, newItem.climbSpeed) &&
Objects.equals(oldItem.conditionImmunities, newItem.conditionImmunities) &&
Objects.equals(oldItem.constitutionSavingThrowAdvantage, newItem.constitutionSavingThrowAdvantage) &&
Objects.equals(oldItem.constitutionSavingThrowProficiency, newItem.constitutionSavingThrowProficiency) &&
Objects.equals(oldItem.constitutionScore, newItem.constitutionScore) &&
Objects.equals(oldItem.customChallengeRatingDescription, newItem.customChallengeRatingDescription) &&
Objects.equals(oldItem.customHPDescription, newItem.customHPDescription) &&
Objects.equals(oldItem.customProficiencyBonus, newItem.customProficiencyBonus) &&
Objects.equals(oldItem.customSpeedDescription, newItem.customSpeedDescription) &&
Objects.equals(oldItem.damageImmunities, newItem.damageImmunities) &&
Objects.equals(oldItem.damageResistances, newItem.damageResistances) &&
Objects.equals(oldItem.damageVulnerabilities, newItem.damageVulnerabilities) &&
Objects.equals(oldItem.dexteritySavingThrowAdvantage, newItem.dexteritySavingThrowAdvantage) &&
Objects.equals(oldItem.dexteritySavingThrowProficiency, newItem.dexteritySavingThrowProficiency) &&
Objects.equals(oldItem.dexterityScore, newItem.dexterityScore) &&
Objects.equals(oldItem.flySpeed, newItem.flySpeed) &&
Objects.equals(oldItem.hasCustomHP, newItem.hasCustomHP) &&
Objects.equals(oldItem.hasCustomSpeed, newItem.hasCustomSpeed) &&
Objects.equals(oldItem.hitDice, newItem.hitDice) &&
Objects.equals(oldItem.intelligenceSavingThrowAdvantage, newItem.intelligenceSavingThrowAdvantage) &&
Objects.equals(oldItem.intelligenceSavingThrowProficiency, newItem.intelligenceSavingThrowProficiency) &&
Objects.equals(oldItem.intelligenceScore, newItem.intelligenceScore) &&
Objects.equals(oldItem.lairActions, newItem.lairActions) &&
Objects.equals(oldItem.languages, newItem.languages) &&
Objects.equals(oldItem.legendaryActions, newItem.legendaryActions) &&
Objects.equals(oldItem.name, newItem.name) &&
Objects.equals(oldItem.naturalArmorBonus, newItem.naturalArmorBonus) &&
Objects.equals(oldItem.otherArmorDescription, newItem.otherArmorDescription) &&
Objects.equals(oldItem.reactions, newItem.reactions) &&
Objects.equals(oldItem.regionalActions, newItem.regionalActions) &&
Objects.equals(oldItem.senses, newItem.senses) &&
Objects.equals(oldItem.shieldBonus, newItem.shieldBonus) &&
Objects.equals(oldItem.size, newItem.size) &&
Objects.equals(oldItem.skills, newItem.skills) &&
Objects.equals(oldItem.strengthSavingThrowAdvantage, newItem.strengthSavingThrowAdvantage) &&
Objects.equals(oldItem.strengthSavingThrowProficiency, newItem.strengthSavingThrowProficiency) &&
Objects.equals(oldItem.strengthScore, newItem.strengthScore) &&
Objects.equals(oldItem.subtype, newItem.subtype) &&
Objects.equals(oldItem.swimSpeed, newItem.swimSpeed) &&
Objects.equals(oldItem.telepathyRange, newItem.telepathyRange) &&
Objects.equals(oldItem.type, newItem.type) &&
Objects.equals(oldItem.understandsButDescription, newItem.understandsButDescription) &&
Objects.equals(oldItem.wisdomSavingThrowAdvantage, newItem.wisdomSavingThrowAdvantage) &&
Objects.equals(oldItem.wisdomSavingThrowProficiency, newItem.wisdomSavingThrowProficiency) &&
Objects.equals(oldItem.wisdomScore, newItem.wisdomScore) &&
Objects.equals(oldItem.walkSpeed, newItem.walkSpeed);
}
public String getMeta() { public String getMeta() {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
boolean isFirstOutput = true; boolean isFirstOutput = true;

View File

@@ -11,6 +11,7 @@ import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.ListAdapter; import androidx.recyclerview.widget.ListAdapter;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.majinnaibu.monstercards.R;
import com.majinnaibu.monstercards.data.enums.AbilityScore; import com.majinnaibu.monstercards.data.enums.AbilityScore;
import com.majinnaibu.monstercards.data.enums.AdvantageType; import com.majinnaibu.monstercards.data.enums.AdvantageType;
import com.majinnaibu.monstercards.data.enums.ChallengeRating; import com.majinnaibu.monstercards.data.enums.ChallengeRating;
@@ -21,18 +22,18 @@ import com.majinnaibu.monstercards.models.Monster;
import com.majinnaibu.monstercards.models.Trait; import com.majinnaibu.monstercards.models.Trait;
import com.majinnaibu.monstercards.utils.Logger; import com.majinnaibu.monstercards.utils.Logger;
import org.jetbrains.annotations.NotNull; import java.util.Locale;
public class DashboardRecyclerViewAdapter extends ListAdapter<Monster, DashboardRecyclerViewAdapter.ViewHolder> { public class DashboardRecyclerViewAdapter extends ListAdapter<Monster, DashboardRecyclerViewAdapter.ViewHolder> {
private static final DiffUtil.ItemCallback<Monster> DIFF_CALLBACK = new DiffUtil.ItemCallback<Monster>() { private static final DiffUtil.ItemCallback<Monster> DIFF_CALLBACK = new DiffUtil.ItemCallback<Monster>() {
@Override @Override
public boolean areItemsTheSame(@NonNull @NotNull Monster oldItem, @NonNull @NotNull Monster newItem) { public boolean areItemsTheSame(@NonNull Monster oldItem, @NonNull Monster newItem) {
return oldItem.id.equals(newItem.id); return Monster.areItemsTheSame(oldItem, newItem);
} }
@Override @Override
public boolean areContentsTheSame(@NonNull @NotNull Monster oldItem, @NonNull @NotNull Monster newItem) { public boolean areContentsTheSame(@NonNull Monster oldItem, @NonNull Monster newItem) {
return oldItem.equals(newItem); return Monster.areContentsTheSame(oldItem, newItem);
} }
}; };
private final ItemCallback mOnClick; private final ItemCallback mOnClick;
@@ -43,14 +44,13 @@ public class DashboardRecyclerViewAdapter extends ListAdapter<Monster, Dashboard
} }
@NonNull @NonNull
@NotNull
@Override @Override
public ViewHolder onCreateViewHolder(@NonNull @NotNull ViewGroup parent, int viewType) { public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new ViewHolder(CardMonsterBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)); return new ViewHolder(CardMonsterBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
} }
@Override @Override
public void onBindViewHolder(@NonNull @NotNull ViewHolder holder, int position) { public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Logger.logUnimplementedMethod(); Logger.logUnimplementedMethod();
Monster monster = getItem(position); Monster monster = getItem(position);
holder.monster = monster; holder.monster = monster;
@@ -88,7 +88,7 @@ public class DashboardRecyclerViewAdapter extends ListAdapter<Monster, Dashboard
holder.armorClass.setText(String.valueOf(monster.getArmorClassValue())); holder.armorClass.setText(String.valueOf(monster.getArmorClassValue()));
holder.hitPoints.setText(String.valueOf(monster.getHitPointsValue())); holder.hitPoints.setText(String.valueOf(monster.getHitPointsValue()));
holder.challengeRating.setText("CR " + Helpers.getChallengeRatingAbbreviation(monster.challengeRating)); holder.challengeRating.setText(holder.challengeRating.getResources().getString(R.string.label_challenge_rating_with_value, Helpers.getChallengeRatingAbbreviation(monster.challengeRating)));
int numActions = monster.actions.size(); int numActions = monster.actions.size();
if (numActions > 0) { if (numActions > 0) {
@@ -170,7 +170,7 @@ public class DashboardRecyclerViewAdapter extends ListAdapter<Monster, Dashboard
public final TextView challengeRating; public final TextView challengeRating;
public Monster monster; public Monster monster;
public ViewHolder(CardMonsterBinding binding) { public ViewHolder(@NonNull CardMonsterBinding binding) {
super(binding.getRoot()); super(binding.getRoot());
name = binding.name; name = binding.name;
meta = binding.meta; meta = binding.meta;
@@ -214,11 +214,13 @@ public class DashboardRecyclerViewAdapter extends ListAdapter<Monster, Dashboard
} }
public static class Helpers { public static class Helpers {
@NonNull
public static String getModifierString(int value) { public static String getModifierString(int value) {
return String.format("%+d", value); return String.format(Locale.getDefault(), "%+d", value);
} }
public static String getAbilityScoreAbbreviation(AbilityScore abilityScore) { @NonNull
public static String getAbilityScoreAbbreviation(@NonNull AbilityScore abilityScore) {
switch (abilityScore) { switch (abilityScore) {
case STRENGTH: case STRENGTH:
return "S"; return "S";
@@ -238,7 +240,8 @@ public class DashboardRecyclerViewAdapter extends ListAdapter<Monster, Dashboard
} }
} }
public static String getChallengeRatingAbbreviation(ChallengeRating challengeRating) { @NonNull
public static String getChallengeRatingAbbreviation(@NonNull ChallengeRating challengeRating) {
Logger.logUnimplementedMethod(); Logger.logUnimplementedMethod();
switch (challengeRating) { switch (challengeRating) {
case CUSTOM: case CUSTOM:
@@ -317,7 +320,8 @@ public class DashboardRecyclerViewAdapter extends ListAdapter<Monster, Dashboard
} }
} }
public static String getProficiencyAbbreviation(ProficiencyType proficiency) { @NonNull
public static String getProficiencyAbbreviation(@NonNull ProficiencyType proficiency) {
switch (proficiency) { switch (proficiency) {
case NONE: case NONE:
return ""; return "";
@@ -331,7 +335,8 @@ public class DashboardRecyclerViewAdapter extends ListAdapter<Monster, Dashboard
} }
} }
public static String getAdvantageAbbreviation(AdvantageType advantage) { @NonNull
public static String getAdvantageAbbreviation(@NonNull AdvantageType advantage) {
switch (advantage) { switch (advantage) {
case NONE: case NONE:
return ""; return "";