211 lines
4.2 KiB
Java
Raw Normal View History

2020-04-17 16:04:44 +02:00
package main;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
2020-04-21 13:45:45 +02:00
import carte.CarteLieu;
2020-04-22 14:10:31 +02:00
import carte.Equipement;
import effet.Effet;
import personnage.CartePersonnage;
2020-04-17 16:04:44 +02:00
public class Joueur {
private GestionnaireEquipements gestionnaireEquipements;
private String nom;
private boolean revele;
private Plateau plateau;
private CartePersonnage cartePersonnage;
private Equipe equipe;
private CarteLieu carteLieu;
2020-04-17 16:04:44 +02:00
// map keys
public static final String PLAYER_HP = "hp";
public static final String PLAYER_TURN = "turn";
2020-04-18 19:39:59 +02:00
public static final String PLAYER_DAMAGE = "damage";
2020-04-17 16:04:44 +02:00
public static final String PLAYER_RESISTANCE = "resistance";
public static final String PLAYER_REVEAL = "reveal";
public static final String PLAYER_IMMUNITY = "immunity";
2020-04-18 19:39:59 +02:00
public static final String PLAYER_NB_EQUIPEMENTS = "nb_equipements";
2020-04-17 16:04:44 +02:00
private Map<String, Integer> stats;
public enum Equipe{
NEUTRE,
SHADOW,
HUNTER
}
public Joueur(String nom) {
this.nom = nom;
this.revele = false;
2020-04-17 16:04:44 +02:00
stats = new HashMap<>();
// Initialisation joueur depuis valeurs perso
//stats.put(PLAYER_HP, char.getHP());
//stats.put(PLAYER_TURN, 1);
//stats.put(PLAYER_DAMAGE, 0); - dégats en +
//stats.put(PLAYER_RESISTANCE, 0);
//stats.put(PLAYER_REVEAL, 0);
//stats.put(PLAYER_IMMUNITY, 0);
// immunité à certains effets?
}
2020-04-17 16:04:44 +02:00
//shadows, hunters ou neutre
public Equipe getEquipe() {
return this.equipe;
2020-04-17 16:04:44 +02:00
}
2020-04-20 12:38:06 +02:00
public void setStat(String key, int valeur) {
// TODO Il faut créer des observers de mort
2020-04-20 12:38:06 +02:00
this.stats.put(key, valeur);
2020-04-17 16:04:44 +02:00
}
public int getStat(String key) {
2020-04-20 12:38:06 +02:00
if(stats.containsKey(key)) {
return stats.get(key);
}else {
return -1;
}
2020-04-17 16:04:44 +02:00
}
public int getNbEquipments() {
return gestionnaireEquipements.getNbEquipments();
}
public List<Joueur> getJoueursAdjacents() {
List<Joueur> joueurs = this.carteLieu.getJoueursAdjacents();
joueurs.remove(this);
return joueurs;
2020-04-17 16:04:44 +02:00
}
2020-04-18 19:39:59 +02:00
public Equipement[] getEquipements() {
// TODO Auto-generated method stub
return null;
}
public void voler(Joueur j2, Equipement equipement) {
// TODO Auto-generated method stub
}
public Equipement choisir(Equipement[] equipements) {
// TODO Auto-generated method stub
return null;
}
public void attaquer(Joueur j2, int attaqueDice) {
int blessure = evaluerImmunite(j2)*(this.evaluerAttaque(j2) + attaqueDice);
if(blessure > 0)
{
2020-04-21 16:37:23 +02:00
this.cartePersonnage.attaquer(j2, blessure);
}
}
private int evaluerAttaque(Joueur j2) {
return this.getStat(PLAYER_DAMAGE)-j2.getStat(PLAYER_RESISTANCE);
}
private int evaluerImmunite(Joueur j2) {
int nbToursImmune = j2.getStat(PLAYER_IMMUNITY);
return nbToursImmune > 0 ? 0 : 1;
}
2020-04-21 16:37:23 +02:00
public void addToStat(String key, int valeur)
{
int valeurBase = this.getStat(key);
this.setStat(Joueur.PLAYER_HP,valeurBase+valeur);
}
public Plateau getPlateau() {
return this.plateau;
}
public Joueur choisirAdjacents() {
// TODO Auto-generated method stub
return null;
}
public Effet choisir(Effet[] effets) {
// TODO Auto-generated method stub
return null;
}
public boolean getRevele() {
return this.revele;
}
2020-04-17 16:04:44 +02:00
public CartePersonnage getCartePersonnage() {
return this.cartePersonnage;
}
public void setCartePersonnage(CartePersonnage cp) {
this.cartePersonnage = cp;
}
public void setEquipe(Equipe equipe) {
this.equipe = equipe;
2020-04-18 14:05:53 +02:00
}
2020-04-20 12:38:06 +02:00
public void setPlateau(Plateau plateau2) {
this.plateau = plateau2;
}
2020-04-21 13:45:45 +02:00
public boolean choisir() {
// TODO Auto-generated method stub
return false;
}
public void utiliserEffetLieu() {
this.carteLieu.utiliser(this);
}
public void deplacer(CarteLieu cl) {
2020-04-21 15:27:27 +02:00
if(this.carteLieu != null){
2020-04-21 13:45:45 +02:00
this.carteLieu.remove(this);
}
this.carteLieu = cl;
}
2020-04-21 15:27:27 +02:00
public Joueur choisirTous() {
// TODO Auto-generated method stub
return null;
}
public CarteLieu getCarteLieu() {
return this.carteLieu;
}
public String getNom() {
return this.nom;
}
2020-04-21 15:27:27 +02:00
2020-04-22 13:05:36 +02:00
public void reveal() {
2020-04-21 18:01:24 +02:00
this.revele = true;
2020-04-22 13:05:36 +02:00
}
public void setRevele(boolean b) {
this.revele = b;
2020-04-21 18:01:24 +02:00
}
2020-04-17 16:04:44 +02:00
}