forked from mirror/OpenTTD
(svn r3260) -Add: add events for AIs to check if a command execution failed or succeeded
This commit is contained in:
12
command.c
12
command.c
@@ -10,6 +10,7 @@
|
||||
#include "player.h"
|
||||
#include "network.h"
|
||||
#include "variables.h"
|
||||
#include "ai/ai.h"
|
||||
|
||||
const char* _cmd_text = NULL;
|
||||
|
||||
@@ -476,10 +477,16 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
|
||||
res = proc(x,y, flags, p1, p2);
|
||||
if (CmdFailed(res)) {
|
||||
if (res & 0xFFFF) _error_message = res & 0xFFFF;
|
||||
/* Trigger an event special for the AI, so it knows the build has failed
|
||||
* Because the commands are always delayed, this is the only way. */
|
||||
AI_CommandResult(cmd, p1, p2, tile, false);
|
||||
goto show_error;
|
||||
}
|
||||
// no money? Only check if notest is off
|
||||
if (!notest && res != 0 && !CheckPlayerHasMoney(res)) goto show_error;
|
||||
if (!notest && res != 0 && !CheckPlayerHasMoney(res)) {
|
||||
AI_CommandResult(cmd, p1, p2, tile, false);
|
||||
goto show_error;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef ENABLE_NETWORK
|
||||
@@ -514,10 +521,13 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
|
||||
} else {
|
||||
if (CmdFailed(res2)) {
|
||||
if (res2 & 0xFFFF) _error_message = res2 & 0xFFFF;
|
||||
AI_CommandResult(cmd, p1, p2, tile, false);
|
||||
goto show_error;
|
||||
}
|
||||
}
|
||||
|
||||
AI_CommandResult(cmd, p1, p2, tile, true);
|
||||
|
||||
SubtractMoneyFromPlayer(res2);
|
||||
|
||||
if (IsLocalPlayer() && _game_mode != GM_EDITOR) {
|
||||
|
Reference in New Issue
Block a user