From 206a8be548c33c2a870f94b718df964dd5cebbe6 Mon Sep 17 00:00:00 2001 From: Negue Date: Fri, 16 Sep 2016 18:23:31 +0200 Subject: [PATCH] Show avatar transformations (snowball, shiny seed, seafoam and spooky sparkles) --- Habitica/assets/migrations/Habitica/27.sql | 3 + .../android/habitica/HabitDatabase.java | 2 +- .../android/habitica/ui/AvatarView.java | 18 +-- .../habitrpgwrapper/lib/models/Buffs.java | 33 +++++ .../lib/models/HabitRPGUser.java | 119 +++++++++++------- 5 files changed, 124 insertions(+), 51 deletions(-) create mode 100644 Habitica/assets/migrations/Habitica/27.sql diff --git a/Habitica/assets/migrations/Habitica/27.sql b/Habitica/assets/migrations/Habitica/27.sql new file mode 100644 index 000000000..7bed2d53e --- /dev/null +++ b/Habitica/assets/migrations/Habitica/27.sql @@ -0,0 +1,3 @@ +ALTER TABLE Buffs ADD COLUMN seafoam bool; +ALTER TABLE Buffs ADD COLUMN spookySparkles bool; +ALTER TABLE Buffs ADD COLUMN shinySeed bool; \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/HabitDatabase.java b/Habitica/src/main/java/com/habitrpg/android/habitica/HabitDatabase.java index a200812de..83a45a18c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/HabitDatabase.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/HabitDatabase.java @@ -7,5 +7,5 @@ public class HabitDatabase { public static final String NAME = "Habitica"; - public static final int VERSION = 26; + public static final int VERSION = 27; } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarView.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarView.java index 5b3808f85..b950b6daf 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarView.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarView.java @@ -248,6 +248,7 @@ public class AvatarView extends View { case HAIR_MUSTACHE: case HAIR_BEARD: case EYEWEAR: + case VISUAL_BUFF: case HEAD: case HEAD_ACCESSORY: case HAIR_FLOWER: @@ -451,14 +452,15 @@ public class AvatarView extends View { HAIR_MUSTACHE(11), HAIR_BEARD(12), EYEWEAR(13), - HEAD(14), - HEAD_ACCESSORY(15), - HAIR_FLOWER(16), - SHIELD(17), - WEAPON(18), - MOUNT_HEAD(19), - ZZZ(20), - PET(21); + VISUAL_BUFF(14), + HEAD(15), + HEAD_ACCESSORY(16), + HAIR_FLOWER(17), + SHIELD(18), + WEAPON(19), + MOUNT_HEAD(20), + ZZZ(21), + PET(22); final int order; diff --git a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/Buffs.java b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/Buffs.java index 9d15df86b..badedd3d1 100644 --- a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/Buffs.java +++ b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/Buffs.java @@ -16,6 +16,15 @@ public class Buffs extends BasicStats { @Column private Boolean streaks; + @Column + private Boolean seafoam; + + @Column + private Boolean spookySparkles; + + @Column + private Boolean shinySeed; + public Buffs() { this(false, false); } @@ -33,6 +42,30 @@ public class Buffs extends BasicStats { this.snowball = snowball; } + public Boolean getSeafoam() { + return seafoam != null ? seafoam : Boolean.FALSE; + } + + public void setSeafoam(Boolean seafoam) { + this.seafoam = seafoam; + } + + public Boolean getSpookySparkles() { + return spookySparkles != null ? spookySparkles : Boolean.FALSE; + } + + public void setSpookySparkles(Boolean spookySparkles) { + this.spookySparkles = spookySparkles; + } + + public Boolean getShinySeed() { + return shinySeed != null ? shinySeed : Boolean.FALSE; + } + + public void setShinySeed(Boolean shinySeed) { + this.shinySeed = shinySeed; + } + public Boolean getStreaks() { return streaks != null ? streaks : Boolean.FALSE; } diff --git a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/HabitRPGUser.java b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/HabitRPGUser.java index aa534748c..e8eee64c0 100644 --- a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/HabitRPGUser.java +++ b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/HabitRPGUser.java @@ -439,58 +439,93 @@ public class HabitRPGUser extends BaseModel { Preferences prefs = getPreferences(); Outfit outfit = (prefs.getCostume()) ? getItems().getGear().getCostume() : getItems().getGear().getEquipped(); - if (!TextUtils.isEmpty(prefs.getChair())) { - layerMap.put(AvatarView.LayerType.CHAIR, prefs.getChair()); - } + boolean hasVisualBuffs = false; - if (outfit != null) { - if (!TextUtils.isEmpty(outfit.getBack())) { - layerMap.put(AvatarView.LayerType.BACK, outfit.getBack()); + if(stats != null && stats.getBuffs() != null){ + Buffs buffs = stats.getBuffs(); + + if(buffs.getSnowball()){ + layerMap.put(AvatarView.LayerType.VISUAL_BUFF, "snowman"); + hasVisualBuffs = true; } - if (outfit.isAvailable(outfit.getArmor())) { - layerMap.put(AvatarView.LayerType.ARMOR, prefs.getSize() + "_" + outfit.getArmor()); + + if(buffs.getSeafoam()){ + layerMap.put(AvatarView.LayerType.VISUAL_BUFF, "seafoam_star"); + hasVisualBuffs = true; } - if (outfit.isAvailable(outfit.getBody())) { - layerMap.put(AvatarView.LayerType.BODY, outfit.getBody()); + + if(buffs.getShinySeed()){ + layerMap.put(AvatarView.LayerType.VISUAL_BUFF, "avatar_floral_"+stats.get_class()); + hasVisualBuffs = true; } - if (outfit.isAvailable(outfit.getEyeWear())) { - layerMap.put(AvatarView.LayerType.EYEWEAR, outfit.getEyeWear()); - } - if (outfit.isAvailable(outfit.getHead())) { - layerMap.put(AvatarView.LayerType.HEAD, outfit.getHead()); - } - if (outfit.isAvailable(outfit.getHeadAccessory())) { - layerMap.put(AvatarView.LayerType.HEAD_ACCESSORY, outfit.getHeadAccessory()); - } - if (outfit.isAvailable(outfit.getShield())) { - layerMap.put(AvatarView.LayerType.SHIELD, outfit.getShield()); - } - if (outfit.isAvailable(outfit.getWeapon())) { - layerMap.put(AvatarView.LayerType.WEAPON, outfit.getWeapon()); + + if(buffs.getSpookySparkles()){ + layerMap.put(AvatarView.LayerType.VISUAL_BUFF, "ghost"); + hasVisualBuffs = true; } } - layerMap.put(AvatarView.LayerType.SKIN, "skin_" + prefs.getSkin() + ((prefs.getSleep()) ? "_sleep" : "")); - layerMap.put(AvatarView.LayerType.SHIRT, prefs.getSize() + "_shirt_" + prefs.getShirt()); - layerMap.put(AvatarView.LayerType.HEAD_0, "head_0"); + if(!hasVisualBuffs) { + if (!TextUtils.isEmpty(prefs.getChair())) { + layerMap.put(AvatarView.LayerType.CHAIR, prefs.getChair()); + } - Hair hair = prefs.getHair(); - if (hair != null) { - String hairColor = hair.getColor(); + if (outfit != null) { + if (!TextUtils.isEmpty(outfit.getBack())) { + layerMap.put(AvatarView.LayerType.BACK, outfit.getBack()); + } + if (outfit.isAvailable(outfit.getArmor())) { + layerMap.put(AvatarView.LayerType.ARMOR, prefs.getSize() + "_" + outfit.getArmor()); + } + if (outfit.isAvailable(outfit.getBody())) { + layerMap.put(AvatarView.LayerType.BODY, outfit.getBody()); + } + if (outfit.isAvailable(outfit.getEyeWear())) { + layerMap.put(AvatarView.LayerType.EYEWEAR, outfit.getEyeWear()); + } + if (outfit.isAvailable(outfit.getHead())) { + layerMap.put(AvatarView.LayerType.HEAD, outfit.getHead()); + } + if (outfit.isAvailable(outfit.getHeadAccessory())) { + layerMap.put(AvatarView.LayerType.HEAD_ACCESSORY, outfit.getHeadAccessory()); + } + if (outfit.isAvailable(outfit.getShield())) { + layerMap.put(AvatarView.LayerType.SHIELD, outfit.getShield()); + } + if (outfit.isAvailable(outfit.getWeapon())) { + layerMap.put(AvatarView.LayerType.WEAPON, outfit.getWeapon()); + } + } - if (hair.isAvailable(hair.getBase())) { - layerMap.put(AvatarView.LayerType.HAIR_BASE, "hair_base_" + hair.getBase() + "_" + hairColor); + layerMap.put(AvatarView.LayerType.SKIN, "skin_" + prefs.getSkin() + ((prefs.getSleep()) ? "_sleep" : "")); + layerMap.put(AvatarView.LayerType.SHIRT, prefs.getSize() + "_shirt_" + prefs.getShirt()); + layerMap.put(AvatarView.LayerType.HEAD_0, "head_0"); + + Hair hair = prefs.getHair(); + if (hair != null) { + String hairColor = hair.getColor(); + + if (hair.isAvailable(hair.getBase())) { + layerMap.put(AvatarView.LayerType.HAIR_BASE, "hair_base_" + hair.getBase() + "_" + hairColor); + } + if (hair.isAvailable(hair.getBangs())) { + layerMap.put(AvatarView.LayerType.HAIR_BANGS, "hair_bangs_" + hair.getBangs() + "_" + hairColor); + } + if (hair.isAvailable(hair.getMustache())) { + layerMap.put(AvatarView.LayerType.HAIR_MUSTACHE, "hair_mustache_" + hair.getMustache() + "_" + hairColor); + } + if (hair.isAvailable(hair.getBeard())) { + layerMap.put(AvatarView.LayerType.HAIR_BEARD, "hair_beard_" + hair.getBeard() + "_" + hairColor); + } + if (hair.isAvailable(hair.getFlower())) { + layerMap.put(AvatarView.LayerType.HAIR_FLOWER, "hair_flower_" + hair.getFlower()); + } } - if (hair.isAvailable(hair.getBangs())) { - layerMap.put(AvatarView.LayerType.HAIR_BANGS, "hair_bangs_" + hair.getBangs() + "_" + hairColor); - } - if (hair.isAvailable(hair.getMustache())) { - layerMap.put(AvatarView.LayerType.HAIR_MUSTACHE, "hair_mustache_" + hair.getMustache() + "_" + hairColor); - } - if (hair.isAvailable(hair.getBeard())) { - layerMap.put(AvatarView.LayerType.HAIR_BEARD, "hair_beard_" + hair.getBeard() + "_" + hairColor); - } - if (hair.isAvailable(hair.getFlower())) { + } else { + Hair hair = prefs.getHair(); + + // Show flower all the time! + if (hair != null && hair.isAvailable(hair.getFlower())) { layerMap.put(AvatarView.LayerType.HAIR_FLOWER, "hair_flower_" + hair.getFlower()); } }