diff options
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/card.cc | 2 | ||||
| -rw-r--r-- | src/core/session.cc | 15 |
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(); |
