mirror of
https://github.com/spice2x/spice2x.github.io.git
synced 2026-08-02 06:40:42 -07:00
overlay: small tweaks to cards tab (#602)
## Link to GitHub Issue or related Pull Request, if one exists #593 ## Description of change * Display a confirmation dialog when clicking on `Generate` for the first time (to prevent accidental loss of card number) * If `cardN.txt` contents are read back successfully, show card number in green to indicate success, and red in case of failure.
This commit is contained in:
@@ -58,6 +58,7 @@ namespace overlay::windows {
|
|||||||
const auto PROJECT_URL = "https://spice2x.github.io";
|
const auto PROJECT_URL = "https://spice2x.github.io";
|
||||||
|
|
||||||
constexpr ImVec4 TEXT_COLOR_GREEN(0.f, 1.f, 0.f, 1.f);
|
constexpr ImVec4 TEXT_COLOR_GREEN(0.f, 1.f, 0.f, 1.f);
|
||||||
|
constexpr ImVec4 TEXT_COLOR_RED(1.f, 0.f, 0.f, 1.f);
|
||||||
constexpr uint32_t OPTION_INPUT_TEXT_WIDTH = 512;
|
constexpr uint32_t OPTION_INPUT_TEXT_WIDTH = 512;
|
||||||
|
|
||||||
std::unique_ptr<AsioDriverList> asio_driver_list;
|
std::unique_ptr<AsioDriverList> asio_driver_list;
|
||||||
@@ -3831,16 +3832,24 @@ namespace overlay::windows {
|
|||||||
// generate button
|
// generate button
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
if (ImGui::Button("Generate")) {
|
if (ImGui::Button("Generate")) {
|
||||||
generate_ea_card(buffer);
|
if (!this->keypads_card_overwrite_confirmed[player] && buffer_len > 0) {
|
||||||
card_changed = true;
|
ImGui::OpenPopup("Card Generator##GenerateCardConfirm");
|
||||||
|
} else {
|
||||||
|
generate_ea_card(buffer);
|
||||||
|
card_changed = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// clear button
|
// clear button
|
||||||
if (option.is_active()) {
|
if (option.is_active()) {
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
if (ImGui::Button("Clear")) {
|
if (ImGui::Button("Clear")) {
|
||||||
buffer[0] = '\0';
|
if (!this->keypads_card_overwrite_confirmed[player] && buffer_len > 0) {
|
||||||
card_changed = true;
|
ImGui::OpenPopup("Clear Card##ClearCardConfirm");
|
||||||
|
} else {
|
||||||
|
buffer[0] = '\0';
|
||||||
|
card_changed = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -3857,6 +3866,61 @@ namespace overlay::windows {
|
|||||||
ImGui::TextColored(ImVec4(1.f, 0.f, 0.f, 1.f), "Invalid card number");
|
ImGui::TextColored(ImVec4(1.f, 0.f, 0.f, 1.f), "Invalid card number");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ImGui::BeginPopupModal(
|
||||||
|
"Card Generator##GenerateCardConfirm",
|
||||||
|
nullptr,
|
||||||
|
ImGuiWindowFlags_AlwaysAutoResize)) {
|
||||||
|
|
||||||
|
ImGui::TextUnformatted(
|
||||||
|
"What do you want to do?");
|
||||||
|
ImGui::Spacing();
|
||||||
|
ImGui::Separator();
|
||||||
|
ImGui::Spacing();
|
||||||
|
ImGui::AlignTextToFramePadding();
|
||||||
|
ImGui::Bullet();
|
||||||
|
ImGui::SameLine();
|
||||||
|
if (ImGui::Button("Discard current card and generate new one")) {
|
||||||
|
this->keypads_card_overwrite_confirmed[player] = true;
|
||||||
|
generate_ea_card(buffer);
|
||||||
|
card_changed = true;
|
||||||
|
ImGui::CloseCurrentPopup();
|
||||||
|
}
|
||||||
|
ImGui::AlignTextToFramePadding();
|
||||||
|
ImGui::Bullet();
|
||||||
|
ImGui::SameLine();
|
||||||
|
if (ImGui::Button("Keep current card and cancel")) {
|
||||||
|
ImGui::CloseCurrentPopup();
|
||||||
|
}
|
||||||
|
ImGui::EndPopup();
|
||||||
|
}
|
||||||
|
if (ImGui::BeginPopupModal(
|
||||||
|
"Clear Card##ClearCardConfirm",
|
||||||
|
nullptr,
|
||||||
|
ImGuiWindowFlags_AlwaysAutoResize)) {
|
||||||
|
|
||||||
|
ImGui::TextUnformatted(
|
||||||
|
"This cannot be undone. Are you sure?");
|
||||||
|
ImGui::Spacing();
|
||||||
|
ImGui::Separator();
|
||||||
|
ImGui::Spacing();
|
||||||
|
ImGui::AlignTextToFramePadding();
|
||||||
|
ImGui::Bullet();
|
||||||
|
ImGui::SameLine();
|
||||||
|
if (ImGui::Button("Yes, delete card number")) {
|
||||||
|
this->keypads_card_overwrite_confirmed[player] = true;
|
||||||
|
buffer[0] = '\0';
|
||||||
|
card_changed = true;
|
||||||
|
ImGui::CloseCurrentPopup();
|
||||||
|
}
|
||||||
|
ImGui::AlignTextToFramePadding();
|
||||||
|
ImGui::Bullet();
|
||||||
|
ImGui::SameLine();
|
||||||
|
if (ImGui::Button("No, keep my card number")) {
|
||||||
|
ImGui::CloseCurrentPopup();
|
||||||
|
}
|
||||||
|
ImGui::EndPopup();
|
||||||
|
}
|
||||||
|
|
||||||
ImGui::TreePop();
|
ImGui::TreePop();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3995,7 +4059,7 @@ namespace overlay::windows {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
if (ImGui::Button("Edit")) {
|
if (ImGui::Button("Edit in Notepad")) {
|
||||||
std::filesystem::path path;
|
std::filesystem::path path;
|
||||||
if (!bindings.card_paths[player].empty()) {
|
if (!bindings.card_paths[player].empty()) {
|
||||||
path = bindings.card_paths[player];
|
path = bindings.card_paths[player];
|
||||||
@@ -4023,19 +4087,20 @@ namespace overlay::windows {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// card number box
|
// card number box
|
||||||
ImGui::PushStyleColor(
|
|
||||||
ImGuiCol_Text,
|
|
||||||
this->keypads_card_file_contents_valid[player] ? ImVec4(1.f, 1.f, 1.f, 1.f) :
|
|
||||||
ImVec4(1.f, 0.f, 0.f, 1.f));
|
|
||||||
ImGui::SetNextItemWidth(TEXT_INPUT_WIDTH);
|
ImGui::SetNextItemWidth(TEXT_INPUT_WIDTH);
|
||||||
ImGui::BeginDisabled();
|
ImGui::BeginDisabled();
|
||||||
if (this->keypads_card_number[player][0] != 0) {
|
if (this->keypads_card_number[player][0] != 0) {
|
||||||
|
ImGui::PushStyleColor(
|
||||||
|
ImGuiCol_Text,
|
||||||
|
this->keypads_card_file_contents_valid[player] ?
|
||||||
|
TEXT_COLOR_GREEN : TEXT_COLOR_RED);
|
||||||
ImGui::Text("Card from file: %s", this->keypads_card_number[player]);
|
ImGui::Text("Card from file: %s", this->keypads_card_number[player]);
|
||||||
|
ImGui::PopStyleColor();
|
||||||
} else {
|
} else {
|
||||||
ImGui::TextUnformatted("Failed to read file.");
|
ImGui::TextColored(TEXT_COLOR_RED, "Failed to read file.");
|
||||||
}
|
}
|
||||||
ImGui::EndDisabled();
|
ImGui::EndDisabled();
|
||||||
ImGui::PopStyleColor();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui::TreePop();
|
ImGui::TreePop();
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ namespace overlay::windows {
|
|||||||
bool auto_match_soft_enabled = true;
|
bool auto_match_soft_enabled = true;
|
||||||
bool auto_match_p2 = false;
|
bool auto_match_p2 = false;
|
||||||
|
|
||||||
// keypads tab
|
// cards tab
|
||||||
int keypads_selected[2] {};
|
int keypads_selected[2] {};
|
||||||
char keypads_card_path[2][1024] {};
|
char keypads_card_path[2][1024] {};
|
||||||
std::thread *keypads_card_select = nullptr;
|
std::thread *keypads_card_select = nullptr;
|
||||||
@@ -96,6 +96,7 @@ namespace overlay::windows {
|
|||||||
char keypads_card_number[2][18] {};
|
char keypads_card_number[2][18] {};
|
||||||
bool keypads_card_override_valid[2] = { false, false };
|
bool keypads_card_override_valid[2] = { false, false };
|
||||||
bool keypads_card_file_contents_valid[2] = { false, false };
|
bool keypads_card_file_contents_valid[2] = { false, false };
|
||||||
|
bool keypads_card_overwrite_confirmed[2];
|
||||||
|
|
||||||
// presets tab
|
// presets tab
|
||||||
std::vector<ControllerTemplate> templates_cache;
|
std::vector<ControllerTemplate> templates_cache;
|
||||||
|
|||||||
Reference in New Issue
Block a user