Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 4 additions & 7 deletions src/main/java/edu/rpi/legup/controller/ElementController.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
import edu.rpi.legup.model.elements.Element;
import edu.rpi.legup.model.elements.PlaceableElement;
import edu.rpi.legup.model.gameboard.Board;
import edu.rpi.legup.model.gameboard.CaseBoard;
import edu.rpi.legup.model.gameboard.GridBoard;
import edu.rpi.legup.model.gameboard.GridCell;
import edu.rpi.legup.model.gameboard.PuzzleElement;
Expand Down Expand Up @@ -163,11 +162,10 @@ public void mouseReleased(MouseEvent e) {
}
// funny
if (elementView != null) {
if (board instanceof CaseBoard) {
CaseBoard caseBoard = (CaseBoard) board;
if (board.getCaseRule() != null) {
AutoCaseRuleCommand autoCaseRuleCommand =
new AutoCaseRuleCommand(
elementView, selection, caseBoard.getCaseRule(), caseBoard, e);
elementView, selection, board.getCaseRule(), board, e);
if (autoCaseRuleCommand.canExecute()) {
autoCaseRuleCommand.execute();
getInstance().getHistory().pushChange(autoCaseRuleCommand);
Expand Down Expand Up @@ -498,10 +496,9 @@ public void keyReleased(KeyEvent e) {
boardView = getInstance().getLegupUI().getEditorBoardView();
}
Board board = boardView.getBoard();
if (board instanceof CaseBoard) {
CaseBoard caseBoard = (CaseBoard) board;
if (board.getCaseRule() != null) {
if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
puzzle.notifyBoardListeners(listener -> listener.onCaseBoardAdded(caseBoard));
puzzle.notifyBoardListeners(listener -> listener.onCaseBoardAdded(board));
}
}
}
Expand Down
10 changes: 5 additions & 5 deletions src/main/java/edu/rpi/legup/controller/RuleController.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import edu.rpi.legup.app.LegupPreferences;
import edu.rpi.legup.history.*;
import edu.rpi.legup.model.Puzzle;
import edu.rpi.legup.model.gameboard.CaseBoard;
import edu.rpi.legup.model.gameboard.Board;
import edu.rpi.legup.model.rules.*;
import edu.rpi.legup.model.tree.TreeElement;
import edu.rpi.legup.model.tree.TreeElementType;
Expand Down Expand Up @@ -70,10 +70,10 @@ public void buttonPressed(Rule rule) {
updateErrorString =
"Cases cannot be generated from a node with children.";
} else {
try { // added try catch for scenarios where rules are cancelled by user
// ie.
try { // added try catch for scenarios where rules are canceled by user
// i.e.
// Skyscraper cellForNumber
CaseBoard caseBoard =
Board caseBoard =
caseRule.getApplicableLocationsBoard(element.getBoard());
if (caseBoard != null && caseBoard.getCount() > 0) {
puzzle.notifyBoardListeners(
Expand All @@ -82,7 +82,7 @@ public void buttonPressed(Rule rule) {
updateErrorString =
"This board cannot be applied with this case rule.";
}
} // catch rule was cancelled exception
} // catch rule was canceled exception
catch (Exception e) {
updateErrorString = e.getMessage();
}
Expand Down
19 changes: 9 additions & 10 deletions src/main/java/edu/rpi/legup/history/AutoCaseRuleCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import edu.rpi.legup.app.GameBoardFacade;
import edu.rpi.legup.model.Puzzle;
import edu.rpi.legup.model.gameboard.Board;
import edu.rpi.legup.model.gameboard.CaseBoard;
import edu.rpi.legup.model.rules.CaseRule;
import edu.rpi.legup.model.tree.*;
import edu.rpi.legup.ui.boardview.ElementView;
Expand All @@ -23,7 +22,7 @@ public class AutoCaseRuleCommand extends PuzzleCommand {
private ElementView elementView;
private TreeViewSelection selection;
private CaseRule caseRule;
private CaseBoard caseBoard;
private Board board;
private MouseEvent mouseEvent;

private List<TreeTransition> caseTrans;
Expand All @@ -37,23 +36,23 @@ public class AutoCaseRuleCommand extends PuzzleCommand {
* @param elementView currently selected puzzle puzzleElement view that is being edited
* @param selection currently selected tree puzzleElement views that is being edited
* @param caseRule currently selected caseRule puzzleElement view that is being edited
* @param caseBoard currently selected caseBoard puzzleElement view that is being edited
* @param board currently selected board puzzleElement view that is being edited
* @param mouseEvent currently selected mouseEvent puzzleElement view that is being edited
*/
public AutoCaseRuleCommand(
ElementView elementView,
TreeViewSelection selection,
CaseRule caseRule,
CaseBoard caseBoard,
Board board,
MouseEvent mouseEvent) {
this.elementView = elementView;
this.selection = selection.copy();
this.caseRule = caseRule;
this.caseBoard = caseBoard;
this.board = board;
this.mouseEvent = mouseEvent;
this.caseTrans = new ArrayList<>();
this.cases =
caseRule.getCasesFrom(caseBoard.getBaseBoard(), elementView.getPuzzleElement());
caseRule.getCasesFrom(board, elementView.getPuzzleElement());
this.numberOfCaseRules = cases.size();
}

Expand All @@ -72,7 +71,7 @@ public void executeCommand() {

if (caseTrans.isEmpty()) {
List<Board> cases =
caseRule.getCasesFrom(caseBoard.getBaseBoard(), elementView.getPuzzleElement());
caseRule.getCasesFrom(board, elementView.getPuzzleElement());
for (Board board : cases) {
final TreeTransition transition = (TreeTransition) tree.addTreeElement(node);
// board.setModifiable(false);
Expand Down Expand Up @@ -122,17 +121,17 @@ public String getErrorString() {
return CommandError.NO_CHILDREN.toString();
}

if (!caseBoard.isPickable(elementView.getPuzzleElement(), mouseEvent)) {
if (!board.isPickable(elementView.getPuzzleElement(), mouseEvent)) {
return "The selected data element is not pickable with this case rule.";
}

if (caseRule.getCasesFrom(caseBoard.getBaseBoard(), elementView.getPuzzleElement()).size()
if (caseRule.getCasesFrom(board, elementView.getPuzzleElement()).size()
== 0) {
return "The selection must produce at least one case";
}

int numberOfCaseRules =
caseRule.getCasesFrom(caseBoard.getBaseBoard(), elementView.getPuzzleElement())
caseRule.getCasesFrom(board, elementView.getPuzzleElement())
.size();
System.out.println("Number of cases:" + numberOfCaseRules);
if (numberOfCaseRules > caseRule.MAX_CASES) {
Expand Down
79 changes: 79 additions & 0 deletions src/main/java/edu/rpi/legup/model/gameboard/Board.java
Comment thread
Laine0509 marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package edu.rpi.legup.model.gameboard;

import edu.rpi.legup.model.Goal;
import edu.rpi.legup.model.rules.CaseRule;

import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
Expand All @@ -17,12 +20,18 @@ public abstract class Board {
protected Goal goal;
protected boolean isModifiable;

protected CaseRule caseRule;
protected Set<PuzzleElement> pickablePuzzleElements;
Comment thread
Laine0509 marked this conversation as resolved.
Outdated

/** Board Constructor creates an empty board. */
public Board() {
this.puzzleElements = new ArrayList<>();
this.modifiedData = new HashSet<>();
this.isModifiable = true;
this.goal = null;

this.caseRule = null;
this.pickablePuzzleElements = new HashSet<>();
}

/**
Expand Down Expand Up @@ -90,6 +99,76 @@ public void setPuzzleElements(List<PuzzleElement> puzzleElements) {
this.puzzleElements = puzzleElements;
}

/**
* Retrieves the case rule for this board.
*
* @return the case rule
*/
public CaseRule getCaseRule() {
return caseRule;
}

/**
* Sets the case rule for this board.
*
* @param caseRule the new case rule
*/
public void setCaseRule(CaseRule caseRule) {
this.caseRule = caseRule;
}

/**
* Retrieves the pickable puzzle elements for this board
*
* @return the pickable puzzle elements
*/
public Set<PuzzleElement> getPickablePuzzleElements() { return pickablePuzzleElements; }

/**
* Sets the pickable puzzle elements for this board.
*
* @param pickablePuzzleElements the new pickable puzzle elements
*/
public void setPickablePuzzleElements(Set<PuzzleElement> pickablePuzzleElements) { this.pickablePuzzleElements = pickablePuzzleElements; }

/**
* Adds a puzzle element to the set of pickable elements.
*
* @param puzzleElement the puzzle element to add
*/
public void addPickableElement(PuzzleElement puzzleElement) {
pickablePuzzleElements.add(puzzleElement);
}

/**
* Removes a puzzle element from the set of pickable elements.
*
* @param puzzleElement the puzzle element to remove
*/
public void removePickableElement(PuzzleElement puzzleElement) {
pickablePuzzleElements.remove(puzzleElement);
}

/**
* Gets the count of pickable puzzle elements.
*
* @return the number of pickable elements
*/
public int getCount() {
Comment thread
Laine0509 marked this conversation as resolved.
Outdated
return pickablePuzzleElements.size();
}

/**
* Checks if a puzzle element is pickable based on the mouse event.
*
* @param puzzleElement the puzzle element to check
* @param e the mouse event
* @return true if the puzzle element is pickable, false otherwise
*/
public boolean isPickable(PuzzleElement puzzleElement, MouseEvent e) {
return pickablePuzzleElements.contains(getPuzzleElement(puzzleElement));
}

/**
* Gets the modifiable attribute for the board.
*
Expand Down
112 changes: 0 additions & 112 deletions src/main/java/edu/rpi/legup/model/gameboard/CaseBoard.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package edu.rpi.legup.model.observer;

import edu.rpi.legup.model.gameboard.CaseBoard;
import edu.rpi.legup.model.gameboard.Board;
import edu.rpi.legup.model.gameboard.PuzzleElement;
import edu.rpi.legup.model.tree.TreeElement;

Expand All @@ -21,7 +21,7 @@ public interface IBoardListener {
*
* @param caseBoard case board to be added
*/
void onCaseBoardAdded(CaseBoard caseBoard);
void onCaseBoardAdded(Board caseBoard);

/**
* Called when a {@link PuzzleElement}'s data on the board has changed.
Expand Down
Loading
Loading