aboutsummaryrefslogtreecommitdiff
path: root/src/core/session.cc
diff options
context:
space:
mode:
authorMistivia <i@mistivia.com>2025-01-15 23:43:31 +0800
committerMistivia <i@mistivia.com>2025-01-15 23:43:31 +0800
commit4fa1f4f1ab223bfca23eda8a68c091ed871ab35f (patch)
tree2bfd828a575dc85dc72eb912991e739ced108090 /src/core/session.cc
parent4da382953c830a61ae24ccbe95c4241db8788269 (diff)
fix draft bug
Diffstat (limited to 'src/core/session.cc')
-rw-r--r--src/core/session.cc15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/core/session.cc b/src/core/session.cc
index 2b10e9f..4caecf5 100644
--- a/src/core/session.cc
+++ b/src/core/session.cc
@@ -1,7 +1,6 @@
#include "core/session.h"
-#include <exception>
-#include <random>
+#include <algorithm>
static std::map<std::string, Arc<Session>> session_map;
static std::mutex session_map_lock;
@@ -163,9 +162,15 @@ void Session::select_card(Arc<User> user, Arc<Card> card) {
user_state->selected_card.push_back(card);
pack->erase(it);
if (!pack->empty()) {
- users[(user_idx + 1) % player_num]->card_pack_queue.push(pack);
- if (users[(user_idx + 1) % player_num]->card_pack_queue.size() == 1) {
- users[(user_idx + 1) % player_num]->time_last_updated = std::chrono::system_clock::now();
+ int next_user_idx = -1;
+ if (round_num % 2 == 0) {
+ next_user_idx = (user_idx + 1) % player_num;
+ } else {
+ next_user_idx = (user_idx + player_num - 1) % player_num;
+ }
+ users[next_user_idx]->card_pack_queue.push(pack);
+ if (users[next_user_idx]->card_pack_queue.size() == 1) {
+ users[next_user_idx]->time_last_updated = std::chrono::system_clock::now();
}
}
user_state->card_pack_queue.pop();