Commit 7658dc3a authored by erreiip's avatar erreiip
Browse files

Add arrangement in FinishScreen and in SoloGameCreation

parent 987de037
Loading
Loading
Loading
Loading
+7 −1
Changes for jeuAssemblage/maps.tetriste: 7 added lines, 1 removed line.
Original line number Diff line number Diff line
0;0;0;0;shesh10;10
10;10;3;0;shesh10;10
15;12;7;7950305377179271168;Jean;143
10;14;6;1270873474421636096;Nul;96
13;11;7;493101277235170304;Test;77
14;12;7;5761360446297763840;zdqzd;117
15;13;7;5544433734978013184;Shesh;121
17;15;9;8065871849407982592;Test;224
+3 −2
Changes for jeuAssemblage/src/model/PlayBoard.java: 3 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -458,6 +458,7 @@ public class PlayBoard extends AbstractListenableHM implements Listener, IPlayBo
	}

	public Map<Integer, Piece> getPieces() { return new HashMap<>(piecesMap); }
	public int getPiecesCount() { return this.piecesMap.size(); }

	public Point getLowerRightPieceCorner() { return new Point(getUpperPieceX(), getUpperPieceY()); }		
	public Point getUpperLeftPieceCorner() { return new Point(getLowerPieceX(), getLowerPieceY()); }
@@ -472,11 +473,11 @@ public class PlayBoard extends AbstractListenableHM implements Listener, IPlayBo
	public int getBoardHeight() { return this.board.length; }
	public int[][] getBoardArray() { return this.board.clone(); }


	public int getWidth() { return this.sizeX; }

	public int getHeight() { return this.sizeY; }
	
	public long getSeed() { return this.seed; }

	
	// -----------------
	// STATIC METHODS
+5 −4
Changes for jeuAssemblage/src/model/arrangement/Arrangement.java: 5 added lines, 4 removed lines.
Original line number Diff line number Diff line
package model.arrangement;

public class Arrangement {
    private int sizeX;
    private int sizeY;
    private int pieceCount;
    private long seed;

    protected int sizeX;
    protected int sizeY;
    protected int pieceCount;
    protected long seed;
    
    protected String username;
    protected int score;
+107 −3
Changes for jeuAssemblage/src/model/arrangement/ArrangementList.java: 107 added lines, 3 removed lines.
Original line number Diff line number Diff line
package model.arrangement;


import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;

import model.PlayBoard;

import javax.swing.table.AbstractTableModel;

import java.util.List;
import java.util.ArrayList;
import java.util.Scanner;
@@ -9,15 +17,98 @@ import java.io.*;
import java.nio.file.Path;
import java.nio.file.Paths;

public class ArrangementList {
public class ArrangementList implements TableModel {

    private static List<Arrangement> arrangements;
    private static String[] headersName;

    static 
    {
        arrangements = ArrangementList.getArrangementList();
        headersName = new String[] {
            "X",
            "Y",
            "NB PIECE",
            "SEED",
            "USERNAME",
            "SCORE"
        };
    }
    
    private List<TableModelListener> listeners;
    
    public ArrangementList() {

        this.listeners = new ArrayList<TableModelListener>();
    }


    // tableModel Methods
    @Override
    public int getRowCount() {
        return ArrangementList.arrangements.size();
    }

    @Override
    public int getColumnCount() {

        return headersName.length;
    }

    @Override
    public String getColumnName(int columnIndex) {
        return headersName[columnIndex];
    }

    @Override
    public Class<?> getColumnClass(int columnIndex) {
        if (this.getRowCount() == 0) return Object.class;

    static {
        return this.getValueAt(0, columnIndex).getClass();
    }

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {

        return false;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {

        Object val = "No";
        Arrangement selected = arrangements.get(rowIndex);

        switch (columnIndex) {
            case 0 -> val = selected.sizeX;
            case 1 -> val = selected.sizeY;
            case 2 -> val = selected.pieceCount;
            case 3 -> val = selected.seed;
            case 4 -> val = selected.username;
            case 5 -> val = selected.score;
        }
        
        return val;
    }

    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        
        ArrangementList.arrangements = ArrangementList.getArrangementList();
        throw new IllegalStateException("Impossible");
    }

    @Override
    public void addTableModelListener(TableModelListener l) {
        this.listeners.add(l);
    }

    @Override
    public void removeTableModelListener(TableModelListener l) {
        this.listeners.remove(l);
    }


    // Static methods
    public static List<Arrangement> getArrangements() {

        return ArrangementList.arrangements;
@@ -41,6 +132,19 @@ public class ArrangementList {

    }

    public static void addArrangement(PlayBoard playboard, String name) {
        addArrangement(
            new Arrangement(
                playboard.getBoardWidth(),
                playboard.getBoardHeight(),
                playboard.getPiecesCount(),
                playboard.getSeed(),
                name,
                playboard.getArea()
            )
         );
    }
    
    private static Arrangement exist(Arrangement arrangement) {

        for (Arrangement a : ArrangementList.arrangements) {
+41 −8
Changes for jeuAssemblage/src/view/screen/SoloGameCreation.java: 41 added lines, 8 removed lines.
Original line number Diff line number Diff line
@@ -2,18 +2,12 @@ package view.screen;

import static view.utils.SwingUtils.*;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.JTextField;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.JCheckBox;
import javax.swing.SpinnerNumberModel;

import model.PlayBoard;
import model.SeedUtils;
import model.arrangement.ArrangementList;
import utils.EDifficulty;
import view.MainFrame;
import view.component.Separator;
@@ -44,6 +38,10 @@ public class SoloGameCreation extends JPanel {
	private final JLabel lblDifficulty = new JLabel("Difficulté :");
	private final JList<String> difficultyList = new JList<String>(EDifficulty.getDifficultysName());

	private final JLabel lblArrangement = new JLabel("Parties Enregistrées :");
	private final JTable tableArrangement = new JTable(new ArrangementList());
	private final JScrollPane scrollArrangement = new JScrollPane(tableArrangement);

	protected final JSpinner nbMinutesSpinner = new JSpinner(new SpinnerNumberModel(0, 0, Integer.MAX_VALUE, 1));
	private final JSpinner nbSecondsSpinner = new JSpinner(new SpinnerNumberModel(0, -1, 60, 1));
	private final JCheckBox timeLimitCheckBox = new JCheckBox("Temps limité");
@@ -88,6 +86,9 @@ public class SoloGameCreation extends JPanel {
		this.add(nbSecondsSpinner);
		this.add(timeLimitCheckBox);

		this.add(lblArrangement);
		this.add(scrollArrangement);

		this.add(gridPreview);

		this.add(btnPlay);
@@ -161,6 +162,11 @@ public class SoloGameCreation extends JPanel {
			}
		});

		tableArrangement.getSelectionModel().addListSelectionListener(e->{
			if (e.getValueIsAdjusting()) return;
			SoloGameCreation.this.setParams(tableArrangement.getSelectedRow());
		});

		updateGridPreview();

		revalidate();
@@ -275,6 +281,20 @@ public class SoloGameCreation extends JPanel {
			BTN_CANCEL_HEIGHT * 3
		);

		lblArrangement.setBounds(
			PADDING_LEFT,
			difficultyList.getY() + difficultyList.getHeight() + BTN_CANCEL_HEIGHT,
			LBL_WIDTH,
			BTN_CANCEL_HEIGHT
		);

		scrollArrangement.setBounds(
			PADDING_LEFT,
			difficultyList.getY() + difficultyList.getHeight() + BTN_CANCEL_HEIGHT * 2,
			getWidthTimesPourcent(this, .35f),
			BTN_CANCEL_HEIGHT * 3
		);

		nbMinutesSpinner.setBounds(
			PADDING_LEFT + getWidthTimesPourcent(this, .3f),
			PADDING_TOP_LBL_SEED + BTN_CANCEL_HEIGHT * 7,
@@ -323,6 +343,19 @@ public class SoloGameCreation extends JPanel {
		nbPiecesSpinner.setValue(PlayBoard.getPiecesCountBySeedAndDifficulty(seed, difficulty));
	}
	
	private void setParams(int index) {

		int sizeX = (Integer) this.tableArrangement.getValueAt(index, 0);
		int sizeY = (Integer) this.tableArrangement.getValueAt(index, 1);
		int pieceCount = (Integer) this.tableArrangement.getValueAt(index, 2);
		long seed = (Long) this.tableArrangement.getValueAt(index, 3);

		this.txtSeed.setText(seed + "");
		this.txtSizeX.setText(sizeX + "");
		this.txtSizeY.setText(sizeY + "");
		this.nbPiecesSpinner.setValue(pieceCount);
	}

	private void updateGridPreview() {

		JPanel temp = null;
Loading