Mercurial > hg > openttd
changeset 18979:28e825d4710c draft
(svn r23835) -Change [FS#4999]: Make signs placed in scenario editor belong to the GS. That way they are always shown in game and are not editable.
author | frosch <frosch@openttd.org> |
---|---|
date | Sun, 22 Jan 2012 13:54:02 +0000 |
parents | 8c191e59b103 |
children | 256497218375 |
files | src/saveload/saveload.cpp src/saveload/signs_sl.cpp src/signs_cmd.cpp src/viewport.cpp |
diffstat | 4 files changed, 13 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/saveload/saveload.cpp +++ b/src/saveload/saveload.cpp @@ -234,8 +234,9 @@ * 168 23637 * 169 23816 * 170 23826 + * 171 23835 */ -extern const uint16 SAVEGAME_VERSION = 170; ///< Current savegame version of OpenTTD. +extern const uint16 SAVEGAME_VERSION = 171; ///< Current savegame version of OpenTTD. SavegameType _savegame_type; ///< type of savegame we are loading
--- a/src/saveload/signs_sl.cpp +++ b/src/saveload/signs_sl.cpp @@ -11,6 +11,7 @@ #include "../stdafx.h" #include "../signs_base.h" +#include "../fios.h" #include "saveload.h" @@ -55,6 +56,11 @@ if (IsSavegameVersionBefore(6, 1) || (IsSavegameVersionBefore(83) && si->owner == INVALID_OWNER)) { si->owner = OWNER_NONE; } + + /* Signs placed in scenario editor shall now be OWNER_DEITY */ + if (IsSavegameVersionBefore(171) && si->owner == OWNER_NONE && _saveload_mode == SLD_LOAD_SCENARIO) { + si->owner = OWNER_DEITY; + } } }
--- a/src/signs_cmd.cpp +++ b/src/signs_cmd.cpp @@ -45,7 +45,7 @@ /* When we execute, really make the sign */ if (flags & DC_EXEC) { - Sign *si = new Sign(_current_company); + Sign *si = new Sign(_game_mode == GM_EDITOR ? OWNER_DEITY : _current_company); int x = TileX(tile) * TILE_SIZE; int y = TileY(tile) * TILE_SIZE; @@ -78,7 +78,7 @@ { Sign *si = Sign::GetIfValid(p1); if (si == NULL) return CMD_ERROR; - if (si->owner == OWNER_DEITY && _current_company != OWNER_DEITY) return CMD_ERROR; + if (si->owner == OWNER_DEITY && _current_company != OWNER_DEITY && _game_mode != GM_EDITOR) return CMD_ERROR; /* Rename the signs when empty, otherwise remove it */ if (!StrEmpty(text)) { @@ -89,7 +89,7 @@ free(si->name); /* Assign the new one */ si->name = strdup(text); - si->owner = _current_company; + if (_game_mode != GM_EDITOR) si->owner = _current_company; si->UpdateVirtCoord(); InvalidateWindowData(WC_SIGN_LIST, 0, 1);
--- a/src/viewport.cpp +++ b/src/viewport.cpp @@ -1872,8 +1872,8 @@ const Sign *si; FOR_ALL_SIGNS(si) { /* If competitor signs are hidden, don't check signs that aren't owned by local company */ - if (!HasBit(_display_opt, DO_SHOW_COMPETITOR_SIGNS) && _local_company != si->owner) continue; - if (si->owner == OWNER_DEITY) continue; + if (!HasBit(_display_opt, DO_SHOW_COMPETITOR_SIGNS) && _local_company != si->owner && si->owner != OWNER_DEITY) continue; + if (si->owner == OWNER_DEITY && _game_mode != GM_EDITOR) continue; if (CheckClickOnViewportSign(vp, x, y, &si->sign)) { HandleClickOnSign(si);