src/ai/api/ai_sign.cpp
branchnoai
changeset 10952 d16212cc2394
parent 10855 90904faa1890
equal deleted inserted replaced
10946:7ccfbff5698d 10952:d16212cc2394
     9 #include "../../core/alloc_func.hpp"
     9 #include "../../core/alloc_func.hpp"
    10 #include "../../signs_base.h"
    10 #include "../../signs_base.h"
    11 #include "../../string_func.h"
    11 #include "../../string_func.h"
    12 #include "../../strings_func.h"
    12 #include "../../strings_func.h"
    13 #include "../../tile_map.h"
    13 #include "../../tile_map.h"
       
    14 #include "../../player_func.h"
    14 
    15 
    15 /* static */ SignID AISign::GetMaxSignID()
    16 /* static */ SignID AISign::GetMaxSignID()
    16 {
    17 {
    17 	return ::GetMaxSignIndex();
    18 	return ::GetMaxSignIndex();
    18 }
    19 }
    19 
    20 
    20 /* static */ bool AISign::IsValidSign(SignID sign_id)
    21 /* static */ bool AISign::IsValidSign(SignID sign_id)
    21 {
    22 {
    22 	return ::IsValidSignID(sign_id);
    23 	return ::IsValidSignID(sign_id) && ::GetSign(sign_id)->owner == _current_player;
    23 }
    24 }
    24 
    25 
    25 /* static */ char *AISign::GetText(SignID sign_id)
    26 /* static */ char *AISign::GetText(SignID sign_id)
    26 {
    27 {
    27 	if (!IsValidSign(sign_id)) return NULL;
    28 	if (!IsValidSign(sign_id)) return NULL;
       
    29 
    28 	static const int len = 64;
    30 	static const int len = 64;
    29 	char *sign_name = MallocT<char>(len);
    31 	char *sign_name = MallocT<char>(len);
    30 
    32 
    31 	::SetDParam(0, sign_id);
    33 	::SetDParam(0, sign_id);
    32 	::GetString(sign_name, STR_SIGN_NAME, &sign_name[len - 1]);
    34 	::GetString(sign_name, STR_SIGN_NAME, &sign_name[len - 1]);
    35 }
    37 }
    36 
    38 
    37 /* static */ TileIndex AISign::GetLocation(SignID sign_id)
    39 /* static */ TileIndex AISign::GetLocation(SignID sign_id)
    38 {
    40 {
    39 	if (!IsValidSign(sign_id)) return INVALID_TILE;
    41 	if (!IsValidSign(sign_id)) return INVALID_TILE;
       
    42 
    40 	const Sign *sign = ::GetSign(sign_id);
    43 	const Sign *sign = ::GetSign(sign_id);
    41 	return ::TileVirtXY(sign->x, sign->y);
    44 	return ::TileVirtXY(sign->x, sign->y);
    42 }
       
    43 
       
    44 /* static */ AICompany::CompanyID AISign::GetOwner(SignID sign_id)
       
    45 {
       
    46 	if (!IsValidSign(sign_id)) return AICompany::INVALID_COMPANY;
       
    47 	const Sign *sign = ::GetSign(sign_id);
       
    48 	return (AICompany::CompanyID)(byte)sign->owner;
       
    49 }
    45 }
    50 
    46 
    51 /* static */ bool AISign::RemoveSign(SignID sign_id)
    47 /* static */ bool AISign::RemoveSign(SignID sign_id)
    52 {
    48 {
    53 	EnforcePrecondition(false, IsValidSign(sign_id));
    49 	EnforcePrecondition(false, IsValidSign(sign_id));