(svn r18781) -Codechange: pass the CommandCost to the callback instead of whether it succeeded or not.

-Fix: AIs did update their last cost incorrectly in network games if the cost of the DC_EXEC phase differed from the ~DC_EXEC phase.
This commit is contained in:
rubidium
2010-01-11 18:46:09 +00:00
parent 4d3871f594
commit 26b203e3ff
25 changed files with 137 additions and 150 deletions

View File

@@ -20,8 +20,6 @@
typedef std::map<const char *, class AIInfo *, StringCompare> AIInfoList;
void CcAI(bool success, TileIndex tile, uint32 p1, uint32 p2);
class AI {
public:
/**

View File

@@ -218,14 +218,15 @@
event->Release();
}
void CcAI(bool success, TileIndex tile, uint32 p1, uint32 p2)
void CcAI(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
{
AIObject::SetLastCommandRes(success);
AIObject::SetLastCommandRes(result.Succeeded());
if (!success) {
AIObject::SetLastError(AIError::StringToError(_error_message));
if (result.Failed()) {
AIObject::SetLastError(AIError::StringToError(result.GetErrorMessage()));
} else {
AIObject::IncreaseDoCommandCosts(AIObject::GetLastCost());
AIObject::IncreaseDoCommandCosts(result.GetCost());
AIObject::SetLastCost(result.GetCost());
}
Company::Get(_current_company)->ai_instance->Continue();

View File

@@ -36,7 +36,7 @@ typedef bool (AIModeProc)();
* command processing, and command-validation checks.
*/
class AIObject : public SimpleCountedObject {
friend void CcAI(bool success, TileIndex tile, uint32 p1, uint32 p2);
friend void CcAI(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2);
friend class AIInstance;
protected:
/**