208 lines
7.9 KiB
Java
208 lines
7.9 KiB
Java
package com.example.tcg.adapters;
|
|
|
|
import android.content.Context;
|
|
import android.graphics.Color;
|
|
import android.view.LayoutInflater;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.widget.BaseAdapter;
|
|
import android.widget.Button;
|
|
import android.widget.ImageView;
|
|
import android.widget.TextView;
|
|
import android.widget.Toast;
|
|
|
|
import com.example.tcg.Carta;
|
|
import com.example.tcg.R;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.function.Consumer;
|
|
// Adaptador responsável por exibir uma lista de cartas em um ListView ou GridView
|
|
public class CartaAdapter extends BaseAdapter {
|
|
|
|
private Context context; //contexto da activity onde a carta é usado
|
|
private ArrayList<Carta> cartas; //listas de cartas a serem vendidas
|
|
private Consumer<Carta> onVenderClick; //função a ser chamada quando clickado para vender
|
|
|
|
|
|
// Construtor do adaptador
|
|
public CartaAdapter(Context context, ArrayList<Carta> cartas, Consumer<Carta> onVenderClick) {
|
|
this.context = context;
|
|
this.cartas = cartas;
|
|
this.onVenderClick = onVenderClick;
|
|
}
|
|
|
|
@Override
|
|
public int getCount() {
|
|
return cartas.size();
|
|
}
|
|
|
|
@Override
|
|
public Object getItem(int position) {
|
|
return cartas.get(position);
|
|
}
|
|
|
|
@Override
|
|
public long getItemId(int position) {
|
|
return position;
|
|
}
|
|
|
|
@Override
|
|
public View getView(int position, View convertView, ViewGroup parent) {
|
|
Carta carta = cartas.get(position);
|
|
|
|
if (convertView == null) {
|
|
convertView = LayoutInflater.from(context).inflate(R.layout.item_carta, parent, false);
|
|
}
|
|
|
|
ImageView imagemCarta = convertView.findViewById(R.id.imagemCarta);
|
|
TextView textoNome = convertView.findViewById(R.id.textoNomeCarta);
|
|
TextView textoRaridade = convertView.findViewById(R.id.textoRaridade);
|
|
Button botaoVender = convertView.findViewById(R.id.botaoVender);
|
|
View cartaLayout = convertView.findViewById(R.id.cartaLayout);
|
|
|
|
// Define nome e raridade
|
|
textoNome.setText(carta.getNome());
|
|
textoRaridade.setText(carta.getRaridade());
|
|
|
|
// Define imagem
|
|
int resId = context.getResources().getIdentifier(carta.getImagem(), "drawable", context.getPackageName());
|
|
imagemCarta.setImageResource(resId);
|
|
|
|
// Mostrar o valor no botão
|
|
int valor = getValorCarta(carta.getRaridade());
|
|
botaoVender.setText("Vender (" + valor + " ouro)");
|
|
|
|
// Define a cor/borda conforme raridade
|
|
switch (carta.getRaridade()) {
|
|
case "Comum":
|
|
textoRaridade.setTextColor(Color.parseColor("#607D8B")); // cinza azulado
|
|
cartaLayout.setBackgroundResource(R.drawable.borda_comum);
|
|
break;
|
|
case "Incomum":
|
|
textoRaridade.setTextColor(Color.parseColor("#4CAF50")); // verde elegante
|
|
cartaLayout.setBackgroundResource(R.drawable.borda_incomum);
|
|
break;
|
|
case "Rara":
|
|
textoRaridade.setTextColor(Color.parseColor("#7E57C2")); // roxo
|
|
cartaLayout.setBackgroundResource(R.drawable.borda_rara);
|
|
break;
|
|
case "Épica":
|
|
cartaLayout.setBackgroundResource(R.drawable.borda_epica);
|
|
textoRaridade.setTextColor(0xFF6A1B9A); // roxo vibrante
|
|
break;
|
|
case "Lendária":
|
|
cartaLayout.setBackgroundResource(R.drawable.borda_lendaria);
|
|
textoRaridade.setTextColor(0xFFFFD600); // dourado
|
|
break;
|
|
case "Especial":
|
|
cartaLayout.setBackgroundResource(R.drawable.borda_especial);
|
|
textoRaridade.setTextColor(0xFFFF7D7D); // vermelho
|
|
break;
|
|
}
|
|
|
|
// Clique com animação
|
|
botaoVender.setOnClickListener(v -> {
|
|
animarVenda(cartaLayout, () -> {
|
|
onVenderClick.accept(carta);
|
|
Toast.makeText(context, "Carta vendida!", Toast.LENGTH_SHORT).show();
|
|
});
|
|
});
|
|
|
|
imagemCarta.setOnClickListener(v -> mostrarCartaAmpliada(carta));
|
|
return convertView;
|
|
}
|
|
|
|
// Retorna o valor da carta conforme raridade
|
|
private int getValorCarta(String raridade) {
|
|
switch (raridade) {
|
|
case "Comum": return 10;
|
|
case "Incomum": return 25;
|
|
case "Rara": return 50;
|
|
case "Épica": return 100;
|
|
case "Lendária": return 200;
|
|
case "Especial": return 500;
|
|
default: return 0;
|
|
}
|
|
}
|
|
|
|
// Pequena animação ao vender (fade + scale)
|
|
private void animarVenda(View view, Runnable onComplete) {
|
|
view.animate()
|
|
.alpha(0f)
|
|
.scaleX(0.85f)
|
|
.scaleY(0.85f)
|
|
.setDuration(300)
|
|
.withEndAction(() -> {
|
|
view.setAlpha(1f);
|
|
view.setScaleX(1f);
|
|
view.setScaleY(1f);
|
|
onComplete.run();
|
|
})
|
|
.start();
|
|
}
|
|
|
|
private void mostrarCartaAmpliada(Carta carta) {
|
|
android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(context);
|
|
View dialogView = LayoutInflater.from(context).inflate(R.layout.dialog_carta_ampliada, null);
|
|
|
|
ImageView imagemAmpliada = dialogView.findViewById(R.id.imagemCartaAmpliada);
|
|
TextView nomeAmpliado = dialogView.findViewById(R.id.nomeCartaAmpliada);
|
|
TextView raridadeAmpliada = dialogView.findViewById(R.id.raridadeCartaAmpliada);
|
|
View cartaLayout = dialogView.findViewById(R.id.cartaLayoutAmpliada); // container para a borda
|
|
|
|
nomeAmpliado.setText(carta.getNome());
|
|
raridadeAmpliada.setText(carta.getRaridade());
|
|
|
|
int resId = context.getResources().getIdentifier(carta.getImagem(), "drawable", context.getPackageName());
|
|
if (resId != 0) {
|
|
imagemAmpliada.setImageResource(resId);
|
|
}
|
|
|
|
// Define a borda conforme raridade (mesmo estilo da PacotesActivity)
|
|
switch (carta.getRaridade()) {
|
|
case "Comum":
|
|
cartaLayout.setBackgroundResource(R.drawable.borda_comum);
|
|
raridadeAmpliada.setTextColor(Color.parseColor("#607D8B"));
|
|
break;
|
|
case "Incomum":
|
|
cartaLayout.setBackgroundResource(R.drawable.borda_incomum);
|
|
raridadeAmpliada.setTextColor(Color.parseColor("#4CAF50"));
|
|
break;
|
|
case "Rara":
|
|
cartaLayout.setBackgroundResource(R.drawable.borda_rara);
|
|
raridadeAmpliada.setTextColor(Color.parseColor("#7E57C2"));
|
|
break;
|
|
case "Épica":
|
|
cartaLayout.setBackgroundResource(R.drawable.borda_epica);
|
|
raridadeAmpliada.setTextColor(Color.parseColor("#6A1B9A"));
|
|
break;
|
|
case "Lendária":
|
|
cartaLayout.setBackgroundResource(R.drawable.borda_lendaria);
|
|
raridadeAmpliada.setTextColor(Color.parseColor("#FFD600"));
|
|
break;
|
|
case "Especial":
|
|
cartaLayout.setBackgroundResource(R.drawable.borda_especial);
|
|
raridadeAmpliada.setTextColor(Color.parseColor("#ef736c"));
|
|
break;
|
|
}
|
|
|
|
builder.setView(dialogView);
|
|
android.app.AlertDialog dialog = builder.create();
|
|
|
|
// Fundo transparente e animação de entrada
|
|
if (dialog.getWindow() != null) {
|
|
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
|
|
dialog.getWindow().getAttributes().windowAnimations = android.R.style.Animation_Dialog;
|
|
}
|
|
|
|
dialog.show();
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|