package br.com.while42.rpgcs.activity;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import br.com.while42.rpgcs.R;
import br.com.while42.rpgcs.comparator.MapComparator;
import br.com.while42.rpgcs.model.HitDice;
import br.com.while42.rpgcs.model.character.RpgCharacter;
import br.com.while42.rpgcs.model.equip.Equipments;
import br.com.while42.rpgcs.model.equip.weapons.Weapon;
import br.com.while42.rpgcs.model.equip.weapons.especial.EspecialWeapon;
import com.actionbarsherlock.app.SherlockActivity;
public class EquipmentRpgCharacter extends SherlockActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_equipment_character);
Bundle bn = new Bundle();
bn = getIntent().getExtras();
RpgCharacter rpgCharacter = (RpgCharacter) bn.getSerializable(RpgCharacter.class.getName());
Log.d("EQUIPMENT - ID: ", rpgCharacter.getId().toString());
ArrayList<HashMap<String, Object>> strWeapons = new ArrayList<HashMap<String, Object>>();
Equipments equipments = rpgCharacter.getEquipments();
for (Weapon weapon : equipments.getWeapons()) {
HashMap<String, Object> map = new HashMap<String, Object>();
Log.d("Weapon", getWeaponName(weapon));
int categorieCodeName = weapon.getCategorie().getCodeName();
int udefulnessCodeName = weapon.getCategorieUsefulness().getCodeName();
// TODO: Encumbrance eh NULL para RANGED Weapons
// int encumbranceCodeName = weapon.getCategorieEncumbrance().getCodeName();
// map.put("type", R.string.equipment_label_type_weapon);
map.put("image", weapon.getCodeImage());
map.put("name", getWeaponName(weapon));
map.put("categorie", getString(categorieCodeName));
map.put("critical", weapon.getCritical().toString());
map.put("range", weapon.getRangeIncrement().toString());
map.put("cost", weapon.getCost().toString());
map.put("weight", weapon.getWeight().toString());
map.put("categorie_usefulness", getString(udefulnessCodeName));
// map.put("categorie_encumbrance", getString(encumbranceCodeName));
StringBuffer buffer = new StringBuffer();
for (HitDice dice : weapon.getDamage()) {
if (buffer.length() > 0) {
buffer.append(" / ");
}
buffer.append(dice);
}
map.put("damage", "(" + buffer.toString() + ")");
strWeapons.add(map);
}
ListView lvEquipments = (ListView) findViewById(R.id_equipment.listview_equipments);
Comparator<Map<String, Object>> mapComparator = new MapComparator().builderComparatorWithCast("name");
Collections.sort(strWeapons, mapComparator);
SimpleAdapter adapterEquipments = new SimpleAdapter(this, strWeapons, R.layout.part_play_list_weapons, new String[] { "image",
"name", "categorie", "critical", "range", "cost", "weight", "categorie_usefulness", "categorie_encumbrance",
"damage" }, new int[] { R.id.image, R.id.name, R.id.categorie, R.id.critical, R.id.range, R.id.cost, R.id.weight,
R.id.categorie_usefulness, R.id.categorie_encumbrance, R.id.damage });
lvEquipments.setAdapter(adapterEquipments);
// -----------------
/*
* ListView lvEquipments = (ListView)
* findViewById(R.id_equipment.listview_equipments);
*
* ArrayList<HashMap<String, String>> equips = new
* ArrayList<HashMap<String, String>>();
*
* listWeapons = ClassByReflection.getAll(this, AbstractWeapon.class);
*
* for (AbstractWeapon weapon : listWeapons) { HashMap<String, String>
* map = new HashMap<String, String>();
*
* map.put("name", getString(weapon.getCodeName()));
*
* if (getString(weapon.getCodeName()).isEmpty()) {
*
* }
*
* StringBuffer buffer = new StringBuffer(); for (HitDice dice :
* weapon.getDamage()) { if (buffer.length() > 0) {
* buffer.append(" / "); } buffer.append(dice); }
*
* map.put("damage", "(" + buffer.toString() + ")"); map.put("range",
* weapon.getRangeIncrement().toString());
*
* equips.add(map); }
*
*
* Comparator<Map<String, String>> mapComparator = new
* MapComparator().builderComparator("name"); Collections.sort(equips,
* mapComparator);
*
* SimpleAdapter adapterEquipments = new SimpleAdapter(this, equips,
* R.layout.list_equipments, new String[] { "name", "damage", "range" },
* new int[] { R.id.name, R.id.damage, R.id.range });
*
* lvEquipments.setAdapter(adapterEquipments);
*/
}
private String getWeaponName(Weapon weapon) {
if (weapon instanceof EspecialWeapon) {
return ((EspecialWeapon) weapon).getName();
}
int weaponCodeName = weapon.getCodeName();
if (weaponCodeName == 0) {
return "";
}
return getString(weaponCodeName);
}
}