|
42 | 42 |
|
43 | 43 | #include "debug.hpp" |
44 | 44 |
|
| 45 | +#pragma clang diagnostic ignored "-Wswitch" |
| 46 | + |
45 | 47 | namespace aoe { |
46 | 48 |
|
47 | 49 | Engine *eng; |
@@ -346,37 +348,37 @@ void Engine::display_ui_tasks() { |
346 | 348 | std::lock_guard<std::mutex> lock(m_ui); |
347 | 349 |
|
348 | 350 | ImGui::OpenPopup("tasks"); |
349 | | - |
350 | 351 | ImGui::SetNextWindowSize(ImVec2(400, 0)); |
351 | 352 |
|
352 | 353 | if (ImGui::BeginPopupModal("tasks", NULL, ImGuiWindowFlags_AlwaysAutoResize)) { |
353 | 354 | int i = 0; |
354 | | - bool cancellable = false; |
| 355 | + unsigned cancellable = 0; |
355 | 356 |
|
356 | 357 | for (auto it = eng->ui_tasks.begin(); it != eng->ui_tasks.end(); ++i) { |
357 | 358 | UI_Task &tsk = it->second; |
358 | 359 |
|
359 | 360 | float f = (float)tsk.steps / tsk.total; |
360 | | - ImGui::TextWrapped("%s", tsk.title.c_str()); |
| 361 | + DrawTextWrapped(tsk.title); |
361 | 362 | ImGui::ProgressBar(f, ImVec2(-1, 0)); |
362 | | - if (!tsk.desc.empty()) |
363 | | - ImGui::TextWrapped("%s", tsk.desc.c_str()); |
| 363 | + DrawTextWrapped(tsk.desc); |
364 | 364 |
|
365 | 365 | std::string str("Cancel##" + std::to_string(i)); |
| 366 | + bool b = tsk.is_cancellable(); |
366 | 367 |
|
367 | | - if ((unsigned)tsk.flags & (unsigned)TaskFlags::cancellable) |
368 | | - cancellable = true; |
| 368 | + if (b) |
| 369 | + ++cancellable; |
369 | 370 |
|
370 | | - if (((unsigned)tsk.flags & (unsigned)TaskFlags::cancellable) && ImGui::Button(str.c_str())) |
| 371 | + if (b && ImGui::Button(str.c_str())) |
371 | 372 | it = eng->ui_tasks.erase(it); |
372 | 373 | else |
373 | 374 | ++it; |
374 | 375 | } |
375 | 376 |
|
376 | | - if (cancellable && ImGui::Button("Cancel all tasks")) { |
| 377 | + // only show when more than one can be cancelled |
| 378 | + if (cancellable > 1 && ImGui::Button("Cancel all tasks")) { |
377 | 379 | for (auto it = eng->ui_tasks.begin(); it != eng->ui_tasks.end(); ++i) { |
378 | 380 | UI_Task &tsk = it->second; |
379 | | - if ((unsigned)tsk.flags & (unsigned)TaskFlags::cancellable) |
| 381 | + if (tsk.is_cancellable()) |
380 | 382 | it = eng->ui_tasks.erase(it); |
381 | 383 | else |
382 | 384 | ++it; |
@@ -548,29 +550,8 @@ void Engine::set_background(io::DrsId id) { |
548 | 550 | } |
549 | 551 |
|
550 | 552 | void Engine::set_background(MenuState s) { |
551 | | - io::DrsId id = io::DrsId::bkg_main_menu; |
552 | | - |
553 | | - switch (s) { |
554 | | - case MenuState::multiplayer_host: |
555 | | - case MenuState::multiplayer_menu: |
556 | | - id = io::DrsId::bkg_multiplayer; |
557 | | - break; |
558 | | - case MenuState::singleplayer_menu: |
559 | | - case MenuState::singleplayer_host: |
560 | | - id = io::DrsId::bkg_singleplayer; |
561 | | - break; |
562 | | - case MenuState::defeat: |
563 | | - id = io::DrsId::bkg_defeat; |
564 | | - break; |
565 | | - case MenuState::victory: |
566 | | - id = io::DrsId::bkg_victory; |
567 | | - break; |
568 | | - case MenuState::editor_menu: |
569 | | - id = io::DrsId::bkg_editor_menu; |
570 | | - break; |
571 | | - } |
572 | | - |
573 | | - set_background(id); |
| 553 | + const MenuInfo &mi = GetMenuInfo(s); |
| 554 | + set_background(mi.border_col); |
574 | 555 | } |
575 | 556 |
|
576 | 557 | ImVec2 Engine::tilepos(float x, float y, float left, float top, int h) { |
|
0 commit comments