preparatif moteur jeu + patch crash + patch couleur + simplification carte

This commit is contained in:
mmarc471@gmail.com
2020-09-10 14:42:39 +02:00
parent cc7be58c14
commit c47e61438d
8 changed files with 143 additions and 60 deletions
@@ -9,9 +9,27 @@ import android.util.Log;
import com.iutlaval.myapplication.Game.Board; import com.iutlaval.myapplication.Game.Board;
import com.iutlaval.myapplication.Game.Player.Player; import com.iutlaval.myapplication.Game.Player.Player;
import com.iutlaval.myapplication.R; import com.iutlaval.myapplication.R;
import com.iutlaval.myapplication.Video.DrawableCard;
public abstract class Card { public abstract class Card {
private static Bitmap frameBitmap = null; private static Bitmap frameBitmap = null;
private DrawableCard drawableCard = null;
public Card()
{
}
/**
* cree une carte est lui definit un drawable
* @param UID
* @param c
*/
public Card(String UID,Context c)
{
drawableCard = new DrawableCard(this,0,0,UID,c);
}
/** /**
* *cette methode est appeler a chaque fois que la carte attaque * *cette methode est appeler a chaque fois que la carte attaque
@@ -111,5 +129,22 @@ public abstract class Card {
* @return * @return
*/ */
public abstract int getHealth(); public abstract int getHealth();
/**
* NE PAS TOUCHER CETTE FONCTION SI VOUS N'ÊTES PAS SUR DE CE QUE VOUS FAITES
* cette fonction permet de redefinir le drawable de la carte
* @param drawableCard
*/
public void setDrawableCard(DrawableCard drawableCard) {
this.drawableCard = drawableCard;
}
/**
* NE PAS OVERRIDE CETTE FONCTION
* @return
*/
public DrawableCard getDrawableCard() {
return drawableCard;
}
} }
@@ -1,11 +1,27 @@
package com.iutlaval.myapplication.Game.Cards; package com.iutlaval.myapplication.Game.Cards;
import android.content.Context;
import android.graphics.Color; import android.graphics.Color;
import com.iutlaval.myapplication.R; import com.iutlaval.myapplication.R;
public class DemoCard extends Card{ public class DemoCard extends Card{
public DemoCard()
{
super();
}
/**
* cree une carte est lui definit un drawable
*
* @param UID
* @param c
*/
public DemoCard(String UID, Context c) {
super(UID, c);
}
@Override @Override
public int getCardPicture() { public int getCardPicture() {
return R.drawable.guerrier_nul; return R.drawable.guerrier_nul;
@@ -15,7 +31,7 @@ public class DemoCard extends Card{
//#AARRGGBB //#AARRGGBB
@Override @Override
public String getColor() { public String getColor() {
return "#70000000"; return "#00000000";
} }
@Override @Override
@@ -0,0 +1,72 @@
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 com.iutlaval.myapplication.Game.Cards.Card;
import com.iutlaval.myapplication.Game.Cards.DemoCard;
import com.iutlaval.myapplication.InvalidDataException;
import com.iutlaval.myapplication.R;
import com.iutlaval.myapplication.Video.Drawable;
import com.iutlaval.myapplication.Video.DrawableCard;
import com.iutlaval.myapplication.Video.FpsTime;
import com.iutlaval.myapplication.Video.Rectangle;
import com.iutlaval.myapplication.Video.Renderer;
public class GameLogicThread extends Thread{
Context cont;
Renderer renderer;
public GameLogicThread(Context cont, Renderer renderer)
{
this.cont = cont;
this.renderer = renderer;
}
@Override
public void run() {
Bitmap bm = BitmapFactory.decodeResource(cont.getResources(), R.drawable.debug_card);
try {
renderer.addToDraw(new Drawable(new Rectangle(0,0,100,100),"background", Color.BLUE));
//renderer.addToDraw(new Drawable(bm,0.0F,0.0F,"running",8F,16F));
//renderer.addToDraw(new DrawableCard(new DemoCard(),0.0F,0.0F,"card2",cont));
Card card2 = new DemoCard("card3",cont);
if(!renderer.addToDraw(card2.getDrawableCard())) Log.e("F","WTF");
Card card1 = new DemoCard("card1",cont);
if(!renderer.addToDraw(card1.getDrawableCard())) Log.e("F","WTF");
} catch (InvalidDataException e) {
//cette erreur est lance si un carre est invalid
System.err.println(e.getDetail());
e.printStackTrace();
}
int i=0;
int increm = 1;
while(true)
{
if(i < 100)
{
i+=increm;
}else{
increm=-increm;
i+=increm;
}
if(i==0)increm=-increm;
//TODO get x,y coordinate form name
//r.moveToDraw(i,i,"card2");
renderer.moveToDraw(1,1,"card3");
renderer.moveToDraw(20,1,"card1");
FpsTime.waitFrameTime();
}
}
//placeOnBoard()
}
@@ -12,6 +12,7 @@ import android.os.Bundle;
import android.view.Display; import android.view.Display;
import com.iutlaval.myapplication.Game.Cards.DemoCard; import com.iutlaval.myapplication.Game.Cards.DemoCard;
import com.iutlaval.myapplication.Game.GameLogicThread;
import com.iutlaval.myapplication.Video.Drawable; import com.iutlaval.myapplication.Video.Drawable;
import com.iutlaval.myapplication.Video.DrawableCard; import com.iutlaval.myapplication.Video.DrawableCard;
import com.iutlaval.myapplication.Video.FpsTime; import com.iutlaval.myapplication.Video.FpsTime;
@@ -40,7 +41,7 @@ public class GameActivity extends Activity {
Display display = getWindowManager().getDefaultDisplay(); Display display = getWindowManager().getDefaultDisplay();
FpsTime.init(display); FpsTime.init(display);
Renderer v = new Renderer(getBaseContext()); Renderer renderer = new Renderer(getBaseContext());
//return portrait mode resolution so we need to flip them //return portrait mode resolution so we need to flip them
Point size = new Point(); Point size = new Point();
@@ -54,56 +55,10 @@ public class GameActivity extends Activity {
screenHeight = size.y; screenHeight = size.y;
} }
Thread t = new GameLogicThread(this,renderer);
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.debug_card);
try {
v.addToDraw(new Drawable(new Rectangle(0,0,100,100),"background",Color.BLUE));
v.addToDraw(new Drawable(bm,0.0F,0.0F,"running",8F,16F));
v.addToDraw(new DrawableCard(new DemoCard(),0.0F,0.0F,"card2",this));
} catch (InvalidDataException e) {
//cette erreur est lance si un carre est invalid
System.err.println(e.getDetail());
e.printStackTrace();
}
Thread t = new MainThread(v);
t.start(); t.start();
setContentView(v); setContentView(renderer);
}
//TODO a supprime quand le moteur de jeu pour être utliser a des fin de teste
private class MainThread extends Thread
{
Renderer view;
public MainThread(Renderer view)
{
super();
this.view=view;
}
@Override
public void run() {
int i=0;
int increm = 1;
while(true)
{
if(i < 100)
{
i+=increm;
}else{
increm=-increm;
i+=increm;
}
if(i==0)increm=-increm;
//TODO get x,y coordinate form name
view.moveToDraw(i,i,"card2");
//view.moveToDraw(1,1,"card2");
FpsTime.waitFrameTime();
}
}
} }
} }
@@ -2,6 +2,7 @@ package com.iutlaval.myapplication.Video;
import android.graphics.Bitmap; import android.graphics.Bitmap;
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 android.util.Log;
@@ -85,6 +86,7 @@ public class Drawable {
checkPaint(); checkPaint();
p.setTextSize(textSize*2); p.setTextSize(textSize*2);
p.setColor(Color.BLACK);
Canvas c = new Canvas(bitmap); Canvas c = new Canvas(bitmap);
@@ -118,7 +120,7 @@ public class Drawable {
rectangle.scaleRectangleToScreen(); rectangle.scaleRectangleToScreen();
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,p); rectangle.bitmapRectangleBuilder(bitmap,color);
this.bitmap=bitmap; this.bitmap=bitmap;
} }
@@ -140,7 +142,7 @@ public class Drawable {
if(rectangle.getHeight() <= 0 || rectangle.getWidth() <=0 || bitmap == null)throw new InvalidDataException(name,rectangle); if(rectangle.getHeight() <= 0 || rectangle.getWidth() <=0 || bitmap == null)throw new InvalidDataException(name,rectangle);
rectangle.scaleRectangleToScreen(); rectangle.scaleRectangleToScreen();
rectangle.bitmapRectangleBuilder(bitmap,color,p); rectangle.bitmapRectangleBuilder(bitmap,color);
this.bitmap = bitmap; this.bitmap = bitmap;
} }
@@ -71,7 +71,7 @@ public class DrawableCard extends Drawable{
Paint p = new Paint(); Paint p = new Paint();
//TODO optimize rectangle by making it only one time
//crée les rectangle pour la carte quand elle est sur le terrain //crée les rectangle pour la carte quand elle est sur le terrain
Rectangle cardOnBoardFrame = new Rectangle(x,y,CARD_WITH,CARD_HEIGHT/2); Rectangle cardOnBoardFrame = new Rectangle(x,y,CARD_WITH,CARD_HEIGHT/2);
cardOnBoardFrame.scaleRectangleToScreen(); cardOnBoardFrame.scaleRectangleToScreen();
@@ -86,11 +86,13 @@ public class DrawableCard extends Drawable{
Bitmap cardOnBoardBitmap= Bitmap.createBitmap((int)cardOnBoardFrame.getWidth(),(int)cardOnBoardFrame.getHeight(), Bitmap.Config.ARGB_8888); Bitmap cardOnBoardBitmap= Bitmap.createBitmap((int)cardOnBoardFrame.getWidth(),(int)cardOnBoardFrame.getHeight(), Bitmap.Config.ARGB_8888);
//on dessine nos rectangle sur la bitmap //on dessine nos rectangle sur la bitmap
cardOnBoardFrame.bitmapRectangleBuilder(cardOnBoardBitmap,Color.parseColor(removeAlpha(c.getColor())),p); cardOnBoardFrame.bitmapRectangleBuilder(cardOnBoardBitmap,Color.parseColor(removeAlpha(c.getColor())));
cardOnBoardHp.bitmapRectangleBuilder(cardOnBoardBitmap,Color.parseColor("#FF00FF00"),p); cardOnBoardHp.bitmapRectangleBuilder(cardOnBoardBitmap,Color.parseColor("#FF00FF00"));
cardOnBoardAtk.bitmapRectangleBuilder(cardOnBoardBitmap,Color.parseColor("#FFFF0000"),p); cardOnBoardAtk.bitmapRectangleBuilder(cardOnBoardBitmap,Color.parseColor("#FFFF0000"));
cardOnBardDrawable = new Drawable(cardOnBoardBitmap,x,y,toString()+"BOARD",CARD_WITH,CARD_HEIGHT*2/3); cardOnBardDrawable = new Drawable(cardOnBoardBitmap,x,y,toString()+"BOARD",CARD_WITH,CARD_HEIGHT*2/3);
c.setDrawableCard(this);
} }
/** /**
@@ -6,7 +6,7 @@ import android.graphics.Paint;
import com.iutlaval.myapplication.GameActivity; import com.iutlaval.myapplication.GameActivity;
public class Rectangle { public class Rectangle {
public static Paint p;
float positionX,positionY,width,height; float positionX,positionY,width,height;
/** /**
@@ -72,9 +72,8 @@ public class Rectangle {
* retourne la bitmap entre mais avec un rectangle dessiner dedans * retourne la bitmap entre mais avec un rectangle dessiner dedans
* @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
* @param p le pinceau utiliser pour le canevas
*/ */
public void bitmapRectangleBuilder(Bitmap bitmap, int color,Paint p) public void bitmapRectangleBuilder(Bitmap bitmap, int color)
{ {
RectangleCanevas c = new RectangleCanevas(bitmap); RectangleCanevas c = new RectangleCanevas(bitmap);
if(p==null)p = new Paint(); if(p==null)p = new Paint();
@@ -76,7 +76,8 @@ public class Renderer extends SurfaceView implements SurfaceHolder.Callback {
*/ */
@Override @Override
protected void onDraw(Canvas canvas) { protected void onDraw(Canvas canvas) {
for(Drawable d : toDraw) //le to Array patch les crash
for(Drawable d : toDraw.toArray(new Drawable[0]))
{ {
d.drawOn(canvas,p); d.drawOn(canvas,p);
} }
@@ -121,6 +122,7 @@ 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){
if(newElement == null)return false;
for(Drawable d : toDraw) for(Drawable d : toDraw)
{ {
if(d.equals(newElement)) if(d.equals(newElement))