package br.edu.ufcg.ccc.projeto2.warofkingdoms.ui.dialogs;
import java.util.List;
import android.app.DialogFragment;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import br.edu.ufcg.ccc.projeto2.warofkingdoms.entities.Player;
import br.edu.ufcg.ccc.projeto2.warofkingdoms.management.GameManager;
import br.edu.ufcg.ccc.projeto2.warofkingdoms.management.HouseTokenManager;
import br.edu.ufcg.ccc.projeto2.warofkingdoms.ui.ConnectActivity;
import br.edu.ufcg.ccc.projeto2.warofkingdoms.ui.FeedbackActivity;
import br.edu.ufcg.ccc.projeto2.warofkingdoms.util.RulesChecker;
import br.ufcg.edu.ccc.projeto2.R;
public class GameOverDialogFragment extends DialogFragment implements
OnClickListener {
private Button gameOverOkBtn;
private TextView winnersTextView;
private TextView dialogTitle;
private List<Player> winners;
private boolean wo;
private ImageView starkToken;
private ImageView lannisterToken;
private ImageView martellToken;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.game_over_custom_dialog,
container);
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(0));
final WindowManager.LayoutParams params = getDialog().getWindow().getAttributes();
params.width = WindowManager.LayoutParams.WRAP_CONTENT;
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
params.gravity = Gravity.CENTER;
gameOverOkBtn = (Button) view.findViewById(R.id.gameOverOk);
gameOverOkBtn.setOnClickListener(this);
winnersTextView = (TextView) view.findViewById(R.id.winners_text_view);
winnersTextView.setText(getWinnersText());
dialogTitle = (TextView) view.findViewById(R.id.gameOverTitle);
if (wo) {
dialogTitle.setText(getActivity().getString(R.string.wo_label));
}
starkToken = (ImageView) view.findViewById(R.id.starkTokenImage);
lannisterToken = (ImageView) view.findViewById(R.id.lannisterTokenImage);
martellToken = (ImageView) view.findViewById(R.id.martellTokenImage);
showWinnersHouses();
setCancelable(false);
return view;
}
private void showWinnersHouses() {
for (Player winner : winners) {
if (winner.getHouse().getName().equals("Stark")) {
starkToken.setVisibility(View.VISIBLE);
}
else if (winner.getHouse().getName().equals("Lannister")) {
lannisterToken.setVisibility(View.VISIBLE);
}
else if (winner.getHouse().getName().equals("Martell")) {
martellToken.setVisibility(View.VISIBLE);
}
}
}
private String getWinnersText() {
String winnersText = "";
for (Player p : winners) {
String playerName = p.getName();
if (p.getName().equals("Anonymous Player")) {
playerName = getString(R.string.anonymous_player);
}
if (p.equals(GameManager.getInstance().getCurrentPlayer())) {
winnersText += playerName +" ("+ getString(R.string.you_label) +") "+ getString(R.string.won_label)+"\n";
}
else {
winnersText += playerName +" "+ getString(R.string.won_label)+"\n";
}
}
return winnersText;
}
public void onClick(View v) {
if (v == gameOverOkBtn) {
if (!wasFeedbackSent()) {
startActivity(new Intent(getActivity(), FeedbackActivity.class));
getActivity().finish();
} else {
leaveGameScreen();
}
}
}
private void leaveGameScreen() {
resetPreviousGameState();
startActivity(new Intent(getActivity(), ConnectActivity.class));
dismiss();
}
private void resetPreviousGameState() {
GameManager.getInstance().reset();
HouseTokenManager.getInstance().reset();
RulesChecker.getInstance().reset();
}
private boolean wasFeedbackSent() {
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(getActivity());
return sharedPreferences.getBoolean("feedbackSent", false);
}
public List<Player> getWinners() {
return winners;
}
public void setWinners(List<Player> list) {
this.winners = list;
}
public boolean isWO() {
return wo;
}
public void setWO(boolean wo) {
this.wo = wo;
}
}