/** * Copyright (C) 2012 The FreeCol-Android Team * * This file is part of FreeCol-Android. * * FreeCol-Android is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * FreeCol is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FreeCol-Android. If not, see <http://www.gnu.org/licenses/>. */ package org.freecolandroid.ui.menu; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import net.sf.freecol.client.control.PreGameController; import net.sf.freecol.client.gui.ImageLibrary; import net.sf.freecol.client.gui.i18n.Messages; import net.sf.freecol.common.model.Nation; import net.sf.freecol.common.model.NationOptions; import net.sf.freecol.common.model.NationOptions.NationState; import net.sf.freecol.common.model.NationType; import net.sf.freecol.common.model.Player; import org.freecolandroid.R; import org.freecolandroid.repackaged.java.awt.Image; import org.freecolandroid.ui.FreeColFragment; import android.app.FragmentTransaction; import android.os.AsyncTask; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; public class StartGameFragment extends FreeColFragment { private List<Nation> mNations; private Map<Nation, Player> mPlayers; private ImageLibrary mLibrary; private Button mStartButton; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.frag_start_game, container, false); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mLibrary = mClient.getGUI().getImageLibrary(); mNations = new ArrayList<Nation>(); mPlayers = new HashMap<Nation, Player>(); Player player = mClient.getMyPlayer(); List<Nation> allNations = player.getSpecification().getNations(); NationOptions nationOptions = mClient.getGame().getNationOptions(); for (Nation n : allNations) { if (n.isSelectable()) { NationState state = nationOptions.getNations().get(n); if (state != null) { mNations.add(n); mPlayers.put(n, null); } } } ListView nationList = (ListView) getView().findViewById(R.id.nation_list); nationList.setAdapter(new NationListAdapter()); nationList.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { mStartButton.setEnabled(true); Nation nation = mNations.get(position); PreGameController pgc = mClient.getPreGameController(); pgc.setNation(nation); pgc.setNationType(nation.getType()); } }); mStartButton = (Button) getView().findViewById(R.id.ok); mStartButton.setText(Messages.message("startGame")); mStartButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { startGame(); } }); } private void startGame() { // Hide the fragment FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.remove(this); ft.commit(); new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void... params) { mClient.getMyPlayer().setReady(true); mClient.getPreGameController().requestLaunch(); return null; } }.execute(); } private class NationListAdapter extends BaseAdapter { @Override public int getCount() { return mNations.size(); } @Override public Object getItem(int position) { return mNations.get(position); } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = LayoutInflater.from(getActivity()).inflate(R.layout.list_item_nation, parent, false); } Nation nation = mNations.get(position); // Flag Image image = mLibrary.getCoatOfArmsImage(nation, 1); ImageView flagView = (ImageView) convertView.findViewById(R.id.flag); flagView.setImageBitmap(image.getBitmap()); // Name TextView name = (TextView) convertView.findViewById(R.id.name); name.setText(Messages.message(nation.getNameKey())); // Advantage NationType type = null; if (mPlayers.get(nation) == null) { type = nation.getType(); } else { type = mPlayers.get(nation).getNationType(); } TextView description = (TextView) convertView.findViewById(R.id.description); description.setText(Messages.message(type.getId() + ".shortDescription")); return convertView; } } }