package system.managers;

import java.util.ArrayList;

import br.ufsc.inf.leobr.cliente.Jogada;
import system.battle.Coordinate;
import system.character.BaseCharacter;

public class JogadaNetGames implements Jogada {
	private static final long serialVersionUID = 2212574188418434356L;
	
//	private Map map;// Não dá de mandar nada que tenha imagens
	private int enemyChosenSkillReceived;
	private int enemyChosenFoeReceived;
	private int enemyValidChosenReceived;
	private int tileState;
	private int mapCursorX;
	private int mapCursorY;
	private int roundOrderIndex;
	
	private boolean connectionSceneAble;
	private boolean showDefender;
	private boolean showAccAndDamage;
	private boolean showInfo;
	private boolean selectedFoeIsInRange;
	private boolean passarVez;
	private boolean botao;
	
	private String defenderText;
	private String defenderParamText;
	private String accAndDamageText;
	private String infoText;
	
	// Dá de passar um baseCharacter
	private BaseCharacter jogador1;
	private BaseCharacter jogador2;
	
	private BaseCharacter inimigo1;
	private BaseCharacter inimigo2;
	private BaseCharacter inimigo3;
	private BaseCharacter inimigo4;
	private BaseCharacter inimigo5;
	
	private BaseCharacter[] roundOrder;
	
	private ArrayList<Coordinate> moveRangeCoordinate;
	
	private Coordinate prevMoveCoordinate;
	
	public JogadaNetGames(	BaseCharacter[] roundOrder, BaseCharacter[] participantes, boolean connectionSceneAble,
							int enemyChosenSkillReceived, int enemyChosenFoeReceived, int enemyValidChosenReceived,
							int mapCursorX, int mapCursorY, int tileState, ArrayList<Coordinate> moveRangeCoordinate, Coordinate prevMoveCoordinate,
							int damageMin, int damageMax, int damage, int damageCaused,
							boolean showDefender, String defenderText, String defenderParamText,
							boolean showAccAndDamage, String accAndDamageText,
							boolean showInfo, String infoText,
							boolean passarVez, int roundOrderIndex, boolean botao) {
		this.roundOrder = roundOrder;
		
		this.jogador1 = participantes[0];
		this.jogador2 = participantes[1];
		
		this.inimigo1 = participantes[2];
		this.inimigo2 = participantes[3];
		this.inimigo3 = participantes[4];
		this.inimigo4 = participantes[5];
		this.inimigo5 = participantes[6];
		
//		this.map = map;
		this.connectionSceneAble = connectionSceneAble;
		
		this.enemyChosenSkillReceived = enemyChosenSkillReceived;
		this.enemyChosenFoeReceived = enemyChosenFoeReceived;
		this.enemyValidChosenReceived = enemyValidChosenReceived;
		
		this.mapCursorX = mapCursorX;
		this.mapCursorY = mapCursorY;
		this.tileState = tileState;
		this.moveRangeCoordinate = moveRangeCoordinate;
		this.prevMoveCoordinate = prevMoveCoordinate;
		
		this.showDefender = showDefender;
		this.showAccAndDamage = showAccAndDamage;
		this.showInfo = showInfo;
		
		this.defenderText = defenderText;
		this.defenderParamText = defenderParamText;
		this.accAndDamageText = accAndDamageText;
		this.infoText = infoText;
		
		this.passarVez = passarVez;
		this.roundOrderIndex = roundOrderIndex;
		this.botao = botao;
	}
	
//	public Map getMap() {
//		return map;
//	}

	public BaseCharacter getJogador1() {
		return jogador1;
	}
	
	public BaseCharacter getJogador2() {
		return jogador2;
	}
	
	public int getTileState() {
		return tileState;
	}

	public BaseCharacter getInimigo1() {
		return inimigo1;
	}

	public BaseCharacter getInimigo2() {
		return inimigo2;
	}

	public BaseCharacter getInimigo3() {
		return inimigo3;
	}

	public BaseCharacter getInimigo4() {
		return inimigo4;
	}

	public BaseCharacter getInimigo5() {
		return inimigo5;
	}

	public boolean isConnectionSceneAble() {
		return connectionSceneAble;
	}

	public BaseCharacter[] getRoundOrder() {
		return roundOrder;
	}

	public int getEnemyChosenSkillReceived() {
		return enemyChosenSkillReceived;
	}

	public int getEnemyChosenFoeReceived() {
		return enemyChosenFoeReceived;
	}

	public int getEnemyValidChosenReceived() {
		return enemyValidChosenReceived;
	}

	public int getMapCursorX() {
		return mapCursorX;
	}

	public int getMapCursorY() {
		return mapCursorY;
	}

	public ArrayList<Coordinate> getMoveRangeCoordinate() {
		return moveRangeCoordinate;
	}

	public Coordinate getPrevMoveCoordinate() {
		return prevMoveCoordinate;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	public boolean isShowDefender() {
		return showDefender;
	}

	public boolean isShowAccAndDamage() {
		return showAccAndDamage;
	}

	public boolean isShowInfo() {
		return showInfo;
	}

	public String getDefenderText() {
		return defenderText;
	}

	public String getDefenderParamText() {
		return defenderParamText;
	}

	public String getAccAndDamageText() {
		return accAndDamageText;
	}

	public String getInfoText() {
		return infoText;
	}

	public boolean isSelectedFoeIsInRange() {
		return selectedFoeIsInRange;
	}

	public boolean isPassarVez() {
		return passarVez;
	}

	public int getActiveUnitIndex() {
		return roundOrderIndex;
	}

	public boolean isBotao() {
		return botao;
	}
	
}
