Merge pull request #69 from jeromkiller/AddArchipelagoClientLib
Add archipelago client lib
This commit is contained in:
@@ -113,8 +113,19 @@ bool ArchipelagoClient::StartClient() {
|
||||
}
|
||||
});
|
||||
|
||||
apClient->set_print_json_handler([&](const std::list<APClient::TextNode>& 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);
|
||||
});
|
||||
|
||||
@@ -184,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<uint32_t>(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);
|
||||
}
|
||||
|
||||
@@ -214,7 +234,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 +244,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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user