author | truelight |
Fri, 04 May 2007 22:59:59 +0000 | |
branch | noai |
changeset 9617 | df9cedf12aab |
parent 9599 | 949374e83b78 |
child 9723 | eee46cb39750 |
permissions | -rw-r--r-- |
9511 | 1 |
/* $Id$ */ |
2 |
||
3 |
/** @file ai_sign.cpp handles all functions of the AISign class */ |
|
4 |
||
5 |
#include "ai_sign.hpp" |
|
6 |
#include "table/strings.h" |
|
7 |
#include "../../command.h" |
|
9599 | 8 |
#include "../../landscape.h" |
9511 | 9 |
#include "../../signs.h" |
10 |
#include "../../strings.h" |
|
11 |
#include "../../variables.h" /* For SetDParam */ |
|
12 |
||
13 |
SignID AISign::GetMaxSignID() |
|
14 |
{ |
|
15 |
return ::GetMaxSignIndex(); |
|
16 |
} |
|
17 |
||
18 |
int32 AISign::GetSignCount() |
|
19 |
{ |
|
20 |
return ::GetNumSigns(); |
|
21 |
} |
|
22 |
||
23 |
/* static */ bool AISign::IsValidSign(SignID sign_id) |
|
24 |
{ |
|
25 |
return ::IsValidSignID(sign_id); |
|
26 |
} |
|
27 |
||
28 |
char *AISign::GetText(SignID sign_id) |
|
29 |
{ |
|
30 |
if (!AISign::IsValidSign(sign_id)) return NULL; |
|
31 |
static const int len = 64; |
|
32 |
char *sign_name = MallocT<char>(len); |
|
33 |
||
34 |
::GetString(sign_name, ::GetSign(sign_id)->str, &sign_name[len - 1]); |
|
35 |
||
36 |
return sign_name; |
|
37 |
} |
|
38 |
||
39 |
TileIndex AISign::GetLocation(SignID sign_id) |
|
40 |
{ |
|
41 |
if (!AISign::IsValidSign(sign_id)) return INVALID_TILE; |
|
42 |
const Sign *sign = ::GetSign(sign_id); |
|
43 |
return ::TileVirtXY(sign->x, sign->y); |
|
44 |
} |
|
45 |
||
46 |
bool AISign::RemoveSign(SignID sign_id) |
|
47 |
{ |
|
48 |
_cmd_text = ""; |
|
49 |
return this->DoCommand(0, sign_id, 0, CMD_RENAME_SIGN); |
|
50 |
} |
|
51 |
||
52 |
SignID AISign::BuildSign(TileIndex location, const char *text) |
|
53 |
{ |
|
54 |
if (!::IsValidTile(location)) return INVALID_SIGN; |
|
55 |
||
9560
ff2dde050a4c
(svn r9498) [NoAI] -Add: added regression for AITransactionMode()
truelight
parents:
9511
diff
changeset
|
56 |
/* Reset the internal NewSignID in case we are in TestMode */ |
ff2dde050a4c
(svn r9498) [NoAI] -Add: added regression for AITransactionMode()
truelight
parents:
9511
diff
changeset
|
57 |
AIObject::SetNewSignID(0); |
ff2dde050a4c
(svn r9498) [NoAI] -Add: added regression for AITransactionMode()
truelight
parents:
9511
diff
changeset
|
58 |
|
9561
33b2f192bb34
(svn r9499) [NoAI] -Revert r9498: reverted part of ai_sign.cpp, as by policy this is the road we take
truelight
parents:
9560
diff
changeset
|
59 |
bool ret = this->DoCommand(location, 0, 0, CMD_PLACE_SIGN); |
33b2f192bb34
(svn r9499) [NoAI] -Revert r9498: reverted part of ai_sign.cpp, as by policy this is the road we take
truelight
parents:
9560
diff
changeset
|
60 |
if (!ret) return INVALID_SIGN; |
9511 | 61 |
|
62 |
SignID new_sign_id = AIObject::GetNewSignID(); |
|
63 |
_cmd_text = text; |
|
9561
33b2f192bb34
(svn r9499) [NoAI] -Revert r9498: reverted part of ai_sign.cpp, as by policy this is the road we take
truelight
parents:
9560
diff
changeset
|
64 |
ret = this->DoCommand(0, new_sign_id, 0, CMD_RENAME_SIGN); |
33b2f192bb34
(svn r9499) [NoAI] -Revert r9498: reverted part of ai_sign.cpp, as by policy this is the road we take
truelight
parents:
9560
diff
changeset
|
65 |
if (!ret) { |
9511 | 66 |
this->RemoveSign(new_sign_id); |
67 |
return INVALID_SIGN; |
|
68 |
} |
|
69 |
return new_sign_id; |
|
70 |
} |