Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00012 #include "../../stdafx.h"
00013 #include "script_basestation.hpp"
00014 #include "../../station_base.h"
00015 #include "../../string_func.h"
00016 #include "../../strings_func.h"
00017 #include "table/strings.h"
00018
00019 bool ScriptBaseStation::IsValidBaseStation(StationID station_id)
00020 {
00021 const BaseStation *st = ::BaseStation::GetIfValid(station_id);
00022 return st != NULL && (st->owner == ScriptObject::GetCompany() || ScriptObject::GetCompany() == OWNER_DEITY || st->owner == OWNER_NONE);
00023 }
00024
00025 char *ScriptBaseStation::GetName(StationID station_id)
00026 {
00027 if (!IsValidBaseStation(station_id)) return NULL;
00028
00029 static const int len = 64;
00030 char *name = MallocT<char>(len);
00031
00032 ::SetDParam(0, station_id);
00033 ::GetString(name, ::Station::IsValidID(station_id) ? STR_STATION_NAME : STR_WAYPOINT_NAME, &name[len - 1]);
00034 return name;
00035 }
00036
00037 bool ScriptBaseStation::SetName(StationID station_id, Text *name)
00038 {
00039 CCountedPtr<Text> counter(name);
00040
00041 EnforcePrecondition(false, ScriptObject::GetCompany() != OWNER_DEITY);
00042 EnforcePrecondition(false, IsValidBaseStation(station_id));
00043 EnforcePrecondition(false, name != NULL);
00044 const char *text = name->GetEncodedText();
00045 EnforcePrecondition(false, !::StrEmpty(text));
00046 EnforcePreconditionCustomError(false, ::Utf8StringLength(text) < MAX_LENGTH_STATION_NAME_CHARS, ScriptError::ERR_PRECONDITION_STRING_TOO_LONG);
00047
00048 return ScriptObject::DoCommand(0, station_id, 0, ::Station::IsValidID(station_id) ? CMD_RENAME_STATION : CMD_RENAME_WAYPOINT, text);
00049 }
00050
00051 TileIndex ScriptBaseStation::GetLocation(StationID station_id)
00052 {
00053 if (!IsValidBaseStation(station_id)) return INVALID_TILE;
00054
00055 return ::BaseStation::Get(station_id)->xy;
00056 }
00057
00058 int32 ScriptBaseStation::GetConstructionDate(StationID station_id)
00059 {
00060 if (!IsValidBaseStation(station_id)) return -1;
00061
00062 return ::BaseStation::Get(station_id)->build_date;
00063 }