mirror of
https://github.com/OMGeeky/andors-trail.git
synced 2026-01-24 12:20:42 +01:00
Actor traits refactoring - Remove ActorTraits & CombatTraits.
This commit is contained in:
@@ -4,11 +4,9 @@ import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
|
||||
import com.gpl.rpg.AndorsTrail.R;
|
||||
import com.gpl.rpg.AndorsTrail.context.WorldContext;
|
||||
import com.gpl.rpg.AndorsTrail.controller.SkillController;
|
||||
import com.gpl.rpg.AndorsTrail.model.CombatTraits;
|
||||
import com.gpl.rpg.AndorsTrail.model.ability.SkillCollection;
|
||||
import com.gpl.rpg.AndorsTrail.model.ability.SkillInfo;
|
||||
import com.gpl.rpg.AndorsTrail.model.ability.SkillInfo.SkillLevelRequirement;
|
||||
import com.gpl.rpg.AndorsTrail.model.actor.ActorTraits;
|
||||
import com.gpl.rpg.AndorsTrail.model.actor.Player;
|
||||
|
||||
import android.app.Activity;
|
||||
@@ -194,9 +192,9 @@ public final class SkillInfoActivity extends Activity {
|
||||
|
||||
private static int getRequirementActorStatsResourceID(int statID) {
|
||||
switch (statID) {
|
||||
case ActorTraits.STAT_ACTOR_MAX_HP: return R.string.actorinfo_health;
|
||||
case ActorTraits.STAT_ACTOR_MAX_AP: return R.string.heroinfo_actionpoints;
|
||||
case ActorTraits.STAT_ACTOR_MOVECOST: return R.string.actorinfo_movecost;
|
||||
case Player.STAT_ACTOR_MAX_HP: return R.string.actorinfo_health;
|
||||
case Player.STAT_ACTOR_MAX_AP: return R.string.heroinfo_actionpoints;
|
||||
case Player.STAT_ACTOR_MOVECOST: return R.string.actorinfo_movecost;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
@@ -204,14 +202,14 @@ public final class SkillInfoActivity extends Activity {
|
||||
|
||||
private static int getRequirementCombatStatsResourceID(int statID) {
|
||||
switch (statID) {
|
||||
case CombatTraits.STAT_COMBAT_ATTACK_COST: return R.string.traitsinfo_attack_cost;
|
||||
case CombatTraits.STAT_COMBAT_ATTACK_CHANCE: return R.string.traitsinfo_attack_chance;
|
||||
case CombatTraits.STAT_COMBAT_CRITICAL_SKILL: return R.string.traitsinfo_criticalhit_skill;
|
||||
case CombatTraits.STAT_COMBAT_CRITICAL_MULTIPLIER: return R.string.traitsinfo_criticalhit_multiplier;
|
||||
case CombatTraits.STAT_COMBAT_DAMAGE_POTENTIAL_MIN: return R.string.traitsinfo_attack_damage;
|
||||
case CombatTraits.STAT_COMBAT_DAMAGE_POTENTIAL_MAX: return R.string.traitsinfo_attack_damage;
|
||||
case CombatTraits.STAT_COMBAT_BLOCK_CHANCE: return R.string.traitsinfo_defense_chance;
|
||||
case CombatTraits.STAT_COMBAT_DAMAGE_RESISTANCE: return R.string.traitsinfo_defense_damageresist;
|
||||
case Player.STAT_COMBAT_ATTACK_COST: return R.string.traitsinfo_attack_cost;
|
||||
case Player.STAT_COMBAT_ATTACK_CHANCE: return R.string.traitsinfo_attack_chance;
|
||||
case Player.STAT_COMBAT_CRITICAL_SKILL: return R.string.traitsinfo_criticalhit_skill;
|
||||
case Player.STAT_COMBAT_CRITICAL_MULTIPLIER: return R.string.traitsinfo_criticalhit_multiplier;
|
||||
case Player.STAT_COMBAT_DAMAGE_POTENTIAL_MIN: return R.string.traitsinfo_attack_damage;
|
||||
case Player.STAT_COMBAT_DAMAGE_POTENTIAL_MAX: return R.string.traitsinfo_attack_damage;
|
||||
case Player.STAT_COMBAT_BLOCK_CHANCE: return R.string.traitsinfo_defense_chance;
|
||||
case Player.STAT_COMBAT_DAMAGE_RESISTANCE: return R.string.traitsinfo_defense_damageresist;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ package com.gpl.rpg.AndorsTrail.controller;
|
||||
|
||||
import com.gpl.rpg.AndorsTrail.context.WorldContext;
|
||||
import com.gpl.rpg.AndorsTrail.model.AttackResult;
|
||||
import com.gpl.rpg.AndorsTrail.model.CombatTraits;
|
||||
import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionEffect;
|
||||
import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionType;
|
||||
import com.gpl.rpg.AndorsTrail.model.ability.SkillCollection;
|
||||
|
||||
@@ -1,101 +0,0 @@
|
||||
package com.gpl.rpg.AndorsTrail.model;
|
||||
|
||||
import android.util.FloatMath;
|
||||
|
||||
import com.gpl.rpg.AndorsTrail.model.actor.ActorTraits;
|
||||
import com.gpl.rpg.AndorsTrail.util.Range;
|
||||
|
||||
public class CombatTraits {
|
||||
public static final int STAT_COMBAT_ATTACK_COST = 0;
|
||||
public static final int STAT_COMBAT_ATTACK_CHANCE = 1;
|
||||
public static final int STAT_COMBAT_CRITICAL_SKILL = 2;
|
||||
public static final int STAT_COMBAT_CRITICAL_MULTIPLIER = 3;
|
||||
public static final int STAT_COMBAT_DAMAGE_POTENTIAL_MIN = 4;
|
||||
public static final int STAT_COMBAT_DAMAGE_POTENTIAL_MAX = 5;
|
||||
public static final int STAT_COMBAT_BLOCK_CHANCE = 6;
|
||||
public static final int STAT_COMBAT_DAMAGE_RESISTANCE = 7;
|
||||
|
||||
public int attackCost;
|
||||
|
||||
public int attackChance;
|
||||
public int criticalSkill;
|
||||
public float criticalMultiplier;
|
||||
public final Range damagePotential;
|
||||
|
||||
public int blockChance;
|
||||
public int damageResistance;
|
||||
|
||||
public CombatTraits() {
|
||||
this.damagePotential = new Range();
|
||||
}
|
||||
public CombatTraits(ActorTraits copy) {
|
||||
this();
|
||||
set(copy);
|
||||
}
|
||||
public void set(ActorTraits copy) {
|
||||
if (copy == null) return;
|
||||
this.attackCost = copy.attackCost;
|
||||
this.attackChance = copy.attackChance;
|
||||
this.criticalSkill = copy.criticalSkill;
|
||||
this.criticalMultiplier = copy.criticalMultiplier;
|
||||
this.damagePotential.set(copy.damagePotential);
|
||||
this.blockChance = copy.blockChance;
|
||||
this.damageResistance = copy.damageResistance;
|
||||
}
|
||||
|
||||
public boolean isSameValuesAs(ActorTraits other) {
|
||||
if (other == null) return isZero();
|
||||
return
|
||||
this.attackCost == other.attackCost
|
||||
&& this.attackChance == other.attackChance
|
||||
&& this.criticalSkill == other.criticalSkill
|
||||
&& this.criticalMultiplier == other.criticalMultiplier
|
||||
&& this.damagePotential.equals(other.damagePotential)
|
||||
&& this.blockChance == other.blockChance
|
||||
&& this.damageResistance == other.damageResistance;
|
||||
}
|
||||
|
||||
private boolean isZero() {
|
||||
return
|
||||
this.attackCost == 0
|
||||
&& this.attackChance == 0
|
||||
&& this.criticalSkill == 0
|
||||
&& this.criticalMultiplier == 0
|
||||
&& this.damagePotential.current == 0
|
||||
&& this.damagePotential.max == 0
|
||||
&& this.blockChance == 0
|
||||
&& this.damageResistance == 0;
|
||||
}
|
||||
|
||||
public boolean hasAttackChanceEffect() { return attackChance != 0; }
|
||||
public boolean hasAttackDamageEffect() { return damagePotential.max != 0; }
|
||||
public boolean hasBlockEffect() { return blockChance != 0; }
|
||||
public boolean hasCriticalSkillEffect() { return criticalSkill != 0; }
|
||||
public boolean hasCriticalMultiplierEffect() { return criticalMultiplier != 0 && criticalMultiplier != 1; }
|
||||
public boolean hasCriticalAttacks() { return hasCriticalSkillEffect() && hasCriticalMultiplierEffect(); }
|
||||
|
||||
public int getEffectiveCriticalChance() {
|
||||
if (criticalSkill <= 0) return 0;
|
||||
int v = (int) (-5 + 2 * FloatMath.sqrt(5*criticalSkill));
|
||||
if (v < 0) return 0;
|
||||
return v;
|
||||
}
|
||||
|
||||
public int getAttacksPerTurn(final int maxAP) {
|
||||
return (int) Math.floor(maxAP / attackCost);
|
||||
}
|
||||
|
||||
public int getCombatStats(int statID) {
|
||||
switch (statID) {
|
||||
case STAT_COMBAT_ATTACK_COST: return attackCost;
|
||||
case STAT_COMBAT_ATTACK_CHANCE: return attackChance;
|
||||
case STAT_COMBAT_CRITICAL_SKILL: return criticalSkill;
|
||||
case STAT_COMBAT_CRITICAL_MULTIPLIER: return (int) FloatMath.floor(criticalMultiplier);
|
||||
case STAT_COMBAT_DAMAGE_POTENTIAL_MIN: return damagePotential.current;
|
||||
case STAT_COMBAT_DAMAGE_POTENTIAL_MAX: return damagePotential.max;
|
||||
case STAT_COMBAT_BLOCK_CHANCE: return blockChance;
|
||||
case STAT_COMBAT_DAMAGE_RESISTANCE: return damageResistance;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -6,9 +6,8 @@ import java.util.Collection;
|
||||
import android.util.SparseArray;
|
||||
|
||||
import com.gpl.rpg.AndorsTrail.controller.Constants;
|
||||
import com.gpl.rpg.AndorsTrail.model.CombatTraits;
|
||||
import com.gpl.rpg.AndorsTrail.model.ability.SkillInfo.SkillLevelRequirement;
|
||||
import com.gpl.rpg.AndorsTrail.model.actor.ActorTraits;
|
||||
import com.gpl.rpg.AndorsTrail.model.actor.Player;
|
||||
|
||||
public final class SkillCollection {
|
||||
public static final int SKILL_WEAPON_CHANCE = 0;
|
||||
@@ -91,7 +90,7 @@ public final class SkillCollection {
|
||||
initializeSkill(new SkillInfo(SKILL_DODGE, SkillInfo.MAXLEVEL_NONE, SkillInfo.LEVELUP_TYPE_ALWAYS_SHOWN, null));
|
||||
initializeSkill(new SkillInfo(SKILL_BARKSKIN, MAX_LEVEL_BARKSKIN, SkillInfo.LEVELUP_TYPE_ALWAYS_SHOWN, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requireExperienceLevels(10, 0)
|
||||
,SkillLevelRequirement.requireCombatStats(CombatTraits.STAT_COMBAT_BLOCK_CHANCE, 15, 0)
|
||||
,SkillLevelRequirement.requireCombatStats(Player.STAT_COMBAT_BLOCK_CHANCE, 15, 0)
|
||||
}));
|
||||
initializeSkill(new SkillInfo(SKILL_MORE_CRITICALS, SkillInfo.MAXLEVEL_NONE, SkillInfo.LEVELUP_TYPE_ALWAYS_SHOWN, null));
|
||||
initializeSkill(new SkillInfo(SKILL_BETTER_CRITICALS, SkillInfo.MAXLEVEL_NONE, SkillInfo.LEVELUP_TYPE_ALWAYS_SHOWN, new SkillLevelRequirement[] {
|
||||
@@ -107,14 +106,14 @@ public final class SkillCollection {
|
||||
,SkillLevelRequirement.requireOtherSkill(SKILL_WEAPON_DMG, 1)
|
||||
}));
|
||||
initializeSkill(new SkillInfo(SKILL_EATER, SkillInfo.MAXLEVEL_NONE, SkillInfo.LEVELUP_TYPE_ALWAYS_SHOWN, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requireActorStats(ActorTraits.STAT_ACTOR_MAX_HP, 20, 20)
|
||||
SkillLevelRequirement.requireActorStats(Player.STAT_ACTOR_MAX_HP, 20, 20)
|
||||
}));
|
||||
initializeSkill(new SkillInfo(SKILL_FORTITUDE, SkillInfo.MAXLEVEL_NONE, SkillInfo.LEVELUP_TYPE_ALWAYS_SHOWN, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requireExperienceLevels(15, -10)
|
||||
}));
|
||||
initializeSkill(new SkillInfo(SKILL_EVASION, MAX_LEVEL_EVASION, SkillInfo.LEVELUP_TYPE_ALWAYS_SHOWN, null));
|
||||
initializeSkill(new SkillInfo(SKILL_REGENERATION, SkillInfo.MAXLEVEL_NONE, SkillInfo.LEVELUP_TYPE_ALWAYS_SHOWN, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requireActorStats(ActorTraits.STAT_ACTOR_MAX_HP, 30, 0)
|
||||
SkillLevelRequirement.requireActorStats(Player.STAT_ACTOR_MAX_HP, 30, 0)
|
||||
,SkillLevelRequirement.requireOtherSkill(SKILL_FORTITUDE, 1)
|
||||
}));
|
||||
initializeSkill(new SkillInfo(SKILL_LOWER_EXPLOSS, MAX_LEVEL_LOWER_EXPLOSS, SkillInfo.LEVELUP_TYPE_ALWAYS_SHOWN, null));
|
||||
|
||||
@@ -1,92 +0,0 @@
|
||||
package com.gpl.rpg.AndorsTrail.model.actor;
|
||||
|
||||
import android.util.FloatMath;
|
||||
|
||||
import com.gpl.rpg.AndorsTrail.model.CombatTraits;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.ItemTraits_OnUse;
|
||||
import com.gpl.rpg.AndorsTrail.util.Range;
|
||||
|
||||
public class ActorTraits {
|
||||
public static final int STAT_ACTOR_MAX_HP = 0;
|
||||
public static final int STAT_ACTOR_MAX_AP = 1;
|
||||
public static final int STAT_ACTOR_MOVECOST = 2;
|
||||
|
||||
public final int iconID;
|
||||
|
||||
public int maxAP;
|
||||
public int maxHP;
|
||||
|
||||
public int moveCost;
|
||||
public final int baseMoveCost;
|
||||
|
||||
public int attackCost;
|
||||
public int attackChance;
|
||||
public int criticalSkill;
|
||||
public float criticalMultiplier;
|
||||
public final Range damagePotential;
|
||||
public int blockChance;
|
||||
public int damageResistance;
|
||||
|
||||
public ItemTraits_OnUse[] onHitEffects;
|
||||
|
||||
public ActorTraits(
|
||||
int iconID
|
||||
, int attackCost
|
||||
, int attackChance
|
||||
, int criticalSkill
|
||||
, float criticalMultiplier
|
||||
, Range damagePotential
|
||||
, int blockChance
|
||||
, int damageResistance
|
||||
, int standardMoveCost
|
||||
, ItemTraits_OnUse[] onHitEffects
|
||||
) {
|
||||
this.iconID = iconID;
|
||||
this.attackCost = attackCost;
|
||||
this.attackChance = attackChance;
|
||||
this.criticalSkill = criticalSkill;
|
||||
this.criticalMultiplier = criticalMultiplier;
|
||||
this.damagePotential = damagePotential;
|
||||
this.blockChance = blockChance;
|
||||
this.damageResistance = damageResistance;
|
||||
this.baseMoveCost = standardMoveCost;
|
||||
this.onHitEffects = onHitEffects;
|
||||
}
|
||||
|
||||
public int getMovesPerTurn() { return (int) Math.floor(maxAP / moveCost); }
|
||||
public boolean hasAttackChanceEffect() { return attackChance != 0; }
|
||||
public boolean hasAttackDamageEffect() { return damagePotential.max != 0; }
|
||||
public boolean hasBlockEffect() { return blockChance != 0; }
|
||||
public boolean hasCriticalSkillEffect() { return criticalSkill != 0; }
|
||||
public boolean hasCriticalMultiplierEffect() { return criticalMultiplier != 0 && criticalMultiplier != 1; }
|
||||
public boolean hasCriticalAttacks() { return hasCriticalSkillEffect() && hasCriticalMultiplierEffect(); }
|
||||
public int getEffectiveCriticalChance() {
|
||||
if (criticalSkill <= 0) return 0;
|
||||
int v = (int) (-5 + 2 * FloatMath.sqrt(5*criticalSkill));
|
||||
if (v < 0) return 0;
|
||||
return v;
|
||||
}
|
||||
|
||||
public int getActorStats(int statID) {
|
||||
switch (statID) {
|
||||
case STAT_ACTOR_MAX_HP: return maxHP;
|
||||
case STAT_ACTOR_MAX_AP: return maxAP;
|
||||
case STAT_ACTOR_MOVECOST: return moveCost;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public int getCombatStats(int statID) {
|
||||
switch (statID) {
|
||||
case CombatTraits.STAT_COMBAT_ATTACK_COST: return attackCost;
|
||||
case CombatTraits.STAT_COMBAT_ATTACK_CHANCE: return attackChance;
|
||||
case CombatTraits.STAT_COMBAT_CRITICAL_SKILL: return criticalSkill;
|
||||
case CombatTraits.STAT_COMBAT_CRITICAL_MULTIPLIER: return (int) FloatMath.floor(criticalMultiplier);
|
||||
case CombatTraits.STAT_COMBAT_DAMAGE_POTENTIAL_MIN: return damagePotential.current;
|
||||
case CombatTraits.STAT_COMBAT_DAMAGE_POTENTIAL_MAX: return damagePotential.max;
|
||||
case CombatTraits.STAT_COMBAT_BLOCK_CHANCE: return blockChance;
|
||||
case CombatTraits.STAT_COMBAT_DAMAGE_RESISTANCE: return damageResistance;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -14,7 +14,6 @@ import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
|
||||
import com.gpl.rpg.AndorsTrail.context.WorldContext;
|
||||
import com.gpl.rpg.AndorsTrail.controller.ActorStatsController;
|
||||
import com.gpl.rpg.AndorsTrail.controller.Constants;
|
||||
import com.gpl.rpg.AndorsTrail.model.CombatTraits;
|
||||
import com.gpl.rpg.AndorsTrail.model.ability.ActorCondition;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.DropListCollection;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.Inventory;
|
||||
@@ -28,6 +27,18 @@ import com.gpl.rpg.AndorsTrail.util.Range;
|
||||
import com.gpl.rpg.AndorsTrail.util.Size;
|
||||
|
||||
public final class Player extends Actor {
|
||||
public static final int STAT_ACTOR_MAX_HP = 0;
|
||||
public static final int STAT_ACTOR_MAX_AP = 1;
|
||||
public static final int STAT_ACTOR_MOVECOST = 2;
|
||||
public static final int STAT_COMBAT_ATTACK_COST = 0;
|
||||
public static final int STAT_COMBAT_ATTACK_CHANCE = 1;
|
||||
public static final int STAT_COMBAT_CRITICAL_SKILL = 2;
|
||||
public static final int STAT_COMBAT_CRITICAL_MULTIPLIER = 3;
|
||||
public static final int STAT_COMBAT_DAMAGE_POTENTIAL_MIN = 4;
|
||||
public static final int STAT_COMBAT_DAMAGE_POTENTIAL_MAX = 5;
|
||||
public static final int STAT_COMBAT_BLOCK_CHANCE = 6;
|
||||
public static final int STAT_COMBAT_DAMAGE_RESISTANCE = 7;
|
||||
|
||||
public static final int DEFAULT_PLAYER_ATTACKCOST = 4;
|
||||
public final Coord lastPosition;
|
||||
public final Coord nextPosition;
|
||||
@@ -225,23 +236,23 @@ public final class Player extends Actor {
|
||||
|
||||
public int getActorStats(int statID) {
|
||||
switch (statID) {
|
||||
case ActorTraits.STAT_ACTOR_MAX_HP: return baseTraits.maxHP;
|
||||
case ActorTraits.STAT_ACTOR_MAX_AP: return baseTraits.maxAP;
|
||||
case ActorTraits.STAT_ACTOR_MOVECOST: return baseTraits.moveCost;
|
||||
case Player.STAT_ACTOR_MAX_HP: return baseTraits.maxHP;
|
||||
case Player.STAT_ACTOR_MAX_AP: return baseTraits.maxAP;
|
||||
case Player.STAT_ACTOR_MOVECOST: return baseTraits.moveCost;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public int getCombatStats(int statID) {
|
||||
switch (statID) {
|
||||
case CombatTraits.STAT_COMBAT_ATTACK_COST: return baseTraits.attackCost;
|
||||
case CombatTraits.STAT_COMBAT_ATTACK_CHANCE: return baseTraits.attackChance;
|
||||
case CombatTraits.STAT_COMBAT_CRITICAL_SKILL: return baseTraits.criticalSkill;
|
||||
case CombatTraits.STAT_COMBAT_CRITICAL_MULTIPLIER: return (int) FloatMath.floor(baseTraits.criticalMultiplier);
|
||||
case CombatTraits.STAT_COMBAT_DAMAGE_POTENTIAL_MIN: return baseTraits.damagePotential.current;
|
||||
case CombatTraits.STAT_COMBAT_DAMAGE_POTENTIAL_MAX: return baseTraits.damagePotential.max;
|
||||
case CombatTraits.STAT_COMBAT_BLOCK_CHANCE: return baseTraits.blockChance;
|
||||
case CombatTraits.STAT_COMBAT_DAMAGE_RESISTANCE: return baseTraits.damageResistance;
|
||||
case Player.STAT_COMBAT_ATTACK_COST: return baseTraits.attackCost;
|
||||
case Player.STAT_COMBAT_ATTACK_CHANCE: return baseTraits.attackChance;
|
||||
case Player.STAT_COMBAT_CRITICAL_SKILL: return baseTraits.criticalSkill;
|
||||
case Player.STAT_COMBAT_CRITICAL_MULTIPLIER: return (int) FloatMath.floor(baseTraits.criticalMultiplier);
|
||||
case Player.STAT_COMBAT_DAMAGE_POTENTIAL_MIN: return baseTraits.damagePotential.current;
|
||||
case Player.STAT_COMBAT_DAMAGE_POTENTIAL_MAX: return baseTraits.damagePotential.max;
|
||||
case Player.STAT_COMBAT_BLOCK_CHANCE: return baseTraits.blockChance;
|
||||
case Player.STAT_COMBAT_DAMAGE_RESISTANCE: return baseTraits.damageResistance;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.gpl.rpg.AndorsTrail.resource.parsers;
|
||||
|
||||
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
|
||||
import com.gpl.rpg.AndorsTrail.model.CombatTraits;
|
||||
import com.gpl.rpg.AndorsTrail.model.ability.traits.AbilityModifierTraits;
|
||||
import com.gpl.rpg.AndorsTrail.model.ability.traits.StatsModifierTraits;
|
||||
import com.gpl.rpg.AndorsTrail.resource.DynamicTileLoader;
|
||||
@@ -66,35 +65,6 @@ public final class ResourceParserUtils {
|
||||
return new Size(Integer.parseInt(parts[0]), Integer.parseInt(parts[1]));
|
||||
}
|
||||
|
||||
public static CombatTraits parseCombatTraits(String[] parts, int startIndex) {
|
||||
String attackCost = parts[startIndex];
|
||||
String attackChance = parts[startIndex + 1];
|
||||
String criticalSkill = parts[startIndex + 2];
|
||||
String criticalMultiplier = parts[startIndex + 3];
|
||||
ConstRange attackDamage = parseConstRange(parts[startIndex + 4], parts[startIndex + 5]);
|
||||
String blockChance = parts[startIndex + 6];
|
||||
String damageResistance = parts[startIndex + 7];
|
||||
if ( attackCost.length() <= 0
|
||||
&& attackChance.length() <= 0
|
||||
&& criticalSkill.length() <= 0
|
||||
&& criticalMultiplier.length() <= 0
|
||||
&& attackDamage == null
|
||||
&& blockChance.length() <= 0
|
||||
&& damageResistance.length() <= 0
|
||||
) {
|
||||
return null;
|
||||
} else {
|
||||
CombatTraits result = new CombatTraits();
|
||||
result.attackCost = parseInt(attackCost, 0);
|
||||
result.attackChance = parseInt(attackChance, 0);
|
||||
result.criticalSkill = parseInt(criticalSkill, 0);
|
||||
result.criticalMultiplier = parseFloat(criticalMultiplier, 0);
|
||||
if (attackDamage != null) result.damagePotential.set(attackDamage);
|
||||
result.blockChance = parseInt(blockChance, 0);
|
||||
result.damageResistance = parseInt(damageResistance, 0);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
public static String parseNullableString(String s) {
|
||||
if (s == null || s.length() <= 0) return null;
|
||||
return s;
|
||||
|
||||
Reference in New Issue
Block a user