diff --git a/plugins/embark-assistant/finder_ui.cpp b/plugins/embark-assistant/finder_ui.cpp index 5410b82a5..bcd82a3e4 100644 --- a/plugins/embark-assistant/finder_ui.cpp +++ b/plugins/embark-assistant/finder_ui.cpp @@ -168,20 +168,26 @@ namespace embark_assist { FILE* outfile = fopen(profile_file_name, "w"); fields i = first_fields; + size_t civ = 0; while (true) { for (size_t k = 0; k < state->ui[static_cast(i)]->list.size(); k++) { - if (state->ui[static_cast(i)]->current_value == state->ui[static_cast(i)]->list[k].key) { - fprintf(outfile, "[%s:%s]\n", state->finder_list[static_cast(i)].text.c_str(), state->ui[static_cast(i)]->list[k].text.c_str()); + if (state->ui[static_cast(i) + civ]->current_value == state->ui[static_cast(i) + civ]->list[k].key) { + fprintf(outfile, "[%s:%s]\n", state->finder_list[static_cast(i) + civ].text.c_str(), state->ui[static_cast(i) + civ]->list[k].text.c_str()); break; } } // fprintf(outfile, "[%s:%i]\n", state->finder_list[static_cast(i)].text.c_str(), state->ui[static_cast(i)]->current_value); if (i == last_fields) { - break; // done - } + civ++; - i = static_cast (static_cast(i) + 1); + if (civ == state->civs.size()) { + break; // done + } + } + else { + i = static_cast (static_cast(i) + 1); + } } fclose(outfile); @@ -192,6 +198,7 @@ namespace embark_assist { void load_profile() { color_ostream_proxy out(Core::getInstance().getConsole()); FILE* infile = fopen(profile_file_name, "r"); + size_t civ = 0; if (!infile) { out.printerr("No profile file found at %s\n", profile_file_name); @@ -213,8 +220,8 @@ namespace embark_assist { for (int k = 1; k < count; k++) { if (line[k] == ':') { for (int l = 1; l < k; l++) { - if (state->finder_list[static_cast(i)].text.c_str()[l - 1] != line[l]) { - out.printerr("Token mismatch of %s vs %s\n", line, state->finder_list[static_cast(i)].text.c_str()); + if (state->finder_list[static_cast(i) + civ].text.c_str()[l - 1] != line[l]) { + out.printerr("Token mismatch of %s vs %s\n", line, state->finder_list[static_cast(i) + civ].text.c_str()); fclose(infile); return; } @@ -222,10 +229,10 @@ namespace embark_assist { found = false; - for (size_t l = 0; l < state->ui[static_cast(i)]->list.size(); l++) { + for (size_t l = 0; l < state->ui[static_cast(i) + civ]->list.size(); l++) { for (int m = k + 1; m < count; m++) { - if (state->ui[static_cast(i)]->list[l].text.c_str()[m - (k + 1)] != line[m]) { - if (state->ui[static_cast(i)]->list[l].text.c_str()[m - (k + 1)] == '\0' && + if (state->ui[static_cast(i) + civ]->list[l].text.c_str()[m - (k + 1)] != line[m]) { + if (state->ui[static_cast(i) + civ]->list[l].text.c_str()[m - (k + 1)] == '\0' && line[m] == ']') { found = true; } @@ -254,10 +261,15 @@ namespace embark_assist { } if (i == last_fields) { - break; // done - } + civ++; - i = static_cast (static_cast(i) + 1); + if (civ == state->civs.size()) { + break; // done + } + } + else { + i = static_cast (static_cast(i) + 1); + } } fclose(infile); @@ -266,6 +278,7 @@ namespace embark_assist { infile = fopen(profile_file_name, "r"); i = first_fields; + civ = 0; while (true) { if (!fgets(line, count, infile)) @@ -278,13 +291,13 @@ namespace embark_assist { found = false; - for (size_t l = 0; l < state->ui[static_cast(i)]->list.size(); l++) { + for (size_t l = 0; l < state->ui[static_cast(i) + civ]->list.size(); l++) { for (int m = k + 1; m < count; m++) { - if (state->ui[static_cast(i)]->list[l].text.c_str()[m - (k + 1)] != line[m]) { - if (state->ui[static_cast(i)]->list[l].text.c_str()[m - (k + 1)] == '\0' && + if (state->ui[static_cast(i) + civ]->list[l].text.c_str()[m - (k + 1)] != line[m]) { + if (state->ui[static_cast(i) + civ]->list[l].text.c_str()[m - (k + 1)] == '\0' && line[m] == ']') { - state->ui[static_cast(i)]->current_value = state->ui[static_cast(i)]->list[l].key; - state->ui[static_cast(i)]->current_display_value = l; + state->ui[static_cast(i) + civ]->current_value = state->ui[static_cast(i) + civ]->list[l].key; + state->ui[static_cast(i) + civ]->current_display_value = l; found = true; } @@ -301,10 +314,15 @@ namespace embark_assist { } if (i == last_fields) { - break; // done - } + civ++; - i = static_cast (static_cast(i) + 1); + if (civ == state->civs.size()) { + break; // done + } + } + else { + i = static_cast (static_cast(i) + 1); + } } fclose(infile);