Changeset - r18507:a734d5918322
[Not reviewed]
master
0 6 0
truebrain - 13 years ago 2011-11-29 23:21:42
truebrain@openttd.org
(svn r23361) -Codechange: move multiplayer DoCommand callback code so other script users can call their own
6 files changed with 28 insertions and 15 deletions:
0 comments (0 inline, 0 general)
src/ai/ai_core.cpp
Show inline comments
 
@@ -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) {
src/ai/ai_instance.cpp
Show inline comments
 
@@ -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;
 
}
src/ai/ai_instance.hpp
Show inline comments
 
@@ -31,6 +31,7 @@ private:
 

	
 
	/* virtual */ void RegisterAPI();
 
	/* virtual */ void Died();
 
	/* virtual */ CommandCallback *GetDoCommandCallback();
 

	
 
	/**
 
	 * Load squirrel scripts to emulate an older API.
src/command_func.h
Show inline comments
 
@@ -70,7 +70,7 @@ static inline DoCommandFlag CommandFlags
 

	
 
/*** All command callbacks that exist ***/
 

	
 
/* ai/ai_core.cpp */
 
/* ai/ai_instance.cpp */
 
CommandCallback CcAI;
 

	
 
/* airport_gui.cpp */
src/script/api/script_object.cpp
Show inline comments
 
@@ -243,7 +243,7 @@ ScriptObject::ActiveInstance::~ActiveIns
 
#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()) {
src/script/script_instance.hpp
Show inline comments
 
@@ -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.
0 comments (0 inline, 0 general)