support du tactile

This commit is contained in:
marc
2020-09-13 20:43:49 +02:00
parent da0a39dade
commit 78e0cad673
5 changed files with 110 additions and 2 deletions
@@ -3,9 +3,12 @@ package com.iutlaval.myapplication.Game;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.MotionEvent;
import com.iutlaval.myapplication.Game.Cards.Card;
import com.iutlaval.myapplication.Game.Cards.DemoCard;
import com.iutlaval.myapplication.GameActivity;
import com.iutlaval.myapplication.MainActivity;
import com.iutlaval.myapplication.R;
import com.iutlaval.myapplication.Video.Drawables.Drawable;
import com.iutlaval.myapplication.Video.Drawables.DrawableCard;
@@ -16,6 +19,7 @@ public class GameLogicThread extends Thread{
private Context cont;
private Renderer renderer;
private boolean ready;
private TouchHandler touch;
public GameLogicThread(Context cont, Renderer renderer)
{
@@ -23,6 +27,7 @@ public class GameLogicThread extends Thread{
this.cont = cont;
this.renderer = renderer;
renderer.setEngine(this);
touch = new TouchHandler(renderer);
}
private float i=0;
@@ -89,5 +94,12 @@ public class GameLogicThread extends Thread{
return ready;
}
//placeOnBoard()
/**
* relais l'evenement directement au touch Handler
* @param event
*/
public void onTouchEvent(MotionEvent event) {
if(isReady())touch.onTouchEvent(event);
}
}
@@ -0,0 +1,45 @@
package com.iutlaval.myapplication.Game;
import android.view.MotionEvent;
import com.iutlaval.myapplication.GameActivity;
import com.iutlaval.myapplication.Video.Drawables.DrawableCard;
import com.iutlaval.myapplication.Video.Renderer;
public class TouchHandler {
//TODO mettre sa dans une classe isolé
private float deltaX = 0;
private float deltaY = 0;
private DrawableCard moveEventCard = null;
private Renderer renderer;
public TouchHandler(Renderer renderer)
{
this.renderer = renderer;
}
public void onTouchEvent(MotionEvent event){
if(event.getPointerCount() <= 1)
{
float unscalled_X = event.getX() / GameActivity.screenWidth * 100;
float unscalled_Y = event.getY() / GameActivity.screenHeight * 100;
if (event.getAction() == MotionEvent.ACTION_DOWN) {
moveEventCard = renderer.getCardOn(unscalled_X, unscalled_Y);
if(moveEventCard != null) {
deltaY = unscalled_Y - moveEventCard.getY();
deltaX = unscalled_X - moveEventCard.getX();
}
} else if (event.getAction() == MotionEvent.ACTION_UP) {
moveEventCard = null;
deltaY = 0;
deltaX = 0;
} else if (moveEventCard != null) {
moveEventCard.setCoordinates(unscalled_X - deltaX, unscalled_Y - deltaY);
}
}
}
}