mirror of https://github.com/OpenTTD/OpenTTD.git
Fix: Don't try to rename OWNER_DEITY signs in-game (#9716)
This commit is contained in:
parent
6953df7b5e
commit
802ca4e722
|
@ -9,6 +9,7 @@
|
||||||
|
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
#include "landscape.h"
|
#include "landscape.h"
|
||||||
|
#include "company_func.h"
|
||||||
#include "signs_base.h"
|
#include "signs_base.h"
|
||||||
#include "signs_func.h"
|
#include "signs_func.h"
|
||||||
#include "strings_func.h"
|
#include "strings_func.h"
|
||||||
|
@ -61,3 +62,14 @@ void UpdateAllSignVirtCoords()
|
||||||
si->UpdateVirtCoord();
|
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, DoCommandFlag flags, uint32 p1, uint32
|
||||||
{
|
{
|
||||||
Sign *si = Sign::GetIfValid(p1);
|
Sign *si = Sign::GetIfValid(p1);
|
||||||
if (si == nullptr) return CMD_ERROR;
|
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 */
|
/* Rename the signs when empty, otherwise remove it */
|
||||||
if (!text.empty()) {
|
if (!text.empty()) {
|
||||||
|
|
|
@ -18,6 +18,7 @@ extern SignID _new_sign_id;
|
||||||
|
|
||||||
void UpdateAllSignVirtCoords();
|
void UpdateAllSignVirtCoords();
|
||||||
void PlaceProc_Sign(TileIndex tile);
|
void PlaceProc_Sign(TileIndex tile);
|
||||||
|
bool CompanyCanRenameSign(const Sign *si);
|
||||||
|
|
||||||
/* signs_gui.cpp */
|
/* signs_gui.cpp */
|
||||||
void ShowRenameSignWindow(const Sign *si);
|
void ShowRenameSignWindow(const Sign *si);
|
||||||
|
|
|
@ -565,10 +565,14 @@ static WindowDesc _query_sign_edit_desc(
|
||||||
*/
|
*/
|
||||||
void HandleClickOnSign(const Sign *si)
|
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))) {
|
if (_ctrl_pressed && (si->owner == _local_company || (si->owner == OWNER_DEITY && _game_mode == GM_EDITOR))) {
|
||||||
RenameSign(si->index, "");
|
RenameSign(si->index, "");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ShowRenameSignWindow(si);
|
ShowRenameSignWindow(si);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue