diff --git a/AndorsTrail/res/layout/basetraitsinfoview.xml b/AndorsTrail/res/layout/basetraitsinfoview.xml
deleted file mode 100644
index 29e0fbf9f..000000000
--- a/AndorsTrail/res/layout/basetraitsinfoview.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/AndorsTrail/res/layout/heroinfo_stats.xml b/AndorsTrail/res/layout/heroinfo_stats.xml
index 990fecc8a..5a53ab869 100644
--- a/AndorsTrail/res/layout/heroinfo_stats.xml
+++ b/AndorsTrail/res/layout/heroinfo_stats.xml
@@ -15,7 +15,9 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="vertical" >
+ android:orientation="vertical"
+ android:id="@+id/heroinfo_container"
+ >
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:text="@string/actorinfo_basetraits"
+ />
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AndorsTrail/res/layout/monsterinfo.xml b/AndorsTrail/res/layout/monsterinfo.xml
index ef76a987c..710ebc891 100644
--- a/AndorsTrail/res/layout/monsterinfo.xml
+++ b/AndorsTrail/res/layout/monsterinfo.xml
@@ -16,6 +16,7 @@
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="@dimen/dialog_margin"
+ android:id="@+id/monsterinfo_container"
>
-
-
+ android:id="@+id/actorinfo_stats_table"
+ >
+
+
+
+
+
+
+
@@ -75,11 +77,11 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/actorinfo_currentconditions"
- android:id="@+id/monsterinfo_currentconditions_title"
+ android:id="@+id/actorinfo_currentconditions_title"
android:layout_marginTop="@dimen/section_margin"
/>
diff --git a/AndorsTrail/res/layout/traitsinfoview.xml b/AndorsTrail/res/layout/traitsinfoview.xml
index c9f5c6e42..e3c869792 100644
--- a/AndorsTrail/res/layout/traitsinfoview.xml
+++ b/AndorsTrail/res/layout/traitsinfoview.xml
@@ -1,56 +1,45 @@
-
-
-
-
+
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
+
+
+
+
\ No newline at end of file
diff --git a/AndorsTrail/res/values/strings.xml b/AndorsTrail/res/values/strings.xml
index 08fe4cd88..075c1ca2f 100644
--- a/AndorsTrail/res/values/strings.xml
+++ b/AndorsTrail/res/values/strings.xml
@@ -559,5 +559,10 @@
Confirm overwriting savegames
Gives a question about whether you want to overwrite when saving to a savegame slot that already contains a savegame.
-
+
+
+
+ Re-equip cost (AP):
+ Use item cost (AP):
+
diff --git a/AndorsTrail/res/values/ui_theme.xml b/AndorsTrail/res/values/ui_styles.xml
similarity index 90%
rename from AndorsTrail/res/values/ui_theme.xml
rename to AndorsTrail/res/values/ui_styles.xml
index ebe0c7fef..32324a9b4 100644
--- a/AndorsTrail/res/values/ui_theme.xml
+++ b/AndorsTrail/res/values/ui_styles.xml
@@ -34,4 +34,8 @@
- wrap_content
- wrap_content
+
+
\ No newline at end of file
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/Savegames.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/Savegames.java
index 89e93b4ff..6e6ccd1a6 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/Savegames.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/Savegames.java
@@ -127,7 +127,7 @@ public final class Savegames {
}
private static void onWorldLoaded(WorldContext world) {
- ActorStatsController.recalculatePlayerCombatTraits(world.model.player);
+ ActorStatsController.recalculatePlayerStats(world.model.player);
Controller.resetMapsNotRecentlyVisited(world);
MovementController.moveBlockedActors(world);
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/HeroinfoActivity_Stats.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/HeroinfoActivity_Stats.java
index e223b2899..befcb3b0d 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/HeroinfoActivity_Stats.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/HeroinfoActivity_Stats.java
@@ -10,8 +10,6 @@ import com.gpl.rpg.AndorsTrail.model.actor.Player;
import com.gpl.rpg.AndorsTrail.model.item.Inventory;
import com.gpl.rpg.AndorsTrail.model.item.ItemTraits_OnUse;
import com.gpl.rpg.AndorsTrail.model.item.ItemType;
-import com.gpl.rpg.AndorsTrail.view.ActorConditionList;
-import com.gpl.rpg.AndorsTrail.view.BaseTraitsInfoView;
import com.gpl.rpg.AndorsTrail.view.ItemEffectsView;
import com.gpl.rpg.AndorsTrail.view.RangeBar;
import com.gpl.rpg.AndorsTrail.view.TraitsInfoView;
@@ -21,7 +19,9 @@ import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
+import android.view.ViewGroup;
import android.widget.Button;
+import android.widget.TableLayout;
import android.widget.TextView;
public final class HeroinfoActivity_Stats extends Activity {
@@ -31,16 +31,19 @@ public final class HeroinfoActivity_Stats extends Activity {
private Button levelUpButton;
private TextView heroinfo_ap;
- private TextView heroinfo_movecost;
- private TraitsInfoView heroinfo_currenttraits;
- private ItemEffectsView heroinfo_itemeffects;
- private TextView heroinfo_currentconditions_title;
- private ActorConditionList heroinfo_currentconditions;
+ private TextView heroinfo_reequip_cost;
+ private TextView heroinfo_useitem_cost;
private TextView heroinfo_level;
private TextView heroinfo_totalexperience;
+ private TextView basetraitsinfo_max_hp;
+ private TextView basetraitsinfo_max_ap;
+ private TextView heroinfo_base_reequip_cost;
+ private TextView heroinfo_base_useitem_cost;
private RangeBar rangebar_hp;
private RangeBar rangebar_exp;
- private BaseTraitsInfoView heroinfo_basetraits;
+ private ItemEffectsView actorinfo_onhiteffects;
+ private TableLayout heroinfo_basestats_table;
+ private ViewGroup heroinfo_container;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -55,15 +58,20 @@ public final class HeroinfoActivity_Stats extends Activity {
TextView tv = (TextView) findViewById(R.id.heroinfo_title);
tv.setText(player.getName());
world.tileManager.setImageViewTile(tv, player);
+
+ heroinfo_container = (ViewGroup) findViewById(R.id.heroinfo_container);
heroinfo_ap = (TextView) findViewById(R.id.heroinfo_ap);
- heroinfo_movecost = (TextView) findViewById(R.id.heroinfo_movecost);
- heroinfo_currenttraits = (TraitsInfoView) findViewById(R.id.heroinfo_currenttraits);
- heroinfo_itemeffects = (ItemEffectsView) findViewById(R.id.heroinfo_itemeffects);
- heroinfo_currentconditions_title = (TextView) findViewById(R.id.heroinfo_currentconditions_title);
- heroinfo_currentconditions = (ActorConditionList) findViewById(R.id.heroinfo_currentconditions);
+ heroinfo_reequip_cost = (TextView) findViewById(R.id.heroinfo_reequip_cost);
+ heroinfo_useitem_cost = (TextView) findViewById(R.id.heroinfo_useitem_cost);
+ basetraitsinfo_max_hp = (TextView) findViewById(R.id.basetraitsinfo_max_hp);
+ basetraitsinfo_max_ap = (TextView) findViewById(R.id.basetraitsinfo_max_ap);
+ heroinfo_base_reequip_cost = (TextView) findViewById(R.id.heroinfo_base_reequip_cost);
+ heroinfo_base_useitem_cost = (TextView) findViewById(R.id.heroinfo_base_useitem_cost);
heroinfo_level = (TextView) findViewById(R.id.heroinfo_level);
heroinfo_totalexperience = (TextView) findViewById(R.id.heroinfo_totalexperience);
-
+ actorinfo_onhiteffects = (ItemEffectsView) findViewById(R.id.actorinfo_onhiteffects);
+ heroinfo_basestats_table = (TableLayout) findViewById(R.id.heroinfo_basestats_table);
+
rangebar_hp = (RangeBar) findViewById(R.id.heroinfo_healthbar);
rangebar_hp.init(R.drawable.ui_progress_health, R.string.status_hp);
rangebar_exp = (RangeBar) findViewById(R.id.heroinfo_expbar);
@@ -81,8 +89,6 @@ public final class HeroinfoActivity_Stats extends Activity {
levelUpButton.setEnabled(false);
}
});
-
- heroinfo_basetraits = (BaseTraitsInfoView) findViewById(R.id.heroinfo_basetraits);
}
@Override
@@ -90,7 +96,6 @@ public final class HeroinfoActivity_Stats extends Activity {
super.onResume();
updateTraits();
updateLevelup();
- updateConditions();
}
@Override
@@ -105,17 +110,35 @@ public final class HeroinfoActivity_Stats extends Activity {
private void updateLevelup() {
levelUpButton.setEnabled(player.canLevelup());
}
-
+
private void updateTraits() {
heroinfo_level.setText(Integer.toString(player.getLevel()));
heroinfo_totalexperience.setText(Integer.toString(player.getTotalExperience()));
heroinfo_ap.setText(player.ap.toString());
- heroinfo_movecost.setText(Integer.toString(player.getMoveCost()));
+ heroinfo_reequip_cost.setText(Integer.toString(player.getReequipCost()));
+ heroinfo_useitem_cost.setText(Integer.toString(player.getUseItemCost()));
+ basetraitsinfo_max_hp.setText(Integer.toString(player.baseTraits.maxHP));
+ basetraitsinfo_max_ap.setText(Integer.toString(player.baseTraits.maxAP));
+ heroinfo_base_reequip_cost.setText(Integer.toString(player.baseTraits.reequipCost));
+ heroinfo_base_useitem_cost.setText(Integer.toString(player.baseTraits.useItemCost));
rangebar_hp.update(player.health);
rangebar_exp.update(player.levelExperience);
- heroinfo_currenttraits.update(player);
- ArrayList effects_hit = new ArrayList();
+ TraitsInfoView.update(heroinfo_container, player);
+ TraitsInfoView.updateTraitsTable(
+ heroinfo_basestats_table
+ , player.baseTraits.moveCost
+ , player.baseTraits.attackCost
+ , player.baseTraits.attackChance
+ , player.baseTraits.damagePotential
+ , player.baseTraits.criticalSkill
+ , player.baseTraits.criticalMultiplier
+ , player.baseTraits.blockChance
+ , player.baseTraits.damageResistance
+ , false
+ );
+
+ ArrayList effects_hit = new ArrayList();
ArrayList effects_kill = new ArrayList();
for (int i = 0; i < Inventory.NUM_WORN_SLOTS; ++i) {
ItemType type = player.inventory.wear[i];
@@ -125,18 +148,6 @@ public final class HeroinfoActivity_Stats extends Activity {
}
if (effects_hit.isEmpty()) effects_hit = null;
if (effects_kill.isEmpty()) effects_kill = null;
- heroinfo_itemeffects.update(null, null, effects_hit, effects_kill, false);
- heroinfo_basetraits.update(player.baseTraits);
+ actorinfo_onhiteffects.update(null, null, effects_hit, effects_kill, false);
}
-
- private void updateConditions() {
- if (player.conditions.isEmpty()) {
- heroinfo_currentconditions_title.setVisibility(View.GONE);
- heroinfo_currentconditions.setVisibility(View.GONE);
- } else {
- heroinfo_currentconditions_title.setVisibility(View.VISIBLE);
- heroinfo_currentconditions.setVisibility(View.VISIBLE);
- heroinfo_currentconditions.update(player.conditions);
- }
- }
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/LevelUpActivity.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/LevelUpActivity.java
index 8ce0a6ad3..973bdbc28 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/LevelUpActivity.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/LevelUpActivity.java
@@ -138,7 +138,6 @@ public final class LevelUpActivity extends Activity {
player.baseTraits.maxHP += hpIncrease;
player.health.current += hpIncrease;
- player.recalculateLevelExperience();
- ActorStatsController.recalculatePlayerCombatTraits(player);
+ ActorStatsController.recalculatePlayerStats(player);
}
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/MonsterInfoActivity.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/MonsterInfoActivity.java
index 766fd26ac..21069760b 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/MonsterInfoActivity.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/MonsterInfoActivity.java
@@ -6,7 +6,6 @@ import com.gpl.rpg.AndorsTrail.R;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.CombatController;
import com.gpl.rpg.AndorsTrail.model.actor.Monster;
-import com.gpl.rpg.AndorsTrail.view.ActorConditionList;
import com.gpl.rpg.AndorsTrail.view.ItemEffectsView;
import com.gpl.rpg.AndorsTrail.view.RangeBar;
import com.gpl.rpg.AndorsTrail.view.TraitsInfoView;
@@ -14,6 +13,7 @@ import com.gpl.rpg.AndorsTrail.view.TraitsInfoView;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
+import android.view.ViewGroup;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
@@ -21,16 +21,16 @@ import android.widget.TextView;
public final class MonsterInfoActivity extends Activity {
- private TextView monsterinfo_title;
- private TextView monsterinfo_difficulty;
- private TraitsInfoView monsterinfo_currenttraits;
- private ItemEffectsView monsterinfo_onhiteffects;
- private TextView monsterinfo_currentconditions_title;
- private TextView monsterinfo_immune_criticals;
- private ActorConditionList monsterinfo_currentconditions;
- private RangeBar hp;
private WorldContext world;
+ private TextView monsterinfo_title;
+ private TextView monsterinfo_difficulty;
+ private ItemEffectsView monsterinfo_onhiteffects;
+ private RangeBar hp;
+ private ViewGroup monsterinfo_container;
+ private TextView monsterinfo_max_ap;
+
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -43,7 +43,7 @@ public final class MonsterInfoActivity extends Activity {
monsterinfo_title = (TextView) findViewById(R.id.monsterinfo_title);
monsterinfo_difficulty = (TextView) findViewById(R.id.monsterinfo_difficulty);
- monsterinfo_immune_criticals = (TextView) findViewById(R.id.monsterinfo_immune_criticals);
+ monsterinfo_max_ap = (TextView) findViewById(R.id.monsterinfo_max_ap);
Button b = (Button) findViewById(R.id.monsterinfo_close);
b.setOnClickListener(new OnClickListener() {
@@ -53,12 +53,10 @@ public final class MonsterInfoActivity extends Activity {
}
});
- monsterinfo_currenttraits = (TraitsInfoView) findViewById(R.id.monsterinfo_currenttraits);
- monsterinfo_onhiteffects = (ItemEffectsView) findViewById(R.id.monsterinfo_onhiteffects);
- monsterinfo_currentconditions_title = (TextView) findViewById(R.id.monsterinfo_currentconditions_title);
- monsterinfo_currentconditions = (ActorConditionList) findViewById(R.id.monsterinfo_currentconditions);
+ monsterinfo_onhiteffects = (ItemEffectsView) findViewById(R.id.actorinfo_onhiteffects);
hp = (RangeBar) findViewById(R.id.monsterinfo_healthbar);
hp.init(R.drawable.ui_progress_health, R.string.status_hp);
+ monsterinfo_container = (ViewGroup) findViewById(R.id.monsterinfo_container);
}
@Override
@@ -73,7 +71,6 @@ public final class MonsterInfoActivity extends Activity {
updateTitle(monster);
updateTraits(monster);
- updateConditions(monster);
}
private void updateTitle(Monster monster) {
@@ -83,7 +80,7 @@ public final class MonsterInfoActivity extends Activity {
}
private void updateTraits(Monster monster) {
- monsterinfo_currenttraits.update(monster);
+ TraitsInfoView.update(monsterinfo_container, monster);
monsterinfo_onhiteffects.update(
null,
null,
@@ -91,7 +88,7 @@ public final class MonsterInfoActivity extends Activity {
null,
false);
hp.update(monster.health);
- monsterinfo_immune_criticals.setVisibility(monster.isImmuneToCriticalHits() ? View.VISIBLE : View.GONE);
+ monsterinfo_max_ap.setText(Integer.toString(monster.ap.max));
}
public static int getMonsterDifficultyResource(WorldContext world, Monster monster) {
@@ -103,15 +100,4 @@ public final class MonsterInfoActivity extends Activity {
else if (difficulty == 0) return R.string.monster_difficulty_impossible;
else return R.string.monster_difficulty_veryhard;
}
-
- private void updateConditions(Monster monster) {
- if (monster.conditions.isEmpty()) {
- monsterinfo_currentconditions_title.setVisibility(View.GONE);
- monsterinfo_currentconditions.setVisibility(View.GONE);
- } else {
- monsterinfo_currentconditions_title.setVisibility(View.VISIBLE);
- monsterinfo_currentconditions.setVisibility(View.VISIBLE);
- monsterinfo_currentconditions.update(monster.conditions);
- }
- }
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ActorStatsController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ActorStatsController.java
index 8f8385cae..007b5c5b3 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ActorStatsController.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ActorStatsController.java
@@ -185,8 +185,9 @@ public class ActorStatsController {
if (actor.damagePotential.max < 0) actor.damagePotential.set(0, 0);
}
- public static void recalculatePlayerCombatTraits(Player player) {
+ public static void recalculatePlayerStats(Player player) {
player.resetStatsToBaseTraits();
+ player.recalculateLevelExperience();
ItemController.applyInventoryEffects(player);
SkillController.applySkillEffects(player);
applyEffectsFromCurrentConditions(player);
@@ -201,7 +202,7 @@ public class ActorStatsController {
monster.ap.capAtMax();
}
private static void recalculateActorCombatTraits(Actor actor) {
- if (actor.isPlayer) recalculatePlayerCombatTraits((Player) actor);
+ if (actor.isPlayer) recalculatePlayerStats((Player) actor);
else recalculateMonsterCombatTraits((Monster) actor);
}
@@ -232,7 +233,7 @@ public class ActorStatsController {
player.conditions.remove(i);
player.conditionListener.onActorConditionRemoved(player, c);
}
- recalculatePlayerCombatTraits(player);
+ recalculatePlayerStats(player);
}
}
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/Controller.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/Controller.java
index f2ed76c73..4672b3f75 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/Controller.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/Controller.java
@@ -78,7 +78,7 @@ public final class Controller {
public static void playerRested(final WorldContext world, MapObject area) {
final Player player = world.model.player;
ActorStatsController.removeAllTemporaryConditions(player);
- ActorStatsController.recalculatePlayerCombatTraits(player);
+ ActorStatsController.recalculatePlayerStats(player);
player.setMaxAP();
player.setMaxHP();
if (area != null) {
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ItemController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ItemController.java
index 0a5dd35a3..7ad6e2636 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ItemController.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ItemController.java
@@ -53,7 +53,7 @@ public final class ItemController {
player.inventory.wear[slot] = type;
ActorStatsController.addConditionsFromEquippedItem(player, type);
- ActorStatsController.recalculatePlayerCombatTraits(player);
+ ActorStatsController.recalculatePlayerStats(player);
}
public void unequipSlot(ItemType type, int slot) {
@@ -66,7 +66,7 @@ public final class ItemController {
}
unequipSlot(player, slot);
- ActorStatsController.recalculatePlayerCombatTraits(player);
+ ActorStatsController.recalculatePlayerStats(player);
}
private static void unequipSlot(Player player, int slot) {
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Actor.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Actor.java
index 3549e4140..ee39db03c 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Actor.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Actor.java
@@ -60,9 +60,6 @@ public class Actor {
public ItemTraits_OnUse[] getOnHitEffects() { return onHitEffects; }
public List getOnHitEffectsAsList() { return onHitEffects == null ? null : Arrays.asList(onHitEffects); }
- public boolean hasAttackChanceEffect_() { return getAttackChance() != 0; }
- public boolean hasAttackDamageEffect_() { return getDamagePotential().max != 0; }
- public boolean hasBlockEffect_() { return getBlockChance() != 0; }
public boolean hasCriticalSkillEffect() { return getCriticalSkill() != 0; }
public boolean hasCriticalMultiplierEffect() { float m = getCriticalMultiplier(); return m != 0 && m != 1; }
public boolean hasCriticalAttacks() { return hasCriticalSkillEffect() && hasCriticalMultiplierEffect(); }
@@ -75,7 +72,6 @@ public class Actor {
if (v < 0) return 0;
return v;
}
-
public boolean isDead() {
return health.current <= 0;
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Player.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Player.java
index 24733f0a1..2a551243a 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Player.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Player.java
@@ -126,7 +126,6 @@ public final class Player extends Actor {
this.skillLevels.clear();
this.availableSkillIncreases = 0;
this.alignments.clear();
- recalculateLevelExperience();
Loot startItems = new Loot();
dropLists.getDropList(DropListCollection.DROPLIST_STARTITEMS).createRandomLoot(startItems, this);
@@ -140,7 +139,7 @@ public final class Player extends Actor {
this.spawnPlace = "rest";
}
- ActorStatsController.recalculatePlayerCombatTraits(this);
+ ActorStatsController.recalculatePlayerStats(this);
}
public boolean hasExactQuestProgress(QuestProgress progress) { return hasExactQuestProgress(progress.questID, progress.progress); }
@@ -193,7 +192,7 @@ public final class Player extends Actor {
}
public void addSkillLevel(int skillID) {
skillLevels.put(skillID, skillLevels.get(skillID) + 1);
- ActorStatsController.recalculatePlayerCombatTraits(this);
+ ActorStatsController.recalculatePlayerStats(this);
}
public boolean nextLevelAddsNewSkillpoint() {
return thisLevelAddsNewSkillpoint(level + 1);
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/BaseTraitsInfoView.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/BaseTraitsInfoView.java
deleted file mode 100644
index b8435ae46..000000000
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/BaseTraitsInfoView.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.gpl.rpg.AndorsTrail.view;
-
-import com.gpl.rpg.AndorsTrail.R;
-import com.gpl.rpg.AndorsTrail.model.actor.Player.PlayerBaseTraits;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.widget.TextView;
-
-public final class BaseTraitsInfoView extends TraitsInfoView {
- private final TextView basetraitsinfo_max_hp;
- private final TextView basetraitsinfo_max_ap;
-
- public BaseTraitsInfoView(Context context, AttributeSet attr) {
- super(context, attr, R.layout.basetraitsinfoview);
-
- basetraitsinfo_max_hp = (TextView) findViewById(R.id.basetraitsinfo_max_hp);
- basetraitsinfo_max_ap = (TextView) findViewById(R.id.basetraitsinfo_max_ap);
- }
-
- public void update(PlayerBaseTraits traits) {
- super.update(
- traits.attackCost
- ,traits.attackChance
- ,traits.damagePotential
- ,traits.criticalSkill
- ,traits.criticalMultiplier
- ,traits.blockChance
- ,traits.damageResistance);
- basetraitsinfo_max_hp.setText(Integer.toString(traits.maxHP));
- basetraitsinfo_max_ap.setText(Integer.toString(traits.maxAP));
- }
-}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/TraitsInfoView.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/TraitsInfoView.java
index 98294835f..8a13a6ddd 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/TraitsInfoView.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/TraitsInfoView.java
@@ -4,125 +4,126 @@ import com.gpl.rpg.AndorsTrail.R;
import com.gpl.rpg.AndorsTrail.model.actor.Actor;
import com.gpl.rpg.AndorsTrail.util.Range;
-import android.content.Context;
-import android.util.AttributeSet;
import android.view.View;
+import android.view.ViewGroup;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
-public class TraitsInfoView extends TableLayout {
- private final TableRow traitsinfo_attack_row1;
- private final TableRow traitsinfo_attack_row2;
- private final TableRow traitsinfo_attack_row3;
- private final TableRow traitsinfo_critical_row1;
- private final TableRow traitsinfo_critical_row2;
- private final TableRow traitsinfo_critical_row3;
- private final TableRow traitsinfo_defense_row1;
- private final TableRow traitsinfo_defense_row2;
- private final TextView traitsinfo_attack_cost;
- private final TextView traitsinfo_attack_chance;
- private final TextView traitsinfo_attack_damage;
- private final TextView traitsinfo_criticalhit_skill;
- private final TextView traitsinfo_criticalhit_multiplier;
- private final TextView traitsinfo_criticalhit_effectivechance;
- private final TextView traitsinfo_defense_chance;
- private final TextView traitsinfo_defense_damageresist;
+public final class TraitsInfoView {
- public TraitsInfoView(Context context, AttributeSet attr) {
- this(context, attr, R.layout.traitsinfoview);
- }
-
- public TraitsInfoView(Context context, AttributeSet attr, int layoutResourceID) {
- super(context, attr);
- setFocusable(false);
- inflate(context, layoutResourceID, this);
-
- traitsinfo_attack_row1 = (TableRow) findViewById(R.id.traitsinfo_attack_row1);
- traitsinfo_attack_row2 = (TableRow) findViewById(R.id.traitsinfo_attack_row2);
- traitsinfo_attack_row3 = (TableRow) findViewById(R.id.traitsinfo_attack_row3);
- traitsinfo_critical_row1 = (TableRow) findViewById(R.id.traitsinfo_critical_row1);
- traitsinfo_critical_row2 = (TableRow) findViewById(R.id.traitsinfo_critical_row2);
- traitsinfo_critical_row3 = (TableRow) findViewById(R.id.traitsinfo_critical_row3);
- traitsinfo_defense_row1 = (TableRow) findViewById(R.id.traitsinfo_defense_row1);
- traitsinfo_defense_row2 = (TableRow) findViewById(R.id.traitsinfo_defense_row2);
- traitsinfo_attack_cost = (TextView) findViewById(R.id.traitsinfo_attack_cost);
- traitsinfo_attack_chance = (TextView) findViewById(R.id.traitsinfo_attack_chance);
- traitsinfo_attack_damage = (TextView) findViewById(R.id.traitsinfo_attack_damage);
- traitsinfo_criticalhit_skill = (TextView) findViewById(R.id.traitsinfo_criticalhit_skill);
- traitsinfo_criticalhit_multiplier = (TextView) findViewById(R.id.traitsinfo_criticalhit_multiplier);
- traitsinfo_criticalhit_effectivechance = (TextView) findViewById(R.id.traitsinfo_criticalhit_effectivechance);
- traitsinfo_defense_chance = (TextView) findViewById(R.id.traitsinfo_defense_chance);
- traitsinfo_defense_damageresist = (TextView) findViewById(R.id.traitsinfo_defense_damageresist);
- }
-
- public void update(Actor actor) {
- update(
- actor.getAttackCost()
+ public static void update(ViewGroup group, Actor actor) {
+ TableLayout actorinfo_stats_table = (TableLayout) group.findViewById(R.id.actorinfo_stats_table);
+
+ updateTraitsTable(
+ actorinfo_stats_table
+ ,actor.getMoveCost()
+ ,actor.getAttackCost()
,actor.getAttackChance()
,actor.getDamagePotential()
,actor.getCriticalSkill()
,actor.getCriticalMultiplier()
,actor.getBlockChance()
- ,actor.getDamageResistance());
+ ,actor.getDamageResistance()
+ ,actor.isImmuneToCriticalHits());
+
+ TextView actorinfo_currentconditions_title = (TextView) group.findViewById(R.id.actorinfo_currentconditions_title);
+ ActorConditionList actorinfo_currentconditions = (ActorConditionList) group.findViewById(R.id.actorinfo_currentconditions);
+ if (actor.conditions.isEmpty()) {
+ actorinfo_currentconditions_title.setVisibility(View.GONE);
+ actorinfo_currentconditions.setVisibility(View.GONE);
+ } else {
+ actorinfo_currentconditions_title.setVisibility(View.VISIBLE);
+ actorinfo_currentconditions.setVisibility(View.VISIBLE);
+ actorinfo_currentconditions.update(actor.conditions);
+ }
}
- public void update(
- int attackCost
+ public static void updateTraitsTable(
+ ViewGroup group
+ ,int moveCost
+ ,int attackCost
,int attackChance
,Range damagePotential
,int criticalSkill
,float criticalMultiplier
,int blockChance
,int damageResistance
- ) {
- if (attackCost != 0) {
- traitsinfo_attack_row1.setVisibility(View.VISIBLE);
- traitsinfo_attack_cost.setText(Integer.toString(attackCost));
- } else {
- traitsinfo_attack_row1.setVisibility(View.GONE);
- }
+ ,boolean isImmuneToCriticalHits
+ ) {
+ TableRow row;
+ TextView tv;
+
+ tv = (TextView) group.findViewById(R.id.traitsinfo_move_cost);
+ tv.setText(Integer.toString(moveCost));
+
+ tv = (TextView) group.findViewById(R.id.traitsinfo_attack_cost);
+ tv.setText(Integer.toString(attackCost));
+
+ row = (TableRow) group.findViewById(R.id.traitsinfo_attack_chance_row);
if (attackChance != 0) {
- traitsinfo_attack_row2.setVisibility(View.VISIBLE);
- traitsinfo_attack_chance.setText(Integer.toString(attackChance) + "%");
+ row.setVisibility(View.VISIBLE);
+ tv = (TextView) group.findViewById(R.id.traitsinfo_attack_chance);
+ tv.setText(Integer.toString(attackChance) + "%");
} else {
- traitsinfo_attack_row2.setVisibility(View.GONE);
+ row.setVisibility(View.GONE);
}
+
+ row = (TableRow) group.findViewById(R.id.traitsinfo_attack_damage_row);
if (damagePotential != null && damagePotential.max != 0) {
- traitsinfo_attack_row3.setVisibility(View.VISIBLE);
- traitsinfo_attack_damage.setText(damagePotential.toMinMaxString());
+ row.setVisibility(View.VISIBLE);
+ tv = (TextView) group.findViewById(R.id.traitsinfo_attack_damage);
+ tv.setText(damagePotential.toMinMaxString());
} else {
- traitsinfo_attack_row3.setVisibility(View.GONE);
+ row.setVisibility(View.GONE);
}
+
+ row = (TableRow) group.findViewById(R.id.traitsinfo_criticalhit_skill_row);
if (criticalSkill != 0) {
- traitsinfo_critical_row1.setVisibility(View.VISIBLE);
- traitsinfo_criticalhit_skill.setText(Integer.toString(criticalSkill));
+ row.setVisibility(View.VISIBLE);
+ tv = (TextView) group.findViewById(R.id.traitsinfo_criticalhit_skill);
+ tv.setText(Integer.toString(criticalSkill));
} else {
- traitsinfo_critical_row1.setVisibility(View.GONE);
+ row.setVisibility(View.GONE);
}
+
+ row = (TableRow) group.findViewById(R.id.traitsinfo_criticalhit_multiplier_row);
if (criticalMultiplier != 0 && criticalMultiplier != 1) {
- traitsinfo_critical_row2.setVisibility(View.VISIBLE);
- traitsinfo_criticalhit_multiplier.setText(Float.toString(criticalMultiplier));
+ row.setVisibility(View.VISIBLE);
+ tv = (TextView) group.findViewById(R.id.traitsinfo_criticalhit_multiplier);
+ tv.setText(Float.toString(criticalMultiplier));
} else {
- traitsinfo_critical_row2.setVisibility(View.GONE);
+ row.setVisibility(View.GONE);
}
+
+ row = (TableRow) group.findViewById(R.id.traitsinfo_criticalhit_effectivechance_row);
if (criticalSkill != 0 && criticalMultiplier != 0 && criticalMultiplier != 1) {
- traitsinfo_critical_row3.setVisibility(View.VISIBLE);
- traitsinfo_criticalhit_effectivechance.setText(Integer.toString(Actor.getEffectiveCriticalChance(criticalSkill)) + "%");
+ row.setVisibility(View.VISIBLE);
+ tv = (TextView) group.findViewById(R.id.traitsinfo_criticalhit_effectivechance);
+ tv.setText(Integer.toString(Actor.getEffectiveCriticalChance(criticalSkill)) + "%");
} else {
- traitsinfo_critical_row3.setVisibility(View.GONE);
+ row.setVisibility(View.GONE);
}
+
+ row = (TableRow) group.findViewById(R.id.traitsinfo_block_chance_row);
if (blockChance != 0) {
- traitsinfo_defense_row1.setVisibility(View.VISIBLE);
- traitsinfo_defense_chance.setText(Integer.toString(blockChance) + "%");
+ row.setVisibility(View.VISIBLE);
+ tv = (TextView) group.findViewById(R.id.traitsinfo_block_chance);
+ tv.setText(Integer.toString(blockChance) + "%");
} else {
- traitsinfo_defense_row1.setVisibility(View.GONE);
+ row.setVisibility(View.GONE);
}
+
+ row = (TableRow) group.findViewById(R.id.traitsinfo_damageresist_row);
if (damageResistance != 0) {
- traitsinfo_defense_row2.setVisibility(View.VISIBLE);
- traitsinfo_defense_damageresist.setText(Integer.toString(damageResistance));
+ row.setVisibility(View.VISIBLE);
+ tv = (TextView) group.findViewById(R.id.traitsinfo_damageresist);
+ tv.setText(Integer.toString(damageResistance));
} else {
- traitsinfo_defense_row2.setVisibility(View.GONE);
+ row.setVisibility(View.GONE);
}
+
+ row = (TableRow) group.findViewById(R.id.traitsinfo_is_immune_to_critical_hits_row);
+ row.setVisibility(isImmuneToCriticalHits ? View.VISIBLE : View.GONE);
}
}