This repository has been archived on 2025-03-02. You can view files and clone it, but cannot push or open issues or pull requests.
JRummikub/uml/sequence/sequence.plant

2033 lines
48 KiB
Text
Raw Normal View History

@startuml img/sequence_complete.png
hide footbox
participant view as "view\n: View"
participant handPanel as "handPanel\n: HandPanel"
participant playerPanel as "playerPanel\n: PlayerPanel"
participant tablePanel as "tablePanel\n: TablePanel"
participant roundControl as "roundControl\n: RoundControl"
participant ITurnControlFactory
participant humanTurnControlFactory as "humanTurnControlFactory\n: ITurnControlFactory"
participant turnControl as "turnControl\n: HumanTurnControl"
participant humanTurnControlFactory2 as "humanTurnControlFactory\n: ITurnControlFactory"
participant turnControl2 as "turnControl\n: HumanTurnControl"
participant humanTurnControlFactory3 as "humanTurnControlFactory\n: ITurnControlFactory"
participant turnControl3 as "turnControl\n: HumanTurnControl"
participant humanTurnControlFactory4 as "humanTurnControlFactory\n: ITurnControlFactory"
participant turnControl4 as "turnControl\n: HumanTurnControl"
participant roundState as "roundState\n: RoundState"
participant table as "table\n: Table"
participant clonedTable as "clonedTable\n: Table"
participant clonedTable2 as "clonedTable2\n: Table"
participant clonedTable3 as "clonedTable3\n: Table"
participant clonedTable4 as "clonedTable4\n: Table"
participant playerA as "playerA\n: Player"
participant playerASettings as "playerASettings\n: PlayerSettings"
participant playerAHand as "playerAHand\n: Hand"
participant playerB as "playerB\n: Player"
participant playerBSettings as "playerBSettings\n: PlayerSettings"
participant playerBHand as "playerBHand\n: Hand"
participant gameHeap as "gameHeap\n: StoneHeap"
== Initialize player B's turn ==
[-> view
activate view
view -> roundControl : startTurn() : void
activate roundControl
roundControl -> roundState : getActivePlayer() : Player
activate roundState
roundControl <<-- roundState : playerB
deactivate roundState
roundControl -> playerB : getPlayerSettings() : PlayerSettings
activate playerB
roundControl <<-- playerB : playerBSettings
deactivate playerB
roundControl -> playerBSettings : getTurnControlType() : ITurnControlFactory.Type
activate playerBSettings
roundControl <<-- playerBSettings : HUMAN
deactivate playerBSettings
roundControl -> ITurnControlFactory : getFactory(HUMAN) : ITurnControlFactory
activate ITurnControlFactory
create humanTurnControlFactory
ITurnControlFactory -> humanTurnControlFactory : <<create>>
activate humanTurnControlFactory
humanTurnControlFactory -->> ITurnControlFactory
deactivate humanTurnControlFactory
ITurnControlFactory -->> roundControl : humanTurnControlFactory : ITurnControlFactory
deactivate ITurnControlFactory
roundControl -> humanTurnControlFactory : create() : ITurnControl
activate humanTurnControlFactory
create turnControl
humanTurnControlFactory -> turnControl : <<create>>
activate turnControl
turnControl -->> humanTurnControlFactory
deactivate turnControl
humanTurnControlFactory -->> roundControl : turnControl
deactivate humanTurnControlFactory
' roundControl -> table : clone()
' activate table
' create clonedTable
' table -> clonedTable : <<create>>
' activate clonedTable
' table <<-- clonedTable
' deactivate clonedTable
' roundControl <<-- table : clonedTable
' deactivate table
roundControl -> turnControl : setup(player, clonedTable, view, false, false) : void
activate turnControl
turnControl -->> roundControl
deactivate turnControl
roundControl -> turnControl : startTurn() : void
activate turnControl
turnControl -> handPanel : setStones(hand.clone()) : void
activate handPanel
handPanel -->> turnControl
deactivate handPanel
turnControl -> view : setBottomPanel(HUMAN_HAND_PANEL) : void
activate view
view -->> turnControl
deactivate view
turnControl -->> roundControl
deactivate turnControl
view <<-- roundControl
deactivate roundControl
[<<-- view
deactivate view
== Player B appends stone to set ==
[-> handPanel
activate handPanel
handPanel -> turnControl : stoneClick(stone1, false) : void
activate turnControl
turnControl -> view : setSelectedStones({stone1}) : void
activate view
turnControl <<- view
deactivate view
handPanel <<-- turnControl
deactivate turnControl
[<<-- handPanel
deactivate handPanel
[-> tablePanel
activate tablePanel
tablePanel -> turnControl : connectorClick(stoneSet1, true) : void
activate turnControl
' TODO self calls?
turnControl -> turnControl : pickUpSelectedStones() : void
activate turnControl
turnControl -> playerBHand : pickUp(stone1) : boolean
activate playerBHand
turnControl <<-- playerBHand : true
deactivate playerBHand
turnControl <<-- turnControl
deactivate turnControl
turnControl -> clonedTable : getPosition(stoneSet1) : Position
activate clonedTable
turnControl <<-- clonedTable : position
deactivate clonedTable
turnControl -> clonedTable : pickUp(stoneSet1) : boolean
activate clonedTable
turnControl <<-- clonedTable : true
deactivate clonedTable
turnControl -> clonedTable : drop(joinedStoneSet, newPosition) : void
activate clonedTable
turnControl <<-- clonedTable
deactivate clonedTable
turnControl -> tablePanel : setStoneSets(clonedTable) : void
activate tablePanel
turnControl <<- tablePanel
deactivate tablePanel
turnControl -> handPanel : setStones(playerBHand) : void
activate handPanel
turnControl <<- handPanel
deactivate handPanel
turnControl -> view : setSelectedStones({}) : void
activate view
turnControl <<- view
deactivate view
tablePanel <<-- turnControl
deactivate turnControl
[<<-- tablePanel
deactivate tablePanel
== End of player B's turn ==
[-> playerPanel
activate playerPanel
playerPanel -> turnControl : endOfTurn() : void
activate turnControl
turnControl -> roundControl : endOfTurn() : void
activate roundControl
roundControl -> roundControl : checkTurn() : void
activate roundControl
roundControl -> clonedTable : isValid() : boolean
activate clonedTable
roundControl <<-- clonedTable : false
deactivate clonedTable
destroy clonedTable
roundControl -> roundControl : rejectMove() : void
activate roundControl
roundControl -> gameHeap : putBack({stone1}) : void
activate gameHeap
roundControl <<-- gameHeap
deactivate gameHeap
loop 4 times
roundControl -> gameHeap : drawStone() : Stone
activate gameHeap
roundControl <<-- gameHeap : stone
deactivate gameHeap
roundControl -> playerBHand : drop(stone) : void
activate playerBHand
roundControl <<-- playerBHand
deactivate playerBHand
end
' reject move
roundControl <<-- roundControl
deactivate roundControl
' check turn
roundControl <<-- roundControl
deactivate roundControl
roundControl -> roundControl : prepareTurn() : void
activate roundControl
roundControl -> table : clone()
activate table
create clonedTable2
table -> clonedTable2 : <<create>>
activate clonedTable2
table <<-- clonedTable2
deactivate clonedTable2
roundControl <<-- table : clonedTable2
deactivate table
roundControl -> view : setBottomPanel(START_TURN_PANEL) : void
activate view
roundControl <<-- view
deactivate view
roundControl -> tablePanel : setStoneSets(clonedTable2) : void
activate tablePanel
roundControl <<- tablePanel
deactivate tablePanel
roundControl <<-- roundControl
deactivate roundControl
turnControl <<-- roundControl
deactivate roundControl
playerPanel <<-- turnControl
deactivate turnControl
destroy turnControl
[<<-- playerPanel
deactivate playerPanel
== Initialize player A's turn ==
[-> view
activate view
view -> roundControl : startTurn() : void
activate roundControl
roundControl -> roundState : getActivePlayer() : Player
activate roundState
roundControl <<-- roundState : playerA
deactivate roundState
roundControl -> playerA : getPlayerSettings() : PlayerSettings
activate playerA
roundControl <<-- playerA : playerASettings
deactivate playerA
roundControl -> playerASettings : getTurnControlType() : ITurnControlFactory.Type
activate playerASettings
roundControl <<-- playerASettings : HUMAN
deactivate playerASettings
roundControl -> ITurnControlFactory : getFactory(HUMAN) : ITurnControlFactory
activate ITurnControlFactory
create humanTurnControlFactory
ITurnControlFactory -> humanTurnControlFactory2 : <<create>>
activate humanTurnControlFactory2
humanTurnControlFactory2 -->> ITurnControlFactory
deactivate humanTurnControlFactory2
ITurnControlFactory -->> roundControl : humanTurnControlFactory2 : ITurnControlFactory
deactivate ITurnControlFactory
roundControl -> humanTurnControlFactory2 : create() : ITurnControl
activate humanTurnControlFactory2
create turnControl2
humanTurnControlFactory -> turnControl2 : <<create>>
activate turnControl2
turnControl2 -->> humanTurnControlFactory
deactivate turnControl2
humanTurnControlFactory2 -->> roundControl : turnControl2
deactivate humanTurnControlFactory2
roundControl -> turnControl2 : setup(player, clonedTable2, view, false, false) : void
activate turnControl2
turnControl2 -->> roundControl
deactivate turnControl2
roundControl -> turnControl2 : startTurn() : void
activate turnControl2
turnControl2 -> handPanel : setStones(hand.clone()) : void
activate handPanel
handPanel -->> turnControl2
deactivate handPanel
turnControl2 -> view : setBottomPanel(HUMAN_HAND_PANEL) : void
activate view
view -->> turnControl2
deactivate view
turnControl2 -->> roundControl
deactivate turnControl2
view <<-- roundControl
deactivate roundControl
[<<-- view
deactivate view
== End of player A's turn ==
[-> playerPanel
activate playerPanel
playerPanel -> turnControl : endOfTurn() : void
activate turnControl
turnControl -> roundControl : endOfTurn() : void
activate roundControl
roundControl -> roundControl : checkTurn() : void
activate roundControl
roundControl -> clonedTable2 : isValid() : boolean
activate clonedTable2
roundControl <<-- clonedTable2 : true
deactivate clonedTable2
destroy clonedTable2
roundControl -> roundControl : dealStone() : void
activate roundControl
roundControl -> gameHeap : drawStone() : Stone
activate gameHeap
roundControl <<-- gameHeap : stone
deactivate gameHeap
roundControl -> playerAHand : drop(stone) : void
activate playerAHand
roundControl <<-- playerAHand
deactivate playerAHand
' deal stone
roundControl <<-- roundControl
deactivate roundControl
' check turn
roundControl <<-- roundControl
deactivate roundControl
roundControl -> roundControl : prepareTurn() : void
activate roundControl
roundControl -> table : clone()
activate table
create clonedTable3
table -> clonedTable3 : <<create>>
activate clonedTable3
table <<-- clonedTable3
deactivate clonedTable3
roundControl <<-- table : clonedTable3
deactivate table
roundControl -> view : setBottomPanel(START_TURN_PANEL) : void
activate view
roundControl <<-- view
deactivate view
roundControl -> tablePanel : setStoneSets(clonedTable3) : void
activate tablePanel
roundControl <<- tablePanel
deactivate tablePanel
roundControl <<-- roundControl
deactivate roundControl
turnControl <<-- roundControl
deactivate roundControl
playerPanel <<-- turnControl
deactivate turnControl
destroy turnControl
[<<-- playerPanel
deactivate playerPanel
== Initialize player B's 2nd turn ==
[-> view
activate view
view -> roundControl : startTurn() : void
activate roundControl
roundControl -> roundState : getActivePlayer() : Player
activate roundState
roundControl <<-- roundState : playerB
deactivate roundState
roundControl -> playerB : getPlayerSettings() : PlayerSettings
activate playerB
roundControl <<-- playerB : playerBSettings
deactivate playerB
roundControl -> playerBSettings : getTurnControlType() : ITurnControlFactory.Type
activate playerBSettings
roundControl <<-- playerBSettings : HUMAN
deactivate playerBSettings
roundControl -> ITurnControlFactory : getFactory(HUMAN) : ITurnControlFactory
activate ITurnControlFactory
create humanTurnControlFactory3
ITurnControlFactory -> humanTurnControlFactory3 : <<create>>
activate humanTurnControlFactory3
humanTurnControlFactory3 -->> ITurnControlFactory
deactivate humanTurnControlFactory3
ITurnControlFactory -->> roundControl : humanTurnControlFactory3 : ITurnControlFactory
deactivate ITurnControlFactory
roundControl -> humanTurnControlFactory3 : create() : ITurnControl
activate humanTurnControlFactory3
create turnControl3
humanTurnControlFactory3 -> turnControl3 : <<create>>
activate turnControl3
turnControl3 -->> humanTurnControlFactory3
deactivate turnControl3
humanTurnControlFactory3 -->> roundControl : turnControl3
deactivate humanTurnControlFactory3
roundControl -> turnControl3 : setup(player, clonedTable3, view, false, false) : void
activate turnControl3
turnControl3 -->> roundControl
deactivate turnControl3
roundControl -> turnControl3 : startTurn() : void
activate turnControl3
turnControl3 -> handPanel : setStones(hand.clone()) : void
activate handPanel
handPanel -->> turnControl3
deactivate handPanel
turnControl3 -> view : setBottomPanel(HUMAN_HAND_PANEL) : void
activate view
view -->> turnControl3
deactivate view
turnControl3 -->> roundControl
deactivate turnControl3
view <<-- roundControl
deactivate roundControl
[<<-- view
deactivate view
== Player B's three stone set ==
' first stone
[-> handPanel
activate handPanel
handPanel -> turnControl3 : stoneClick(stone2, false) : void
activate turnControl3
turnControl3 -> view : setSelectedStones({stone2}) : void
activate view
turnControl3 <<- view
deactivate view
handPanel <<-- turnControl3
deactivate turnControl3
[<<-- handPanel
deactivate handPanel
' second stone
[-> handPanel
activate handPanel
handPanel -> turnControl3 : stoneClick(stone3, true) : void
activate turnControl3
turnControl3 -> view : setSelectedStones({stone2, stone3}) : void
activate view
turnControl3 <<- view
deactivate view
handPanel <<-- turnControl3
deactivate turnControl3
[<<-- handPanel
deactivate handPanel
' third stone
[-> handPanel
activate handPanel
handPanel -> turnControl3 : stoneClick(stone4, true) : void
activate turnControl3
turnControl3 -> view : setSelectedStones({stone2, stone3, stone4}) : void
activate view
turnControl3 <<- view
deactivate view
handPanel <<-- turnControl3
deactivate turnControl3
[<<-- handPanel
deactivate handPanel
' put down
[-> tablePanel
activate tablePanel
tablePanel -> turnControl3 : tableClick(newPosition2)
activate turnControl3
'pickups
turnControl3 -> turnControl3 : pickUpSelectedStones() : void
activate turnControl3
turnControl3 -> playerBHand : pickUp(stone2) : boolean
activate playerBHand
turnControl3 <<-- playerBHand : true
deactivate playerBHand
turnControl3 -> playerBHand : pickUp(stone3) : boolean
activate playerBHand
turnControl3 <<-- playerBHand : true
deactivate playerBHand
turnControl3 -> playerBHand : pickUp(stone4) : boolean
activate playerBHand
turnControl3 <<-- playerBHand : true
deactivate playerBHand
turnControl3 <<-- turnControl3
deactivate turnControl3
turnControl3 -> clonedTable3 : drop(stoneSet2, newPosition2) : void
activate clonedTable3
turnControl3 <<-- clonedTable3
deactivate clonedTable3
turnControl3 -> tablePanel : setStoneSets(clonedTable3) : void
activate tablePanel
turnControl3 <<- tablePanel
deactivate tablePanel
turnControl3 -> handPanel : setStones(playerBHand) : void
activate handPanel
turnControl3 <<- handPanel
deactivate handPanel
turnControl3 -> view : setSelectedStones({}) : void
activate view
turnControl3 <<- view
deactivate view
tablePanel <<-- turnControl3
deactivate turnControl3
[<<-- tablePanel
deactivate tablePanel
== Player B ends the 2nd turn ==
[-> playerPanel
activate playerPanel
playerPanel -> turnControl3 : endOfTurn() : void
activate turnControl3
turnControl3 -> roundControl : endOfTurn() : void
activate roundControl
roundControl -> roundControl : checkTurn() : void
activate roundControl
roundControl -> clonedTable3 : isValid() : boolean
activate clonedTable3
roundControl <<-- clonedTable3 : true
deactivate clonedTable3
' check turn
roundControl <<-- roundControl
deactivate roundControl
roundControl -> playerBHand : getSize() : int
activate playerBHand
roundControl <<-- playerBHand : 10
deactivate playerBHand
roundControl -> roundControl : prepareTurn() : void
activate roundControl
roundControl -> clonedTable3 : clone()
activate clonedTable3
create clonedTable4
table -> clonedTable4 : <<create>>
activate clonedTable4
table <<-- clonedTable4
deactivate clonedTable4
roundControl <<-- clonedTable3 : clonedTable4
deactivate clonedTable3
roundControl -> view : setBottomPanel(START_TURN_PANEL) : void
activate view
roundControl <<-- view
deactivate view
roundControl -> tablePanel : setStoneSets(clonedTable4) : void
activate tablePanel
roundControl <<- tablePanel
deactivate tablePanel
roundControl <<-- roundControl
deactivate roundControl
turnControl3 <<-- roundControl
deactivate roundControl
playerPanel <<-- turnControl3
deactivate turnControl3
destroy turnControl3
[<<-- playerPanel
deactivate playerPanel
== Initialize player A's 2nd turn ==
[-> view
activate view
view -> roundControl : startTurn() : void
activate roundControl
roundControl -> roundState : getActivePlayer() : Player
activate roundState
roundControl <<-- roundState : playerA
deactivate roundState
roundControl -> playerA : getPlayerSettings() : PlayerSettings
activate playerA
roundControl <<-- playerA : playerASettings
deactivate playerA
roundControl -> playerASettings : getTurnControlType() : ITurnControlFactory.Type
activate playerASettings
roundControl <<-- playerASettings : HUMAN
deactivate playerASettings
roundControl -> ITurnControlFactory : getFactory(HUMAN) : ITurnControlFactory
activate ITurnControlFactory
create humanTurnControlFactory
ITurnControlFactory -> humanTurnControlFactory4 : <<create>>
activate humanTurnControlFactory4
humanTurnControlFactory4 -->> ITurnControlFactory
deactivate humanTurnControlFactory4
ITurnControlFactory -->> roundControl : humanTurnControlFactory4 : ITurnControlFactory
deactivate ITurnControlFactory
roundControl -> humanTurnControlFactory4 : create() : ITurnControl
activate humanTurnControlFactory4
create turnControl4
humanTurnControlFactory -> turnControl4 : <<create>>
activate turnControl4
turnControl4 -->> humanTurnControlFactory
deactivate turnControl4
humanTurnControlFactory4 -->> roundControl : turnControl4
deactivate humanTurnControlFactory4
roundControl -> turnControl4 : setup(player, clonedTable4, view, false, false) : void
activate turnControl4
turnControl4 -->> roundControl
deactivate turnControl4
roundControl -> turnControl4 : startTurn() : void
activate turnControl4
turnControl4 -> handPanel : setStones(hand.clone()) : void
activate handPanel
handPanel -->> turnControl4
deactivate handPanel
turnControl4 -> view : setBottomPanel(HUMAN_HAND_PANEL) : void
activate view
view -->> turnControl4
deactivate view
turnControl4 -->> roundControl
deactivate turnControl4
view <<-- roundControl
deactivate roundControl
[<<-- view
deactivate view
== Player A appends two stones to set ==
[-> handPanel
activate handPanel
handPanel -> turnControl4 : stoneClick(stone5, false) : void
activate turnControl4
turnControl4 -> view : setSelectedStones({stone5}) : void
activate view
turnControl4 <<- view
deactivate view
handPanel <<-- turnControl4
deactivate turnControl4
[<<-- handPanel
deactivate handPanel
[-> handPanel
activate handPanel
handPanel -> turnControl4 : stoneClick(stone6, true) : void
activate turnControl4
turnControl4 -> view : setSelectedStones({stone5, stone6}) : void
activate view
turnControl4 <<- view
deactivate view
handPanel <<-- turnControl4
deactivate turnControl4
[<<-- handPanel
deactivate handPanel
[-> tablePanel
activate tablePanel
tablePanel -> turnControl4 : connectorClick(stoneSet3, true) : void
activate turnControl4
' TODO self calls?
turnControl4 -> turnControl4 : pickUpSelectedStones() : void
activate turnControl4
turnControl4 -> playerAHand : pickUp(stone5) : boolean
activate playerAHand
turnControl4 <<-- playerAHand : true
deactivate playerAHand
turnControl4 -> playerAHand : pickUp(stone6) : boolean
activate playerAHand
turnControl4 <<-- playerAHand : true
deactivate playerAHand
turnControl4 <<-- turnControl4
deactivate turnControl4
turnControl4 -> clonedTable4 : getPosition(stoneSet3) : Position
activate clonedTable4
turnControl4 <<-- clonedTable4 : position2
deactivate clonedTable4
turnControl4 -> clonedTable4 : pickUp(stoneSet3) : boolean
activate clonedTable4
turnControl4 <<-- clonedTable4 : true
deactivate clonedTable4
turnControl4 -> clonedTable4 : drop(joinedStoneSet2, newPosition2) : void
activate clonedTable4
turnControl4 <<-- clonedTable4
deactivate clonedTable4
turnControl4 -> tablePanel : setStoneSets(clonedTable4) : void
activate tablePanel
turnControl4 <<- tablePanel
deactivate tablePanel
turnControl4 -> handPanel : setStones(playerAHand) : void
activate handPanel
turnControl4 <<- handPanel
deactivate handPanel
turnControl4 -> view : setSelectedStones({}) : void
activate view
turnControl4 <<- view
deactivate view
tablePanel <<-- turnControl4
deactivate turnControl4
[<<-- tablePanel
deactivate tablePanel
== Player A ends the 2nd turn ==
[-> playerPanel
activate playerPanel
playerPanel -> turnControl4 : endOfTurn() : void
activate turnControl4
turnControl4 -> roundControl : endOfTurn() : void
activate roundControl
roundControl -> roundControl : checkTurn() : void
activate roundControl
roundControl -> clonedTable4 : isValid() : boolean
activate clonedTable4
roundControl <<-- clonedTable4 : true
deactivate clonedTable4
' check turn
roundControl <<-- roundControl
deactivate roundControl
roundControl -> playerAHand : getSize() : int
activate playerAHand
roundControl <<-- playerAHand : 0
deactivate playerAHand
roundControl -> roundControl : score()
activate roundControl
roundControl -> playerAHand : getSize() : int
activate playerAHand
roundControl <<-- playerAHand : 0
deactivate playerAHand
roundControl -> playerAHand : getStonePoints() : int
activate playerAHand
roundControl <<-- playerAHand : 0
deactivate playerAHand
roundControl -> playerBHand : getSize() : int
activate playerBHand
roundControl <<-- playerBHand : 10
deactivate playerBHand
roundControl -> playerBHand : getStonePoints() : int
activate playerBHand
roundControl <<-- playerBHand : 42
deactivate playerBHand
roundControl <<-- roundControl
deactivate roundControl
[<- roundControl : endOfRoundEvent.emit(score)
[-->> roundControl
turnControl4 <<-- roundControl
deactivate roundControl
playerPanel <<-- turnControl4
deactivate turnControl4
[<<-- playerPanel
deactivate playerPanel
@enduml
@startuml img/sequence_01.png
hide footbox
participant view as "view\n: View"
participant handPanel as "handPanel\n: HandPanel"
participant roundControl as "roundControl\n: RoundControl"
participant ITurnControlFactory
participant humanTurnControlFactory as "humanTurnControlFactory\n: ITurnControlFactory"
participant turnControl as "turnControl\n: HumanTurnControl"
participant roundState as "roundState\n: RoundState"
participant playerB as "playerB\n: Player"
participant playerBSettings as "playerBSettings\n: PlayerSettings"
== Initialize player B's turn ==
[-> view
activate view
view -> roundControl : startTurn() : void
activate roundControl
roundControl -> roundState : getActivePlayer() : Player
activate roundState
roundControl <<-- roundState : playerB
deactivate roundState
roundControl -> playerB : getPlayerSettings() : PlayerSettings
activate playerB
roundControl <<-- playerB : playerBSettings
deactivate playerB
roundControl -> playerBSettings : getTurnControlType() : ITurnControlFactory.Type
activate playerBSettings
roundControl <<-- playerBSettings : HUMAN
deactivate playerBSettings
roundControl -> ITurnControlFactory : getFactory(HUMAN) : ITurnControlFactory
activate ITurnControlFactory
create humanTurnControlFactory
ITurnControlFactory -> humanTurnControlFactory : <<create>>
activate humanTurnControlFactory
humanTurnControlFactory -->> ITurnControlFactory
deactivate humanTurnControlFactory
ITurnControlFactory -->> roundControl : humanTurnControlFactory : ITurnControlFactory
deactivate ITurnControlFactory
roundControl -> humanTurnControlFactory : create() : ITurnControl
activate humanTurnControlFactory
create turnControl
humanTurnControlFactory -> turnControl : <<create>>
activate turnControl
turnControl -->> humanTurnControlFactory
deactivate turnControl
humanTurnControlFactory -->> roundControl : turnControl
deactivate humanTurnControlFactory
' roundControl -> table : clone()
' activate table
' create clonedTable
' table -> clonedTable : <<create>>
' activate clonedTable
' table <<-- clonedTable
' deactivate clonedTable
' roundControl <<-- table : clonedTable
' deactivate table
roundControl -> turnControl : setup(player, clonedTable, view, false, false) : void
activate turnControl
turnControl -->> roundControl
deactivate turnControl
roundControl -> turnControl : startTurn() : void
activate turnControl
turnControl -> handPanel : setStones(hand.clone()) : void
activate handPanel
handPanel -->> turnControl
deactivate handPanel
turnControl -> view : setBottomPanel(HUMAN_HAND_PANEL) : void
activate view
view -->> turnControl
deactivate view
turnControl -->> roundControl
deactivate turnControl
view <<-- roundControl
deactivate roundControl
[<<-- view
deactivate view
@enduml
@startuml img/sequence_02.png
hide footbox
participant view as "view\n: View"
participant handPanel as "handPanel\n: HandPanel"
participant playerPanel as "playerPanel\n: PlayerPanel"
participant tablePanel as "tablePanel\n: TablePanel"
participant turnControl as "turnControl\n: HumanTurnControl"
participant clonedTable as "clonedTable\n: Table"
participant playerBHand as "playerBHand\n: Hand"
== Player B appends stone to set ==
[-> handPanel
activate handPanel
handPanel -> turnControl : stoneClick(stone1, false) : void
activate turnControl
turnControl -> view : setSelectedStones({stone1}) : void
activate view
turnControl <<- view
deactivate view
handPanel <<-- turnControl
deactivate turnControl
[<<-- handPanel
deactivate handPanel
[-> tablePanel
activate tablePanel
tablePanel -> turnControl : connectorClick(stoneSet1, true) : void
activate turnControl
' TODO self calls?
turnControl -> turnControl : pickUpSelectedStones() : void
activate turnControl
turnControl -> playerBHand : pickUp(stone1) : boolean
activate playerBHand
turnControl <<-- playerBHand : true
deactivate playerBHand
turnControl <<-- turnControl
deactivate turnControl
turnControl -> clonedTable : getPosition(stoneSet1) : Position
activate clonedTable
turnControl <<-- clonedTable : position
deactivate clonedTable
turnControl -> clonedTable : pickUp(stoneSet1) : boolean
activate clonedTable
turnControl <<-- clonedTable : true
deactivate clonedTable
turnControl -> clonedTable : drop(joinedStoneSet, newPosition) : void
activate clonedTable
turnControl <<-- clonedTable
deactivate clonedTable
turnControl -> tablePanel : setStoneSets(clonedTable) : void
activate tablePanel
turnControl <<- tablePanel
deactivate tablePanel
turnControl -> handPanel : setStones(playerBHand) : void
activate handPanel
turnControl <<- handPanel
deactivate handPanel
turnControl -> view : setSelectedStones({}) : void
activate view
turnControl <<- view
deactivate view
tablePanel <<-- turnControl
deactivate turnControl
[<<-- tablePanel
deactivate tablePanel
@enduml
@startuml img/sequence_03.png
hide footbox
== End of player B's turn ==
participant view as "view\n: View"
participant playerPanel as "playerPanel\n: PlayerPanel"
participant tablePanel as "tablePanel\n: TablePanel"
participant roundControl as "roundControl\n: RoundControl"
participant turnControl as "turnControl\n: HumanTurnControl"
participant table as "table\n: Table"
participant clonedTable as "clonedTable\n: Table"
participant clonedTable2 as "clonedTable2\n: Table"
participant playerBHand as "playerBHand\n: Hand"
participant gameHeap as "gameHeap\n: StoneHeap"
[-> playerPanel
activate playerPanel
playerPanel -> turnControl : endOfTurn() : void
activate turnControl
turnControl -> roundControl : endOfTurn() : void
activate roundControl
roundControl -> roundControl : checkTurn() : void
activate roundControl
roundControl -> clonedTable : isValid() : boolean
activate clonedTable
roundControl <<-- clonedTable : false
deactivate clonedTable
destroy clonedTable
roundControl -> roundControl : rejectMove() : void
activate roundControl
roundControl -> gameHeap : putBack({stone1}) : void
activate gameHeap
roundControl <<-- gameHeap
deactivate gameHeap
loop 4 times
roundControl -> gameHeap : drawStone() : Stone
activate gameHeap
roundControl <<-- gameHeap : stone
deactivate gameHeap
roundControl -> playerBHand : drop(stone) : void
activate playerBHand
roundControl <<-- playerBHand
deactivate playerBHand
end
' reject move
roundControl <<-- roundControl
deactivate roundControl
' check turn
roundControl <<-- roundControl
deactivate roundControl
roundControl -> roundControl : prepareTurn() : void
activate roundControl
roundControl -> table : clone()
activate table
create clonedTable2
table -> clonedTable2 : <<create>>
activate clonedTable2
table <<-- clonedTable2
deactivate clonedTable2
roundControl <<-- table : clonedTable2
deactivate table
roundControl -> view : setBottomPanel(START_TURN_PANEL) : void
activate view
roundControl <<-- view
deactivate view
roundControl -> tablePanel : setStoneSets(clonedTable2) : void
activate tablePanel
roundControl <<- tablePanel
deactivate tablePanel
roundControl <<-- roundControl
deactivate roundControl
turnControl <<-- roundControl
deactivate roundControl
playerPanel <<-- turnControl
deactivate turnControl
destroy turnControl
[<<-- playerPanel
deactivate playerPanel
@enduml
@startuml img/sequence_04.png
hide footbox
participant view as "view\n: View"
participant handPanel as "handPanel\n: HandPanel"
participant roundControl as "roundControl\n: RoundControl"
participant ITurnControlFactory
participant humanTurnControlFactory as "humanTurnControlFactory\n: ITurnControlFactory"
participant humanTurnControlFactory2 as "humanTurnControlFactory\n: ITurnControlFactory"
participant turnControl2 as "turnControl\n: HumanTurnControl"
participant roundState as "roundState\n: RoundState"
participant clonedTable2 as "clonedTable2\n: Table"
participant playerA as "playerA\n: Player"
participant playerASettings as "playerASettings\n: PlayerSettings"
== Initialize player A's turn ==
[-> view
activate view
view -> roundControl : startTurn() : void
activate roundControl
roundControl -> roundState : getActivePlayer() : Player
activate roundState
roundControl <<-- roundState : playerA
deactivate roundState
roundControl -> playerA : getPlayerSettings() : PlayerSettings
activate playerA
roundControl <<-- playerA : playerASettings
deactivate playerA
roundControl -> playerASettings : getTurnControlType() : ITurnControlFactory.Type
activate playerASettings
roundControl <<-- playerASettings : HUMAN
deactivate playerASettings
roundControl -> ITurnControlFactory : getFactory(HUMAN) : ITurnControlFactory
activate ITurnControlFactory
create humanTurnControlFactory
ITurnControlFactory -> humanTurnControlFactory2 : <<create>>
activate humanTurnControlFactory2
humanTurnControlFactory2 -->> ITurnControlFactory
deactivate humanTurnControlFactory2
ITurnControlFactory -->> roundControl : humanTurnControlFactory2 : ITurnControlFactory
deactivate ITurnControlFactory
roundControl -> humanTurnControlFactory2 : create() : ITurnControl
activate humanTurnControlFactory2
create turnControl2
humanTurnControlFactory -> turnControl2 : <<create>>
activate turnControl2
turnControl2 -->> humanTurnControlFactory
deactivate turnControl2
humanTurnControlFactory2 -->> roundControl : turnControl2
deactivate humanTurnControlFactory2
roundControl -> turnControl2 : setup(player, clonedTable2, view, false, false) : void
activate turnControl2
turnControl2 -->> roundControl
deactivate turnControl2
roundControl -> turnControl2 : startTurn() : void
activate turnControl2
turnControl2 -> handPanel : setStones(hand.clone()) : void
activate handPanel
handPanel -->> turnControl2
deactivate handPanel
turnControl2 -> view : setBottomPanel(HUMAN_HAND_PANEL) : void
activate view
view -->> turnControl2
deactivate view
turnControl2 -->> roundControl
deactivate turnControl2
view <<-- roundControl
deactivate roundControl
[<<-- view
deactivate view
@enduml
@startuml img/sequence_05.png
hide footbox
participant view as "view\n: View"
participant playerPanel as "playerPanel\n: PlayerPanel"
participant tablePanel as "tablePanel\n: TablePanel"
participant roundControl as "roundControl\n: RoundControl"
participant turnControl as "turnControl\n: HumanTurnControl"
participant table as "table\n: Table"
participant clonedTable2 as "clonedTable2\n: Table"
participant clonedTable3 as "clonedTable3\n: Table"
participant playerAHand as "playerAHand\n: Hand"
participant gameHeap as "gameHeap\n: StoneHeap"
== End of player A's turn ==
[-> playerPanel
activate playerPanel
playerPanel -> turnControl : endOfTurn() : void
activate turnControl
turnControl -> roundControl : endOfTurn() : void
activate roundControl
roundControl -> roundControl : checkTurn() : void
activate roundControl
roundControl -> clonedTable2 : isValid() : boolean
activate clonedTable2
roundControl <<-- clonedTable2 : true
deactivate clonedTable2
destroy clonedTable2
roundControl -> roundControl : dealStone() : void
activate roundControl
roundControl -> gameHeap : drawStone() : Stone
activate gameHeap
roundControl <<-- gameHeap : stone
deactivate gameHeap
roundControl -> playerAHand : drop(stone) : void
activate playerAHand
roundControl <<-- playerAHand
deactivate playerAHand
' deal stone
roundControl <<-- roundControl
deactivate roundControl
' check turn
roundControl <<-- roundControl
deactivate roundControl
roundControl -> roundControl : prepareTurn() : void
activate roundControl
roundControl -> table : clone()
activate table
create clonedTable3
table -> clonedTable3 : <<create>>
activate clonedTable3
table <<-- clonedTable3
deactivate clonedTable3
roundControl <<-- table : clonedTable3
deactivate table
roundControl -> view : setBottomPanel(START_TURN_PANEL) : void
activate view
roundControl <<-- view
deactivate view
roundControl -> tablePanel : setStoneSets(clonedTable3) : void
activate tablePanel
roundControl <<- tablePanel
deactivate tablePanel
roundControl <<-- roundControl
deactivate roundControl
turnControl <<-- roundControl
deactivate roundControl
playerPanel <<-- turnControl
deactivate turnControl
destroy turnControl
[<<-- playerPanel
deactivate playerPanel
@enduml
@startuml img/sequence_06.png
hide footbox
participant view as "view\n: View"
participant handPanel as "handPanel\n: HandPanel"
participant roundControl as "roundControl\n: RoundControl"
participant ITurnControlFactory
participant humanTurnControlFactory3 as "humanTurnControlFactory\n: ITurnControlFactory"
participant turnControl3 as "turnControl\n: HumanTurnControl"
participant roundState as "roundState\n: RoundState"
participant clonedTable3 as "clonedTable3\n: Table"
participant playerB as "playerB\n: Player"
participant playerBSettings as "playerBSettings\n: PlayerSettings"
== Initialize player B's 2nd turn ==
[-> view
activate view
view -> roundControl : startTurn() : void
activate roundControl
roundControl -> roundState : getActivePlayer() : Player
activate roundState
roundControl <<-- roundState : playerB
deactivate roundState
roundControl -> playerB : getPlayerSettings() : PlayerSettings
activate playerB
roundControl <<-- playerB : playerBSettings
deactivate playerB
roundControl -> playerBSettings : getTurnControlType() : ITurnControlFactory.Type
activate playerBSettings
roundControl <<-- playerBSettings : HUMAN
deactivate playerBSettings
roundControl -> ITurnControlFactory : getFactory(HUMAN) : ITurnControlFactory
activate ITurnControlFactory
create humanTurnControlFactory3
ITurnControlFactory -> humanTurnControlFactory3 : <<create>>
activate humanTurnControlFactory3
humanTurnControlFactory3 -->> ITurnControlFactory
deactivate humanTurnControlFactory3
ITurnControlFactory -->> roundControl : humanTurnControlFactory3 : ITurnControlFactory
deactivate ITurnControlFactory
roundControl -> humanTurnControlFactory3 : create() : ITurnControl
activate humanTurnControlFactory3
create turnControl3
humanTurnControlFactory3 -> turnControl3 : <<create>>
activate turnControl3
turnControl3 -->> humanTurnControlFactory3
deactivate turnControl3
humanTurnControlFactory3 -->> roundControl : turnControl3
deactivate humanTurnControlFactory3
roundControl -> turnControl3 : setup(player, clonedTable3, view, false, false) : void
activate turnControl3
turnControl3 -->> roundControl
deactivate turnControl3
roundControl -> turnControl3 : startTurn() : void
activate turnControl3
turnControl3 -> handPanel : setStones(hand.clone()) : void
activate handPanel
handPanel -->> turnControl3
deactivate handPanel
turnControl3 -> view : setBottomPanel(HUMAN_HAND_PANEL) : void
activate view
view -->> turnControl3
deactivate view
turnControl3 -->> roundControl
deactivate turnControl3
view <<-- roundControl
deactivate roundControl
[<<-- view
deactivate view
@enduml
@startuml img/sequence_07.png
hide footbox
participant view as "view\n: View"
participant handPanel as "handPanel\n: HandPanel"
participant tablePanel as "tablePanel\n: TablePanel"
participant turnControl3 as "turnControl\n: HumanTurnControl"
participant table as "table\n: Table"
participant clonedTable3 as "clonedTable3\n: Table"
participant playerBHand as "playerBHand\n: Hand"
== Player B's three stone set ==
' first stone
[-> handPanel
activate handPanel
handPanel -> turnControl3 : stoneClick(stone2, false) : void
activate turnControl3
turnControl3 -> view : setSelectedStones({stone2}) : void
activate view
turnControl3 <<- view
deactivate view
handPanel <<-- turnControl3
deactivate turnControl3
[<<-- handPanel
deactivate handPanel
' second stone
[-> handPanel
activate handPanel
handPanel -> turnControl3 : stoneClick(stone3, true) : void
activate turnControl3
turnControl3 -> view : setSelectedStones({stone2, stone3}) : void
activate view
turnControl3 <<- view
deactivate view
handPanel <<-- turnControl3
deactivate turnControl3
[<<-- handPanel
deactivate handPanel
' third stone
[-> handPanel
activate handPanel
handPanel -> turnControl3 : stoneClick(stone4, true) : void
activate turnControl3
turnControl3 -> view : setSelectedStones({stone2, stone3, stone4}) : void
activate view
turnControl3 <<- view
deactivate view
handPanel <<-- turnControl3
deactivate turnControl3
[<<-- handPanel
deactivate handPanel
' put down
[-> tablePanel
activate tablePanel
tablePanel -> turnControl3 : tableClick(newPosition2)
activate turnControl3
'pickups
turnControl3 -> turnControl3 : pickUpSelectedStones() : void
activate turnControl3
turnControl3 -> playerBHand : pickUp(stone2) : boolean
activate playerBHand
turnControl3 <<-- playerBHand : true
deactivate playerBHand
turnControl3 -> playerBHand : pickUp(stone3) : boolean
activate playerBHand
turnControl3 <<-- playerBHand : true
deactivate playerBHand
turnControl3 -> playerBHand : pickUp(stone4) : boolean
activate playerBHand
turnControl3 <<-- playerBHand : true
deactivate playerBHand
turnControl3 <<-- turnControl3
deactivate turnControl3
turnControl3 -> clonedTable3 : drop(stoneSet2, newPosition2) : void
activate clonedTable3
turnControl3 <<-- clonedTable3
deactivate clonedTable3
turnControl3 -> tablePanel : setStoneSets(clonedTable3) : void
activate tablePanel
turnControl3 <<- tablePanel
deactivate tablePanel
turnControl3 -> handPanel : setStones(playerBHand) : void
activate handPanel
turnControl3 <<- handPanel
deactivate handPanel
turnControl3 -> view : setSelectedStones({}) : void
activate view
turnControl3 <<- view
deactivate view
tablePanel <<-- turnControl3
deactivate turnControl3
[<<-- tablePanel
deactivate tablePanel
@enduml
@startuml img/sequence_08.png
hide footbox
participant view as "view\n: View"
participant playerPanel as "playerPanel\n: PlayerPanel"
participant tablePanel as "tablePanel\n: TablePanel"
participant roundControl as "roundControl\n: RoundControl"
participant turnControl3 as "turnControl\n: HumanTurnControl"
participant table as "table\n: Table"
participant clonedTable3 as "clonedTable3\n: Table"
participant clonedTable4 as "clonedTable4\n: Table"
participant playerBHand as "playerBHand\n: Hand"
== Player B ends the 2nd turn ==
[-> playerPanel
activate playerPanel
playerPanel -> turnControl3 : endOfTurn() : void
activate turnControl3
turnControl3 -> roundControl : endOfTurn() : void
activate roundControl
roundControl -> roundControl : checkTurn() : void
activate roundControl
roundControl -> clonedTable3 : isValid() : boolean
activate clonedTable3
roundControl <<-- clonedTable3 : true
deactivate clonedTable3
' check turn
roundControl <<-- roundControl
deactivate roundControl
roundControl -> playerBHand : getSize() : int
activate playerBHand
roundControl <<-- playerBHand : 10
deactivate playerBHand
roundControl -> roundControl : prepareTurn() : void
activate roundControl
roundControl -> clonedTable3 : clone()
activate clonedTable3
create clonedTable4
table -> clonedTable4 : <<create>>
activate clonedTable4
table <<-- clonedTable4
deactivate clonedTable4
roundControl <<-- clonedTable3 : clonedTable4
deactivate clonedTable3
roundControl -> view : setBottomPanel(START_TURN_PANEL) : void
activate view
roundControl <<-- view
deactivate view
roundControl -> tablePanel : setStoneSets(clonedTable4) : void
activate tablePanel
roundControl <<- tablePanel
deactivate tablePanel
roundControl <<-- roundControl
deactivate roundControl
turnControl3 <<-- roundControl
deactivate roundControl
playerPanel <<-- turnControl3
deactivate turnControl3
destroy turnControl3
[<<-- playerPanel
deactivate playerPanel
@enduml
@startuml img/sequence_09.png
hide footbox
participant view as "view\n: View"
participant handPanel as "handPanel\n: HandPanel"
participant roundControl as "roundControl\n: RoundControl"
participant ITurnControlFactory
participant humanTurnControlFactory as "humanTurnControlFactory\n: ITurnControlFactory"
participant humanTurnControlFactory4 as "humanTurnControlFactory\n: ITurnControlFactory"
participant turnControl4 as "turnControl\n: HumanTurnControl"
participant roundState as "roundState\n: RoundState"
participant clonedTable4 as "clonedTable4\n: Table"
participant playerA as "playerA\n: Player"
participant playerASettings as "playerASettings\n: PlayerSettings"
== Initialize player A's 2nd turn ==
[-> view
activate view
view -> roundControl : startTurn() : void
activate roundControl
roundControl -> roundState : getActivePlayer() : Player
activate roundState
roundControl <<-- roundState : playerA
deactivate roundState
roundControl -> playerA : getPlayerSettings() : PlayerSettings
activate playerA
roundControl <<-- playerA : playerASettings
deactivate playerA
roundControl -> playerASettings : getTurnControlType() : ITurnControlFactory.Type
activate playerASettings
roundControl <<-- playerASettings : HUMAN
deactivate playerASettings
roundControl -> ITurnControlFactory : getFactory(HUMAN) : ITurnControlFactory
activate ITurnControlFactory
create humanTurnControlFactory
ITurnControlFactory -> humanTurnControlFactory4 : <<create>>
activate humanTurnControlFactory4
humanTurnControlFactory4 -->> ITurnControlFactory
deactivate humanTurnControlFactory4
ITurnControlFactory -->> roundControl : humanTurnControlFactory4 : ITurnControlFactory
deactivate ITurnControlFactory
roundControl -> humanTurnControlFactory4 : create() : ITurnControl
activate humanTurnControlFactory4
create turnControl4
humanTurnControlFactory -> turnControl4 : <<create>>
activate turnControl4
turnControl4 -->> humanTurnControlFactory
deactivate turnControl4
humanTurnControlFactory4 -->> roundControl : turnControl4
deactivate humanTurnControlFactory4
roundControl -> turnControl4 : setup(player, clonedTable4, view, false, false) : void
activate turnControl4
turnControl4 -->> roundControl
deactivate turnControl4
roundControl -> turnControl4 : startTurn() : void
activate turnControl4
turnControl4 -> handPanel : setStones(hand.clone()) : void
activate handPanel
handPanel -->> turnControl4
deactivate handPanel
turnControl4 -> view : setBottomPanel(HUMAN_HAND_PANEL) : void
activate view
view -->> turnControl4
deactivate view
turnControl4 -->> roundControl
deactivate turnControl4
view <<-- roundControl
deactivate roundControl
[<<-- view
deactivate view
@enduml
@startuml img/sequence_10.png
hide footbox
participant view as "view\n: View"
participant handPanel as "handPanel\n: HandPanel"
participant tablePanel as "tablePanel\n: TablePanel"
participant turnControl4 as "turnControl\n: HumanTurnControl"
participant clonedTable4 as "clonedTable4\n: Table"
participant playerAHand as "playerAHand\n: Hand"
== Player A appends two stones to set ==
[-> handPanel
activate handPanel
handPanel -> turnControl4 : stoneClick(stone5, false) : void
activate turnControl4
turnControl4 -> view : setSelectedStones({stone5}) : void
activate view
turnControl4 <<- view
deactivate view
handPanel <<-- turnControl4
deactivate turnControl4
[<<-- handPanel
deactivate handPanel
[-> handPanel
activate handPanel
handPanel -> turnControl4 : stoneClick(stone6, true) : void
activate turnControl4
turnControl4 -> view : setSelectedStones({stone5, stone6}) : void
activate view
turnControl4 <<- view
deactivate view
handPanel <<-- turnControl4
deactivate turnControl4
[<<-- handPanel
deactivate handPanel
[-> tablePanel
activate tablePanel
tablePanel -> turnControl4 : connectorClick(stoneSet3, true) : void
activate turnControl4
' TODO self calls?
turnControl4 -> turnControl4 : pickUpSelectedStones() : void
activate turnControl4
turnControl4 -> playerAHand : pickUp(stone5) : boolean
activate playerAHand
turnControl4 <<-- playerAHand : true
deactivate playerAHand
turnControl4 -> playerAHand : pickUp(stone6) : boolean
activate playerAHand
turnControl4 <<-- playerAHand : true
deactivate playerAHand
turnControl4 <<-- turnControl4
deactivate turnControl4
turnControl4 -> clonedTable4 : getPosition(stoneSet3) : Position
activate clonedTable4
turnControl4 <<-- clonedTable4 : position2
deactivate clonedTable4
turnControl4 -> clonedTable4 : pickUp(stoneSet3) : boolean
activate clonedTable4
turnControl4 <<-- clonedTable4 : true
deactivate clonedTable4
turnControl4 -> clonedTable4 : drop(joinedStoneSet2, newPosition2) : void
activate clonedTable4
turnControl4 <<-- clonedTable4
deactivate clonedTable4
turnControl4 -> tablePanel : setStoneSets(clonedTable4) : void
activate tablePanel
turnControl4 <<- tablePanel
deactivate tablePanel
turnControl4 -> handPanel : setStones(playerAHand) : void
activate handPanel
turnControl4 <<- handPanel
deactivate handPanel
turnControl4 -> view : setSelectedStones({}) : void
activate view
turnControl4 <<- view
deactivate view
tablePanel <<-- turnControl4
deactivate turnControl4
[<<-- tablePanel
deactivate tablePanel
@enduml
@startuml img/sequence_11.png
hide footbox
participant playerPanel as "playerPanel\n: PlayerPanel"
participant roundControl as "roundControl\n: RoundControl"
participant turnControl4 as "turnControl\n: HumanTurnControl"
participant clonedTable4 as "clonedTable4\n: Table"
participant playerAHand as "playerAHand\n: Hand"
participant playerBHand as "playerBHand\n: Hand"
== Player A ends the 2nd turn ==
[-> playerPanel
activate playerPanel
playerPanel -> turnControl4 : endOfTurn() : void
activate turnControl4
turnControl4 -> roundControl : endOfTurn() : void
activate roundControl
roundControl -> roundControl : checkTurn() : void
activate roundControl
roundControl -> clonedTable4 : isValid() : boolean
activate clonedTable4
roundControl <<-- clonedTable4 : true
deactivate clonedTable4
' check turn
roundControl <<-- roundControl
deactivate roundControl
roundControl -> playerAHand : getSize() : int
activate playerAHand
roundControl <<-- playerAHand : 0
deactivate playerAHand
roundControl -> roundControl : score()
activate roundControl
roundControl -> playerAHand : getSize() : int
activate playerAHand
roundControl <<-- playerAHand : 0
deactivate playerAHand
roundControl -> playerAHand : getStonePoints() : int
activate playerAHand
roundControl <<-- playerAHand : 0
deactivate playerAHand
roundControl -> playerBHand : getSize() : int
activate playerBHand
roundControl <<-- playerBHand : 10
deactivate playerBHand
roundControl -> playerBHand : getStonePoints() : int
activate playerBHand
roundControl <<-- playerBHand : 42
deactivate playerBHand
roundControl <<-- roundControl
deactivate roundControl
[<- roundControl : endOfRoundEvent.emit(score)
[-->> roundControl
turnControl4 <<-- roundControl
deactivate roundControl
playerPanel <<-- turnControl4
deactivate turnControl4
[<<-- playerPanel
deactivate playerPanel
@enduml