mirror of https://github.com/OpenTTD/OpenTTD
(svn r23361) -Codechange: move multiplayer DoCommand callback code so other script users can call their own
parent
3da8b5097a
commit
ae8540f5e0
|
@ -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) {
|
||||||
|
|
|
@ -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 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.
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
|
@ -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()) {
|
||||||
|
|
|
@ -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.
|
||||||
|
|
Loading…
Reference in New Issue