@@ -9,6 +9,7 @@
#include "stdafx.h"
#include "landscape.h"
#include "company_func.h"
#include "signs_base.h"
#include "signs_func.h"
#include "strings_func.h"
@@ -61,3 +62,14 @@ void UpdateAllSignVirtCoords()
si->UpdateVirtCoord();
}
/**
* Check if the current company can rename a given sign.
* @param *si The sign in question.
* @return true if the sign can be renamed, else false.
*/
bool CompanyCanRenameSign(const Sign *si)
{
if (si->owner == OWNER_DEITY && _current_company != OWNER_DEITY && _game_mode != GM_EDITOR) return false;
return true;
@@ -79,7 +79,7 @@ CommandCost CmdRenameSign(TileIndex tile
Sign *si = Sign::GetIfValid(p1);
if (si == nullptr) return CMD_ERROR;
if (si->owner == OWNER_DEITY && _current_company != OWNER_DEITY && _game_mode != GM_EDITOR) return CMD_ERROR;
if (!CompanyCanRenameSign(si)) return CMD_ERROR;
/* Rename the signs when empty, otherwise remove it */
if (!text.empty()) {
@@ -18,6 +18,7 @@ extern SignID _new_sign_id;
void UpdateAllSignVirtCoords();
void PlaceProc_Sign(TileIndex tile);
bool CompanyCanRenameSign(const Sign *si);
/* signs_gui.cpp */
void ShowRenameSignWindow(const Sign *si);
@@ -565,10 +565,14 @@ static WindowDesc _query_sign_edit_desc(
void HandleClickOnSign(const Sign *si)
/* If we can't rename the sign, don't even open the rename GUI. */
if (!CompanyCanRenameSign(si)) return;
if (_ctrl_pressed && (si->owner == _local_company || (si->owner == OWNER_DEITY && _game_mode == GM_EDITOR))) {
RenameSign(si->index, "");
return;
ShowRenameSignWindow(si);
Status change: