package br.com.while42.rpgcs.activity.fragment;
import java.text.DecimalFormat;
import java.text.NumberFormat;
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.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
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.character.Skill;
import br.com.while42.rpgcs.model.character.SkillOther;
import br.com.while42.rpgcs.model.character.Skills;
import br.com.while42.rpgcs.model.character.attributes.TypeAbilities;
import br.com.while42.rpgcs.model.character.attributes.TypeRpgSkill;
public class PlaySkills extends Fragment {
private Skills skills;
public PlaySkills() {
}
public PlaySkills(Skills skills) {
this.skills = skills;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View layout = inflater.inflate(R.layout.fragment_play_skills, container, false);
if (skills == null)
return layout;
ListView lvSkills = (ListView) layout.findViewById(R.id_frag_play_skills.listview_skills);
NumberFormat fmt = new DecimalFormat("+#;-#");
ArrayList<HashMap<String, String>> sklls = new ArrayList<HashMap<String, String>>();
for (Skill skill : skills.getAll()) {
HashMap<String, String> map = new HashMap<String, String>();
TypeRpgSkill type = skill.getType();
map.put("name", getString(type.getCodeName()));
map.put("modifier", "(" + fmt.format(skill.getModifier()) + ")");
TypeAbilities ability = type.getAbility();
int code = (ability != null) ? ability.getCodeName() : R.string.ability_none;
map.put("ability", getString(code));
sklls.add(map);
}
for (SkillOther especialSkill : skills.getAllOthers()) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("name", especialSkill.getName());
map.put("modifier", "(" + fmt.format(especialSkill.getModifier()) + ")");
TypeAbilities ability = especialSkill.getAbility();
int code = (ability != null) ? ability.getCodeName() : R.string.ability_none;
map.put("ability", getString(code));
sklls.add(map);
}
Comparator<Map<String, String>> mapComparator = new MapComparator().builderComparator("name");
Collections.sort(sklls, mapComparator);
SimpleAdapter adapterSkills = new SimpleAdapter(getActivity(), sklls, R.layout.part_play_list_skills,
new String[] { "name", "modifier", "ability" }, new int[] { R.id.name, R.id.modifier, R.id.ability });
lvSkills.setAdapter(adapterSkills);
return layout;
}
}