Skip to content
Snippets Groups Projects
Select Git revision
  • 81aed3a4ca824da1914af3a6361f3792c67aacfd
  • master default protected
2 results

GameModel.java

Blame
  • GameModel.java 1.99 KiB
    package game;
    
    import javax.swing.table.AbstractTableModel;
    
    public class GameModel extends AbstractTableModel {
    
        private GameBoard board;
        private GameRunner runner;
        private GameRunner2 runner2; //TODO runners
        private boolean editable;
    
        public GameModel(int height, int width) {
            board = new GameBoard(height, width);
            runner = new GameRunner(this, board);
            runner2 = new GameRunner2(this, board);
            runner2.start();
            editable = true;
        }
    
        public GameModel(GameBoard board){
            this.board = board;
            runner2 = new GameRunner2(this, board);
            runner2.start();
            editable = true;
        }
    
        public int getRowCount() {
            return board.getHeight();
        }
    
        public int getColumnCount() {
            return board.getWidth();
        }
    
        public String getColumnName(int columnIndex) {
            return Integer.toString(columnIndex);
        }
    
        public Class<?> getColumnClass(int columnIndex) {
            return Boolean.class;
        }
    
        public void start() {
            editable=false;
            //runner.start();
            //TODO runners
            runner2.resumeRunner();
        }
    
        public void stop(){
            /*
            runner.stopRunner();
            while (runner.isAlive()){
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
             */
            //TODO runners
            runner2.pauseRunner();
            synchronized (board) {
                editable = true;
            }
        }
    
        public boolean isCellEditable(int rowIndex, int columnIndex) {
            return editable;
        }
    
        public Object getValueAt(int rowIndex, int columnIndex) {
            return board.get(rowIndex, columnIndex).isAlive();
        }
    
        public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
            board.get(rowIndex, columnIndex).setAlive((boolean) aValue);
    
        }
    
        public void step() {
            //TODO törölni
            board.step();
            fireTableDataChanged();
        }
    
    }