From 66898885fa8fecc973de7c9b51fcf298d66307a0 Mon Sep 17 00:00:00 2001 From: Mohamad Alkotob Date: Wed, 4 Jan 2017 19:06:21 +0200 Subject: [PATCH 1/7] reverting style --- .../com/gpl/rpg/AndorsTrail/model/ability/SkillInfo.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ability/SkillInfo.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ability/SkillInfo.java index dcdbc40b5..3493c86f8 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ability/SkillInfo.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ability/SkillInfo.java @@ -88,9 +88,9 @@ public final class SkillInfo { private int getRequirementActualValue(Player player) { switch (requirementType) { - case skillLevel: return player.getSkillLevel(SkillCollection.SkillID.valueOf(skillOrStatID)); - case experienceLevel: return player.getLevel(); - case playerStat: return player.getStatValue(Player.StatID.valueOf(skillOrStatID)); + case skillLevel: return player.getSkillLevel(SkillCollection.SkillID.valueOf(skillOrStatID)); + case experienceLevel: return player.getLevel(); + case playerStat: return player.getStatValue(Player.StatID.valueOf(skillOrStatID)); default: return 0; } } From c27567c479579e4c7e912fe9fdb0b309ed43cd3b Mon Sep 17 00:00:00 2001 From: Mohamad Alkotob Date: Wed, 4 Jan 2017 19:08:35 +0200 Subject: [PATCH 2/7] reverting style --- .../rpg/AndorsTrail/model/item/Inventory.java | 243 +++++------------- 1 file changed, 70 insertions(+), 173 deletions(-) diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/Inventory.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/Inventory.java index e47c7459a..3493c86f8 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/Inventory.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/Inventory.java @@ -1,201 +1,98 @@ -package com.gpl.rpg.AndorsTrail.model.item; +package com.gpl.rpg.AndorsTrail.model.ability; -import android.content.ClipData; - -import com.gpl.rpg.AndorsTrail.context.WorldContext; import com.gpl.rpg.AndorsTrail.model.actor.Player; -import com.gpl.rpg.AndorsTrail.savegames.LegacySavegameFormatReaderForItemContainer; -import com.gpl.rpg.AndorsTrail.savegames.Savegames; -import java.io.DataInputStream; -import java.io.DataOutputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.Map; - -public final class Inventory extends ItemContainer { - - public static enum WearSlot { - weapon, shield, head, body, hand, feet, neck, leftring, rightring; - - public static WearSlot fromString(String s, WearSlot default_) { - if (s == null) return default_; - return valueOf(s); - } -} - - public int gold = 0; - private static final int NUM_WORN_SLOTS = WearSlot.values().length; - public static final int NUM_QUICK_SLOTS = 3; - private final ItemType[] wear = new ItemType[NUM_WORN_SLOTS]; - public final ItemType[] quickitem = new ItemType[NUM_QUICK_SLOTS]; - - public Inventory() { } - - public void clear() { - for(int i = 0; i < NUM_WORN_SLOTS; ++i) wear[i] = null; - for(int i = 0; i < NUM_QUICK_SLOTS; ++i) quickitem[i] = null; - gold = 0; - items.clear(); +public final class SkillInfo { + public static final int MAXLEVEL_NONE = -1; + public static enum LevelUpType { + alwaysShown + ,onlyByQuests + ,firstLevelRequiresQuest } - public void add(final Loot loot) { - this.gold += loot.gold; - this.add(loot.items); - } - public boolean isEmptySlot(WearSlot slot) { - return wear[slot.ordinal()] == null; + public final SkillCollection.SkillID id; + public final int maxLevel; + public final LevelUpType levelupVisibility; + public final SkillLevelRequirement[] levelupRequirements; + public final SkillCollection.SkillCategory categoryType; + public SkillInfo( + SkillCollection.SkillID id + , int maxLevel + , LevelUpType levelupVisibility + , SkillCollection.SkillCategory categoryType + , SkillLevelRequirement[] levelupRequirements + ) { + this.id = id; + this.maxLevel = maxLevel; + this.levelupVisibility = levelupVisibility; + this.levelupRequirements = levelupRequirements; + this.categoryType = categoryType; } - public ItemType getItemTypeInWearSlot(WearSlot slot) { - return wear[slot.ordinal()]; + public boolean hasMaxLevel() { + if (maxLevel == MAXLEVEL_NONE) return false; + else return true; } - public void setItemTypeInWearSlot(WearSlot slot, ItemType type) { - wear[slot.ordinal()] = type; + public boolean hasLevelupRequirements() { + return levelupRequirements != null; } - public boolean isWearing(String itemTypeID) { - for(int i = 0; i < NUM_WORN_SLOTS; ++i) { - if (wear[i] == null) continue; - if (wear[i].id.equals(itemTypeID)) return true; + public boolean canLevelUpSkillTo(Player player, int requestedSkillLevel) { + if (!hasLevelupRequirements()) return true; + + for (SkillLevelRequirement requirement : levelupRequirements) { + if (!requirement.isSatisfiedByPlayer(player, requestedSkillLevel)) return false; } - return false; + return true; } - public boolean isWearing(String itemTypeID, int minNumber) { - if (minNumber == 0) return isWearing(itemTypeID); - for(int i = 0; i < NUM_WORN_SLOTS; ++i) { - if (wear[i] == null) continue; - if (wear[i].id.equals(itemTypeID)) minNumber--; + public static final class SkillLevelRequirement { + public static enum RequirementType { + skillLevel + ,experienceLevel + ,playerStat } - return minNumber <= 0; - } + public final RequirementType requirementType; + public final String skillOrStatID; + public final int everySkillLevelRequiresThisAmount; + public final int initialRequiredAmount; - public static boolean isArmorSlot(WearSlot slot) { - if (slot == null) return false; - switch (slot) { - case head: - case body: - case hand: - case feet: - return true; - default: - return false; + private SkillLevelRequirement(RequirementType requirementType, int everySkillLevelRequiresThisAmount, int initialRequiredAmount, String skillOrStatID) { + this.requirementType = requirementType; + this.skillOrStatID = skillOrStatID; + this.everySkillLevelRequiresThisAmount = everySkillLevelRequiresThisAmount; + this.initialRequiredAmount = initialRequiredAmount; } - } - - // Move to item container? - public Inventory buildQuestItems() { - Inventory questItems = new Inventory(); - for (ItemEntry i : this.items) { - if (i == null) break; - if (i.itemType.isQuestItem()) - questItems.items.add(i); + public static SkillLevelRequirement requireOtherSkill(SkillCollection.SkillID skillID, int everySkillLevelRequiresThisAmount) { + return new SkillLevelRequirement(RequirementType.skillLevel, everySkillLevelRequiresThisAmount, 0, skillID.name()); } - return questItems; - } - // Move to item container? - public Inventory buildUsableItems() { - Inventory usableItems = new Inventory(); - for (ItemEntry i : this.items) { - if (i == null) break; - if (i.itemType.isUsable()) - usableItems.items.add(i); + public static SkillLevelRequirement requireExperienceLevels(int everySkillLevelRequiresThisAmount, int initialRequiredAmount) { + return new SkillLevelRequirement(RequirementType.experienceLevel, everySkillLevelRequiresThisAmount, initialRequiredAmount, null); } - return usableItems; - } - // Move to item container? - public Inventory buildWeaponItems() { - Inventory weaponItems = new Inventory(); - for (ItemEntry i : this.items) { - if (i == null) break; - if (i.itemType.isWeapon()) - weaponItems.items.add(i); + public static SkillLevelRequirement requirePlayerStats(Player.StatID statID, int everySkillLevelRequiresThisAmount, int initialRequiredAmount) { + return new SkillLevelRequirement(RequirementType.playerStat, everySkillLevelRequiresThisAmount, initialRequiredAmount, statID.name()); } - return weaponItems; - } - // Move to item container? - public Inventory buildArmorItems() { - Inventory armorItems = new Inventory(); - for (ItemEntry i : this.items) { - if (i == null) break; - if (i.itemType.isEquippable() && !i.itemType.isWeapon()) - armorItems.items.add(i); + + public boolean isSatisfiedByPlayer(Player player, int requestedSkillLevel) { + final int minimumValueRequired = getRequiredValue(requestedSkillLevel); + final int playerValue = getRequirementActualValue(player); + if (playerValue >= minimumValueRequired) return true; + return false; } - return armorItems; - } - // Move to item container? - public Inventory buildOtherItems() { - Inventory otherItems = new Inventory(); - for (ItemEntry i : this.items) { - if (i == null) break; - if (i.itemType.isEquippable() || i.itemType.isUsable() || i.itemType.isQuestItem()) - continue; - otherItems.items.add(i); + + public int getRequiredValue(int requestedSkillLevel) { + return requestedSkillLevel * everySkillLevelRequiresThisAmount + initialRequiredAmount; } - return otherItems; - } - // ====== PARCELABLE =================================================================== - - public Inventory(DataInputStream src, WorldContext world, int fileversion) throws IOException { - this.readFromParcel(src, world, fileversion); - } - - @Override - public void readFromParcel(DataInputStream src, WorldContext world, int fileversion) throws IOException { - super.readFromParcel(src, world, fileversion); - gold = src.readInt(); - - if (fileversion < 23) LegacySavegameFormatReaderForItemContainer.refundUpgradedItems(this); - - for(int i = 0; i < NUM_WORN_SLOTS; ++i) { - wear[i] = null; - } - final int numWornSlots = src.readInt(); - for(int i = 0; i < numWornSlots; ++i) { - if (src.readBoolean()) { - wear[i] = world.itemTypes.getItemType(src.readUTF()); + private int getRequirementActualValue(Player player) { + switch (requirementType) { + case skillLevel: return player.getSkillLevel(SkillCollection.SkillID.valueOf(skillOrStatID)); + case experienceLevel: return player.getLevel(); + case playerStat: return player.getStatValue(Player.StatID.valueOf(skillOrStatID)); + default: return 0; } } - for(int i = 0; i < NUM_QUICK_SLOTS; ++i) { - quickitem[i] = null; - } - if (fileversion >= 19) { - final int quickSlots = src.readInt(); - for(int i = 0; i < quickSlots; ++i) { - if (src.readBoolean()) { - quickitem[i] = world.itemTypes.getItemType(src.readUTF()); - } - } - } - } - - @Override - public void writeToParcel(DataOutputStream dest) throws IOException { - super.writeToParcel(dest); - dest.writeInt(gold); - dest.writeInt(NUM_WORN_SLOTS); - for(int i = 0; i < NUM_WORN_SLOTS; ++i) { - if (wear[i] != null) { - dest.writeBoolean(true); - dest.writeUTF(wear[i].id); - } else { - dest.writeBoolean(false); - } - } - dest.writeInt(NUM_QUICK_SLOTS); - for(int i = 0; i < NUM_QUICK_SLOTS; ++i) { - if (quickitem[i] != null) { - dest.writeBoolean(true); - dest.writeUTF(quickitem[i].id); - } else - dest.writeBoolean(false); - } } } From 1905e39e43b34f48c532e67672b89d06c80a7f87 Mon Sep 17 00:00:00 2001 From: Mohamad Alkotob Date: Wed, 4 Jan 2017 19:12:42 +0200 Subject: [PATCH 6/7] style --- AndorsTrail/res/layout/shoplist.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/AndorsTrail/res/layout/shoplist.xml b/AndorsTrail/res/layout/shoplist.xml index 13e880ad7..c14692396 100644 --- a/AndorsTrail/res/layout/shoplist.xml +++ b/AndorsTrail/res/layout/shoplist.xml @@ -37,6 +37,7 @@ + android:layout_height="wrap_content" + /> From e2b8ac73e8484c17788502907a9480ef399f5dc2 Mon Sep 17 00:00:00 2001 From: Mohamad Alkotob Date: Wed, 4 Jan 2017 19:13:03 +0200 Subject: [PATCH 7/7] a space --- AndorsTrail/res/layout/shoplist.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AndorsTrail/res/layout/shoplist.xml b/AndorsTrail/res/layout/shoplist.xml index c14692396..5f6e93784 100644 --- a/AndorsTrail/res/layout/shoplist.xml +++ b/AndorsTrail/res/layout/shoplist.xml @@ -37,7 +37,7 @@