Mercurial > hg > openttd
changeset 18517:3dc74f255217 draft
(svn r23361) -Codechange: move multiplayer DoCommand callback code so other script users can call their own
author | truebrain <truebrain@openttd.org> |
---|---|
date | Tue, 29 Nov 2011 23:21:42 +0000 |
parents | 3b52341f7976 |
children | 928151e04253 |
files | src/ai/ai_core.cpp src/ai/ai_instance.cpp src/ai/ai_instance.hpp src/command_func.h src/script/api/script_object.cpp src/script/script_instance.hpp |
diffstat | 6 files changed, 28 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ai/ai_core.cpp +++ b/src/ai/ai_core.cpp @@ -244,19 +244,6 @@ event->Release(); } -/** - * DoCommand callback function for all commands executed by AIs. - * @param result The result of the command. - * @param tile The tile on which the command was executed. - * @param p1 p1 as given to DoCommandPInternal. - * @param p2 p2 as given to DoCommandPInternal. - */ -void CcAI(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) -{ - Company::Get(_current_company)->ai_instance->DoCommandCallback(result, tile, p1, p2); - Company::Get(_current_company)->ai_instance->Continue(); -} - /* static */ void AI::Save(CompanyID company) { if (!_networking || _network_server) {
--- a/src/ai/ai_instance.cpp +++ b/src/ai/ai_instance.cpp @@ -227,3 +227,21 @@ } } } + +/** + * DoCommand callback function for all commands executed by AIs. + * @param result The result of the command. + * @param tile The tile on which the command was executed. + * @param p1 p1 as given to DoCommandPInternal. + * @param p2 p2 as given to DoCommandPInternal. + */ +void CcAI(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) +{ + Company::Get(_current_company)->ai_instance->DoCommandCallback(result, tile, p1, p2); + Company::Get(_current_company)->ai_instance->Continue(); +} + +CommandCallback *AIInstance::GetDoCommandCallback() +{ + return &CcAI; +}
--- a/src/ai/ai_instance.hpp +++ b/src/ai/ai_instance.hpp @@ -31,6 +31,7 @@ /* virtual */ void RegisterAPI(); /* virtual */ void Died(); + /* virtual */ CommandCallback *GetDoCommandCallback(); /** * Load squirrel scripts to emulate an older API.
--- a/src/command_func.h +++ b/src/command_func.h @@ -70,7 +70,7 @@ /*** All command callbacks that exist ***/ -/* ai/ai_core.cpp */ +/* ai/ai_instance.cpp */ CommandCallback CcAI; /* airport_gui.cpp */
--- a/src/script/api/script_object.cpp +++ b/src/script/api/script_object.cpp @@ -243,7 +243,7 @@ #endif /* Try to perform the command. */ - CommandCost res = ::DoCommandPInternal(tile, p1, p2, cmd, _networking ? CcAI : NULL, text, false, estimate_only); + CommandCost res = ::DoCommandPInternal(tile, p1, p2, cmd, _networking ? ScriptObject::GetActiveInstance()->GetDoCommandCallback() : NULL, text, false, estimate_only); /* We failed; set the error and bail out */ if (res.Failed()) {
--- a/src/script/script_instance.hpp +++ b/src/script/script_instance.hpp @@ -15,6 +15,8 @@ #include <squirrel.h> #include "script_suspend.hpp" +#include "../command_type.h" + /** Runtime information about a script like a pointer to the squirrel vm and the current state. */ class ScriptInstance { public: @@ -155,6 +157,11 @@ */ virtual void Died(); + /** + * Get the callback handling DoCommands in case of networking. + */ + virtual CommandCallback *GetDoCommandCallback() = 0; + private: class ScriptController *controller; ///< The script main class. class ScriptStorage *storage; ///< Some global information for each running script.