// Path: src/model/Attack.java
// public class Attack {
// 
// 	public int range;
// 	public AttackType attackType;
// 	public double meleeMultiplier;
// 	public double rangeMultiplier;
// 	public boolean chain;
// 	public boolean push;
// 	
// 	public Attack(int range, AttackType attackType,
// 			int damage, double meleeMultiplier, double rangeMultiplier,
// 			boolean chain, boolean push) {
// 		super();
// 		this.range = range;
// 		this.attackType = attackType;
// 		this.meleeMultiplier = meleeMultiplier;
// 		this.rangeMultiplier = rangeMultiplier;
// 		this.chain = chain;
// 		this.push = push;
// 		
// 	}
// 
// 	
// }
// 
// Path: src/model/AttackType.java
// public enum AttackType {
// 
// 	Physical, Magical;
// 	
// }
// 
// Path: src/model/Card.java
// public enum Card {
// 
// 	KNIGHT(CardType.UNIT), 
// 	ARCHER(CardType.UNIT), 
// 	CLERIC(CardType.UNIT), 
// 	WIZARD(CardType.UNIT), 
// 	NINJA(CardType.UNIT),
// 	INFERNO(CardType.SPELL), 
// 	REVIVE_POTION(CardType.ITEM), 
// 	RUNEMETAL(CardType.ITEM), 
// 	SCROLL(CardType.ITEM), 
// 	DRAGONSCALE(CardType.ITEM), 
// 	SHINING_HELM(CardType.ITEM), 
// 	CRYSTAL(CardType.UNIT);
// 	
// 	public final CardType type;
// 	
// 	Card(CardType type) {
// 		this.type = type;
// 	}
// 	
// }
// 
// Path: src/model/Heal.java
// public class Heal {
// 
// 	public int range;
// 	public int heal;
// 	public int revive;
// 
// 	public Heal(int range, int heal, int revive) {
// 		super();
// 		this.range = range;
// 		this.heal = heal;
// 		this.revive = revive;
// 	}
// 
// }
// 
// Path: src/model/UnitClass.java
// public class UnitClass {
// 
// 	public Card card;
// 	public int maxHP;
// 	public int speed;
// 	public int physicalResistance;
// 	public int magicalResistance;
// 	public int power;
// 	public Attack attack;
// 	public Heal heal;
// 	public boolean swap;
// 
// 	public UnitClass(Card card, int maxHP, int speed, int power,
// 			int physicalResistance, int magicalResistance, Attack attack,
// 			Heal heal, boolean swap) {
// 		super();
// 
// 		this.card = card;
// 		this.maxHP = maxHP;
// 		this.speed = speed;
// 		this.power = power;
// 		this.attack = attack;
// 		this.heal = heal;
// 		this.physicalResistance = physicalResistance;
// 		this.magicalResistance = magicalResistance;
// 		this.swap = swap;
// 	}
// 
// 	public int hash() {
// 		switch(card){
// 		case ARCHER : return 0;
// 		case CRYSTAL : return 1;
// 		case KNIGHT : return 2;
// 		case NINJA : return 3;
// 		case CLERIC : return 4;
// 		case WIZARD : return 5;
// 		}
// 		return 6;
// 	}
// }


import java.util.HashMap;
import model.Attack;
import model.AttackType;
import model.Card;
import model.Heal;
import model.UnitClass;
package libs;



public class UnitClassLib {

	public static HashMap<Card, UnitClass> lib = new HashMap<Card, UnitClass>();

