fix rules not serializing properly in tournament state

This commit is contained in:
Martin Michelsen
2023-09-06 23:55:06 -07:00
parent 548aca8cc0
commit c45b4cced7
3 changed files with 14 additions and 15 deletions
+5 -5
View File
@@ -1200,14 +1200,14 @@ JSON Rules::json() const {
{"allowed_cards", name_for_enum(this->allowed_cards)},
{"min_dice", this->min_dice},
{"max_dice", this->max_dice},
{"disable_deck_shuffle", this->disable_deck_shuffle},
{"disable_deck_loop", this->disable_deck_loop},
{"disable_deck_shuffle", static_cast<bool>(this->disable_deck_shuffle)},
{"disable_deck_loop", static_cast<bool>(this->disable_deck_loop)},
{"char_hp", this->char_hp},
{"hp_type", name_for_enum(this->hp_type)},
{"no_assist_cards", this->no_assist_cards},
{"disable_dialogue", this->disable_dialogue},
{"no_assist_cards", static_cast<bool>(this->no_assist_cards)},
{"disable_dialogue", static_cast<bool>(this->disable_dialogue)},
{"dice_exchange_mode", name_for_enum(this->dice_exchange_mode)},
{"disable_dice_boost", this->disable_dice_boost},
{"disable_dice_boost", static_cast<bool>(this->disable_dice_boost)},
});
}
+6 -1
View File
@@ -660,7 +660,12 @@ TournamentIndex::TournamentIndex(
return;
}
auto json = JSON::parse(load_file(this->state_filename));
JSON json;
try {
json = JSON::parse(load_file(this->state_filename));
} catch (const cannot_open_file&) {
json = JSON::list();
}
if (json.size() > 0x20) {
throw runtime_error("tournament JSON list length is incorrect");
}
+3 -9
View File
@@ -848,15 +848,9 @@ void ServerState::load_ep3_data() {
this->ep3_com_deck_index.reset(new Episode3::COMDeckIndex("system/ep3/com-decks.json"));
const string& tournament_state_filename = "system/ep3/tournament-state.json";
try {
this->ep3_tournament_index.reset(new Episode3::TournamentIndex(
this->ep3_map_index, this->ep3_com_deck_index, tournament_state_filename));
config_log.info("Loaded Episode 3 tournament state");
} catch (const exception& e) {
config_log.warning("Cannot load Episode 3 tournament state: %s", e.what());
this->ep3_tournament_index.reset(new Episode3::TournamentIndex(
this->ep3_map_index, this->ep3_com_deck_index, tournament_state_filename, true));
}
this->ep3_tournament_index.reset(new Episode3::TournamentIndex(
this->ep3_map_index, this->ep3_com_deck_index, tournament_state_filename));
config_log.info("Loaded Episode 3 tournament state");
config_log.info("Resolving Episode 3 card auction pool");
for (auto& e : this->ep3_card_auction_pool) {