diff --git a/code/app/src/main/java/projet/iut/jeu_de_la_vie/model/Manager.java b/code/app/src/main/java/projet/iut/jeu_de_la_vie/model/Manager.java index 51f041c..e4c3a43 100644 --- a/code/app/src/main/java/projet/iut/jeu_de_la_vie/model/Manager.java +++ b/code/app/src/main/java/projet/iut/jeu_de_la_vie/model/Manager.java @@ -36,6 +36,10 @@ public class Manager implements ObserverBDJ { jeuLance = false; } + public void updateOnCellBeforeStart(int x, int y){ + getActualiseurCellule().inverserCellule(x, y); + } + /** * Change l'actualiseur de cellule en fonction des règles */ diff --git a/code/app/src/main/java/projet/iut/jeu_de_la_vie/model/actualiseur/ActualiseurCellule.java b/code/app/src/main/java/projet/iut/jeu_de_la_vie/model/actualiseur/ActualiseurCellule.java index f5641ed..2e3396e 100644 --- a/code/app/src/main/java/projet/iut/jeu_de_la_vie/model/actualiseur/ActualiseurCellule.java +++ b/code/app/src/main/java/projet/iut/jeu_de_la_vie/model/actualiseur/ActualiseurCellule.java @@ -18,6 +18,7 @@ public abstract class ActualiseurCellule { * @param reference CellulesVivantes au début du tour qui sert de référence */ public abstract void changerCellule(int x, int y, CellulesVivantes reference); + public abstract void inverserCellule(int x, int y); ActualiseurCellule(Arbitre arbitre) throws IllegalArgumentException{ if(arbitre == null) { diff --git a/code/app/src/main/java/projet/iut/jeu_de_la_vie/model/actualiseur/ActualiseurEtatCellule.java b/code/app/src/main/java/projet/iut/jeu_de_la_vie/model/actualiseur/ActualiseurEtatCellule.java index a86c100..7085c4b 100644 --- a/code/app/src/main/java/projet/iut/jeu_de_la_vie/model/actualiseur/ActualiseurEtatCellule.java +++ b/code/app/src/main/java/projet/iut/jeu_de_la_vie/model/actualiseur/ActualiseurEtatCellule.java @@ -31,4 +31,9 @@ public class ActualiseurEtatCellule extends ActualiseurCellule{ break; } } + + @Override + public void inverserCellule(int x, int y) { + getArbitre().getPlateau().inverserCellule(x, y); + } } diff --git a/code/app/src/main/java/projet/iut/jeu_de_la_vie/model/plateau/Plateau.java b/code/app/src/main/java/projet/iut/jeu_de_la_vie/model/plateau/Plateau.java index d046c39..a4b8664 100644 --- a/code/app/src/main/java/projet/iut/jeu_de_la_vie/model/plateau/Plateau.java +++ b/code/app/src/main/java/projet/iut/jeu_de_la_vie/model/plateau/Plateau.java @@ -136,4 +136,8 @@ public class Plateau implements PrototypePlateau{ public CellulesVivantes getCellulesVivantes() { return cellulesVivantes; } + + public void inverserCellule(int x, int y){ + getCell(x, y).inverseAlive(); + } } diff --git a/code/app/src/main/java/projet/iut/jeu_de_la_vie/view/PlateauView.java b/code/app/src/main/java/projet/iut/jeu_de_la_vie/view/PlateauView.java index dfbe5fa..5b3d483 100644 --- a/code/app/src/main/java/projet/iut/jeu_de_la_vie/view/PlateauView.java +++ b/code/app/src/main/java/projet/iut/jeu_de_la_vie/view/PlateauView.java @@ -10,12 +10,14 @@ import android.os.Build; import android.util.AttributeSet; import android.util.DisplayMetrics; import android.util.Log; +import android.view.MotionEvent; import android.view.View; import android.widget.ImageView; import android.view.WindowManager; import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; +import androidx.core.view.MotionEventCompat; import java.util.HashMap; import java.util.LinkedList; @@ -35,32 +37,35 @@ public class PlateauView extends View implements ObserverCV { public PlateauView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); - Log.d("fragment","constructeur"); + init(); } public PlateauView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); - + init(); } @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public PlateauView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); + init(); } private Paint paint = new Paint(); private int colones; private int lignes; private int dethColor = Color.BLACK; - private int width; - private int height; public PlateauView(Context context, int colones, int lignes){ super(context); - colors = new HashMap<>(); - paint = new Paint(); this.colones = colones; this.lignes = lignes; + init(); + } + + private void init(){ + colors = new HashMap<>(); + paint = new Paint(); this.dethColor = Color.BLACK; } @@ -72,13 +77,14 @@ public class PlateauView extends View implements ObserverCV { Rect rect; for(int i=0; i { + int x = (int) (( (float) manager.getNomberOfColumns() / view1.getWidth()) * motionEvent.getX()-5/100); + int y = (int) (( (float) manager.getNomberOfColumns() / view1.getWidth()) * motionEvent.getY()-5/100); + Log.d("D", "x=" + x); + Log.d("D", "y=" + y); + try { + manager.updateOnCellBeforeStart(x, y); + + view1.postInvalidate(); + }catch (IllegalArgumentException e){ + Log.w("WARNING", e.getMessage()); + } + return false; + }); } @Override public void onInflate(@NonNull Context context, @NonNull AttributeSet attrs, @Nullable Bundle savedInstanceState) { super.onInflate(context, attrs, savedInstanceState); - } }