Add apworld version check on connecting
This commit is contained in:
@@ -81,7 +81,7 @@ bool ArchipelagoClient::StartClient() {
|
|||||||
tags.push_back("DeathLink");
|
tags.push_back("DeathLink");
|
||||||
}
|
}
|
||||||
apClient->ConnectSlot(CVarGetString(CVAR_REMOTE_ARCHIPELAGO("SlotName"), ""), password, 0b0101, tags,
|
apClient->ConnectSlot(CVarGetString(CVAR_REMOTE_ARCHIPELAGO("SlotName"), ""), password, 0b0101, tags,
|
||||||
{ 0, 6, 4 });
|
{ 0, 6, 3 });
|
||||||
});
|
});
|
||||||
|
|
||||||
apClient->set_slot_connected_handler([&](const nlohmann::json data) {
|
apClient->set_slot_connected_handler([&](const nlohmann::json data) {
|
||||||
@@ -91,6 +91,18 @@ bool ArchipelagoClient::StartClient() {
|
|||||||
|
|
||||||
slotData = data;
|
slotData = data;
|
||||||
|
|
||||||
|
std::string expectedVersion = AP_Client_consts::AP_WORLD_VERSION;
|
||||||
|
std::string apworldVersion = slotData["apworld_version"];
|
||||||
|
if (apworldVersion != expectedVersion) {
|
||||||
|
disconnecting = true;
|
||||||
|
std::string errorMessage =
|
||||||
|
"[ERROR] Client version does not match the APWorld's version.\nExpected version is " + expectedVersion +
|
||||||
|
". APWorld is on version " + apworldVersion +
|
||||||
|
" instead.\nPlease use the SoH AP client matching the APWorld's version.\nDisconnecting...";
|
||||||
|
ArchipelagoConsole_SendMessage(errorMessage.c_str());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// if we are already in game when we connect
|
// if we are already in game when we connect
|
||||||
// we won't have to request an itemSynch
|
// we won't have to request an itemSynch
|
||||||
if (GameInteractor::IsSaveLoaded(true)) {
|
if (GameInteractor::IsSaveLoaded(true)) {
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ static constexpr int MAX_PLAYER_NAME_LENGHT = 17;
|
|||||||
static constexpr int MAX_PASSWORD_LENGTH = 32;
|
static constexpr int MAX_PASSWORD_LENGTH = 32;
|
||||||
|
|
||||||
static constexpr char const* AP_GAME_NAME = "Ship of Harkinian";
|
static constexpr char const* AP_GAME_NAME = "Ship of Harkinian";
|
||||||
|
static constexpr char const* AP_WORLD_VERSION = "0.0.1";
|
||||||
static constexpr int MAX_RETRIES = 3;
|
static constexpr int MAX_RETRIES = 3;
|
||||||
} // namespace AP_Client_consts
|
} // namespace AP_Client_consts
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user