mise a jours git ignore + ajour glissé deposer + patch card onboard

This commit is contained in:
marc barbier
2020-11-11 18:12:40 +01:00
parent 3606a9a564
commit cda44fd8f0
8 changed files with 87 additions and 51 deletions
+2
View File
@@ -1,4 +1,5 @@
*.iml *.iml
build.gradle
.gradle .gradle
/local.properties /local.properties
/.idea /.idea
@@ -15,3 +16,4 @@
.cxx .cxx
/app/release/ /app/release/
/app/release/app-release.apk /app/release/app-release.apk
gradle/wrapper/gradle-wrapper.properties
@@ -11,6 +11,7 @@ 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.R; 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.DrawableBitmap;
import com.iutlaval.myapplication.Video.Drawables.DrawableCard; import com.iutlaval.myapplication.Video.Drawables.DrawableCard;
import com.iutlaval.myapplication.Video.Renderer; import com.iutlaval.myapplication.Video.Renderer;
@@ -137,8 +138,17 @@ public class GameLogicThread extends Thread{
touch.onTouchEvent(event); touch.onTouchEvent(event);
if(currentlySelected !=null) if(currentlySelected !=null)
{ {
renderer.removeToDraw(currentlySelected.getName()+"BIG"); //jouer une carte
int zone = playableZonesHandler.getHoveredZone(currentlySelected);
if(zone != -1)
{
currentlySelected.setOnBoard(true);
currentlySelected.setCoordinates((DrawableCard.getCardWith()+1)*zone,55F);
currentlySelected.setDraggable(false);
}else{
currentlySelected.setCoordinates(currentlySelected.getX(),currentlySelected.getY() + SELECTING_OFFSET); currentlySelected.setCoordinates(currentlySelected.getX(),currentlySelected.getY() + SELECTING_OFFSET);
}
renderer.removeToDraw(currentlySelected.getName()+"BIG");
currentlySelected=null; currentlySelected=null;
} }
playableZonesHandler.hidePlayableZones(renderer); playableZonesHandler.hidePlayableZones(renderer);
@@ -1,6 +1,7 @@
package com.iutlaval.myapplication.Game; package com.iutlaval.myapplication.Game;
import android.graphics.Color; import android.graphics.Color;
import android.util.Log;
import com.iutlaval.myapplication.Game.Cards.Card; import com.iutlaval.myapplication.Game.Cards.Card;
import com.iutlaval.myapplication.InvalidDataException; import com.iutlaval.myapplication.InvalidDataException;
@@ -14,8 +15,6 @@ import java.util.ArrayList;
import java.util.List; 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 List<Drawable> playableZones;
private Board board; private Board board;
@@ -51,6 +50,7 @@ public class PlayableZonesHandler {
} }
public void hidePlayableZones(Renderer renderer) public void hidePlayableZones(Renderer renderer)
{ {
for(Drawable d : playableZones) for(Drawable d : playableZones)
@@ -59,4 +59,26 @@ public class PlayableZonesHandler {
} }
playableZones.clear(); playableZones.clear();
} }
/**
* retourne le numero de la zone survolé par le drawable si la zone est vite
* sinon retourne -1
* @param card
* @return
*/
public int getHoveredZone(Drawable card) {
for(int i=0 ; i< board.MAX_CARD_ON_BOARD;i++)
{
int cardX =(DrawableCard.getCardWith()+1)*i+1;
//es que on survole sur l'axe x
if(cardX > card.getX() && card.getY() < 90F && card.getY() > 50F)
{
//on a trouvé l'emplacement de la carte
if(board.getPlayerCardsOnBoard()[i] == null)return i;
else break;
}
}
return -1;
}
} }
@@ -1,21 +1,10 @@
package com.iutlaval.myapplication.Video.Drawables; package com.iutlaval.myapplication.Video.Drawables;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas; import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint; import android.graphics.Paint;
import android.util.Log;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import com.iutlaval.myapplication.ERROR_CODE;
import com.iutlaval.myapplication.GameActivity; import com.iutlaval.myapplication.GameActivity;
import com.iutlaval.myapplication.InvalidDataException;
import com.iutlaval.myapplication.Video.Rectangle;
import java.util.ArrayList;
import java.util.List;
public abstract class Drawable { public abstract class Drawable {
@@ -22,8 +22,7 @@ public class DrawableCard extends Drawable{
//ces données ne sont pas dans les digrames car sa renderais la lecture impossible //ces données ne sont pas dans les digrames car sa renderais la lecture impossible
private 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 =60F;
private static final float HP_ATK_FONT_SIZE_BOARD =70F;
private static final float DESCRIPTION_FONT_SIZE =26F; private static final float DESCRIPTION_FONT_SIZE =26F;
private static final float TITLE_FONT_SIZE =30F; private static final float TITLE_FONT_SIZE =30F;
private static int DESCRIPTION_TEXT_X_RES = 281; private static int DESCRIPTION_TEXT_X_RES = 281;
@@ -36,9 +35,12 @@ public class DrawableCard extends Drawable{
//des floats sont utiliser car ils prenne moin de ram que des doubles et que l'on a pas besoin de la precision supplementaire //des floats sont utiliser car ils prenne moin de ram que des doubles et que l'on a pas besoin de la precision supplementaire
//dimentions //dimentions
private static final float ONBOARD_RECTANGLE_ATK_HP_WIDTH = CARD_WITH * 0.5F; private static final float ONBOARD_RECTANGLE_ATK_HP_WIDTH = CARD_WITH * 0.5F;
private static final float ONBOARD_RECTANGLE_ATK_HP_HEIGHT = CARD_HEIGHT * 0.2F; private static final float ONBOARD_RECTANGLE_ATK_HP_HEIGHT = CARD_HEIGHT * 0.175F;
private static final float ONBOARD_ATK_HP_WIDTH = 0.4F * CARD_WITH; private static final float ONBOARD_FRAME_X_SIZE = CARD_WITH;
private static final float ONBOARD_ATK_HP_HEIGHT = 0.125F * CARD_HEIGHT; private static final float ONBOARD_FRAME_Y_SIZE = CARD_HEIGHT*0.5F;
private static final float ONBOARD_ATK_HP_WIDTH = 0.45F * CARD_WITH;
private static final float ONBOARD_ATK_HP_HEIGHT = 0.170F * CARD_HEIGHT;
private static final float OFFBOARD_ATK_HP_WIDTH = 0.25F * CARD_WITH; private static final float OFFBOARD_ATK_HP_WIDTH = 0.25F * CARD_WITH;
private static final float OFFBOARD_ATK_HP_HEIGHT = 0.08F * CARD_HEIGHT; private static final float OFFBOARD_ATK_HP_HEIGHT = 0.08F * CARD_HEIGHT;
@@ -54,16 +56,14 @@ public class DrawableCard extends Drawable{
//variables de posisions //variables de posisions
private final float ONBOARD_PICTURE_X = 0.0714F * CARD_WITH; private final float ONBOARD_PICTURE_X = 0.0714F * CARD_WITH;
private final float ONBOARD_PICTURE_Y = 0.0625F * CARD_HEIGHT; private final float ONBOARD_PICTURE_Y = 0.0625F * CARD_HEIGHT;
private final float ONBOARD_ATK_X = 0.05F * CARD_WITH; private final float ONBOARD_TEXT_ATK_X = 0.05F * CARD_WITH;
private final float ONBOARD_ATK_HP_Y = 0.52F * CARD_HEIGHT; private final float ONBOARD_TEXT_ATK_HP_Y = 0.48F * CARD_HEIGHT;
private final float ONBOARD_HP_X = 0.55F * CARD_WITH; private final float ONBOARD_TEXT_HP_X = 0.55F * CARD_WITH;
private final float ONBOARD_TITLE_X = 0.1F * CARD_WITH; private final float ONBOARD_TITLE_X = 0.1F * CARD_WITH;
private final float ONBOARD_TITLE_Y = 0.05F * CARD_HEIGHT; private final float ONBOARD_TITLE_Y = 0.00F * CARD_HEIGHT;
private static final float ONBOARD_FRAME_X_SIZE = CARD_WITH; private static final float ONBOARD_RECTANGLE_ATK_HP_Y = CARD_HEIGHT*0.375F;
private static final float ONBOARD_FRAME_Y_SIZE = CARD_HEIGHT*0.5F; private static final float ONBOARD_RECTANGLE_ATK_X = CARD_WITH * 0F;
private static final float ONBOARD_RECTANGLE_ATK_HP_Y = CARD_HEIGHT * 0.385F;
private static final float ONBOARD_RECTANGLE_ATK_X = CARD_HEIGHT * 0F;
private static final float ONBOARD_RECTANGLE_HP_X = CARD_WITH * 0.5F; private static final float ONBOARD_RECTANGLE_HP_X = CARD_WITH * 0.5F;
private static final float OFFBOARD_PICTURE_X = 0.0787F * CARD_WITH; private static final float OFFBOARD_PICTURE_X = 0.0787F * CARD_WITH;
@@ -180,9 +180,9 @@ public class DrawableCard extends Drawable{
Rectangle cardOnBoardFrame = new Rectangle(x,y,ONBOARD_FRAME_X_SIZE*ratio,ONBOARD_FRAME_Y_SIZE*ratio); Rectangle cardOnBoardFrame = new Rectangle(x,y,ONBOARD_FRAME_X_SIZE*ratio,ONBOARD_FRAME_Y_SIZE*ratio);
cardOnBoardFrame.scaleRectangleToScreen(); cardOnBoardFrame.scaleRectangleToScreen();
Rectangle cardOnBoardAtk = new Rectangle(x + ONBOARD_RECTANGLE_ATK_X*ratio, ONBOARD_RECTANGLE_ATK_HP_Y*ratio,ONBOARD_RECTANGLE_ATK_HP_WIDTH*ratio,ONBOARD_RECTANGLE_ATK_HP_HEIGHT*ratio); Rectangle cardOnBoardAtk = new Rectangle(x + ONBOARD_RECTANGLE_ATK_X, ONBOARD_RECTANGLE_ATK_HP_Y*ratio,ONBOARD_RECTANGLE_ATK_HP_WIDTH*ratio,ONBOARD_RECTANGLE_ATK_HP_HEIGHT*ratio);
cardOnBoardAtk.scaleRectangleToScreen(); cardOnBoardAtk.scaleRectangleToScreen();
Rectangle cardOnBoardHp = new Rectangle(x + ONBOARD_RECTANGLE_HP_X*ratio, ONBOARD_RECTANGLE_ATK_HP_Y*ratio,ONBOARD_RECTANGLE_ATK_HP_WIDTH*ratio,ONBOARD_RECTANGLE_ATK_HP_HEIGHT*ratio); Rectangle cardOnBoardHp = new Rectangle(x + ONBOARD_RECTANGLE_HP_X, ONBOARD_RECTANGLE_ATK_HP_Y*ratio,ONBOARD_RECTANGLE_ATK_HP_WIDTH*ratio,ONBOARD_RECTANGLE_ATK_HP_HEIGHT*ratio);
cardOnBoardHp.scaleRectangleToScreen(); cardOnBoardHp.scaleRectangleToScreen();
//creation de la bitmap qui va être rendu //creation de la bitmap qui va être rendu
@@ -228,14 +228,14 @@ public class DrawableCard extends Drawable{
{ {
if(onBoard) { if(onBoard) {
if (atk != null) if (atk != null)
cardAtkDrawable = new DrawableText(atk+"", 0, 0, toString() + "atk", ONBOARD_ATK_HP_WIDTH*ratio, ONBOARD_ATK_HP_HEIGHT*ratio, HP_ATK_FONT_SIZE_BOARD,TEXT_ATK_HP_X_RES,TEXT_ATK_HP_Y_RES); cardAtkDrawable = new DrawableText(atk+"", 0, 0, toString() + "atk", ONBOARD_ATK_HP_WIDTH*ratio, ONBOARD_ATK_HP_HEIGHT*ratio, HP_ATK_FONT_SIZE,TEXT_ATK_HP_X_RES,TEXT_ATK_HP_Y_RES);
if (hp != null) if (hp != null)
cardHpDrawable = new DrawableText(hp+"", 0, 0, toString() + "hp", ONBOARD_ATK_HP_WIDTH*ratio, ONBOARD_ATK_HP_HEIGHT*ratio, HP_ATK_FONT_SIZE_BOARD,TEXT_ATK_HP_X_RES,TEXT_ATK_HP_Y_RES); cardHpDrawable = new DrawableText(hp+"", 0, 0, toString() + "hp", ONBOARD_ATK_HP_WIDTH*ratio, ONBOARD_ATK_HP_HEIGHT*ratio, HP_ATK_FONT_SIZE,TEXT_ATK_HP_X_RES,TEXT_ATK_HP_Y_RES);
}else{ }else{
if (atk != null) if (atk != null)
cardAtkDrawable = new DrawableText(atk + "", 0, 0, toString() + "atk", OFFBOARD_ATK_HP_WIDTH*ratio, OFFBOARD_ATK_HP_HEIGHT*ratio, HP_ATK_FONT_SIZE_OFFBOARD, TEXT_ATK_HP_X_RES, TEXT_ATK_HP_Y_RES); cardAtkDrawable = new DrawableText(atk + "", 0, 0, toString() + "atk", OFFBOARD_ATK_HP_WIDTH*ratio, OFFBOARD_ATK_HP_HEIGHT*ratio, HP_ATK_FONT_SIZE, TEXT_ATK_HP_X_RES, TEXT_ATK_HP_Y_RES);
if (hp != null) if (hp != null)
cardHpDrawable = new DrawableText(hp + "", 0, 0, toString() + "hp", OFFBOARD_ATK_HP_WIDTH*ratio, OFFBOARD_ATK_HP_HEIGHT*ratio, HP_ATK_FONT_SIZE_OFFBOARD, TEXT_ATK_HP_X_RES, TEXT_ATK_HP_Y_RES); cardHpDrawable = new DrawableText(hp + "", 0, 0, toString() + "hp", OFFBOARD_ATK_HP_WIDTH*ratio, OFFBOARD_ATK_HP_HEIGHT*ratio, HP_ATK_FONT_SIZE, TEXT_ATK_HP_X_RES, TEXT_ATK_HP_Y_RES);
} }
setCoordinates(getX(), getY()); setCoordinates(getX(), getY());
} }
@@ -300,8 +300,8 @@ public class DrawableCard extends Drawable{
if (onBoard) { if (onBoard) {
cardOnBoardDrawable.setCoordinates(x,y); cardOnBoardDrawable.setCoordinates(x,y);
pictureDrawable.setCoordinates(x + ONBOARD_PICTURE_X*ratio, y +ONBOARD_PICTURE_Y*ratio); pictureDrawable.setCoordinates(x + ONBOARD_PICTURE_X*ratio, y +ONBOARD_PICTURE_Y*ratio);
cardAtkDrawable.setCoordinates(x+ONBOARD_ATK_X*ratio,y + ONBOARD_ATK_HP_Y*ratio); cardAtkDrawable.setCoordinates(x+ ONBOARD_TEXT_ATK_X *ratio,y + ONBOARD_TEXT_ATK_HP_Y *ratio);
cardHpDrawable.setCoordinates(x+ONBOARD_HP_X*ratio,y + ONBOARD_ATK_HP_Y*ratio); cardHpDrawable.setCoordinates(x+ ONBOARD_TEXT_HP_X *ratio,y + ONBOARD_TEXT_ATK_HP_Y *ratio);
cardTitle.setCoordinates(x+ONBOARD_TITLE_X*ratio,y - ONBOARD_TITLE_Y*ratio); cardTitle.setCoordinates(x+ONBOARD_TITLE_X*ratio,y - ONBOARD_TITLE_Y*ratio);
}else{ }else{
frameDrawable.setCoordinates(x,y); frameDrawable.setCoordinates(x,y);
@@ -344,4 +344,8 @@ public class DrawableCard extends Drawable{
public boolean isDraggable() { public boolean isDraggable() {
return draggable; return draggable;
} }
public void setDraggable(Boolean draggable) {
this.draggable = draggable;
}
} }
@@ -20,11 +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.bitmapRectangleBuilderNoCoordinates(bitmap,color);
setBitmap(bitmap); setBitmap(bitmap);
} }
@@ -2,7 +2,6 @@ package com.iutlaval.myapplication.Video;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.Paint; import android.graphics.Paint;
import android.util.Log;
import com.iutlaval.myapplication.GameActivity; import com.iutlaval.myapplication.GameActivity;
@@ -62,7 +61,6 @@ public class Rectangle {
*/ */
public void scaleRectangleToScreen() public void scaleRectangleToScreen()
{ {
Log.e("resize",""+getWidth()*GameActivity.screenWidth/100);
set(getPositionX()* GameActivity.screenWidth/100, set(getPositionX()* GameActivity.screenWidth/100,
getPositionY()*GameActivity.screenHeight/100, getPositionY()*GameActivity.screenHeight/100,
getWidth()*GameActivity.screenWidth/100, getWidth()*GameActivity.screenWidth/100,
@@ -75,17 +73,30 @@ public class Rectangle {
* @param bitmap la bitmap sur la quelle dessiner * @param bitmap la bitmap sur la quelle dessiner
* @param color la couleur du carre * @param color la couleur du carre
*/ */
public void bitmapRectangleBuilder(Bitmap bitmap, int color) private void brushInit(int color)
{ {
RectangleCanevas c = new RectangleCanevas(bitmap); if(p==null){
if(p==null)p = new Paint(); p = new Paint();
p.setColor(color);
p.setStyle(Paint.Style.FILL_AND_STROKE); p.setStyle(Paint.Style.FILL_AND_STROKE);
c.drawRect(this,p);
} }
p.setColor(color);
}
public boolean isDrawable() { public boolean isDrawable() {
return getHeight() <= 0 || getWidth() <=0;} return getHeight() <= 0 || getWidth() <=0;}
public void bitmapRectangleBuilderNoCoordinates(Bitmap bitmap, int color) {
brushInit(color);
RectangleCanevas c = new RectangleCanevas(bitmap);
c.drawRect(new Rectangle(0,0,width,height),p);
}
public void bitmapRectangleBuilder(Bitmap bitmap,int color)
{
brushInit(color);
RectangleCanevas c = new RectangleCanevas(bitmap);
c.drawRect(this,p);
}
} }
@@ -19,10 +19,10 @@ public class RectangleCanevas extends Canvas {
* @param paint le pinceau a utiliser * @param paint le pinceau a utiliser
*/ */
public void drawRect(@NonNull Rectangle r, @NonNull Paint paint) { public void drawRect(@NonNull Rectangle r, @NonNull Paint paint) {
super.drawRect(0, super.drawRect(r.getPositionX(),
0F, r.getPositionY(),
r.getWidth(), r.getWidth()+r.getPositionX(),
r.getHeight(), r.getHeight()+r.getPositionY(),
paint); paint);
} }