package jrummikub.control; import java.util.ArrayList; import java.util.List; import jrummikub.model.IHand; import jrummikub.model.ITable; import jrummikub.util.Connection; import jrummikub.util.Event; import jrummikub.util.IEvent; import jrummikub.util.IListener; import jrummikub.view.IView; public class TurnControl { private IHand hand; private ITable table; private ITurnTimer timer; private IView view; private Event endOfTurnEvent = new Event(); List connections = new ArrayList(); public TurnControl(IHand hand, ITable table, IView view) { this.hand = hand; this.table = table; this.view = view; this.timer = new TurnTimer(view); } /** Test only constructor **/ TurnControl(IHand hand, ITable table, IView view, ITurnTimer testTimer) { this.hand = hand; this.table = table; this.view = view; this.timer = testTimer; } public void startTurn() { IListener endOfTurnListener = new IListener() { @Override public void handle() { endOfTurn(); } }; connections.add(timer.getTimeRunOutEvent().add(endOfTurnListener)); connections.add(view.getPlayerPanel().getEndTurnEvent().add(endOfTurnListener)); view.getPlayerPanel().getHandPanel().setStones(hand.clone()); view.enableStartTurnPanel(false); timer.startTimer(); } private void sortByValue() { } private void sortByColor() { } private void endOfTurn() { timer.stopTimer(); endOfTurnEvent.emit(); for (Connection c : connections) { c.remove(); } } public IEvent getEndOfTurnEvent() { return endOfTurnEvent; } }