	static {

		// Add units
		lib.put(Card.KNIGHT, new UnitClass(Card.KNIGHT, 1000, 2, 200, 20, 0,
				null, null, false));
		lib.put(Card.ARCHER, new UnitClass(Card.ARCHER, 800, 2, 300, 0, 0,
				null, null, false));
		lib.put(Card.CLERIC, new UnitClass(Card.CLERIC, 800, 2, 200, 0, 0,
				null, null, false));
		lib.put(Card.WIZARD, new UnitClass(Card.WIZARD, 800, 2, 200, 0, 10,
				null, null, false));
		lib.put(Card.NINJA, new UnitClass(Card.NINJA, 800, 3, 200, 0, 0, null,
				null, false));

		// Add crystal
		lib.put(Card.CRYSTAL, new UnitClass(Card.CRYSTAL, 4500, 0, 0, 0, 0,
				null, null, false));

		// Add attacks
		lib.get(Card.KNIGHT).attack = new Attack(1, AttackType.Physical, 200,
				1, 1, false, true);
		lib.get(Card.ARCHER).attack = new Attack(3, AttackType.Physical, 300,
				0.5, 1, false, false);
		lib.get(Card.CLERIC).attack = new Attack(2, AttackType.Magical, 200, 1,
				1, false, false);
		lib.get(Card.WIZARD).attack = new Attack(2, AttackType.Magical, 200, 1,
				1, true, false);
		lib.get(Card.NINJA).attack = new Attack(2, AttackType.Physical, 200, 2,
				1, false, false);

		// Add heal
// Path: src/model/Attack.java
// public class Attack {
// 
// 	public int range;
// 	public AttackType attackType;
// 	public double meleeMultiplier;
// 	public double rangeMultiplier;
// 	public boolean chain;
// 	public boolean push;
// 	
// 	public Attack(int range, AttackType attackType,
// 			int damage, double meleeMultiplier, double rangeMultiplier,
// 			boolean chain, boolean push) {
// 		super();
// 		this.range = range;
// 		this.attackType = attackType;
// 		this.meleeMultiplier = meleeMultiplier;
// 		this.rangeMultiplier = rangeMultiplier;
// 		this.chain = chain;
// 		this.push = push;
// 		
// 	}
// 
// 	
// }
// 
// Path: src/model/AttackType.java
// public enum AttackType {
// 
// 	Physical, Magical;
// 	
// }
// 
// Path: src/model/Card.java
// public enum Card {
// 
// 	KNIGHT(CardType.UNIT), 
// 	ARCHER(CardType.UNIT), 
// 	CLERIC(CardType.UNIT), 
// 	WIZARD(CardType.UNIT), 
// 	NINJA(CardType.UNIT),
// 	INFERNO(CardType.SPELL), 
// 	REVIVE_POTION(CardType.ITEM), 
// 	RUNEMETAL(CardType.ITEM), 
// 	SCROLL(CardType.ITEM), 
// 	DRAGONSCALE(CardType.ITEM), 
// 	SHINING_HELM(CardType.ITEM), 
// 	CRYSTAL(CardType.UNIT);
// 	
// 	public final CardType type;
// 	
// 	Card(CardType type) {
// 		this.type = type;
// 	}
// 	
// }
// 
// Path: src/model/Heal.java
// public class Heal {
// 
// 	public int range;
// 	public int heal;
// 	public int revive;
// 
// 	public Heal(int range, int heal, int revive) {
// 		super();
// 		this.range = range;
// 		this.heal = heal;
// 		this.revive = revive;
// 	}
// 
// }
// 
// Path: src/model/UnitClass.java
// public class UnitClass {
// 
// 	public Card card;
// 	public int maxHP;
// 	public int speed;
// 	public int physicalResistance;
// 	public int magicalResistance;
// 	public int power;
// 	public Attack attack;
// 	public Heal heal;
// 	public boolean swap;
// 
// 	public UnitClass(Card card, int maxHP, int speed, int power,
// 			int physicalResistance, int magicalResistance, Attack attack,
// 			Heal heal, boolean swap) {
// 		super();
// 
// 		this.card = card;
// 		this.maxHP = maxHP;
// 		this.speed = speed;
// 		this.power = power;
// 		this.attack = attack;
// 		this.heal = heal;
// 		this.physicalResistance = physicalResistance;
// 		this.magicalResistance = magicalResistance;
// 		this.swap = swap;
// 	}
// 
// 	public int hash() {
// 		switch(card){
// 		case ARCHER : return 0;
// 		case CRYSTAL : return 1;
// 		case KNIGHT : return 2;
// 		case NINJA : return 3;
// 		case CLERIC : return 4;
// 		case WIZARD : return 5;
// 		}
// 		return 6;
// 	}
// }


// Path: src/libs/UnitClassLib.java
import java.util.HashMap;
import model.Attack;
import model.AttackType;
import model.Card;
import model.Heal;
import model.UnitClass;

package libs;



public class UnitClassLib {

	public static HashMap<Card, UnitClass> lib = new HashMap<Card, UnitClass>();

	static {

		// Add units
		lib.put(Card.KNIGHT, new UnitClass(Card.KNIGHT, 1000, 2, 200, 20, 0,
				null, null, false));
		lib.put(Card.ARCHER, new UnitClass(Card.ARCHER, 800, 2, 300, 0, 0,
				null, null, false));
		lib.put(Card.CLERIC, new UnitClass(Card.CLERIC, 800, 2, 200, 0, 0,
				null, null, false));
		lib.put(Card.WIZARD, new UnitClass(Card.WIZARD, 800, 2, 200, 0, 10,
				null, null, false));
		lib.put(Card.NINJA, new UnitClass(Card.NINJA, 800, 3, 200, 0, 0, null,
				null, false));

		// Add crystal
		lib.put(Card.CRYSTAL, new UnitClass(Card.CRYSTAL, 4500, 0, 0, 0, 0,
				null, null, false));

		// Add attacks
		lib.get(Card.KNIGHT).attack = new Attack(1, AttackType.Physical, 200,
				1, 1, false, true);
		lib.get(Card.ARCHER).attack = new Attack(3, AttackType.Physical, 300,
				0.5, 1, false, false);
		lib.get(Card.CLERIC).attack = new Attack(2, AttackType.Magical, 200, 1,
				1, false, false);
		lib.get(Card.WIZARD).attack = new Attack(2, AttackType.Magical, 200, 1,
				1, true, false);
		lib.get(Card.NINJA).attack = new Attack(2, AttackType.Physical, 200, 2,
				1, false, false);

		// Add heal
		lib.get(Card.CLERIC).heal = new Heal(2, 3, 2);