Change input fields to cvars

This commit is contained in:
aMannus
2025-05-19 21:52:44 +02:00
parent 9e3e11692f
commit 815b248b87
5 changed files with 26 additions and 41 deletions

View File

@@ -20,8 +20,6 @@ ArchipelagoClient::ArchipelagoClient() {
namespace apc = AP_Client_consts;
CVarSetInteger("ArchipelagoConnected", 0);
strncpy(serverAddress, CVarGetString(apc::SETTING_ADDRESS, apc::DEFAULT_SERVER_NAME), apc::MAX_ADDRESS_LENGTH);
strncpy(slotName, CVarGetString(apc::SETTING_NAME, ""), apc::MAX_PLAYER_NAME_LENGHT);
// call poll every frame
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnGameFrameUpdate>([](){ArchipelagoClient::GetInstance().Poll();});
@@ -37,12 +35,15 @@ bool ArchipelagoClient::StartClient() {
apClient.reset();
}
apClient = std::unique_ptr<APClient>(new APClient(uuid, AP_Client_consts::AP_GAME_NAME, serverAddress));
apClient = std::unique_ptr<APClient>(
new APClient(uuid, AP_Client_consts::AP_GAME_NAME, CVarGetString(CVAR_REMOTE_ARCHIPELAGO("ServerAddress"), "localhost:38281")));
apClient->set_room_info_handler([&]() {
std::list<std::string> tags;
// tags.push_back("DeathLink"); // todo, implement deathlink
apClient->ConnectSlot(slotName, password, 0b001, tags);
apClient->ConnectSlot(CVarGetString(CVAR_REMOTE_ARCHIPELAGO("SlotName"), ""),
CVarGetString(CVAR_REMOTE_ARCHIPELAGO("Password"), ""),
0b001, tags);
});
apClient->set_items_received_handler([&](const std::list<APClient::NetworkItem>& items) {
@@ -76,7 +77,6 @@ bool ArchipelagoClient::StartClient() {
// todo implement me
});
SaveData();
return true;
}
@@ -93,11 +93,6 @@ void ArchipelagoClient::StartLocationScouts() {
apClient->LocationScouts(location_list);
}
void ArchipelagoClient::SaveData() {
CVarSetString(AP_Client_consts::SETTING_ADDRESS, serverAddress);
CVarSetString(AP_Client_consts::SETTING_NAME, slotName);
}
bool ArchipelagoClient::IsConnected() {
return apClient->get_state() == APClient::State::SLOT_CONNECTED;
}
@@ -169,16 +164,6 @@ const std::string& ArchipelagoClient::GetSlotName() const {
return apClient->get_slot();
}
char* ArchipelagoClient::GetServerAddressBuffer() {
return serverAddress;
}
char* ArchipelagoClient::GetSlotNameBuffer() {
return slotName;
}
char* ArchipelagoClient::GetPasswordBuffer() {
return password;
}
const std::map<std::string, int>& ArchipelagoClient::GetSlotData() {
return slotData;
}

View File

@@ -10,12 +10,8 @@ namespace AP_Client_consts {
static constexpr int MAX_ADDRESS_LENGTH = 64;
static constexpr int MAX_PLAYER_NAME_LENGHT = 17;
static constexpr int MAX_PASSWORD_LENGTH = 32;
static constexpr char const* DEFAULT_SERVER_NAME = "archipelago.gg:<port number>";
static constexpr char const* SETTING_ADDRESS = "AP_server_address";
static constexpr char const* SETTING_NAME = "AP_slot_name";
static constexpr char const* AP_GAME_NAME = "Ocarina of Time (SoH)";
static constexpr char const* AP_GAME_NAME = "Ship of Harkinian";
}
class ArchipelagoClient{
@@ -38,9 +34,6 @@ class ArchipelagoClient{
// getters
const std::string& GetSlotName() const;
char* GetServerAddressBuffer();
char* GetSlotNameBuffer();
char* GetPasswordBuffer();
const char* GetConnectionStatus();
const std::map<std::string, int>& GetSlotData();
const std::vector<ApItem>& GetScoutedItems();
@@ -72,17 +65,11 @@ class ArchipelagoClient{
static std::shared_ptr<ArchipelagoClient> instance; // is this even used?
static bool initialized;
char serverAddress[AP_Client_consts::MAX_ADDRESS_LENGTH];
char slotName[AP_Client_consts::MAX_PLAYER_NAME_LENGHT];
char password[AP_Client_consts::MAX_PLAYER_NAME_LENGHT];
bool game_won;
std::map<std::string, int> slotData;
std::set<int64_t> locations;
std::vector<ApItem> scoutedItems;
void SaveData();
// callback functions
void OnConnected();

View File

@@ -9,7 +9,7 @@ bool autoScroll = true;
using namespace UIWidgets;
void ArchipelagoConsole_SendMessage(const char* fmt, ...) IM_FMTARGS(2) {
void ArchipelagoConsole_SendMessage(const char* fmt, ...) {
char buf[1024];
va_list args;
va_start(args, fmt);

View File

@@ -14,13 +14,25 @@ void ArchipelagoSettingsWindow::DrawElement() {
ImGui::PushStyleColor(ImGuiCol_Border, UIWidgets::ColorValues.at(THEME_COLOR));
ImGui::Text("Server Address");
ImGui::InputText("##serveraddress", AP_client.GetServerAddressBuffer(), AP_Client_consts::MAX_ADDRESS_LENGTH);
UIWidgets::CVarInputString("##ArchipelagoServerAddress", CVAR_REMOTE_ARCHIPELAGO("ServerAddress"),
UIWidgets::InputOptions()
.Color(THEME_COLOR)
.PlaceholderText("archipelago.gg:38281")
.DefaultValue("archipelago.gg:38281")
.Size(ImVec2(ImGui::GetFontSize() * 15, 0))
.LabelPosition(UIWidgets::LabelPositions::None));
ImGui::Text("Slot Name");
ImGui::InputText("##slotname", AP_client.GetSlotNameBuffer(), AP_Client_consts::MAX_PLAYER_NAME_LENGHT);
UIWidgets::CVarInputString("##ArchipelagoSlotName", CVAR_REMOTE_ARCHIPELAGO("SlotName"),
UIWidgets::InputOptions()
.Color(THEME_COLOR)
.Size(ImVec2(ImGui::GetFontSize() * 15, 0))
.LabelPosition(UIWidgets::LabelPositions::None));
ImGui::Text("Password (leave blank for no password)");
ImGui::InputText("##password", AP_client.GetPasswordBuffer(),
AP_Client_consts::MAX_PASSWORD_LENGTH, ImGuiInputTextFlags_Password);
UIWidgets::CVarInputString("##ArchipelagoPassword", CVAR_REMOTE_ARCHIPELAGO("Password"),
UIWidgets::InputOptions()
.Color(THEME_COLOR)
.Size(ImVec2(ImGui::GetFontSize() * 15, 0))
.LabelPosition(UIWidgets::LabelPositions::None));
ImGui::PopStyleColor();
UIWidgets::PopStyleCombobox();
@@ -46,4 +58,4 @@ void ArchipelagoSettingsWindow::DrawElement() {
ArchipelagoClient::GetInstance().OnItemReceived(66077, true);
}
};
};

View File

@@ -15,5 +15,6 @@
#define CVAR_REMOTE(var) CVAR_PREFIX_REMOTE "." var
#define CVAR_REMOTE_CROWD_CONTROL(var) CVAR_REMOTE("CrowdControl." var)
#define CVAR_REMOTE_SAIL(var) CVAR_REMOTE("Sail." var)
#define CVAR_REMOTE_ARCHIPELAGO(var) CVAR_REMOTE("Archipelago." var)
#define CVAR_GAMEPLAY_STATS(var) CVAR_PREFIX_GAMEPLAY_STATS "." var
#define CVAR_TIME_DISPLAY(var) CVAR_PREFIX_TIME_DISPLAY "." var