support du tactile
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import android.content.pm.ActivityInfo;
|
||||
import android.graphics.Point;
|
||||
import android.os.Bundle;
|
||||
import android.view.Display;
|
||||
import android.view.MotionEvent;
|
||||
|
||||
import com.iutlaval.myapplication.Game.GameLogicThread;
|
||||
import com.iutlaval.myapplication.Video.FpsTime;
|
||||
@@ -14,6 +15,8 @@ import com.iutlaval.myapplication.Video.Renderer;
|
||||
|
||||
public class GameActivity extends Activity {
|
||||
|
||||
private static GameLogicThread gameEngine;
|
||||
|
||||
public static int screenWidth=0;
|
||||
public static int screenHeight=0;
|
||||
public static boolean bilinearFiltering = true;
|
||||
@@ -22,6 +25,7 @@ public class GameActivity extends Activity {
|
||||
return false;//TODO implement it
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@@ -48,10 +52,24 @@ public class GameActivity extends Activity {
|
||||
screenHeight = size.y;
|
||||
}
|
||||
|
||||
GameLogicThread gameEngine = new GameLogicThread(this,renderer);
|
||||
gameEngine = new GameLogicThread(this,renderer);
|
||||
gameEngine.start();
|
||||
|
||||
setContentView(renderer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouchEvent(MotionEvent event) {
|
||||
if(gameEngine != null)gameEngine.onTouchEvent(event);
|
||||
System.out.println(event.getX());
|
||||
return super.onTouchEvent(event);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onGenericMotionEvent(MotionEvent event) {
|
||||
System.out.println(event.getX());
|
||||
return super.onGenericMotionEvent(event);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -218,4 +218,12 @@ public class DrawableCard extends Drawable{
|
||||
setCoordinates(getX(), getY());
|
||||
updateHpAndAtk(card.getAttack(),card.getHealth());
|
||||
}
|
||||
|
||||
public static int getCardWith() {
|
||||
return CARD_WITH;
|
||||
}
|
||||
|
||||
public static int getCardHeight() {
|
||||
return CARD_HEIGHT;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ import androidx.annotation.NonNull;
|
||||
|
||||
import com.iutlaval.myapplication.Game.GameLogicThread;
|
||||
import com.iutlaval.myapplication.Video.Drawables.Drawable;
|
||||
import com.iutlaval.myapplication.Video.Drawables.DrawableCard;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -207,4 +208,28 @@ public class Renderer extends SurfaceView implements SurfaceHolder.Callback {
|
||||
public void setEngine(GameLogicThread engine) {
|
||||
this.engine = engine;
|
||||
}
|
||||
|
||||
/**
|
||||
* retourne une carte au coodonés donné
|
||||
* @param x coordoné en x
|
||||
* @param y coodoné en y
|
||||
* @return
|
||||
*/
|
||||
public DrawableCard getCardOn(float x, float y) {
|
||||
for(Drawable d : toDraw)
|
||||
{
|
||||
if(d instanceof DrawableCard)
|
||||
{
|
||||
DrawableCard card = ((DrawableCard)d);
|
||||
if(x >= card.getX() && x <= card.getX()+card.getCardWith())
|
||||
{
|
||||
if(y >= card.getY() && y <= card.getY()+card.getCardHeight())
|
||||
{
|
||||
return card;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user