mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r23361) -Codechange: move multiplayer DoCommand callback code so other script users can call their own
This commit is contained in:
parent
3da8b5097a
commit
ae8540f5e0
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -31,6 +31,7 @@ private:
|
|||
|
||||
/* virtual */ void RegisterAPI();
|
||||
/* virtual */ void Died();
|
||||
/* virtual */ CommandCallback *GetDoCommandCallback();
|
||||
|
||||
/**
|
||||
* Load squirrel scripts to emulate an older API.
|
||||
|
|
|
@ -70,7 +70,7 @@ static inline DoCommandFlag CommandFlagsToDCFlags(CommandFlags cmd_flags)
|
|||
|
||||
/*** All command callbacks that exist ***/
|
||||
|
||||
/* ai/ai_core.cpp */
|
||||
/* ai/ai_instance.cpp */
|
||||
CommandCallback CcAI;
|
||||
|
||||
/* airport_gui.cpp */
|
||||
|
|
|
@ -243,7 +243,7 @@ ScriptObject::ActiveInstance::~ActiveInstance()
|
|||
#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()) {
|
||||
|
|
|
@ -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 @@ protected:
|
|||
*/
|
||||
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.
|
||||
|
|
Loading…
Reference in New Issue