Compare commits
1 commit
b1a308ce89
...
a1a087338b
Author | SHA1 | Date | |
---|---|---|---|
a1a087338b |
1 changed files with 19 additions and 28 deletions
|
@ -28,16 +28,14 @@ public class MatchQueueService {
|
||||||
FoundCallback foundCallback,
|
FoundCallback foundCallback,
|
||||||
QueuedCallback queuedCallback,
|
QueuedCallback queuedCallback,
|
||||||
AbortCallback abortCallback,
|
AbortCallback abortCallback,
|
||||||
EstablishedCallback establishedCallback
|
EstablishedCallback establishedCallback) {
|
||||||
) {
|
|
||||||
queue.add(player);
|
queue.add(player);
|
||||||
confirmationCallbacks.put(player, new ConfirmationCallbacks(
|
confirmationCallbacks.put(player, new ConfirmationCallbacks(
|
||||||
foundCallback,
|
foundCallback,
|
||||||
queuedCallback,
|
queuedCallback,
|
||||||
abortCallback,
|
abortCallback,
|
||||||
establishedCallback,
|
establishedCallback,
|
||||||
this::onRequeue
|
this::onRequeue));
|
||||||
));
|
|
||||||
tryMatching();
|
tryMatching();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,12 +45,11 @@ public class MatchQueueService {
|
||||||
FoundCallback foundCallback,
|
FoundCallback foundCallback,
|
||||||
QueuedCallback queuedCallback,
|
QueuedCallback queuedCallback,
|
||||||
AbortCallback abortCallback,
|
AbortCallback abortCallback,
|
||||||
EstablishedCallback establishedCallback
|
EstablishedCallback establishedCallback) {
|
||||||
){
|
|
||||||
abortCallback.call(player, matchId);
|
abortCallback.call(player, matchId);
|
||||||
try {
|
try {
|
||||||
queuedCallback.call(player);
|
queuedCallback.call(player);
|
||||||
} catch (IOException ignored){
|
} catch (IOException ignored) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
queuePlayer(player, foundCallback, queuedCallback, abortCallback, establishedCallback);
|
queuePlayer(player, foundCallback, queuedCallback, abortCallback, establishedCallback);
|
||||||
|
@ -68,10 +65,10 @@ public class MatchQueueService {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Player> playersToUnqueue = new ArrayList<>();
|
List<Player> loopQueue = new ArrayList<>(queue);
|
||||||
for (int i = 0; i < queue.size() / REQUIRED_PLAYER_COUNT; i++) {
|
for (int i = 0; i < loopQueue.size() / REQUIRED_PLAYER_COUNT; i++) {
|
||||||
Player player1 = queue.get(REQUIRED_PLAYER_COUNT * i);
|
Player player1 = loopQueue.get(REQUIRED_PLAYER_COUNT * i);
|
||||||
Player player2 = queue.get(REQUIRED_PLAYER_COUNT * i + 1);
|
Player player2 = loopQueue.get(REQUIRED_PLAYER_COUNT * i + 1);
|
||||||
|
|
||||||
ConfirmationCallbacks player1Callbacks = confirmationCallbacks.get(player1);
|
ConfirmationCallbacks player1Callbacks = confirmationCallbacks.get(player1);
|
||||||
ConfirmationCallbacks player2Callbacks = confirmationCallbacks.get(player2);
|
ConfirmationCallbacks player2Callbacks = confirmationCallbacks.get(player2);
|
||||||
|
@ -80,22 +77,17 @@ public class MatchQueueService {
|
||||||
player1,
|
player1,
|
||||||
player2,
|
player2,
|
||||||
player1Callbacks,
|
player1Callbacks,
|
||||||
player2Callbacks
|
player2Callbacks);
|
||||||
);
|
|
||||||
sentMatchFound(
|
sentMatchFound(
|
||||||
match,
|
match,
|
||||||
player1,
|
player1,
|
||||||
player2,
|
player2,
|
||||||
player1Callbacks,
|
player1Callbacks,
|
||||||
player2Callbacks
|
player2Callbacks);
|
||||||
);
|
|
||||||
|
|
||||||
playersToUnqueue.add(player1);
|
|
||||||
playersToUnqueue.add(player2);
|
|
||||||
}
|
}
|
||||||
|
if (queue.size() > REQUIRED_PLAYER_COUNT) {
|
||||||
for (Player player : playersToUnqueue) {
|
tryMatching();
|
||||||
queue.remove(player);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,11 +96,13 @@ public class MatchQueueService {
|
||||||
Player player1,
|
Player player1,
|
||||||
Player player2,
|
Player player2,
|
||||||
ConfirmationCallbacks player1Callbacks,
|
ConfirmationCallbacks player1Callbacks,
|
||||||
ConfirmationCallbacks player2Callbacks
|
ConfirmationCallbacks player2Callbacks) {
|
||||||
) {
|
|
||||||
boolean player1disconnected = setMatchFoundToPlayer(player1, player1Callbacks.getFoundCallback(), match);
|
boolean player1disconnected = setMatchFoundToPlayer(player1, player1Callbacks.getFoundCallback(), match);
|
||||||
boolean player2disconnected = setMatchFoundToPlayer(player2, player2Callbacks.getFoundCallback(), match);
|
boolean player2disconnected = setMatchFoundToPlayer(player2, player2Callbacks.getFoundCallback(), match);
|
||||||
|
|
||||||
|
queue.remove(player1);
|
||||||
|
queue.remove(player2);
|
||||||
|
|
||||||
if (!player1disconnected && !player2disconnected) {
|
if (!player1disconnected && !player2disconnected) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -120,8 +114,7 @@ public class MatchQueueService {
|
||||||
player2Callbacks.getFoundCallback(),
|
player2Callbacks.getFoundCallback(),
|
||||||
player2Callbacks.getQueuedCallback(),
|
player2Callbacks.getQueuedCallback(),
|
||||||
player2Callbacks.getAbortCallback(),
|
player2Callbacks.getAbortCallback(),
|
||||||
player2Callbacks.getEstablishedCallback()
|
player2Callbacks.getEstablishedCallback());
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (player2disconnected && match.getPlayer1State() != PlayerMatchConfirmState.ABORTED) {
|
if (player2disconnected && match.getPlayer1State() != PlayerMatchConfirmState.ABORTED) {
|
||||||
|
@ -131,8 +124,7 @@ public class MatchQueueService {
|
||||||
player1Callbacks.getFoundCallback(),
|
player1Callbacks.getFoundCallback(),
|
||||||
player1Callbacks.getQueuedCallback(),
|
player1Callbacks.getQueuedCallback(),
|
||||||
player1Callbacks.getAbortCallback(),
|
player1Callbacks.getAbortCallback(),
|
||||||
player1Callbacks.getEstablishedCallback()
|
player1Callbacks.getEstablishedCallback());
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -142,8 +134,7 @@ public class MatchQueueService {
|
||||||
player,
|
player,
|
||||||
match.getMatchId(),
|
match.getMatchId(),
|
||||||
match.getCreated(),
|
match.getCreated(),
|
||||||
UnconfirmedMatch.TTL
|
UnconfirmedMatch.TTL);
|
||||||
);
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue