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.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.graphics.Color;
|
||||
import android.util.Log;
|
||||
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.DeckDemo;
|
||||
import com.iutlaval.myapplication.GameActivity;
|
||||
import com.iutlaval.myapplication.InvalidDataException;
|
||||
import com.iutlaval.myapplication.R;
|
||||
import com.iutlaval.myapplication.Video.Drawables.Drawable;
|
||||
import com.iutlaval.myapplication.Video.Drawables.DrawableBitmap;
|
||||
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.List;
|
||||
|
||||
public class GameLogicThread extends Thread{
|
||||
|
||||
private Context cont;
|
||||
@@ -27,9 +33,11 @@ public class GameLogicThread extends Thread{
|
||||
private Deck localPlayerDeck;
|
||||
private Hand localPlayerHand;
|
||||
private Board board;
|
||||
private PlayableZonesHandler playableZonesHandler;
|
||||
|
||||
public GameLogicThread(GameActivity gameActivity, Renderer renderer)
|
||||
{
|
||||
Log.e("RESOLUTION:",""+GameActivity.screenWidth+"x"+GameActivity.screenHeight);
|
||||
ready=false;
|
||||
this.cont = gameActivity;
|
||||
this.renderer = renderer;
|
||||
@@ -40,6 +48,7 @@ public class GameLogicThread extends Thread{
|
||||
localPlayerHand.fillHand(localPlayerDeck);
|
||||
this.gameActivity=gameActivity;
|
||||
board=new Board();
|
||||
playableZonesHandler = new PlayableZonesHandler(board);
|
||||
GameActivity.setGameEngine(this);
|
||||
}
|
||||
|
||||
@@ -49,11 +58,11 @@ public class GameLogicThread extends Thread{
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
Log.e("RESOLUTION:",""+GameActivity.screenWidth+"x"+GameActivity.screenHeight);
|
||||
//affichage de l'arriere plan
|
||||
Bitmap bitmap= BitmapFactory.decodeResource(cont.getResources(), R.drawable.t_b_board_background);
|
||||
renderer.addToDraw(new DrawableBitmap(bitmap, 0,0, "background", 100, 100 ));
|
||||
drawHandPreview();
|
||||
//Rectangle pos = new Rectangle(0F,0F,100F,100F);
|
||||
|
||||
ready=true;
|
||||
while(true)
|
||||
@@ -72,7 +81,7 @@ public class GameLogicThread extends Thread{
|
||||
for(Card c : localPlayerHand.getHand())
|
||||
{
|
||||
renderer.addToDraw(c.getDrawableCard());
|
||||
renderer.moveToDraw(i* DrawableCard.CARD_WITH,90F,c.getDrawableCard().getName());
|
||||
renderer.moveToDraw(i* DrawableCard.getCardWith(),90F,c.getDrawableCard().getName());
|
||||
i++;
|
||||
}
|
||||
|
||||
@@ -119,6 +128,9 @@ public class GameLogicThread extends Thread{
|
||||
DrawableCard smallCArd = renderer.getCardOn(unscalled_X,scalled_Y);
|
||||
if(smallCArd !=null)
|
||||
{
|
||||
renderer.removeToDrawWithoutUpdate(smallCArd);
|
||||
playableZonesHandler.displayPlayableZones(renderer);
|
||||
renderer.addToDraw(smallCArd);
|
||||
if(currentlySelected !=null)
|
||||
{
|
||||
currentlySelected.setCoordinates(currentlySelected.getX(),currentlySelected.getY() + SELECTING_OFFSET);
|
||||
@@ -130,6 +142,7 @@ public class GameLogicThread extends Thread{
|
||||
renderer.addToDraw(bigCard);
|
||||
bigCard.setCoordinates(72F,10F);
|
||||
smallCArd.setCoordinates(smallCArd.getX(),smallCArd.getY() - SELECTING_OFFSET);
|
||||
|
||||
}
|
||||
touch.onTouchEvent(event);
|
||||
}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=null;
|
||||
}
|
||||
playableZonesHandler.HidePlayableZones(renderer);
|
||||
}else{
|
||||
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;
|
||||
|
||||
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 {
|
||||
//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{
|
||||
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 float HP_ATK_FONT_SIZE_OFFBOARD =60F;
|
||||
private static final float HP_ATK_FONT_SIZE_BOARD =70F;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.iutlaval.myapplication.Video.Drawables;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
import android.util.Log;
|
||||
|
||||
import com.iutlaval.myapplication.InvalidDataException;
|
||||
import com.iutlaval.myapplication.Video.Rectangle;
|
||||
@@ -19,7 +20,9 @@ public class DrawableRectangle extends Drawable{
|
||||
super(rectangle.getPositionX(),rectangle.getPositionY(),name);
|
||||
if(rectangle.getHeight() <= 0 || rectangle.getWidth() <=0)throw new InvalidDataException(name,rectangle);
|
||||
|
||||
Log.e("rect1",rectangle.getWidth()+"");
|
||||
rectangle.scaleRectangleToScreen();
|
||||
Log.e("rect2",rectangle.getWidth()+"");
|
||||
Bitmap bitmap = Bitmap.createBitmap((int)rectangle.getWidth(),(int)rectangle.getHeight(), Bitmap.Config.ARGB_8888);
|
||||
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
|
||||
* this function is unused since the screen is locked
|
||||
* @param surfaceHolder
|
||||
* @param i
|
||||
* @param i1
|
||||
* @param i2
|
||||
*/
|
||||
@Override
|
||||
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
|
||||
*/
|
||||
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;
|
||||
for(Drawable d : toDraw)
|
||||
{
|
||||
@@ -182,7 +188,6 @@ public class Renderer extends SurfaceView implements SurfaceHolder.Callback {
|
||||
}
|
||||
}
|
||||
toDraw.add(newElement);
|
||||
contentChanged=true;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -215,6 +220,14 @@ public class Renderer extends SurfaceView implements SurfaceHolder.Callback {
|
||||
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
|
||||
* @param name le nom
|
||||
|
||||
Reference in New Issue
Block a user