changeset 18754:114868c40989 draft

(svn r23602) -Add: support for DEITY commands, commands where no real company was involved in (Rubidium)
author truebrain <truebrain@openttd.org>
date Mon, 19 Dec 2011 20:50:36 +0000
parents 8d2cdabac894
children c49df8e47d29
files src/command.cpp src/command_type.h src/company_type.h
diffstat 3 files changed, 11 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/command.cpp
+++ b/src/command.cpp
@@ -609,7 +609,7 @@
 	/* If the company isn't valid it may only do server command or start a new company!
 	 * The server will ditch any server commands a client sends to it, so effectively
 	 * this guards the server from executing functions for an invalid company. */
-	if (_game_mode == GM_NORMAL && !exec_as_spectator && !Company::IsValidID(_current_company)) {
+	if (_game_mode == GM_NORMAL && !exec_as_spectator && !Company::IsValidID(_current_company) && !(_current_company == OWNER_DEITY && (cmd_flags & CMD_DEITY) != 0)) {
 		return_dcpi(CMD_ERROR, false);
 	}
 
--- a/src/command_type.h
+++ b/src/command_type.h
@@ -346,14 +346,15 @@
  * This enumeration defines flags for the _command_proc_table.
  */
 enum CommandFlags {
-	CMD_SERVER    = 0x01, ///< the command can only be initiated by the server
-	CMD_SPECTATOR = 0x02, ///< the command may be initiated by a spectator
-	CMD_OFFLINE   = 0x04, ///< the command cannot be executed in a multiplayer game; single-player only
-	CMD_AUTO      = 0x08, ///< set the DC_AUTO flag on this command
-	CMD_ALL_TILES = 0x10, ///< allow this command also on MP_VOID tiles
-	CMD_NO_TEST   = 0x20, ///< the command's output may differ between test and execute due to town rating changes etc.
-	CMD_NO_WATER  = 0x40, ///< set the DC_NO_WATER flag on this command
-	CMD_CLIENT_ID = 0x80, ///< set p2 with the ClientID of the sending client.
+	CMD_SERVER    = 0x001, ///< the command can only be initiated by the server
+	CMD_SPECTATOR = 0x002, ///< the command may be initiated by a spectator
+	CMD_OFFLINE   = 0x004, ///< the command cannot be executed in a multiplayer game; single-player only
+	CMD_AUTO      = 0x008, ///< set the DC_AUTO flag on this command
+	CMD_ALL_TILES = 0x010, ///< allow this command also on MP_VOID tiles
+	CMD_NO_TEST   = 0x020, ///< the command's output may differ between test and execute due to town rating changes etc.
+	CMD_NO_WATER  = 0x040, ///< set the DC_NO_WATER flag on this command
+	CMD_CLIENT_ID = 0x080, ///< set p2 with the ClientID of the sending client.
+	CMD_DEITY     = 0x100, ///< the command may be executed by COMPANY_DEITY
 };
 DECLARE_ENUM_AS_BIT_SET(CommandFlags)
 
--- a/src/company_type.h
+++ b/src/company_type.h
@@ -26,6 +26,7 @@
 	OWNER_TOWN      = 0x0F, ///< A town owns the tile, or a town is expanding
 	OWNER_NONE      = 0x10, ///< The tile has no ownership
 	OWNER_WATER     = 0x11, ///< The tile/execution is done by "water"
+	OWNER_DEITY     = 0x12, ///< The object is owned by a superuser / goal script
 	OWNER_END,              ///< Last + 1 owner
 	INVALID_OWNER   = 0xFF, ///< An invalid owner
 	INVALID_COMPANY = 0xFF, ///< An invalid company