1
0
Fork 0

(svn r21025) -Codechange: document PacketGameType's enums and reshuffle them slightly to make the whole more readable and easier to understand

release/1.1
rubidium 2010-10-24 15:22:59 +00:00
parent 073b965829
commit 3317f1c01e
1 changed files with 97 additions and 45 deletions

View File

@ -22,53 +22,105 @@
#ifdef ENABLE_NETWORK
/**
* Enum with all types of UDP packets.
* The order of the first 4 packets MUST not be changed, as
* it protects old clients from joining newer servers
* (because SERVER_ERROR is the respond to a wrong revision)
* Enum with all types of TCP packets.
* For the exact meaning, look at #NetworkGameSocketHandler.
*/
enum PacketGameType {
PACKET_SERVER_FULL,
PACKET_SERVER_BANNED,
PACKET_CLIENT_JOIN,
PACKET_SERVER_ERROR,
PACKET_CLIENT_COMPANY_INFO,
PACKET_SERVER_COMPANY_INFO,
PACKET_SERVER_CLIENT_INFO,
PACKET_SERVER_NEED_GAME_PASSWORD,
PACKET_SERVER_NEED_COMPANY_PASSWORD,
PACKET_CLIENT_GAME_PASSWORD,
PACKET_CLIENT_COMPANY_PASSWORD,
PACKET_SERVER_WELCOME,
PACKET_CLIENT_GETMAP,
PACKET_SERVER_WAIT,
PACKET_SERVER_MAP,
PACKET_CLIENT_MAP_OK,
PACKET_SERVER_JOIN,
PACKET_SERVER_FRAME,
PACKET_SERVER_SYNC,
PACKET_CLIENT_ACK,
PACKET_CLIENT_COMMAND,
PACKET_SERVER_COMMAND,
PACKET_CLIENT_CHAT,
PACKET_SERVER_CHAT,
PACKET_CLIENT_SET_PASSWORD,
PACKET_CLIENT_SET_NAME,
PACKET_CLIENT_QUIT,
PACKET_CLIENT_ERROR,
PACKET_SERVER_QUIT,
PACKET_SERVER_ERROR_QUIT,
PACKET_SERVER_SHUTDOWN,
PACKET_SERVER_NEWGAME,
PACKET_SERVER_RCON,
PACKET_CLIENT_RCON,
PACKET_SERVER_CHECK_NEWGRFS,
PACKET_CLIENT_NEWGRFS_CHECKED,
PACKET_SERVER_MOVE,
PACKET_CLIENT_MOVE,
PACKET_SERVER_COMPANY_UPDATE,
PACKET_SERVER_CONFIG_UPDATE,
PACKET_END ///< Must ALWAYS be on the end of this list!! (period)
/*
* These first three pair of packets (thus six in
* total) must remain in this order for backward
* and forward compatability between clients that
* are trying to join directly.
*/
/* Packets sent by socket accepting code without ever constructing a client socket instance. */
PACKET_SERVER_FULL, ///< The server is full and has no place for you.
PACKET_SERVER_BANNED, ///< The server has banned you.
/* Packets used by the client to join and an error message when the revision is wrong. */
PACKET_CLIENT_JOIN, ///< The client telling the server it wants to join.
PACKET_SERVER_ERROR, ///< Server sending an error message to the client.
/* Packets used for the pre-game lobby. */
PACKET_CLIENT_COMPANY_INFO, ///< Request information about all companies.
PACKET_SERVER_COMPANY_INFO, ///< Information about a single company.
/*
* Packets after here assume that the client
* and server are running the same version. As
* such ordering is unimportant from here on.
*
* The following is the remainder of the packets
* sent as part of authenticating and getting
* the map and other important data.
*/
/* After the join step, the first is checking NewGRFs. */
PACKET_SERVER_CHECK_NEWGRFS, ///< Server sends NewGRF IDs and MD5 checksums for the client to check.
PACKET_CLIENT_NEWGRFS_CHECKED, ///< Client acknowledges that it has all required NewGRFs.
/* Checking the game, and then company passwords. */
PACKET_SERVER_NEED_GAME_PASSWORD, ///< Server requests the (hashed) game password.
PACKET_CLIENT_GAME_PASSWORD, ///< Clients sends the (hashed) game password.
PACKET_SERVER_NEED_COMPANY_PASSWORD, ///< Server requests the (hashed) company password.
PACKET_CLIENT_COMPANY_PASSWORD, ///< Client sends the (hashed) company password.
/* The server welcomes the authenticated client and sends information of other clients. */
PACKET_SERVER_WELCOME, ///< Server welcomes you and gives you your #ClientID.
PACKET_SERVER_CLIENT_INFO, ///< Server sends you information about a client.
/* Getting the savegame/map. */
PACKET_CLIENT_GETMAP, ///< Client requests the actual map.
PACKET_SERVER_WAIT, ///< Server tells the client there are some people waiting for the map as well.
PACKET_SERVER_MAP, ///< Server sends bits of the map to the client.
PACKET_CLIENT_MAP_OK, ///< Client tells the server that it received the whole map.
PACKET_SERVER_JOIN, ///< Tells clients that a new client has joined.
/*
* At this moment the client has the map and
* the client is fully authenticated. Now the
* normal communication starts.
*/
/* Game progress monitoring. */
PACKET_SERVER_FRAME, ///< Server tells the client what frame it is in, and thus to where the client may progress.
PACKET_CLIENT_ACK, ///< The client tells the server which frame it has executed.
PACKET_SERVER_SYNC, ///< Server tells the client what the random state should be.
/* Sending commands around. */
PACKET_CLIENT_COMMAND, ///< Client executed a command and sends it to the server.
PACKET_SERVER_COMMAND, ///< Server distributes a command to (all) the clients.
/* Human communication! */
PACKET_CLIENT_CHAT, ///< Client said something that should be distributed.
PACKET_SERVER_CHAT, ///< Server distributing the message of a client (or itself).
/* Remote console. */
PACKET_CLIENT_RCON, ///< Client asks the server to execute some command.
PACKET_SERVER_RCON, ///< Response of the executed command on the server.
/* Moving a client.*/
PACKET_CLIENT_MOVE, ///< A client would like to be moved to another company.
PACKET_SERVER_MOVE, ///< Server tells everyone that someone is moved to another company.
/* Configuration updates. */
PACKET_CLIENT_SET_PASSWORD, ///< A client (re)sets its company's password.
PACKET_CLIENT_SET_NAME, ///< A client changes its name.
PACKET_SERVER_COMPANY_UPDATE, ///< Information (password) of a company changed.
PACKET_SERVER_CONFIG_UPDATE, ///< Some network configuration important to the client changed.
/* A server quitting this game. */
PACKET_SERVER_NEWGAME, ///< The server is preparing to start a new game.
PACKET_SERVER_SHUTDOWN, ///< The server is shutting down.
/* A client quitting. */
PACKET_CLIENT_QUIT, ///< A client tells the server it is going to quit.
PACKET_SERVER_QUIT, ///< A server tells that a client has quit.
PACKET_CLIENT_ERROR, ///< A client reports an error to the server.
PACKET_SERVER_ERROR_QUIT, ///< A server tells that a client has hit an error and did quit.
PACKET_END ///< Must ALWAYS be on the end of this list!! (period)
};
/** Packet that wraps a command */