mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r14916) -Codechange: make it possible to send CommandContainers directly to DoCommand(P).
This commit is contained in:
parent
427e2d30c5
commit
e39484e9a8
|
@ -373,6 +373,19 @@ byte GetCommandFlags(uint32 cmd)
|
||||||
|
|
||||||
static int _docommand_recursive = 0;
|
static int _docommand_recursive = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shorthand for calling the long DoCommand with a container.
|
||||||
|
*
|
||||||
|
* @param container Container with (almost) all information
|
||||||
|
* @param flags Flags for the command and how to execute the command
|
||||||
|
* @see CommandProc
|
||||||
|
* @return the cost
|
||||||
|
*/
|
||||||
|
CommandCost DoCommand(const CommandContainer *container, uint32 flags)
|
||||||
|
{
|
||||||
|
return DoCommand(container->tile, container->p1, container->p2, flags, container->cmd, container->text);
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* This function executes a given command with the parameters from the #CommandProc parameter list.
|
* This function executes a given command with the parameters from the #CommandProc parameter list.
|
||||||
* Depending on the flags parameter it execute or test a command.
|
* Depending on the flags parameter it execute or test a command.
|
||||||
|
@ -383,6 +396,7 @@ static int _docommand_recursive = 0;
|
||||||
* @param flags Flags for the command and how to execute the command
|
* @param flags Flags for the command and how to execute the command
|
||||||
* @param cmd The command-id to execute (a value of the CMD_* enums)
|
* @param cmd The command-id to execute (a value of the CMD_* enums)
|
||||||
* @see CommandProc
|
* @see CommandProc
|
||||||
|
* @return the cost
|
||||||
*/
|
*/
|
||||||
CommandCost DoCommand(TileIndex tile, uint32 p1, uint32 p2, uint32 flags, uint32 cmd, const char *text)
|
CommandCost DoCommand(TileIndex tile, uint32 p1, uint32 p2, uint32 flags, uint32 cmd, const char *text)
|
||||||
{
|
{
|
||||||
|
@ -457,6 +471,17 @@ Money GetAvailableMoneyForCommand()
|
||||||
return GetCompany(company)->money;
|
return GetCompany(company)->money;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shortcut for the long DoCommandP when having a container with the data.
|
||||||
|
* @param container the container with information.
|
||||||
|
* @param my_cmd indicator if the command is from a company or server (to display error messages for a user)
|
||||||
|
* @return true if the command succeeded, else false
|
||||||
|
*/
|
||||||
|
bool DoCommandP(const CommandContainer *container, bool my_cmd)
|
||||||
|
{
|
||||||
|
return DoCommandP(container->tile, container->p1, container->p2, container->cmd, container->callback, container->text, my_cmd);
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Toplevel network safe docommand function for the current company. Must not be called recursively.
|
* Toplevel network safe docommand function for the current company. Must not be called recursively.
|
||||||
* The callback is called when the command succeeded or failed. The parameters
|
* The callback is called when the command succeeded or failed. The parameters
|
||||||
|
|
|
@ -54,11 +54,13 @@ static const CommandCost CMD_ERROR = CommandCost(INVALID_STRING_ID);
|
||||||
* Execute a command
|
* Execute a command
|
||||||
*/
|
*/
|
||||||
CommandCost DoCommand(TileIndex tile, uint32 p1, uint32 p2, uint32 flags, uint32 cmd, const char *text = NULL);
|
CommandCost DoCommand(TileIndex tile, uint32 p1, uint32 p2, uint32 flags, uint32 cmd, const char *text = NULL);
|
||||||
|
CommandCost DoCommand(const CommandContainer *container, uint32 flags);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute a network safe DoCommand function
|
* Execute a network safe DoCommand function
|
||||||
*/
|
*/
|
||||||
bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, CommandCallback *callback = NULL, const char *text = NULL, bool my_cmd = true);
|
bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, CommandCallback *callback = NULL, const char *text = NULL, bool my_cmd = true);
|
||||||
|
bool DoCommandP(const CommandContainer *container, bool my_cmd = true);
|
||||||
|
|
||||||
#ifdef ENABLE_NETWORK
|
#ifdef ENABLE_NETWORK
|
||||||
|
|
||||||
|
|
|
@ -92,16 +92,6 @@ void NetworkSend_Command(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, Comma
|
||||||
SEND_COMMAND(PACKET_CLIENT_COMMAND)(&c);
|
SEND_COMMAND(PACKET_CLIENT_COMMAND)(&c);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Execute a DoCommand we received from the network
|
|
||||||
* @param cp the command to execute
|
|
||||||
*/
|
|
||||||
static void NetworkExecuteCommand(CommandPacket *cp)
|
|
||||||
{
|
|
||||||
_current_company = cp->company;
|
|
||||||
DoCommandP(cp->tile, cp->p1, cp->p2, cp->cmd | CMD_NETWORK_COMMAND, cp->callback, cp->text, cp->my_cmd);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute all commands on the local command queue that ought to be executed this frame.
|
* Execute all commands on the local command queue that ought to be executed this frame.
|
||||||
*/
|
*/
|
||||||
|
@ -119,10 +109,13 @@ void NetworkExecuteLocalCommandQueue()
|
||||||
error("[net] Trying to execute a packet in the past!");
|
error("[net] Trying to execute a packet in the past!");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We can execute this command */
|
|
||||||
NetworkExecuteCommand(_local_command_queue);
|
|
||||||
|
|
||||||
CommandPacket *cp = _local_command_queue;
|
CommandPacket *cp = _local_command_queue;
|
||||||
|
|
||||||
|
/* We can execute this command */
|
||||||
|
_current_company = cp->company;
|
||||||
|
cp->cmd |= CMD_NETWORK_COMMAND;
|
||||||
|
DoCommandP(cp, cp->my_cmd);
|
||||||
|
|
||||||
_local_command_queue = _local_command_queue->next;
|
_local_command_queue = _local_command_queue->next;
|
||||||
free(cp);
|
free(cp);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue