aboutsummaryrefslogtreecommitdiff
path: root/src/core
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
parent4da382953c830a61ae24ccbe95c4241db8788269 (diff)
fix draft bug
Diffstat (limited to 'src/core')
-rw-r--r--src/core/card.cc2
-rw-r--r--src/core/session.cc15
2 files changed, 12 insertions, 5 deletions
diff --git a/src/core/card.cc b/src/core/card.cc
index 1a4c63d..9390edc 100644
--- a/src/core/card.cc
+++ b/src/core/card.cc
@@ -25,6 +25,8 @@ Arc<Card> get_card(std::string name) {
card->image_url = "https://api.scryfall.com/cards/named?format=image&version=normal&exact=" + url_encode(name);
if (card_db.find(name) != card_db.end()) {
card->zhsname = card_db[name].zhsname;
+ // fix scryfall
+ str_replace(card->zhsname, ":", " ");
card->zhstext = card_db[name].zhstext;
card->image_url = "https://api.scryfall.com/cards/named?format=image&version=normal&fuzzy=" + url_encode(card->zhsname);
str_replace(card->zhstext, "\001", "\n");
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();