refactor touchHandler + repensé dekc + renpensé carte + suprimé code inutile + ajouter d'event carte
This commit is contained in:
@@ -14,8 +14,9 @@ public class TouchHandler {
|
||||
private float originalPositionX = 0;
|
||||
private float originalPositionY = 0;
|
||||
private DrawableCard dragAndDropCard = null;
|
||||
private DrawableCard smallCardUserForBig = null;
|
||||
private static final float SELECTING_OFFSET = 20F;
|
||||
private DrawableCard smallCardUsedForBig = null;
|
||||
private DrawableCard cardSeletedInHand = null;
|
||||
private static final float SELECTING_OFFSET = 10F;
|
||||
private PlayableZonesHandler playableZonesHandler;
|
||||
|
||||
private Renderer renderer;
|
||||
@@ -30,36 +31,33 @@ public class TouchHandler {
|
||||
this.context=context;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* cette evenement doit recevoir le onTouchEvent d'une activité
|
||||
* @param event
|
||||
*/
|
||||
public void onTouchEvent(MotionEvent event)
|
||||
{
|
||||
//on ignore le multi touch
|
||||
if(event.getPointerCount() <= 1)
|
||||
{
|
||||
if(gameLogic.isYourTurn())
|
||||
{
|
||||
//l'ordre importe on a besoin d'avoir une carte sélectionner pour la jouer
|
||||
if(event.getAction() == MotionEvent.ACTION_DOWN)
|
||||
{
|
||||
//selectionne la carte
|
||||
dragAndDropHandler(event);
|
||||
//affiche les zones de jeu
|
||||
playCard(event);
|
||||
}else{
|
||||
//joue la carte si on a ACTION_UP
|
||||
playCard(event);
|
||||
//déplace la carte(non ACTION_UP) et la désélection (ACTION_UP)
|
||||
dragAndDropHandler(event);
|
||||
}
|
||||
|
||||
}
|
||||
handSelectionHandler(event);
|
||||
//afficher grosse carte
|
||||
bigCardHandler(event);
|
||||
if(gameLogic.isYourTurn())
|
||||
{
|
||||
//selectionne la carte
|
||||
dragAndDropHandler(event);
|
||||
//affiche les zones de jeu
|
||||
playCard(event);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* gére le drag and drop de carte
|
||||
* @param event
|
||||
*/
|
||||
private void dragAndDropHandler(MotionEvent event)
|
||||
{
|
||||
//on calcul les coordonées en % de l'écran
|
||||
@@ -70,7 +68,7 @@ public class TouchHandler {
|
||||
if (event.getAction() == MotionEvent.ACTION_DOWN) {
|
||||
dragAndDropCard = renderer.getCardOn(unscaled_X, unscaled_Y);
|
||||
|
||||
if(!dragAndDropCard.isDraggable()) dragAndDropCard = null;
|
||||
if(dragAndDropCard != null && !dragAndDropCard.isDraggable()) dragAndDropCard = null;
|
||||
|
||||
if (dragAndDropCard != null) {
|
||||
//on calcul la position par raport au doigt de l'utilisateur
|
||||
@@ -83,15 +81,18 @@ public class TouchHandler {
|
||||
} else if (event.getAction() == MotionEvent.ACTION_UP) {
|
||||
TouchDeltaY = 0;
|
||||
TouchDeltaX = 0;
|
||||
//TODO detect zones
|
||||
if(dragAndDropCard != null)renderer.moveToDraw(originalPositionX,originalPositionY, dragAndDropCard.getName());
|
||||
dragAndDropCard = null;
|
||||
|
||||
//dragAndDropCard = null;
|
||||
} else if (dragAndDropCard != null) {
|
||||
dragAndDropCard.setCoordinates(unscaled_X - TouchDeltaX, unscaled_Y - TouchDeltaY);
|
||||
renderer.updateFrame();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* affiche une grosse carte carte quand une carte est sélectionner
|
||||
* @param event
|
||||
*/
|
||||
private void bigCardHandler(MotionEvent event)
|
||||
{
|
||||
//calcul y,x sur une echelle de 0 a 100
|
||||
@@ -103,50 +104,78 @@ public class TouchHandler {
|
||||
DrawableCard smallCArd = renderer.getCardOn(unScalled_X,unScalled_Y);
|
||||
if(smallCArd !=null)
|
||||
{
|
||||
if(smallCardUserForBig !=null)
|
||||
if(smallCardUsedForBig !=null)
|
||||
{
|
||||
smallCardUserForBig.setCoordinates(smallCardUserForBig.getX(), smallCardUserForBig.getY() + SELECTING_OFFSET);
|
||||
//on update pas affin d'avoir un rendu plus fluide au moment de mettre l'aure carte
|
||||
renderer.removeToDrawWithoutUpdate(smallCardUserForBig.getName()+"BIG");
|
||||
renderer.removeToDrawWithoutUpdate(smallCardUsedForBig.getName()+"BIG");
|
||||
}
|
||||
smallCardUserForBig = smallCArd;
|
||||
smallCardUsedForBig = smallCArd;
|
||||
DrawableCard bigCard = new DrawableCard(smallCArd,context,2);
|
||||
renderer.addToDraw(bigCard);
|
||||
bigCard.setCoordinates(72F,10F);
|
||||
//on ne décale pas la carte sélectionner si ce n'est pas notre tours
|
||||
if(gameLogic.isYourTurn())smallCArd.setCoordinates(smallCArd.getX(),smallCArd.getY() - SELECTING_OFFSET);
|
||||
//on sélectionne si elle est dans notre main(déplacer la care vers le haut de quelque pixel)
|
||||
|
||||
//si on lache la carte
|
||||
}else if(event.getAction() == MotionEvent.ACTION_UP) {
|
||||
if (smallCardUserForBig != null) {
|
||||
renderer.removeToDraw(smallCardUserForBig.getName() + "BIG");
|
||||
smallCardUserForBig = null;
|
||||
}
|
||||
}
|
||||
}else if(event.getAction() == MotionEvent.ACTION_UP) {
|
||||
if (smallCardUsedForBig != null) {
|
||||
renderer.removeToDraw(smallCardUsedForBig.getName() + "BIG");
|
||||
smallCardUsedForBig = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* gére le placement des cartes sur le terrain
|
||||
* @param event
|
||||
*/
|
||||
private void playCard(MotionEvent event)
|
||||
{
|
||||
//l'affichage se fait par une liste fifo donc on veut que notre carte soit afficher aprés les zones
|
||||
if(event.getAction() == MotionEvent.ACTION_DOWN) {
|
||||
//on enleve l carte
|
||||
renderer.removeToDrawWithoutUpdate(dragAndDropCard);
|
||||
//on ajoute les zones
|
||||
playableZonesHandler.displayPlayableZones(renderer);
|
||||
// et enfin on remet la carte
|
||||
renderer.addToDraw(dragAndDropCard);
|
||||
if(dragAndDropCard != null){
|
||||
//l'affichage se fait par une liste fifo donc on veut que notre carte soit afficher aprés les zones
|
||||
if(event.getAction() == MotionEvent.ACTION_DOWN) {
|
||||
//on enleve l carte
|
||||
renderer.removeToDrawWithoutUpdate(dragAndDropCard);
|
||||
//on ajoute les zones
|
||||
playableZonesHandler.displayPlayableZones(renderer);
|
||||
// et enfin on remet la carte
|
||||
renderer.addToDraw(dragAndDropCard);
|
||||
|
||||
}else if(event.getAction() == MotionEvent.ACTION_UP) {
|
||||
int zone = playableZonesHandler.getHoveredZone(smallCardUserForBig);
|
||||
if(zone != -1)
|
||||
}else if(event.getAction() == MotionEvent.ACTION_UP) {
|
||||
int zone = playableZonesHandler.getHoveredZone(dragAndDropCard);
|
||||
if(zone != -1)
|
||||
{
|
||||
dragAndDropCard.setOnBoard(true);
|
||||
dragAndDropCard.setCoordinates((DrawableCard.getCardWith()+1)*zone,55F);
|
||||
dragAndDropCard.setDraggable(false);
|
||||
gameLogic.onCardPlayed(dragAndDropCard,zone);
|
||||
}else{
|
||||
if(dragAndDropCard != null)renderer.moveToDraw(originalPositionX,originalPositionY, dragAndDropCard.getName());
|
||||
}
|
||||
playableZonesHandler.hidePlayableZones(renderer);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void handSelectionHandler(MotionEvent event)
|
||||
{
|
||||
float unScalled_Y = event.getY() / GameActivity.screenHeight * 100;
|
||||
float unScalled_X = event.getX() / GameActivity.screenWidth * 100;
|
||||
DrawableCard smallCArd = renderer.getCardOn(unScalled_X,unScalled_Y);
|
||||
if(event.getAction() == MotionEvent.ACTION_DOWN) {
|
||||
if(cardSeletedInHand != null && !cardSeletedInHand.isOnBoard()){
|
||||
cardSeletedInHand.setCoordinates(cardSeletedInHand.getX(), cardSeletedInHand.getY() + SELECTING_OFFSET);
|
||||
cardSeletedInHand=null;
|
||||
renderer.updateFrame();
|
||||
}
|
||||
|
||||
if(unScalled_Y > 90F && smallCArd !=null && smallCArd.isDraggable() && !smallCArd.isOnBoard() && (cardSeletedInHand == null || !cardSeletedInHand.equals(smallCArd)))
|
||||
{
|
||||
dragAndDropCard.setOnBoard(true);
|
||||
dragAndDropCard.setCoordinates((DrawableCard.getCardWith()+1)*zone,55F);
|
||||
dragAndDropCard.setDraggable(false);
|
||||
}else{
|
||||
dragAndDropCard.setCoordinates(dragAndDropCard.getX(),dragAndDropCard.getY() + SELECTING_OFFSET);
|
||||
smallCArd.setCoordinates(smallCArd.getX(),smallCArd.getY() - SELECTING_OFFSET);
|
||||
cardSeletedInHand=smallCArd;
|
||||
renderer.updateFrame();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user