From 36cf22c196b713fb758d9a87ddac979556b53524 Mon Sep 17 00:00:00 2001 From: Jerom Venneker Date: Tue, 27 May 2025 21:28:19 +0200 Subject: [PATCH 1/2] Added some pretty (arbitrary) collors to the archipelago log --- soh/soh/Network/Archipelago/Archipelago.cpp | 21 +++++++++++---- .../Archipelago/ArchipelagoConsoleWindow.cpp | 27 +++++++++++++++++++ 2 files changed, 43 insertions(+), 5 deletions(-) diff --git a/soh/soh/Network/Archipelago/Archipelago.cpp b/soh/soh/Network/Archipelago/Archipelago.cpp index 775944fe3..6469dca1f 100644 --- a/soh/soh/Network/Archipelago/Archipelago.cpp +++ b/soh/soh/Network/Archipelago/Archipelago.cpp @@ -113,8 +113,19 @@ bool ArchipelagoClient::StartClient() { } }); - apClient->set_print_json_handler([&](const std::list& nodes) { - std::string text = apClient->render_json(nodes, APClient::RenderFormat::TEXT); + apClient->set_print_json_handler([&](const APClient::PrintJSONArgs& arg) { + std::string tag = "[" + arg.type + "] "; + + const int slot = apClient->get_player_number(); + if(arg.type == "ItemSend") { + if((*arg.item).player == slot) { + tag = "[Found] "; + } else if (*arg.receiving == slot ) { + tag = "[Received] "; + } + } + + std::string text = tag + apClient->render_json(arg.data, APClient::RenderFormat::TEXT); ArchipelagoConsole_SendMessage(text.c_str(), false); }); @@ -214,7 +225,7 @@ void ArchipelagoClient::OnItemReceived(const ApItem apItem) { return; } - std::string logMessage = "[Log] Recieved " + apItem.itemName; + std::string logMessage = "[LOG] Recieved " + apItem.itemName; ArchipelagoConsole_SendMessage(logMessage.c_str(), true); // add item to the queue @@ -224,12 +235,12 @@ void ArchipelagoClient::OnItemReceived(const ApItem apItem) { void ArchipelagoClient::QueueItem(const ApItem item) { if(item.index < gSaveContext.ship.quest.data.archipelago.lastReceivedItemIndex) { // Skip queueing any items we already have - std::string logMessage = "[Log] Skipping giving " + item.itemName + ". We recieved this previously."; + std::string logMessage = "[LOG] Skipping giving " + item.itemName + ". We recieved this previously."; ArchipelagoConsole_SendMessage(logMessage.c_str(), true); return; } - std::string logMessage = "[Log] Giving " + item.itemName; + std::string logMessage = "[LOG] Giving " + item.itemName; ArchipelagoConsole_SendMessage(logMessage.c_str(), true); const RandomizerGet RG = Rando::StaticData::itemNameToEnum[item.itemName]; if(RG == RG_NONE) { diff --git a/soh/soh/Network/Archipelago/ArchipelagoConsoleWindow.cpp b/soh/soh/Network/Archipelago/ArchipelagoConsoleWindow.cpp index af5bf1ce8..2817b112e 100644 --- a/soh/soh/Network/Archipelago/ArchipelagoConsoleWindow.cpp +++ b/soh/soh/Network/Archipelago/ArchipelagoConsoleWindow.cpp @@ -42,6 +42,33 @@ void ArchipelagoConsoleWindow::DrawElement() { } else if (strstr(item, "[LOG]")) { color = ImVec4(0.7f, 0.7f, 1.0f, 1.0f); hasColor = true; + } else if (strstr(item, "[Found]")) { + color = ImVec4(0.24f, 0.64f, 0.69f, 1.00f); + hasColor = true; + } else if (strstr(item, "[Received]")) { + color = ImVec4(0.18f, 0.76f, 0.42f, 1.00f); + hasColor = true; + } else if (strstr(item, "[ItemCheat]")) { + color = ImVec4(0.97f, 0.26f, 0.26f, 1.00f); + hasColor = true; + } else if (strstr(item, "[Hint]")) { + color = ImVec4(0.89f, 0.45f, 1.00f, 1.00f); + hasColor = true; + } else if (strstr(item, "[Join]")) { + color = ImVec4(0.00f, 0.80f, 0.11f, 1.00f); + hasColor = true; + } else if (strstr(item, "[Part]")) { + color = ImVec4(1.00f, 0.01f, 0.01f, 1.00f); + hasColor = true; + } else if (strstr(item, "[Goal]")) { + color = ImVec4(0.00f, 0.70f, 0.21f, 1.00f); + hasColor = true; + } else if (strstr(item, "[Release]")) { + color = ImVec4(0.51f, 0.21f, 0.61f, 1.00f); + hasColor = true; + } else if (strstr(item, "[Collect]")) { + color = ImVec4(0.51f, 0.21f, 0.61f, 1.00f); + hasColor = true; } if (hasColor) { ImGui::PushStyleColor(ImGuiCol_Text, color); From 6662818d95ac6ae2814b6257af77da5b7d7fb40a Mon Sep 17 00:00:00 2001 From: Jerom Venneker Date: Tue, 27 May 2025 22:03:12 +0200 Subject: [PATCH 2/2] Filtering out already locally checked locations from recieving location sync --- soh/soh/Network/Archipelago/Archipelago.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/soh/soh/Network/Archipelago/Archipelago.cpp b/soh/soh/Network/Archipelago/Archipelago.cpp index 6469dca1f..07263f213 100644 --- a/soh/soh/Network/Archipelago/Archipelago.cpp +++ b/soh/soh/Network/Archipelago/Archipelago.cpp @@ -195,6 +195,15 @@ void ArchipelagoClient::SynchRecievedLocations() { void ArchipelagoClient::QueueExternalCheck(const int64_t apLocation) { const std::string checkName = apClient->get_location_name(apLocation, AP_Client_consts::AP_GAME_NAME); const uint32_t RC = static_cast(Rando::StaticData::locationNameToEnum[checkName]); + + // Don't queue checks we already have + if(Rando::Context::GetInstance()->GetItemLocation(RC)->HasObtained()) { + return; + } + + std::string locationLog = "[LOG] Externaly checking" + checkName; + ArchipelagoConsole_SendMessage(locationLog.c_str(), true); + GameInteractor_ExecuteOnRandomizerExternalCheck(RC); }