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)); |