add support of cards on board
This commit is contained in:
@@ -15,6 +15,7 @@ public class Drawable {
|
||||
private float x,y;
|
||||
private String name;
|
||||
private Bitmap bitmap;
|
||||
private static Paint p;
|
||||
|
||||
/**
|
||||
* cree un drawable a partir de coordonné est d'un nom
|
||||
@@ -83,25 +84,33 @@ public class Drawable {
|
||||
*/
|
||||
@Deprecated
|
||||
public Drawable(Rectangle rectangle, String name, int color) throws InvalidDataException {
|
||||
this(null,rectangle.getPositionX(),rectangle.getPositionY(),name);
|
||||
if(rectangle.getHeight() <= 0 || rectangle.getWidth() <=0)throw new InvalidDataException(name,rectangle);
|
||||
|
||||
rectangle.scaleRectangleToScreen();
|
||||
|
||||
Bitmap bitmap = Bitmap.createBitmap((int)rectangle.getWidth(),(int)rectangle.getHeight(), Bitmap.Config.ARGB_8888);
|
||||
|
||||
//on crée un canevas pour interagir avec la bitmap
|
||||
RectangleCanevas c = new RectangleCanevas(bitmap);
|
||||
Paint p = new Paint();
|
||||
|
||||
p.setColor(color);
|
||||
p.setStyle(Paint.Style.FILL_AND_STROKE);
|
||||
|
||||
c.drawRect(rectangle,p);
|
||||
rectangle.bitmapRectangleBuilder(bitmap,color,p);
|
||||
|
||||
this.bitmap=bitmap;
|
||||
this.name=name;
|
||||
this.x=rectangle.getPositionX();
|
||||
this.y=rectangle.getPositionY();
|
||||
}
|
||||
|
||||
/**
|
||||
* ce constructeur n'est pas rapide essayer de l'utiliser le moin possible
|
||||
* TODO : optimize it and remove the deprecated flag
|
||||
*TODO update javadoc
|
||||
*
|
||||
* this contructor create a Drawable object from a rectangle and a color
|
||||
* @param rectangle recange cooresspondant a la surface a dessiner
|
||||
* @param name nom du drawable agit comme un identifiant mais doit être unique
|
||||
* @param color couleur du rectangle
|
||||
*/
|
||||
@Deprecated
|
||||
public Drawable(Bitmap bitmap,Rectangle rectangle, String name, int color) throws InvalidDataException {
|
||||
this(bitmap,rectangle.getPositionX(),rectangle.getPositionY(),name);
|
||||
if(rectangle.getHeight() <= 0 || rectangle.getWidth() <=0 || bitmap == null)throw new InvalidDataException(name,rectangle);
|
||||
|
||||
rectangle.scaleRectangleToScreen();
|
||||
rectangle.bitmapRectangleBuilder(bitmap,color,p);
|
||||
}
|
||||
|
||||
public void drawOn(Canvas c, Paint p)
|
||||
|
||||
@@ -20,6 +20,9 @@ public class DrawableCard extends Drawable{
|
||||
|
||||
private Drawable OpacityRectangleDrawable;
|
||||
private Drawable PictureDrawable;
|
||||
private Boolean onBoard;
|
||||
|
||||
private Drawable cardOnBardDrawable;
|
||||
|
||||
public DrawableCard(Card c, float x, float y, String name, Context context) throws InvalidDataException {
|
||||
super(c.getFrameBitmap(context),x,y,name,CARD_WITH,CARD_HEIGHT);
|
||||
@@ -30,20 +33,74 @@ public class DrawableCard extends Drawable{
|
||||
|
||||
Bitmap pictureBitmap = BitmapFactory.decodeResource(context.getResources(),c.getCardPicture());
|
||||
PictureDrawable = new Drawable(pictureBitmap,getX()+1.1F,getY()+2.5F,toString()+"Picture",CARD_WITH-2.4F,CARD_HEIGHT/2 - 4);
|
||||
|
||||
|
||||
Paint p = new Paint();
|
||||
|
||||
|
||||
//crée les rectangle pour la carte quand elle est sur le terrain
|
||||
Rectangle cardOnBoardFrame = new Rectangle(x,y,CARD_WITH,CARD_HEIGHT/2);
|
||||
cardOnBoardFrame.scaleRectangleToScreen();
|
||||
|
||||
int offset = CARD_HEIGHT/2 - CARD_HEIGHT/8;
|
||||
Rectangle cardOnBoardHp = new Rectangle(x,offset,CARD_WITH/2,CARD_HEIGHT/8);
|
||||
cardOnBoardHp.scaleRectangleToScreen();
|
||||
Rectangle cardOnBoardAtk = new Rectangle(CARD_WITH/2,offset,CARD_WITH/2,CARD_HEIGHT/8);
|
||||
cardOnBoardAtk.scaleRectangleToScreen();
|
||||
|
||||
//creation de la bitmap qui va être rendu
|
||||
Bitmap cardOnBoardBitmap= Bitmap.createBitmap((int)cardOnBoardFrame.getWidth(),(int)cardOnBoardFrame.getHeight(), Bitmap.Config.ARGB_8888);
|
||||
|
||||
//on dessine nos rectangle sur la bitmap
|
||||
cardOnBoardFrame.bitmapRectangleBuilder(cardOnBoardBitmap,Color.parseColor(removeAlpha(c.getColor())),p);
|
||||
cardOnBoardHp.bitmapRectangleBuilder(cardOnBoardBitmap,Color.parseColor("#FF00FF00"),p);
|
||||
cardOnBoardAtk.bitmapRectangleBuilder(cardOnBoardBitmap,Color.parseColor("#FFFF0000"),p);
|
||||
|
||||
cardOnBardDrawable = new Drawable(cardOnBoardBitmap,x,y,toString()+"BOARD",CARD_WITH,CARD_HEIGHT*2/3);
|
||||
|
||||
onBoard=true;
|
||||
}
|
||||
|
||||
private String removeAlpha(String color) {
|
||||
char[] colorArray = color.toCharArray();;
|
||||
colorArray[1]='F';
|
||||
colorArray[2]='F';
|
||||
System.out.println(String.valueOf(colorArray));
|
||||
return String.valueOf(colorArray);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawOn(Canvas c, Paint p) {
|
||||
//draw the frame
|
||||
if(onBoard)
|
||||
{
|
||||
cardOnBardDrawable.drawOn(c,p);
|
||||
PictureDrawable.drawOn(c,p);
|
||||
|
||||
}else{
|
||||
super.drawOn(c, p);
|
||||
OpacityRectangleDrawable.drawOn(c,p);
|
||||
PictureDrawable.drawOn(c,p);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCoordinates(float x, float y) {
|
||||
if (onBoard) {
|
||||
cardOnBardDrawable.setCoordinates(x,y);
|
||||
PictureDrawable.setCoordinates(x +1, y +2);
|
||||
}else{
|
||||
super.setCoordinates(x, y);
|
||||
OpacityRectangleDrawable.setCoordinates(x,y);
|
||||
PictureDrawable.setCoordinates(x+1.1F,y+2.5F);
|
||||
OpacityRectangleDrawable.setCoordinates(x, y);
|
||||
PictureDrawable.setCoordinates(x + 1.1F, y + 2.5F);
|
||||
}
|
||||
}
|
||||
|
||||
public void setOnBoard(Boolean onBoard)
|
||||
{
|
||||
this.onBoard = onBoard;
|
||||
//force recalculate coodinates
|
||||
setCoordinates(getX(), getY());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package com.iutlaval.myapplication.Video;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Paint;
|
||||
|
||||
import com.iutlaval.myapplication.GameActivity;
|
||||
|
||||
public class Rectangle {
|
||||
@@ -42,4 +45,21 @@ public class Rectangle {
|
||||
getHeight()*GameActivity.screenHeight/100
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* retourne la bitmap entre mais avec un rectangle dessiner dedans
|
||||
* @param bitmap la bitmap sur la quelle dessiner
|
||||
* @param color la couleur du carre
|
||||
* @param p le pinceau utiliser pour le canevas
|
||||
*/
|
||||
public void bitmapRectangleBuilder(Bitmap bitmap, int color,Paint p)
|
||||
{
|
||||
RectangleCanevas c = new RectangleCanevas(bitmap);
|
||||
if(p==null)p = new Paint();
|
||||
|
||||
p.setColor(color);
|
||||
p.setStyle(Paint.Style.FILL_AND_STROKE);
|
||||
|
||||
c.drawRect(this,p);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user