0x4C2D8A
| 1720 | |
| 1721 | // 0x4C2D8A |
| 1722 | static void setTrackTypeTabs(Ui::Window* window) |
| 1723 | { |
| 1724 | VehicleType currentTransportTabType = _transportTypeTabInformation[window->currentTab].type; |
| 1725 | generateBuildableVehiclesArray(currentTransportTabType, 0xFF, nullptr); |
| 1726 | |
| 1727 | auto railTrackTypes = 0; |
| 1728 | auto roadTrackTypes = 0; |
| 1729 | for (auto i = 0; i < _numAvailableVehicles; i++) |
| 1730 | { |
| 1731 | auto vehicleObj = ObjectManager::get<VehicleObject>(_availableVehicles[i]); |
| 1732 | if (vehicleObj && vehicleObj->mode == TransportMode::rail) |
| 1733 | { |
| 1734 | railTrackTypes |= (1 << vehicleObj->trackType); |
| 1735 | } |
| 1736 | else if (vehicleObj && vehicleObj->mode == TransportMode::road) |
| 1737 | { |
| 1738 | auto trackType = vehicleObj->trackType; |
| 1739 | if (trackType == 0xFF) |
| 1740 | { |
| 1741 | trackType = getGameState().lastTrackTypeOption; |
| 1742 | } |
| 1743 | roadTrackTypes |= (1 << trackType); |
| 1744 | } |
| 1745 | else |
| 1746 | { |
| 1747 | // Reset the tabs |
| 1748 | _trackTypesForTab[0] = 0xFF; |
| 1749 | _numTrackTypeTabs = 1; |
| 1750 | window->widgets[tab_track_type_0].hidden = false; |
| 1751 | for (WidgetIndex_t j = tab_track_type_1; j <= tab_track_type_7; ++j) |
| 1752 | { |
| 1753 | window->widgets[j].hidden = true; |
| 1754 | } |
| 1755 | return; |
| 1756 | } |
| 1757 | } |
| 1758 | |
| 1759 | WidgetIndex_t trackTypeTab = tab_track_type_0; |
| 1760 | auto trackType = 0; |
| 1761 | for (trackType = Numerics::bitScanForward(railTrackTypes); trackType != -1 && trackTypeTab <= tab_track_type_7; trackType = Numerics::bitScanForward(railTrackTypes)) |
| 1762 | { |
| 1763 | railTrackTypes &= ~(1 << trackType); |
| 1764 | window->widgets[trackTypeTab].hidden = false; |
| 1765 | _trackTypesForTab[widxToTrackTypeTab(trackTypeTab)] = trackType; |
| 1766 | trackTypeTab++; |
| 1767 | } |
| 1768 | |
| 1769 | if (trackType == -1 && trackTypeTab <= tab_track_type_7) |
| 1770 | { |
| 1771 | for (trackType = Numerics::bitScanForward(roadTrackTypes); trackType != -1 && trackTypeTab <= tab_track_type_7; trackType = Numerics::bitScanForward(roadTrackTypes)) |
| 1772 | { |
| 1773 | roadTrackTypes &= ~(1 << trackType); |
| 1774 | window->widgets[trackTypeTab].hidden = false; |
| 1775 | _trackTypesForTab[widxToTrackTypeTab(trackTypeTab)] = trackType | (1 << 7); |
| 1776 | trackTypeTab++; |
| 1777 | } |
| 1778 | } |
| 1779 |
no test coverage detected