Disable picker tool in spectator mode

This commit is contained in:
Jonathan G Rennison 2023-06-17 17:00:49 +01:00
parent 495db43b72
commit 371a555324
2 changed files with 10 additions and 3 deletions

View File

@ -41,6 +41,7 @@
#include "debug_desync.h" #include "debug_desync.h"
#include "timer/timer.h" #include "timer/timer.h"
#include "timer/timer_game_tick.h" #include "timer/timer_game_tick.h"
#include "tilehighlight_func.h"
#include "table/strings.h" #include "table/strings.h"
@ -132,6 +133,7 @@ void SetLocalCompany(CompanyID new_company)
InvalidateWindowClassesData(WC_COMPANY); InvalidateWindowClassesData(WC_COMPANY);
/* Delete any construction windows... */ /* Delete any construction windows... */
DeleteConstructionWindows(); DeleteConstructionWindows();
ResetObjectToPlace();
} }
if (switching_company && Company::IsValidID(new_company)) { if (switching_company && Company::IsValidID(new_company)) {

View File

@ -213,11 +213,11 @@ static void PopupMainToolbMenu(Window *w, int widget, DropDownList &&list, int d
* @param string String for the first item in the menu * @param string String for the first item in the menu
* @param count Number of items in the menu * @param count Number of items in the menu
*/ */
static void PopupMainToolbMenu(Window *w, int widget, StringID string, int count) static void PopupMainToolbMenu(Window *w, int widget, StringID string, int count, uint32 disabled = 0)
{ {
DropDownList list; DropDownList list;
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
list.emplace_back(new DropDownListStringItem(string + i, i, false)); list.emplace_back(new DropDownListStringItem(string + i, i, i < 32 && HasBit(disabled, i)));
} }
PopupMainToolbMenu(w, widget, std::move(list), 0); PopupMainToolbMenu(w, widget, std::move(list), 0);
} }
@ -1219,6 +1219,7 @@ static CallBackFunction PlaceLandBlockInfo()
static CallBackFunction PlacePickerTool() static CallBackFunction PlacePickerTool()
{ {
if (_local_company == COMPANY_SPECTATOR) return CBF_NONE;
if (_last_started_action == CBF_PLACE_PICKER) { if (_last_started_action == CBF_PLACE_PICKER) {
ResetObjectToPlace(); ResetObjectToPlace();
return CBF_NONE; return CBF_NONE;
@ -1231,7 +1232,11 @@ static CallBackFunction PlacePickerTool()
static CallBackFunction ToolbarHelpClick(Window *w) static CallBackFunction ToolbarHelpClick(Window *w)
{ {
PopupMainToolbMenu(w, _game_mode == GM_EDITOR ? (int)WID_TE_HELP : (int)WID_TN_HELP, STR_ABOUT_MENU_LAND_BLOCK_INFO, _settings_client.gui.newgrf_developer_tools ? HME_LAST : HME_LAST_NON_DEV); uint mask = 0;
if (_local_company == COMPANY_SPECTATOR) SetBit(mask, HME_PICKER);
int count = _settings_client.gui.newgrf_developer_tools ? HME_LAST : HME_LAST_NON_DEV;
int widget = (_game_mode == GM_EDITOR) ? (int)WID_TE_HELP : (int)WID_TN_HELP;
PopupMainToolbMenu(w, widget, STR_ABOUT_MENU_LAND_BLOCK_INFO, count, mask);
return CBF_NONE; return CBF_NONE;
} }