Olá pessoal… to com um problema… O meu sistema de bonus das tropas não funciona:
public static enum Type{
BLADE ( "Blade", Bonuses.BLADE_BONUS ),
SPEAR ( "Spear", Bonuses.SPEAR_BONUS ),
SHOCK ( "Shock", Bonuses.SHOCK_BONUS ),
MOUNTED ( "Mounted", Bonuses.MOUNTED_BONUS ),
RANGE ( "Range", Bonuses.RANGE_BONUS ),
LIGHT ( "Light Armour", Bonuses.LIGHT_BONUS ),
MEDIUM( "Medium Armour" ),
HEAVY( "Heavy Armour", Bonuses.HEAVY_BONUS );
public final String name;
public final ArrayList< Bonuses > typeBonuses = new ArrayList< Bonuses >();
private Type( String name, Bonuses... b ){
this.name = name;
for ( Bonuses bn : b ) typeBonuses.add( bn );
}
public static enum Bonuses{
BLADE_BONUS( SPEAR, Parameter.DEXTRIBILITY, false, 9 ),
SPEAR_BONUS( MOUNTED, Parameter.STRENGTH, false, 0.75 ),
SHOCK_BONUS( HEAVY, Parameter.DEXTRIBILITY, false, 0.5 ),
MOUNTED_BONUS( BLADE, Parameter.STRENGTH, false, 0.5 ),
RANGE_BONUS( LIGHT, Parameter.STRENGTH, false, 0.25 ),
LIGHT_BONUS( SHOCK, Parameter.DEXTRIBILITY, false, 0.25 ),
HEAVY_BONUS( RANGE, Parameter.ARMOUR, false, 0.25 );
public final Type t;
public final Parameter p;
public final boolean add;
public final double amount;
private Bonuses( Type t, Parameter p, boolean add, double amount ){
this.t = t;
System.out.println( t );
this.p = p;
this.add = add;
this.amount = amount;
}
}
public double getBonuses( Parameter kind, Type enemyType, boolean add ){
double b = 0;
for ( int a = 0 ; a < typeBonuses.size() ; a++ ){
System.out.println( "GetBonuses - Checking Bonus of " +
typeBonuses.get(a) + " vs " + enemyType );
Bonuses bn = typeBonuses.get(a);
if( bn.p == kind && bn.t == enemyType && bn.add == add) b += bn.amount;
}
return b;
}
}
O problema tá ai:
O campo t dos bonuses fica null Levei horas pra descobrir, mais fica sim. Não sei pq, por favor ajudem =)
Se prescisar eu posto o resto do código da classe, mais é bem extenso, acho que não prescisa.