| 698 | } |
| 699 | |
| 700 | void OnPlaceObject([[maybe_unused]] Point pt, TileIndex tile) override |
| 701 | { |
| 702 | bool success = true; |
| 703 | /* We do not need to protect ourselves against "Random Many Industries" in this mode */ |
| 704 | const IndustrySpec *indsp = GetIndustrySpec(this->selected_type); |
| 705 | uint32_t seed = InteractiveRandom(); |
| 706 | uint32_t layout_index = InteractiveRandomRange((uint32_t)indsp->layouts.size()); |
| 707 | |
| 708 | if (_game_mode == GM_EDITOR) { |
| 709 | /* Show error if no town exists at all */ |
| 710 | if (Town::GetNumItems() == 0) { |
| 711 | ShowErrorMessage(GetEncodedString(STR_ERROR_CAN_T_BUILD_HERE, indsp->name), |
| 712 | GetEncodedString(STR_ERROR_MUST_FOUND_TOWN_FIRST), WL_INFO, pt.x, pt.y); |
| 713 | return; |
| 714 | } |
| 715 | |
| 716 | AutoRestoreBackup backup_cur_company(_current_company, OWNER_NONE); |
| 717 | AutoRestoreBackup backup_generating_world(_generating_world, true); |
| 718 | AutoRestoreBackup backup_ignore_industry_restritions(_ignore_industry_restrictions, true); |
| 719 | |
| 720 | Command<CMD_BUILD_INDUSTRY>::Post(STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY, tile, this->selected_type, layout_index, false, seed); |
| 721 | } else { |
| 722 | success = Command<CMD_BUILD_INDUSTRY>::Post(STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY, tile, this->selected_type, layout_index, false, seed); |
| 723 | } |
| 724 | |
| 725 | /* If an industry has been built, just reset the cursor and the system */ |
| 726 | if (success && !_settings_client.gui.persistent_buildingtools) ResetObjectToPlace(); |
| 727 | } |
| 728 | |
| 729 | const IntervalTimer<TimerWindow> update_interval = {std::chrono::seconds(3), [this](auto) { |
| 730 | if (_game_mode == GM_EDITOR) return; |
nothing calls this directly
no test coverage detected