1
0
Fork 0

(svn r23361) -Codechange: move multiplayer DoCommand callback code so other script users can call their own

release/1.2
truebrain 2011-11-29 23:21:42 +00:00
parent 3da8b5097a
commit ae8540f5e0
6 changed files with 28 additions and 15 deletions

View File

@ -244,19 +244,6 @@
event->Release(); 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) /* static */ void AI::Save(CompanyID company)
{ {
if (!_networking || _network_server) { if (!_networking || _network_server) {

View File

@ -227,3 +227,21 @@ void AIInstance::Died()
} }
} }
} }
/**
* 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;
}

View File

@ -31,6 +31,7 @@ private:
/* virtual */ void RegisterAPI(); /* virtual */ void RegisterAPI();
/* virtual */ void Died(); /* virtual */ void Died();
/* virtual */ CommandCallback *GetDoCommandCallback();
/** /**
* Load squirrel scripts to emulate an older API. * Load squirrel scripts to emulate an older API.

View File

@ -70,7 +70,7 @@ static inline DoCommandFlag CommandFlagsToDCFlags(CommandFlags cmd_flags)
/*** All command callbacks that exist ***/ /*** All command callbacks that exist ***/
/* ai/ai_core.cpp */ /* ai/ai_instance.cpp */
CommandCallback CcAI; CommandCallback CcAI;
/* airport_gui.cpp */ /* airport_gui.cpp */

View File

@ -243,7 +243,7 @@ ScriptObject::ActiveInstance::~ActiveInstance()
#endif #endif
/* Try to perform the command. */ /* 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 */ /* We failed; set the error and bail out */
if (res.Failed()) { if (res.Failed()) {

View File

@ -15,6 +15,8 @@
#include <squirrel.h> #include <squirrel.h>
#include "script_suspend.hpp" #include "script_suspend.hpp"
#include "../command_type.h"
/** Runtime information about a script like a pointer to the squirrel vm and the current state. */ /** Runtime information about a script like a pointer to the squirrel vm and the current state. */
class ScriptInstance { class ScriptInstance {
public: public:
@ -155,6 +157,11 @@ protected:
*/ */
virtual void Died(); virtual void Died();
/**
* Get the callback handling DoCommands in case of networking.
*/
virtual CommandCallback *GetDoCommandCallback() = 0;
private: private:
class ScriptController *controller; ///< The script main class. class ScriptController *controller; ///< The script main class.
class ScriptStorage *storage; ///< Some global information for each running script. class ScriptStorage *storage; ///< Some global information for each running script.