diff options
Diffstat (limited to 'src/script/api/script_sign.cpp')
-rw-r--r-- | src/script/api/script_sign.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/script/api/script_sign.cpp b/src/script/api/script_sign.cpp index b5b8dacbc..352bb185e 100644 --- a/src/script/api/script_sign.cpp +++ b/src/script/api/script_sign.cpp @@ -33,13 +33,17 @@ return static_cast<ScriptCompany::CompanyID>((int)::Sign::Get(sign_id)->owner); } -/* static */ bool ScriptSign::SetName(SignID sign_id, const char *name) +/* static */ bool ScriptSign::SetName(SignID sign_id, Text *name) { + CCountedPtr<Text> counter(name); + EnforcePrecondition(false, IsValidSign(sign_id)); - EnforcePrecondition(false, !::StrEmpty(name)); - EnforcePreconditionCustomError(false, ::Utf8StringLength(name) < MAX_LENGTH_SIGN_NAME_CHARS, ScriptError::ERR_PRECONDITION_STRING_TOO_LONG); + EnforcePrecondition(false, name != NULL); + const char *text = name->GetEncodedText(); + EnforcePrecondition(false, !::StrEmpty(text)); + EnforcePreconditionCustomError(false, ::Utf8StringLength(text) < MAX_LENGTH_SIGN_NAME_CHARS, ScriptError::ERR_PRECONDITION_STRING_TOO_LONG); - return ScriptObject::DoCommand(0, sign_id, 0, CMD_RENAME_SIGN, name); + return ScriptObject::DoCommand(0, sign_id, 0, CMD_RENAME_SIGN, text); } /* static */ char *ScriptSign::GetName(SignID sign_id) @@ -69,9 +73,13 @@ return ScriptObject::DoCommand(0, sign_id, 0, CMD_RENAME_SIGN, ""); } -/* static */ SignID ScriptSign::BuildSign(TileIndex location, const char *text) +/* static */ SignID ScriptSign::BuildSign(TileIndex location, Text *name) { + CCountedPtr<Text> counter(name); + EnforcePrecondition(INVALID_SIGN, ::IsValidTile(location)); + EnforcePrecondition(INVALID_SIGN, name != NULL); + const char *text = name->GetEncodedText(); EnforcePrecondition(INVALID_SIGN, !::StrEmpty(text)); EnforcePreconditionCustomError(INVALID_SIGN, ::Utf8StringLength(text) < MAX_LENGTH_SIGN_NAME_CHARS, ScriptError::ERR_PRECONDITION_STRING_TOO_LONG); |