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
build.gradle
.gradle
/local.properties
/.idea
@@ -15,3 +16,4 @@
.cxx
/app/release/
/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.GameActivity;
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.Renderer;
@@ -137,8 +138,17 @@ public class GameLogicThread extends Thread{
touch.onTouchEvent(event);
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);
}
renderer.removeToDraw(currentlySelected.getName()+"BIG");
currentlySelected=null;
}
playableZonesHandler.hidePlayableZones(renderer);
@@ -1,6 +1,7 @@
package com.iutlaval.myapplication.Game;
import android.graphics.Color;
import android.util.Log;
import com.iutlaval.myapplication.Game.Cards.Card;
import com.iutlaval.myapplication.InvalidDataException;
@@ -14,8 +15,6 @@ 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;
@@ -51,6 +50,7 @@ public class PlayableZonesHandler {
}
public void hidePlayableZones(Renderer renderer)
{
for(Drawable d : playableZones)
@@ -59,4 +59,26 @@ public class PlayableZonesHandler {
}
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;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.Log;
import androidx.annotation.NonNull;
import com.iutlaval.myapplication.ERROR_CODE;
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 {
@@ -22,8 +22,7 @@ public class DrawableCard extends Drawable{
//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_HEIGHT = 40;
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 =60F;
private static final float DESCRIPTION_FONT_SIZE =26F;
private static final float TITLE_FONT_SIZE =30F;
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
//dimentions
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_ATK_HP_WIDTH = 0.4F * CARD_WITH;
private static final float ONBOARD_ATK_HP_HEIGHT = 0.125F * CARD_HEIGHT;
private static final float ONBOARD_RECTANGLE_ATK_HP_HEIGHT = CARD_HEIGHT * 0.175F;
private static final float ONBOARD_FRAME_X_SIZE = CARD_WITH;
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_HEIGHT = 0.08F * CARD_HEIGHT;
@@ -54,16 +56,14 @@ public class DrawableCard extends Drawable{
//variables de posisions
private final float ONBOARD_PICTURE_X = 0.0714F * CARD_WITH;
private final float ONBOARD_PICTURE_Y = 0.0625F * CARD_HEIGHT;
private final float ONBOARD_ATK_X = 0.05F * CARD_WITH;
private final float ONBOARD_ATK_HP_Y = 0.52F * CARD_HEIGHT;
private final float ONBOARD_HP_X = 0.55F * CARD_WITH;
private final float ONBOARD_TEXT_ATK_X = 0.05F * CARD_WITH;
private final float ONBOARD_TEXT_ATK_HP_Y = 0.48F * CARD_HEIGHT;
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_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_FRAME_Y_SIZE = CARD_HEIGHT*0.5F;
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_ATK_HP_Y = CARD_HEIGHT*0.375F;
private static final float ONBOARD_RECTANGLE_ATK_X = CARD_WITH * 0F;
private static final float ONBOARD_RECTANGLE_HP_X = CARD_WITH * 0.5F;
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);
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();
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();
//creation de la bitmap qui va être rendu
@@ -228,14 +228,14 @@ public class DrawableCard extends Drawable{
{
if(onBoard) {
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)
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{
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)
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());
}
@@ -300,8 +300,8 @@ public class DrawableCard extends Drawable{
if (onBoard) {
cardOnBoardDrawable.setCoordinates(x,y);
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);
cardHpDrawable.setCoordinates(x+ONBOARD_HP_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_TEXT_HP_X *ratio,y + ONBOARD_TEXT_ATK_HP_Y *ratio);
cardTitle.setCoordinates(x+ONBOARD_TITLE_X*ratio,y - ONBOARD_TITLE_Y*ratio);
}else{
frameDrawable.setCoordinates(x,y);
@@ -344,4 +344,8 @@ public class DrawableCard extends Drawable{
public boolean isDraggable() {
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);
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);
rectangle.bitmapRectangleBuilderNoCoordinates(bitmap,color);
setBitmap(bitmap);
}
@@ -2,7 +2,6 @@ package com.iutlaval.myapplication.Video;
import android.graphics.Bitmap;
import android.graphics.Paint;
import android.util.Log;
import com.iutlaval.myapplication.GameActivity;
@@ -62,7 +61,6 @@ public class Rectangle {
*/
public void scaleRectangleToScreen()
{
Log.e("resize",""+getWidth()*GameActivity.screenWidth/100);
set(getPositionX()* GameActivity.screenWidth/100,
getPositionY()*GameActivity.screenHeight/100,
getWidth()*GameActivity.screenWidth/100,
@@ -75,17 +73,30 @@ public class Rectangle {
* @param bitmap la bitmap sur la quelle dessiner
* @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)p = new Paint();
p.setColor(color);
if(p==null){
p = new Paint();
p.setStyle(Paint.Style.FILL_AND_STROKE);
c.drawRect(this,p);
}
p.setColor(color);
}
public boolean isDrawable() {
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
*/
public void drawRect(@NonNull Rectangle r, @NonNull Paint paint) {
super.drawRect(0,
0F,
r.getWidth(),
r.getHeight(),
super.drawRect(r.getPositionX(),
r.getPositionY(),
r.getWidth()+r.getPositionX(),
r.getHeight()+r.getPositionY(),
paint);
}