| 697 | } |
| 698 | |
| 699 | void Scene_Debug::UpdateRangeListWindow() { |
| 700 | int idx = 0; |
| 701 | const bool is_battle = Game_Battle::IsBattleRunning(); |
| 702 | |
| 703 | auto addItem = [&](const auto& name, bool enabled = true) { |
| 704 | range_window->SetItemText(idx, name); |
| 705 | range_window->SetItemEnabled(idx, enabled); |
| 706 | ++idx; |
| 707 | }; |
| 708 | |
| 709 | auto fillRange = [&](Window_VarList::Mode mode) { |
| 710 | auto prefix = Window_VarList::GetPrefix(mode); |
| 711 | int digits = Window_VarList::GetDigitCount(mode); |
| 712 | const int item_count = Window_VarList::GetItemCount(mode, var_window->GetShowDetail()); |
| 713 | assert(digits >= 2 && digits <= 5); |
| 714 | |
| 715 | // Allow some extra space when displaying switches & variables that go above the usual range |
| 716 | if (mode == Window_VarList::eSwitch || mode == Window_VarList::eVariable) { |
| 717 | const auto st = GetSelectedIndexFromRange(mode, range_page, 0); |
| 718 | if (st > 9999) { |
| 719 | digits = 5; |
| 720 | prefix = prefix.substr(0, 1); |
| 721 | } else if (st > 99999) { |
| 722 | digits = 6; |
| 723 | prefix = prefix.substr(0, 1); |
| 724 | } |
| 725 | } |
| 726 | |
| 727 | const int num_elements = Window_VarList::GetNumElements(mode); |
| 728 | |
| 729 | for (int i = 0; i < 10; i++) { |
| 730 | const auto st = GetSelectedIndexFromRange(mode, range_page, i); |
| 731 | if (st > num_elements) { |
| 732 | addItem("", false); |
| 733 | continue; |
| 734 | } |
| 735 | int end = st + item_count - 1; |
| 736 | if (num_elements > 0 && end > num_elements) { |
| 737 | end = num_elements; |
| 738 | } |
| 739 | switch (digits) { |
| 740 | case 2: |
| 741 | addItem(fmt::format("{}[{:02d}-{:02d}]", prefix, st, end)); |
| 742 | break; |
| 743 | case 3: |
| 744 | addItem(fmt::format("{}[{:03d}-{:03d}]", prefix, st, end)); |
| 745 | break; |
| 746 | case 4: |
| 747 | addItem(fmt::format("{}[{:04d}-{:04d}]", prefix, st, end)); |
| 748 | break; |
| 749 | case 5: |
| 750 | addItem(fmt::format("{}[{:05d}...{:02d}]", prefix, st, end % 100)); |
| 751 | break; |
| 752 | case 6: |
| 753 | addItem(fmt::format("{}[{:06d}..{:02d}]", prefix, st, end % 100)); |
| 754 | break; |
| 755 | default: break; |
| 756 | } |
nothing calls this directly
no test coverage detected