Add Checkbox to allow removing items from list directly.

This commit is contained in:
Caladius 2024-03-09 14:07:13 -05:00
parent 2b8690efbc
commit 82414a49bd
1 changed files with 206 additions and 142 deletions

View File

@ -542,6 +542,8 @@ void DrawTimeSplitOptions() {
splitPreviousBest[i] = splitBest[i];
}
}
status = "Splits updated";
statusColor = COLOR_GREEN;
}
ImGui::SameLine();
if (ImGui::Button("Reset List")) {
@ -553,6 +555,7 @@ void DrawTimeSplitOptions() {
status = "List has been reset";
statusColor = COLOR_RED;
}
UIWidgets::EnhancementCheckbox("Enable Removals", "gTimeSplit.EnableEdits", false);
ImGui::TextColored(statusColor, status.c_str());
UIWidgets::PaddedSeparator();
}
@ -601,6 +604,49 @@ void DrawTimeSplitSplits(){
if (ImGui::CollapsingHeader("Time Splitter")) {
DrawTimeSplitOptions();
}
//List Removals
if (CVarGetInteger("gTimeSplit.EnableEdits", 0)) {
ImGui::BeginTable("Remove Entries", 2);
ImGui::TableSetupColumn("Item Image", ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_NoHeaderLabel, (28.0f * uiScale));
ImGui::TableSetupColumn("Item Name");
ImGui::TableHeadersRow();
ImGui::TableNextColumn();
for (int i = 0; i < splitItem.size(); i++) {
for (const auto& obj : splitObjects) {
if (obj.itemID == splitItem[i]) {
itemNum = obj.itemID;
itemImager = obj.itemImage;
itemNamer = obj.itemName;
TimeSplitColorTint();
}
}
ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(0.75f, 0.0f, 0.0f, 1.0f));
if (ImGui::ImageButton(std::to_string(i).c_str(), LUS::Context::GetInstance()->GetWindow()->GetGui()->GetTextureByName(itemImager),
ImVec2(26.0f * uiScale, 26.0f *uiScale), ImVec2(0, 0), ImVec2(1, 1), ImVec4(0, 0, 0, 0), pieceTint)) {
splitItem.erase(splitItem.begin() + i);
splitTime.erase(splitTime.begin() + i);
splitPreviousBest.erase(splitPreviousBest.begin() + i);
splitBest.erase(splitBest.begin() + i);
splitStatus.erase(splitStatus.begin() + i);
}
ImGui::PopStyleColor();
ImGui::TableNextColumn();
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(0.0f, 5.0f * uiScale));
ImGui::AlignTextToFramePadding();
if (itemNum == ITEM_SKULL_TOKEN) {
std::string skullText = itemNamer.c_str();
skullText += " (";
skullText += std::to_string(splitTokens).c_str();
skullText += ")";
ImGui::TextWrapped(skullText.c_str());
} else {
ImGui::TextWrapped(itemNamer.c_str());
}
ImGui::PopStyleVar();
ImGui::TableNextColumn();
}
ImGui::EndTable();
} else {
totalPreviousBest = 0;
for (int i = 0; i < splitItem.size(); i++) {
totalPreviousBest += splitPreviousBest[i];
@ -614,9 +660,9 @@ void DrawTimeSplitSplits(){
ImGui::TableSetupColumn("+/-", ImGuiTableColumnFlags_WidthFixed, (80.0f * uiScale));
ImGui::TableSetupColumn("Prev. Best", ImGuiTableColumnFlags_WidthFixed, (90.0f * uiScale));
ImGui::TableHeadersRow();
for (auto& str : splitItem) {
ImGui::TableNextColumn();
// Item Image
for (const auto& obj : splitObjects) {
if (obj.itemID == splitItem[loopCounter]) {
itemNum = obj.itemID;
@ -625,6 +671,7 @@ void DrawTimeSplitSplits(){
TimeSplitColorTint();
}
}
// Item Image
if (splitStatus[buttonID] == 2) {
ImGui::TableSetBgColor(ImGuiTableBgTarget_RowBg0, IM_COL32(47, 79, 90, 255));
}
@ -694,15 +741,15 @@ void DrawTimeSplitSplits(){
ImGui::TextWrapped(itemNamer.c_str());
}
ImGui::TableNextColumn();
// Current Time
if (splitStatus[loopCounter] == 2) {
// Current Time (Active)
if (splitTime[loopCounter] == 0) {
ImGui::Text(formatTimestampTimeSplit(GAMEPLAYSTAT_TOTAL_TIME).c_str());
} else {
ImGui::Text(formatTimestampTimeSplit(splitTime[loopCounter]).c_str());
}
ImGui::TableNextColumn();
// +/-
if (splitStatus[loopCounter] != 1) {
// +/- (active)
if (splitPreviousBest[loopCounter] == 0) {
ImGui::TextColored(COLOR_WHITE, formatTimestampTimeSplit(GAMEPLAYSTAT_TOTAL_TIME).c_str());
} else {
@ -714,9 +761,16 @@ void DrawTimeSplitSplits(){
ImGui::TextColored(COLOR_LIGHT_RED, formatTimestampTimeSplit(GAMEPLAYSTAT_TOTAL_TIME - splitPreviousBest[loopCounter]).c_str());
}
}
} else {
ImGui::TableNextColumn();
// Previous Best (Active)
ImGui::Text(formatTimestampTimeSplit(splitPreviousBest[loopCounter]).c_str());
} else if (splitStatus[loopCounter] == 1) {
// Current (Collected)
ImGui::Text(formatTimestampTimeSplit(splitTime[loopCounter]).c_str());
ImGui::TableNextColumn();
// +/- (Collected)
if (splitPreviousBest[loopCounter] == 0) {
ImGui::TextColored(COLOR_GREEN, formatTimestampTimeSplit(splitTime[loopCounter]).c_str());
ImGui::TextColored(COLOR_WHITE, formatTimestampTimeSplit(splitTime[loopCounter]).c_str());
} else {
if (splitTime[loopCounter] < splitPreviousBest[loopCounter]) {
ImGui::TextColored(COLOR_GREEN, formatTimestampTimeSplit(splitPreviousBest[loopCounter] - splitTime[loopCounter]).c_str());
@ -726,16 +780,25 @@ void DrawTimeSplitSplits(){
ImGui::TextColored(COLOR_RED, formatTimestampTimeSplit(splitTime[loopCounter] - splitPreviousBest[loopCounter]).c_str());
}
}
}
ImGui::TableNextColumn();
// Previous Best
// Previous Best (Collected)
ImGui::Text(formatTimestampTimeSplit(splitPreviousBest[loopCounter]).c_str());
} else {
// Current Time (Inactive)
ImGui::Text("-:--:--.-");
ImGui::TableNextColumn();
// +/- (Inactive)
ImGui::Text("-:--:--.-");
ImGui::TableNextColumn();
// Previous Best (Inactive)
ImGui::Text("-:--:--.-");
}
ImGui::PopStyleVar();
loopCounter++;
buttonID++;
}
ImGui::EndTable();
ImGui::PopStyleVar(1);
ImGui::PopStyleVar();
UIWidgets::PaddedSeparator();
ImGui::SetCursorPosX(ImGui::GetWindowWidth() -
ImGui::CalcTextSize(formatTimestampTimeSplit(GAMEPLAYSTAT_TOTAL_TIME).c_str()).x -
@ -751,6 +814,7 @@ void DrawTimeSplitSplits(){
ImGui::Text(formatTimestampTimeSplit(totalPreviousBest).c_str());
}
}
}
void InitializeSplitFile() {
if (!std::filesystem::exists("splitdata.json")) {
@ -1217,7 +1281,7 @@ void TimeSplitWindow::DrawElement() {
}
ImGui::EndTabBar();
ImGui::End();
ImGui::PopStyleColor(1);
ImGui::PopStyleColor();
}
void TimeSplitWindow::InitElement() {