mise a jours uml + javadoc + suppretion de code inutile

This commit is contained in:
marc barbier
2020-11-11 14:28:36 +01:00
parent 63cd40c3e6
commit 3606a9a564
15 changed files with 154 additions and 100 deletions
@@ -3,7 +3,6 @@ package Game <<Folder>> {
package Cards <<Folder>> {
abstract class Card {
{static}- frameBitmap : Bitmap
- drawablecard :DrawableCard
--
+ Card(String UID,Context c)
+ onCardAttack(Board board,Card enemy) : void
@@ -31,6 +30,28 @@ package Game <<Folder>> {
+ getHealth() : int
+ getName() : String
}
class PlayableZonesHandler
{
--
+ PlayableZonesHandler(Board board)
+ displayPlayableZones(Renderer renderer)
+ displayPlayableZonesOn(int i,Renderer renderer)
+ hidePlayableZones(Renderer renderer)
}
}
class Hand
{
--
+Hand()
+pickCardFromDeck(Deck deck,int amount)
+fillHand(Deck deck)
}
class TouchHandler
{
- TouchDeltaX : float
- TouchDeltaY : float
- originalPositionX : float
- originalPositionY : float
}
package Players <<Folder>> {
class Player
@@ -48,14 +69,7 @@ package Game <<Folder>> {
class GameLogicThread
{
- Context cont
- Renderer renderer
- boolean ready
- TouchHandler touch
- GameActivity gameActivity
- Deck localPlayerDeck
- Hand localPlayerHand
- Board board
- PlayableZonesHandler playableZonesHandler
--
+ GameLogicThread(GameActivity gameActivity, Renderer renderer)
+ run()
@@ -65,14 +79,36 @@ package Game <<Folder>> {
+ onTouchEvent(MotionEvent event)
}
class Board
{
--
+ Board()
+ playCard() : boolean
+ getPlayerCardsOnBoard() : Card[]
}
package Decks <<Folder>>
{
abstract class Deck
{
--
+shuffle()
+ abstract getDeckName()
}
class DeckDemo
{
--
+ DeckDemo(String id,Context context)
+ getCards() : Stack<Card>
{abstract}+ getDeckName() : String
}
}
}
package Video <<Folder>> {
package Drawables <<Folder>> {
class Drawable {
- x : int
- y : int
abstract class Drawable {
- x : float
- y : float
- name : String
- bitmap : Bitmap
- p : Paint
@@ -82,26 +118,31 @@ package Video <<Folder>> {
+ equals(Object o) : boolean
+ setCoordinates(float x, float y) : void
# checkPaint() : void
# setBitmap(Bitmap bitmap) : void
}
class DrawableRectangle
{
# Drawable(Rectangle rectangle, String name, int color)
+ DrawableRectangle(Rectangle rectangle, String name, int color)
+ DrawableRectangle(Bitmap bitmap,Rectangle rectangle, String name, int color)
}
class DrawableBitmap
{
# Drawable(Bitmap bitmap, float x_pos, float y_pos, String name, float x_size, float y_size)
# Drawable(Bitmap bitmap,Rectangle rectangle, String name, int color)
+ DrawableBitmap(Bitmap bitmap, float x_pos, float y_pos, String name, float x_size, float y_size)
}
class DrawableText
{
# Drawable(String text,float x_pos,float y_pos,String name, float x_size,float y_size,float textSize , int x_canvasRatio, int y_canvasRatio)
+ DrawableText(String text,float x_pos,float y_pos,String name, float x_size,float y_size,float textSize , int x_canvasRatio, int y_canvasRatio)
- cutText(int charPerLines,String text) : List<String>
}
class DrawableCard
abstract class DrawableCard
{
- ratio : int
- onBoard : boolean
- draggable : boolean
--
+ DrawableCard(Card c, float x, float y, String name, Context context)
+ DrawableCard(Card c, float x, float y, String name, Context context,int ratio)
+ DrawableCard(DrawableCard smallCArd, Context cont,int ratio)
+ updateHpAndAtk(Integer atk,Integer hp)
- removeAlpha(String color)
+ drawOn(Canvas c, Paint p)
@@ -112,22 +153,31 @@ package Video <<Folder>> {
class Renderer {
- holder : SurfaceHolder
- p : Paint
- drawingThread : DrawingThread
- engine : GameLogicThread
- toDraw : List<Drawable>
- needToUpdate : boolean
--
+ Renderer(Context context)
+ Renderer(Context context,GameActivity gameActivity)
+ surfaceCreated(SurfaceHolder holder) : void
+ surfaceChanged(urfaceHolder surfaceHolder, int i, int i1, int i2) : void
+ surfaceDestroyed(SurfaceHolder surfaceHolder) : void
+ onDraw(Canvas canvas) : void
+ updateFrame() : void
+ addToDraw(Drawable newElement) : boolean
+ addToDrawWithoutUpdate(Drawable newElement) : boolean
+ moveToDraw(float x, float y, String name) : void
+ removeToDrawWithoutUpdate(String name) : void
+ removeToDrawWithoutUpdate(Drawable drawable) : void
+ removeToDraw(String name) : void
+ removeToDraw(Drawable toRemove) : void
+ getDrawAble(String name) : Drawable
+ getCardOn(float x, float y) : DrawableCard
+ setEngine(GameLogicThread engine) : void
+ updateFrame() : void
}
class DrawingThread{
-renderer Renderer
+keepdrawing boolean
--
+DrawingThread(Renderer renderer)
+run()
}
class RectangleCanevas {
--
@@ -141,6 +191,8 @@ package Video <<Folder>> {
+ width : float
+ height : float
--
+ Rectange(float prostionX,float positionY,float width,float height)
- set(float positionX,float positionY,float width,float height)
+ scaleRectangleToScreen() : void
+ bitmapRectangleBuilder(Bitmap bitmap, int color) : void
}
@@ -159,35 +211,56 @@ Drawable <|-- DrawableRectangle
Drawable <|-- DrawableBitmap
Drawable <|-- DrawableText
Renderer "1" *-- DrawingThread : -drawingThread
Renderer "1" *-- GameLogicThread : -engine
Renderer "*" *-- Drawable : toDraw
Player <|-- PlayerBot
Player <|-- PlayerLocal
Player <|-- PlayerAdversary
DrawableCard o-- Drawable : frameDrawable
DrawableCard *-- Drawable : OpacityRectangleDrawable
DrawableCard *-- Drawable : PictureDrawable
DrawableCard *-- Drawable : cardOnBoardDrawable
DrawableCard *-- Drawable : cardDescription
DrawableCard *-- Drawable : cardTitle
DrawableCard *-- Drawable : cardHpDrawable
DrawableCard *-- Drawable : cardAtkDrawable
TouchHandler *-- DrawableCard : moveEventCard
PlayableZonesHandler "*" *-- Drawable : playableZones
PlayableZonesHandler "1" *-- Board : board
DrawableCard o-- Drawable : OpacityRectangleDrawable
DrawableCard o-- Drawable : PictureDrawable
DrawableCard o-- Drawable : cardOnBoardDrawable
DrawableCard o-- Drawable : cardDescription
DrawableCard o-- Drawable : cardTitle
DrawableCard o-- Drawable : cardHpDrawable
DrawableCard o-- Drawable : cardAtkDrawable
DrawableCard o-- Card : card
DrawableCard "1" *-- "1" Rectangle : cardOnBoardFrame
DrawableCard "1" *-- "1" Rectangle : cardOnBoardAtk
DrawableCard "1" *-- "1" Rectangle : cardOnBoardHp
RectangleCanevas *-- Rectangle : +rectangle
Card "1" *-- DrawableCard : drawableCard
Renderer "1" *-- "0_*" Drawable : toDraw
GameActivity "1" *-- "1" Renderer : renderer
GameLogicThread o-- Renderer
GameLogicThread *-- Board
GameLogicThread *-- TouchHandler : touchHandler
GameLogicThread o-- Renderer : renderer
GameLogicThread *-- Board : board
GameLogicThread *-- Deck : localPlayerDeck
GameLogicThread *-- Hand : fillHand
GameLogicThread *-- PlayableZonesHandler : playableZonesHandler
GameLogicThread *-- GameActivity : gameActivity
Board *-- PlayerLocal : player
Board *-- Player : adversary
Deck <|-- DeckDemo
Renderer o-- GameLogicThread
@enduml
@@ -92,7 +92,7 @@ public abstract class Card {
* retourne la culeur de la carte
* la couleur s'affiche comme un filtre sur la carte
* /!\ attention a l'opacite /!\ le format n'est PAS rgba MAIS argb
* #AARRGGBB
* #AARRGGB //TODOB
* je recomander une opaciter en 44 et 70
* @return
*/
@@ -106,7 +106,6 @@ public abstract class Card {
* @return la description
*/
public abstract String getDescription();
//TODO
/**
@@ -11,7 +11,7 @@ import java.util.Stack;
public abstract class Deck {
public abstract Stack<Card> getCards();
public void suffle()
public void shuffle()
{
Collections.shuffle(getCards());
}
@@ -1,20 +0,0 @@
package com.iutlaval.myapplication.Game.Decks;
import android.content.Context;
import java.util.Objects;
public class DeckRegister {
public static Deck getClassFromName(String name, Context context)
{
//switch case non utilisable MAIS c'est pas important car c'ette foction n'est que pour
//HandActivity
if(name.equals("demo"))
{
return new DeckDemo(name,context);
}
return null;
}
}
@@ -3,7 +3,6 @@ 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;
@@ -11,17 +10,11 @@ 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;
@@ -34,6 +27,8 @@ public class GameLogicThread extends Thread{
private Hand localPlayerHand;
private Board board;
private PlayableZonesHandler playableZonesHandler;
private DrawableCard currentlySelected = null;
private static final float SELECTING_OFFSET = 20F;
public GameLogicThread(GameActivity gameActivity, Renderer renderer)
{
@@ -43,7 +38,7 @@ public class GameLogicThread extends Thread{
this.renderer = renderer;
touch = new TouchHandler(renderer);
localPlayerDeck = new DeckDemo("local",cont);
localPlayerDeck.suffle();
localPlayerDeck.shuffle();
localPlayerHand = new Hand();
localPlayerHand.fillHand(localPlayerDeck);
this.gameActivity=gameActivity;
@@ -52,10 +47,6 @@ public class GameLogicThread extends Thread{
GameActivity.setGameEngine(this);
}
private float i=0;
private float increm = 1F;
@Override
public void run() {
//affichage de l'arriere plan
@@ -97,6 +88,7 @@ public class GameLogicThread extends Thread{
* /!\ renderer.updateFrame(); va forcer le system a redessiner l'afficher qui ensuite reappelera onFrameDoneRendering() ce qui peut causer si le updateFrame() n'est pas proteger
* une utilisation de la batterie massive
*/
//TODO : supprimer cette fonction si on a rien a en faire
public void onFrameDoneRendering()
{
}
@@ -109,11 +101,6 @@ public class GameLogicThread extends Thread{
return ready;
}
private DrawableCard currentlySelected = null;
private static final float SELECTING_OFFSET = 20F;
/**
* relais l'evenement directement au touch Handler
* @param event
@@ -154,7 +141,7 @@ public class GameLogicThread extends Thread{
currentlySelected.setCoordinates(currentlySelected.getX(),currentlySelected.getY() + SELECTING_OFFSET);
currentlySelected=null;
}
playableZonesHandler.HidePlayableZones(renderer);
playableZonesHandler.hidePlayableZones(renderer);
}else{
touch.onTouchEvent(event);
}
@@ -19,12 +19,13 @@ public class Hand {
public void pickCardFromDeck(Deck deck,int amount)
{
for(int i = 0 ; i < NUMBER_OF_CARDS_IN_STARTING_HAND;i++)
for(int i = 0 ; i < amount;i++)
{
hand.add(deck.getCards().pop());
}
}
//TODO check number of card in hand
public void fillHand(Deck deck)
{
pickCardFromDeck(deck,NUMBER_OF_CARDS_IN_STARTING_HAND);
@@ -25,6 +25,7 @@ public class PlayableZonesHandler {
this.board=board;
}
//TODO verifier si elle ne sont pas deja afficher
public void displayPlayableZones(Renderer renderer)
{
Card[] cardsOnBoard = board.getPlayerCardsOnBoard();
@@ -50,7 +51,7 @@ public class PlayableZonesHandler {
}
public void HidePlayableZones(Renderer renderer)
public void hidePlayableZones(Renderer renderer)
{
for(Drawable d : playableZones)
{
@@ -4,9 +4,7 @@ package com.iutlaval.myapplication;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.graphics.Point;
import android.os.Bundle;
import android.util.Log;
import android.view.Display;
import android.view.MotionEvent;
@@ -101,10 +101,6 @@ public abstract class Drawable {
p = new Paint();
}
protected void scale(float i) {
bitmap = Bitmap.createScaledBitmap(this.bitmap,(int)(bitmap.getWidth()*i),(int)(bitmap.getHeight()*i),GameActivity.bilinearFiltering);
}
/**
* retourne si le drawable peut être deplacer en drag and drop
* @return
@@ -18,8 +18,8 @@ import com.iutlaval.myapplication.Video.Rectangle;
* TODO : tout mettre dans des finals
*/
public class DrawableCard extends Drawable{
private int ratio;
//propriéte de base utilisé pour calculer toutes les tailles est positoins
//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;
@@ -33,7 +33,7 @@ public class DrawableCard extends Drawable{
private static int TEXT_ATK_HP_X_RES = 110;
private static int TEXT_ATK_HP_Y_RES = 60;//60
//des floats sont utiliser card 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
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;
@@ -79,6 +79,11 @@ public class DrawableCard extends Drawable{
private static final float CARD_ON_BOARD_DRAWABLE_WIDTH = CARD_WITH;
private static final float CARD_ON_BOARD_DRAWABLE_HEIGHT = CARD_HEIGHT*0.667F;
/**
* ratio définissant la taille de l'objet
*/
private int ratio;
private Boolean onBoard;
private Boolean draggable;
@@ -86,6 +91,7 @@ public class DrawableCard extends Drawable{
private Drawable opacityRectangleDrawable;
private Drawable pictureDrawable;
//TODO : optimiser si la couleur est déja en mémoire
private Drawable cardOnBoardDrawable;
private Drawable cardDescription;
@@ -195,6 +201,13 @@ public class DrawableCard extends Drawable{
setCoordinates(getX(), getY());
}
/**
* permet de crée une grande carte a partir d'une carte plus petite
* @param smallCArd car parante
* @param cont context
* @param ratio ratio de taille
* /!\ ne pas s'en servir pour juste changer la taille d'une carte/!\
*/
public DrawableCard(DrawableCard smallCArd, Context cont,int ratio) {
this(smallCArd.card,smallCArd.getX(),smallCArd.getY(),smallCArd.getName()+"BIG",cont,ratio);
draggable =false;
@@ -210,6 +223,7 @@ public class DrawableCard extends Drawable{
* @param atk l'attaque de la carte
* @param hp les point de vie de la carte
*/
//TODO supprimer la possibilité null si non utilisé
public void updateHpAndAtk(Integer atk,Integer hp)
{
if(onBoard) {
@@ -32,8 +32,8 @@ public class DrawableRectangle extends Drawable{
/**
* ce constructeur n'est pas tres rapide donc a eviter il utilse pas mal de ram mais sava encore le gc de java s'en ocupe vite
* ce constructeur dessine un rectangle avec la couleur donné" en argument
* @param bitmap
* ce constructeur dessine un rectangle avec la couleur donné en argument
* @param bitmap bitmap sur le quel dessiner
* @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
@@ -43,7 +43,7 @@ public class DrawableRectangle extends Drawable{
@Deprecated
public DrawableRectangle(Bitmap bitmap,Rectangle rectangle, String name, int color) throws InvalidDataException {
super(rectangle.getPositionX(),rectangle.getPositionY(),name);
if(rectangle.getHeight() <= 0 || rectangle.getWidth() <=0 || bitmap == null)throw new InvalidDataException(name,rectangle);
if(rectangle.isDrawable() || bitmap == null)throw new InvalidDataException(name,rectangle);
rectangle.scaleRectangleToScreen();
rectangle.bitmapRectangleBuilder(bitmap,color);
@@ -10,6 +10,10 @@ import com.iutlaval.myapplication.GameActivity;
import java.util.ArrayList;
import java.util.List;
/**
* ce code a éte particuliérement dur a implementé de maniére correct
* tout modification de ce code doit passer par marc car seul moi sait a quel point il est complex
*/
public class DrawableText extends Drawable{
/**TODO : corriger les deformation due au changement de ratio (x_size,y_size)
* ce constructeur permet de rendre du texte
@@ -17,6 +17,7 @@ public class FpsTime {
/**
* atten exactement la durée d'une image a l'ecran a la vitesse optimal de l'ecran
* prend en argument un offset qui permet de reduire l'attente si le systeme a pris beaucoup de temps a génerer une image
*/
public static void waitFrameTime(long time){
time = (System.nanoTime()-time)/1000;
@@ -31,7 +31,7 @@ public class Rectangle {
* @param width une largeur
* @param height une hauteur
*/
public void set(float positionX,float positionY,float width,float height)
private void set(float positionX,float positionY,float width,float height)
{
this.positionX=positionX;
this.positionY=positionY;
@@ -85,4 +85,7 @@ public class Rectangle {
c.drawRect(this,p);
}
public boolean isDrawable() {
return getHeight() <= 0 || getWidth() <=0;}
}
@@ -25,7 +25,7 @@ public class Renderer extends SurfaceView implements SurfaceHolder.Callback {
private DrawingThread drawingThread;
private GameLogicThread engine;
private GameActivity gameActivity;
private boolean contentChanged;
private boolean needToUpdate;
private List<Drawable> toDraw;
@@ -65,6 +65,7 @@ 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
*/
//TODO : a supprimer si elle set a rien (surment importante avec la veille)
@Override
public void surfaceChanged(@NonNull SurfaceHolder surfaceHolder, int i, int i1, int i2) {
}
@@ -72,7 +73,7 @@ public class Renderer extends SurfaceView implements SurfaceHolder.Callback {
/**
* on surface destruction stop the thread
* la surface ce fait detruire aussi quand le jeu est en pause
* TODO kill proprement le thread et ajouter une relance sur le GameActivity
* TODO ajouter une relance sur le GameActivity
* @param surfaceHolder
*/
@Override
@@ -102,7 +103,7 @@ public class Renderer extends SurfaceView implements SurfaceHolder.Callback {
* demander au moteur de faire sont travaille
*/
public void updateFrame() {
contentChanged=true;
needToUpdate =true;
}
/**
@@ -151,7 +152,7 @@ public class Renderer extends SurfaceView implements SurfaceHolder.Callback {
//sauve de la baterie
FpsTime.waitFrameTime(time);
if(engine != null && engine.isReady())engine.onFrameDoneRendering();
while(!contentChanged)
while(!needToUpdate)
{
try {
Thread.sleep(20);
@@ -159,7 +160,7 @@ public class Renderer extends SurfaceView implements SurfaceHolder.Callback {
e.printStackTrace();
}
}
contentChanged=false;
needToUpdate =false;
}
}
}
@@ -170,7 +171,7 @@ public class Renderer extends SurfaceView implements SurfaceHolder.Callback {
*/
public boolean addToDraw(Drawable newElement){
boolean returnValue = addToDrawWithoutUpdate(newElement);
contentChanged=true;
updateFrame();
return returnValue;
}
@@ -203,7 +204,7 @@ public class Renderer extends SurfaceView implements SurfaceHolder.Callback {
if(d.getName().equals(name))
{
d.setCoordinates(x,y);
contentChanged=true;
updateFrame();
return;
}
}
@@ -234,7 +235,7 @@ public class Renderer extends SurfaceView implements SurfaceHolder.Callback {
*/
public void removeToDraw(String name){
removeToDrawWithoutUpdate(name);
contentChanged=true;
updateFrame();
}
/**
* remove the element from the draw list
@@ -242,7 +243,7 @@ public class Renderer extends SurfaceView implements SurfaceHolder.Callback {
*/
public void removeToDraw(Drawable toRemove){
toDraw.remove(toRemove);
contentChanged=true;
updateFrame();
}
@@ -264,10 +265,6 @@ public class Renderer extends SurfaceView implements SurfaceHolder.Callback {
return drawable;
}
public void setEngine(GameLogicThread engine) {
this.engine = engine;
}
/**
* retourne une carte au coodonés donné
* MAIS ne met pas ajour le rendu