ajout d'indication de placement des cartes
This commit is contained in:
@@ -3,6 +3,7 @@ package com.iutlaval.myapplication.Game;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.BitmapFactory;
|
import android.graphics.BitmapFactory;
|
||||||
|
import android.graphics.Color;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
|
|
||||||
@@ -10,12 +11,17 @@ import com.iutlaval.myapplication.Game.Cards.Card;
|
|||||||
import com.iutlaval.myapplication.Game.Decks.Deck;
|
import com.iutlaval.myapplication.Game.Decks.Deck;
|
||||||
import com.iutlaval.myapplication.Game.Decks.DeckDemo;
|
import com.iutlaval.myapplication.Game.Decks.DeckDemo;
|
||||||
import com.iutlaval.myapplication.GameActivity;
|
import com.iutlaval.myapplication.GameActivity;
|
||||||
|
import com.iutlaval.myapplication.InvalidDataException;
|
||||||
import com.iutlaval.myapplication.R;
|
import com.iutlaval.myapplication.R;
|
||||||
import com.iutlaval.myapplication.Video.Drawables.Drawable;
|
import com.iutlaval.myapplication.Video.Drawables.Drawable;
|
||||||
import com.iutlaval.myapplication.Video.Drawables.DrawableBitmap;
|
import com.iutlaval.myapplication.Video.Drawables.DrawableBitmap;
|
||||||
import com.iutlaval.myapplication.Video.Drawables.DrawableCard;
|
import com.iutlaval.myapplication.Video.Drawables.DrawableCard;
|
||||||
|
import com.iutlaval.myapplication.Video.Drawables.DrawableRectangle;
|
||||||
|
import com.iutlaval.myapplication.Video.Rectangle;
|
||||||
import com.iutlaval.myapplication.Video.Renderer;
|
import com.iutlaval.myapplication.Video.Renderer;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class GameLogicThread extends Thread{
|
public class GameLogicThread extends Thread{
|
||||||
|
|
||||||
private Context cont;
|
private Context cont;
|
||||||
@@ -27,9 +33,11 @@ public class GameLogicThread extends Thread{
|
|||||||
private Deck localPlayerDeck;
|
private Deck localPlayerDeck;
|
||||||
private Hand localPlayerHand;
|
private Hand localPlayerHand;
|
||||||
private Board board;
|
private Board board;
|
||||||
|
private PlayableZonesHandler playableZonesHandler;
|
||||||
|
|
||||||
public GameLogicThread(GameActivity gameActivity, Renderer renderer)
|
public GameLogicThread(GameActivity gameActivity, Renderer renderer)
|
||||||
{
|
{
|
||||||
|
Log.e("RESOLUTION:",""+GameActivity.screenWidth+"x"+GameActivity.screenHeight);
|
||||||
ready=false;
|
ready=false;
|
||||||
this.cont = gameActivity;
|
this.cont = gameActivity;
|
||||||
this.renderer = renderer;
|
this.renderer = renderer;
|
||||||
@@ -40,6 +48,7 @@ public class GameLogicThread extends Thread{
|
|||||||
localPlayerHand.fillHand(localPlayerDeck);
|
localPlayerHand.fillHand(localPlayerDeck);
|
||||||
this.gameActivity=gameActivity;
|
this.gameActivity=gameActivity;
|
||||||
board=new Board();
|
board=new Board();
|
||||||
|
playableZonesHandler = new PlayableZonesHandler(board);
|
||||||
GameActivity.setGameEngine(this);
|
GameActivity.setGameEngine(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,11 +58,11 @@ public class GameLogicThread extends Thread{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
Log.e("RESOLUTION:",""+GameActivity.screenWidth+"x"+GameActivity.screenHeight);
|
|
||||||
//affichage de l'arriere plan
|
//affichage de l'arriere plan
|
||||||
Bitmap bitmap= BitmapFactory.decodeResource(cont.getResources(), R.drawable.t_b_board_background);
|
Bitmap bitmap= BitmapFactory.decodeResource(cont.getResources(), R.drawable.t_b_board_background);
|
||||||
renderer.addToDraw(new DrawableBitmap(bitmap, 0,0, "background", 100, 100 ));
|
renderer.addToDraw(new DrawableBitmap(bitmap, 0,0, "background", 100, 100 ));
|
||||||
drawHandPreview();
|
drawHandPreview();
|
||||||
|
//Rectangle pos = new Rectangle(0F,0F,100F,100F);
|
||||||
|
|
||||||
ready=true;
|
ready=true;
|
||||||
while(true)
|
while(true)
|
||||||
@@ -72,7 +81,7 @@ public class GameLogicThread extends Thread{
|
|||||||
for(Card c : localPlayerHand.getHand())
|
for(Card c : localPlayerHand.getHand())
|
||||||
{
|
{
|
||||||
renderer.addToDraw(c.getDrawableCard());
|
renderer.addToDraw(c.getDrawableCard());
|
||||||
renderer.moveToDraw(i* DrawableCard.CARD_WITH,90F,c.getDrawableCard().getName());
|
renderer.moveToDraw(i* DrawableCard.getCardWith(),90F,c.getDrawableCard().getName());
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -119,6 +128,9 @@ public class GameLogicThread extends Thread{
|
|||||||
DrawableCard smallCArd = renderer.getCardOn(unscalled_X,scalled_Y);
|
DrawableCard smallCArd = renderer.getCardOn(unscalled_X,scalled_Y);
|
||||||
if(smallCArd !=null)
|
if(smallCArd !=null)
|
||||||
{
|
{
|
||||||
|
renderer.removeToDrawWithoutUpdate(smallCArd);
|
||||||
|
playableZonesHandler.displayPlayableZones(renderer);
|
||||||
|
renderer.addToDraw(smallCArd);
|
||||||
if(currentlySelected !=null)
|
if(currentlySelected !=null)
|
||||||
{
|
{
|
||||||
currentlySelected.setCoordinates(currentlySelected.getX(),currentlySelected.getY() + SELECTING_OFFSET);
|
currentlySelected.setCoordinates(currentlySelected.getX(),currentlySelected.getY() + SELECTING_OFFSET);
|
||||||
@@ -130,6 +142,7 @@ public class GameLogicThread extends Thread{
|
|||||||
renderer.addToDraw(bigCard);
|
renderer.addToDraw(bigCard);
|
||||||
bigCard.setCoordinates(72F,10F);
|
bigCard.setCoordinates(72F,10F);
|
||||||
smallCArd.setCoordinates(smallCArd.getX(),smallCArd.getY() - SELECTING_OFFSET);
|
smallCArd.setCoordinates(smallCArd.getX(),smallCArd.getY() - SELECTING_OFFSET);
|
||||||
|
|
||||||
}
|
}
|
||||||
touch.onTouchEvent(event);
|
touch.onTouchEvent(event);
|
||||||
}else if(event.getAction() == MotionEvent.ACTION_UP){
|
}else if(event.getAction() == MotionEvent.ACTION_UP){
|
||||||
@@ -141,6 +154,7 @@ public class GameLogicThread extends Thread{
|
|||||||
currentlySelected.setCoordinates(currentlySelected.getX(),currentlySelected.getY() + SELECTING_OFFSET);
|
currentlySelected.setCoordinates(currentlySelected.getX(),currentlySelected.getY() + SELECTING_OFFSET);
|
||||||
currentlySelected=null;
|
currentlySelected=null;
|
||||||
}
|
}
|
||||||
|
playableZonesHandler.HidePlayableZones(renderer);
|
||||||
}else{
|
}else{
|
||||||
touch.onTouchEvent(event);
|
touch.onTouchEvent(event);
|
||||||
}
|
}
|
||||||
@@ -148,18 +162,5 @@ public class GameLogicThread extends Thread{
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void displayPlayableZones()
|
|
||||||
{
|
|
||||||
Card[] cardsOnBoard = board.getPlayerCardsOnBoard();
|
|
||||||
for(int i=0 ; i < cardsOnBoard.length ;i++)
|
|
||||||
{
|
|
||||||
if(cardsOnBoard[i] == null)
|
|
||||||
{
|
|
||||||
displayPlayableZoneOn(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void displayPlayableZoneOn(int i) {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,61 @@
|
|||||||
package com.iutlaval.myapplication.Game;
|
package com.iutlaval.myapplication.Game;
|
||||||
|
|
||||||
|
import android.graphics.Color;
|
||||||
|
|
||||||
|
import com.iutlaval.myapplication.Game.Cards.Card;
|
||||||
|
import com.iutlaval.myapplication.InvalidDataException;
|
||||||
|
import com.iutlaval.myapplication.Video.Drawables.Drawable;
|
||||||
|
import com.iutlaval.myapplication.Video.Drawables.DrawableCard;
|
||||||
|
import com.iutlaval.myapplication.Video.Drawables.DrawableRectangle;
|
||||||
|
import com.iutlaval.myapplication.Video.Rectangle;
|
||||||
|
import com.iutlaval.myapplication.Video.Renderer;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class PlayableZonesHandler {
|
public class PlayableZonesHandler {
|
||||||
|
//90F au lieu de 100F car on n'a pas la pioche
|
||||||
|
private static final float CARD_SPACING = 90F / Board.MAX_CARD_ON_BOARD;
|
||||||
|
private List<Drawable> playableZones;
|
||||||
|
private Board board;
|
||||||
|
|
||||||
|
public PlayableZonesHandler(Board board)
|
||||||
|
{
|
||||||
|
playableZones=new ArrayList<>();
|
||||||
|
this.board=board;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void displayPlayableZones(Renderer renderer)
|
||||||
|
{
|
||||||
|
Card[] cardsOnBoard = board.getPlayerCardsOnBoard();
|
||||||
|
for(int i=0 ; i < cardsOnBoard.length ;i++)
|
||||||
|
{
|
||||||
|
if(cardsOnBoard[i] == null)
|
||||||
|
{
|
||||||
|
displayPlayableZoneOn(i,renderer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void displayPlayableZoneOn(int i,Renderer renderer) {
|
||||||
|
Rectangle pos = new Rectangle((DrawableCard.getCardWith()+1)*i,50F,DrawableCard.getCardWith(),DrawableCard.getCardHeight());
|
||||||
|
|
||||||
|
try {
|
||||||
|
Drawable zone = new DrawableRectangle(pos,"greySpace"+i, Color.LTGRAY);
|
||||||
|
playableZones.add(zone);
|
||||||
|
renderer.addToDrawWithoutUpdate(zone);
|
||||||
|
} catch (InvalidDataException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void HidePlayableZones(Renderer renderer)
|
||||||
|
{
|
||||||
|
for(Drawable d : playableZones)
|
||||||
|
{
|
||||||
|
renderer.removeToDraw(d);
|
||||||
|
}
|
||||||
|
playableZones.clear();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import com.iutlaval.myapplication.Video.Rectangle;
|
|||||||
public class DrawableCard extends Drawable{
|
public class DrawableCard extends Drawable{
|
||||||
private int ratio;
|
private int ratio;
|
||||||
|
|
||||||
public static final int CARD_WITH = 14;
|
private static final int CARD_WITH = 14;
|
||||||
private static final int CARD_HEIGHT = 40;
|
private static final int CARD_HEIGHT = 40;
|
||||||
private static final float HP_ATK_FONT_SIZE_OFFBOARD =60F;
|
private static final float HP_ATK_FONT_SIZE_OFFBOARD =60F;
|
||||||
private static final float HP_ATK_FONT_SIZE_BOARD =70F;
|
private static final float HP_ATK_FONT_SIZE_BOARD =70F;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.iutlaval.myapplication.Video.Drawables;
|
package com.iutlaval.myapplication.Video.Drawables;
|
||||||
|
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import com.iutlaval.myapplication.InvalidDataException;
|
import com.iutlaval.myapplication.InvalidDataException;
|
||||||
import com.iutlaval.myapplication.Video.Rectangle;
|
import com.iutlaval.myapplication.Video.Rectangle;
|
||||||
@@ -19,7 +20,9 @@ public class DrawableRectangle extends Drawable{
|
|||||||
super(rectangle.getPositionX(),rectangle.getPositionY(),name);
|
super(rectangle.getPositionX(),rectangle.getPositionY(),name);
|
||||||
if(rectangle.getHeight() <= 0 || rectangle.getWidth() <=0)throw new InvalidDataException(name,rectangle);
|
if(rectangle.getHeight() <= 0 || rectangle.getWidth() <=0)throw new InvalidDataException(name,rectangle);
|
||||||
|
|
||||||
|
Log.e("rect1",rectangle.getWidth()+"");
|
||||||
rectangle.scaleRectangleToScreen();
|
rectangle.scaleRectangleToScreen();
|
||||||
|
Log.e("rect2",rectangle.getWidth()+"");
|
||||||
Bitmap bitmap = Bitmap.createBitmap((int)rectangle.getWidth(),(int)rectangle.getHeight(), Bitmap.Config.ARGB_8888);
|
Bitmap bitmap = Bitmap.createBitmap((int)rectangle.getWidth(),(int)rectangle.getHeight(), Bitmap.Config.ARGB_8888);
|
||||||
rectangle.bitmapRectangleBuilder(bitmap,color);
|
rectangle.bitmapRectangleBuilder(bitmap,color);
|
||||||
|
|
||||||
|
|||||||
@@ -64,10 +64,6 @@ public class Renderer extends SurfaceView implements SurfaceHolder.Callback {
|
|||||||
/**
|
/**
|
||||||
* cette fonction est appeler a chaque fois que l'utilisateur tourne son ecran
|
* cette fonction est appeler a chaque fois que l'utilisateur tourne son ecran
|
||||||
* this function is unused since the screen is locked
|
* this function is unused since the screen is locked
|
||||||
* @param surfaceHolder
|
|
||||||
* @param i
|
|
||||||
* @param i1
|
|
||||||
* @param i2
|
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void surfaceChanged(@NonNull SurfaceHolder surfaceHolder, int i, int i1, int i2) {
|
public void surfaceChanged(@NonNull SurfaceHolder surfaceHolder, int i, int i1, int i2) {
|
||||||
@@ -173,6 +169,16 @@ public class Renderer extends SurfaceView implements SurfaceHolder.Callback {
|
|||||||
* @return retourne faux si l'element existe deja
|
* @return retourne faux si l'element existe deja
|
||||||
*/
|
*/
|
||||||
public boolean addToDraw(Drawable newElement){
|
public boolean addToDraw(Drawable newElement){
|
||||||
|
boolean returnValue = addToDrawWithoutUpdate(newElement);
|
||||||
|
contentChanged=true;
|
||||||
|
return returnValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* permet d'ajouter un element a afficher
|
||||||
|
* @return retourne faux si l'element existe deja
|
||||||
|
*/
|
||||||
|
public boolean addToDrawWithoutUpdate(Drawable newElement){
|
||||||
if(newElement == null)return false;
|
if(newElement == null)return false;
|
||||||
for(Drawable d : toDraw)
|
for(Drawable d : toDraw)
|
||||||
{
|
{
|
||||||
@@ -182,7 +188,6 @@ public class Renderer extends SurfaceView implements SurfaceHolder.Callback {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
toDraw.add(newElement);
|
toDraw.add(newElement);
|
||||||
contentChanged=true;
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -215,6 +220,14 @@ public class Renderer extends SurfaceView implements SurfaceHolder.Callback {
|
|||||||
toDraw.remove(d);
|
toDraw.remove(d);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* supprime le drawable possedant le nom indique mais n'upate pas le renderer
|
||||||
|
* @param drawable le drawable
|
||||||
|
*/
|
||||||
|
public void removeToDrawWithoutUpdate(Drawable drawable){
|
||||||
|
removeToDrawWithoutUpdate(drawable.getName());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* supprime le drawable possedant le nom indique
|
* supprime le drawable possedant le nom indique
|
||||||
* @param name le nom
|
* @param name le nom
|
||||||
|
|||||||
Reference in New Issue
Block a user