@startuml
actor Player order 1
actor DiscoveryServer order 2
actor MasterLobbyServer order 3
actor LobbyActor order 4

box "Client" #LightGreen
	participant Player
end box

box "Server" #LightBlue
	participant DiscoveryServer
	participant MasterLobbyServer
	participant LobbyActor
end box

Player ->> MasterLobbyServer : GET Lobby/?setting&&friendsList
activate MasterLobbyServer
create LobbyActor
MasterLobbyServer ->> LobbyActor : new
LobbyActor --> MasterLobbyServer : ACK
MasterLobbyServer ->> LobbyActor : Setting(setting)
LobbyActor --> MasterLobbyServer : ACK
LobbyActor --> Player : Hello()
MasterLobbyServer --> DiscoveryServer : Invite(friendsList, LobbyRef)
deactivate MasterLobbyServer
activate DiscoveryServer
DiscoveryServer --> Player : InviteToLobby(LobbyRef)
deactivate DiscoveryServer
activate Player
alt Player Accept
 Player --> LobbyActor : Subscribe(self)
else Player Not Accept
  Player --> LobbyActor: Refuse(self)
end
deactivate Player

== STARTING GAME ==
LobbyActor --> Player : WaitingState()
LobbyActor --> MasterLobbyServer : SubscribeLobby(GameTypes)
@enduml