diff --git a/Core/GameEngine/Include/GameNetwork/networkutil.h b/Core/GameEngine/Include/GameNetwork/networkutil.h index 944e2ce0a60..722c59fd7ff 100644 --- a/Core/GameEngine/Include/GameNetwork/networkutil.h +++ b/Core/GameEngine/Include/GameNetwork/networkutil.h @@ -31,8 +31,8 @@ UnsignedInt AssembleIp(UnsignedByte a, UnsignedByte b, UnsignedByte c, UnsignedB UnsignedInt ResolveIP(AsciiString host); UnsignedShort GenerateNextCommandID(); Bool DoesCommandRequireACommandID(NetCommandType type); -Bool CommandRequiresAck(NetCommandMsg *msg); -Bool CommandRequiresDirectSend(NetCommandMsg *msg); +Bool CommandRequiresAck(const NetCommandMsg *msg); +Bool CommandRequiresDirectSend(const NetCommandMsg *msg); Bool IsCommandSynchronized(NetCommandType type); const char* GetNetCommandTypeAsString(NetCommandType type); diff --git a/Core/GameEngine/Source/GameNetwork/NetworkUtil.cpp b/Core/GameEngine/Source/GameNetwork/NetworkUtil.cpp index 174599cc97c..77394c1e05f 100644 --- a/Core/GameEngine/Source/GameNetwork/NetworkUtil.cpp +++ b/Core/GameEngine/Source/GameNetwork/NetworkUtil.cpp @@ -119,70 +119,53 @@ UnsignedShort GenerateNextCommandID() { /** * Returns true if this type of command requires a unique command ID. */ -Bool DoesCommandRequireACommandID(NetCommandType type) { - if ((type == NETCOMMANDTYPE_GAMECOMMAND) || - (type == NETCOMMANDTYPE_FRAMEINFO) || - (type == NETCOMMANDTYPE_PLAYERLEAVE) || - (type == NETCOMMANDTYPE_DESTROYPLAYER) || - (type == NETCOMMANDTYPE_RUNAHEADMETRICS) || - (type == NETCOMMANDTYPE_RUNAHEAD) || - (type == NETCOMMANDTYPE_CHAT) || - (type == NETCOMMANDTYPE_DISCONNECTVOTE) || - (type == NETCOMMANDTYPE_LOADCOMPLETE) || - (type == NETCOMMANDTYPE_TIMEOUTSTART) || - (type == NETCOMMANDTYPE_WRAPPER) || - (type == NETCOMMANDTYPE_FILE) || - (type == NETCOMMANDTYPE_FILEANNOUNCE) || - (type == NETCOMMANDTYPE_FILEPROGRESS) || - (type == NETCOMMANDTYPE_DISCONNECTPLAYER) || - (type == NETCOMMANDTYPE_DISCONNECTFRAME) || - (type == NETCOMMANDTYPE_DISCONNECTSCREENOFF) || - (type == NETCOMMANDTYPE_FRAMERESENDREQUEST)) - { +Bool DoesCommandRequireACommandID(NetCommandType type) +{ + switch (type) { + case NETCOMMANDTYPE_FRAMEINFO: + case NETCOMMANDTYPE_GAMECOMMAND: + case NETCOMMANDTYPE_PLAYERLEAVE: + case NETCOMMANDTYPE_RUNAHEADMETRICS: + case NETCOMMANDTYPE_RUNAHEAD: + case NETCOMMANDTYPE_DESTROYPLAYER: + case NETCOMMANDTYPE_CHAT: + case NETCOMMANDTYPE_LOADCOMPLETE: + case NETCOMMANDTYPE_TIMEOUTSTART: + case NETCOMMANDTYPE_WRAPPER: + case NETCOMMANDTYPE_FILE: + case NETCOMMANDTYPE_FILEANNOUNCE: + case NETCOMMANDTYPE_FILEPROGRESS: + case NETCOMMANDTYPE_FRAMERESENDREQUEST: + case NETCOMMANDTYPE_DISCONNECTPLAYER: + case NETCOMMANDTYPE_DISCONNECTVOTE: + case NETCOMMANDTYPE_DISCONNECTFRAME: + case NETCOMMANDTYPE_DISCONNECTSCREENOFF: return TRUE; + default: + return FALSE; } - return FALSE; } /** * Returns true if this type of network command requires an ack. */ -Bool CommandRequiresAck(NetCommandMsg *msg) { - if ((msg->getNetCommandType() == NETCOMMANDTYPE_GAMECOMMAND) || - (msg->getNetCommandType() == NETCOMMANDTYPE_FRAMEINFO) || - (msg->getNetCommandType() == NETCOMMANDTYPE_PLAYERLEAVE) || - (msg->getNetCommandType() == NETCOMMANDTYPE_DESTROYPLAYER) || - (msg->getNetCommandType() == NETCOMMANDTYPE_RUNAHEADMETRICS) || - (msg->getNetCommandType() == NETCOMMANDTYPE_RUNAHEAD) || - (msg->getNetCommandType() == NETCOMMANDTYPE_CHAT) || - (msg->getNetCommandType() == NETCOMMANDTYPE_DISCONNECTVOTE) || - (msg->getNetCommandType() == NETCOMMANDTYPE_DISCONNECTPLAYER) || - (msg->getNetCommandType() == NETCOMMANDTYPE_LOADCOMPLETE) || - (msg->getNetCommandType() == NETCOMMANDTYPE_TIMEOUTSTART) || - (msg->getNetCommandType() == NETCOMMANDTYPE_WRAPPER) || - (msg->getNetCommandType() == NETCOMMANDTYPE_FILE) || - (msg->getNetCommandType() == NETCOMMANDTYPE_FILEANNOUNCE) || - (msg->getNetCommandType() == NETCOMMANDTYPE_FILEPROGRESS) || - (msg->getNetCommandType() == NETCOMMANDTYPE_DISCONNECTPLAYER) || - (msg->getNetCommandType() == NETCOMMANDTYPE_DISCONNECTFRAME) || - (msg->getNetCommandType() == NETCOMMANDTYPE_DISCONNECTSCREENOFF) || - (msg->getNetCommandType() == NETCOMMANDTYPE_FRAMERESENDREQUEST)) - { - return TRUE; - } - return FALSE; +Bool CommandRequiresAck(const NetCommandMsg* msg) +{ + return DoesCommandRequireACommandID(msg->getNetCommandType()); } -Bool IsCommandSynchronized(NetCommandType type) { - if ((type == NETCOMMANDTYPE_GAMECOMMAND) || - (type == NETCOMMANDTYPE_FRAMEINFO) || - (type == NETCOMMANDTYPE_PLAYERLEAVE) || - (type == NETCOMMANDTYPE_DESTROYPLAYER) || - (type == NETCOMMANDTYPE_RUNAHEAD)) - { +Bool IsCommandSynchronized(NetCommandType type) +{ + switch (type) { + case NETCOMMANDTYPE_FRAMEINFO: + case NETCOMMANDTYPE_GAMECOMMAND: + case NETCOMMANDTYPE_PLAYERLEAVE: + case NETCOMMANDTYPE_RUNAHEAD: + case NETCOMMANDTYPE_DESTROYPLAYER: return TRUE; + default: + return FALSE; } - return FALSE; } /** @@ -190,86 +173,66 @@ Bool IsCommandSynchronized(NetCommandType type) { * rather than going through the packet router. This should really only be used by commands * used on the disconnect screen. */ -Bool CommandRequiresDirectSend(NetCommandMsg *msg) { - if ((msg->getNetCommandType() == NETCOMMANDTYPE_DISCONNECTVOTE) || - (msg->getNetCommandType() == NETCOMMANDTYPE_DISCONNECTPLAYER) || - (msg->getNetCommandType() == NETCOMMANDTYPE_LOADCOMPLETE) || - (msg->getNetCommandType() == NETCOMMANDTYPE_TIMEOUTSTART) || - (msg->getNetCommandType() == NETCOMMANDTYPE_FILE) || - (msg->getNetCommandType() == NETCOMMANDTYPE_FILEANNOUNCE) || - (msg->getNetCommandType() == NETCOMMANDTYPE_FILEPROGRESS) || - (msg->getNetCommandType() == NETCOMMANDTYPE_DISCONNECTFRAME) || - (msg->getNetCommandType() == NETCOMMANDTYPE_DISCONNECTSCREENOFF) || - (msg->getNetCommandType() == NETCOMMANDTYPE_FRAMERESENDREQUEST)) { - return TRUE; - } - return FALSE; -} - -const char* GetNetCommandTypeAsString(NetCommandType type) { - - switch (type) { - case NETCOMMANDTYPE_ACKBOTH: - return "NETCOMMANDTYPE_ACKBOTH"; - case NETCOMMANDTYPE_ACKSTAGE1: - return "NETCOMMANDTYPE_ACKSTAGE1"; - case NETCOMMANDTYPE_ACKSTAGE2: - return "NETCOMMANDTYPE_ACKSTAGE2"; - case NETCOMMANDTYPE_FRAMEINFO: - return "NETCOMMANDTYPE_FRAMEINFO"; - case NETCOMMANDTYPE_GAMECOMMAND: - return "NETCOMMANDTYPE_GAMECOMMAND"; - case NETCOMMANDTYPE_PLAYERLEAVE: - return "NETCOMMANDTYPE_PLAYERLEAVE"; - case NETCOMMANDTYPE_RUNAHEADMETRICS: - return "NETCOMMANDTYPE_RUNAHEADMETRICS"; - case NETCOMMANDTYPE_RUNAHEAD: - return "NETCOMMANDTYPE_RUNAHEAD"; - case NETCOMMANDTYPE_DESTROYPLAYER: - return "NETCOMMANDTYPE_DESTROYPLAYER"; - case NETCOMMANDTYPE_KEEPALIVE: - return "NETCOMMANDTYPE_KEEPALIVE"; - case NETCOMMANDTYPE_DISCONNECTCHAT: - return "NETCOMMANDTYPE_DISCONNECTCHAT"; - case NETCOMMANDTYPE_CHAT: - return "NETCOMMANDTYPE_CHAT"; - case NETCOMMANDTYPE_MANGLERQUERY: - return "NETCOMMANDTYPE_MANGLERQUERY"; - case NETCOMMANDTYPE_MANGLERRESPONSE: - return "NETCOMMANDTYPE_MANGLERRESPONSE"; - case NETCOMMANDTYPE_PROGRESS: - return "NETCOMMANDTYPE_PROGRESS"; +Bool CommandRequiresDirectSend(const NetCommandMsg* msg) +{ + switch (msg->getNetCommandType()) { case NETCOMMANDTYPE_LOADCOMPLETE: - return "NETCOMMANDTYPE_LOADCOMPLETE"; case NETCOMMANDTYPE_TIMEOUTSTART: - return "NETCOMMANDTYPE_TIMEOUTSTART"; - case NETCOMMANDTYPE_WRAPPER: - return "NETCOMMANDTYPE_WRAPPER"; case NETCOMMANDTYPE_FILE: - return "NETCOMMANDTYPE_FILE"; case NETCOMMANDTYPE_FILEANNOUNCE: - return "NETCOMMANDTYPE_FILEANNOUNCE"; case NETCOMMANDTYPE_FILEPROGRESS: - return "NETCOMMANDTYPE_FILEPROGRESS"; - case NETCOMMANDTYPE_DISCONNECTKEEPALIVE: - return "NETCOMMANDTYPE_DISCONNECTKEEPALIVE"; + case NETCOMMANDTYPE_FRAMERESENDREQUEST: case NETCOMMANDTYPE_DISCONNECTPLAYER: - return "NETCOMMANDTYPE_DISCONNECTPLAYER"; - case NETCOMMANDTYPE_PACKETROUTERQUERY: - return "NETCOMMANDTYPE_PACKETROUTERQUERY"; - case NETCOMMANDTYPE_PACKETROUTERACK: - return "NETCOMMANDTYPE_PACKETROUTERACK"; case NETCOMMANDTYPE_DISCONNECTVOTE: - return "NETCOMMANDTYPE_DISCONNECTVOTE"; case NETCOMMANDTYPE_DISCONNECTFRAME: - return "NETCOMMANDTYPE_DISCONNECTFRAME"; case NETCOMMANDTYPE_DISCONNECTSCREENOFF: - return "NETCOMMANDTYPE_DISCONNECTSCREENOFF"; - case NETCOMMANDTYPE_FRAMERESENDREQUEST: - return "NETCOMMANDTYPE_FRAMERESENDREQUEST"; + return TRUE; + default: + return FALSE; + } +} + +const char* GetNetCommandTypeAsString(NetCommandType type) +{ +#define CASE_LABEL(x) case x: return #x; + + switch (type) { + CASE_LABEL(NETCOMMANDTYPE_UNKNOWN) + CASE_LABEL(NETCOMMANDTYPE_ACKBOTH) + CASE_LABEL(NETCOMMANDTYPE_ACKSTAGE1) + CASE_LABEL(NETCOMMANDTYPE_ACKSTAGE2) + CASE_LABEL(NETCOMMANDTYPE_FRAMEINFO) + CASE_LABEL(NETCOMMANDTYPE_GAMECOMMAND) + CASE_LABEL(NETCOMMANDTYPE_PLAYERLEAVE) + CASE_LABEL(NETCOMMANDTYPE_RUNAHEADMETRICS) + CASE_LABEL(NETCOMMANDTYPE_RUNAHEAD) + CASE_LABEL(NETCOMMANDTYPE_DESTROYPLAYER) + CASE_LABEL(NETCOMMANDTYPE_KEEPALIVE) + CASE_LABEL(NETCOMMANDTYPE_DISCONNECTCHAT) + CASE_LABEL(NETCOMMANDTYPE_CHAT) + CASE_LABEL(NETCOMMANDTYPE_MANGLERQUERY) + CASE_LABEL(NETCOMMANDTYPE_MANGLERRESPONSE) + CASE_LABEL(NETCOMMANDTYPE_PROGRESS) + CASE_LABEL(NETCOMMANDTYPE_LOADCOMPLETE) + CASE_LABEL(NETCOMMANDTYPE_TIMEOUTSTART) + CASE_LABEL(NETCOMMANDTYPE_WRAPPER) + CASE_LABEL(NETCOMMANDTYPE_FILE) + CASE_LABEL(NETCOMMANDTYPE_FILEANNOUNCE) + CASE_LABEL(NETCOMMANDTYPE_FILEPROGRESS) + CASE_LABEL(NETCOMMANDTYPE_FRAMERESENDREQUEST) + CASE_LABEL(NETCOMMANDTYPE_DISCONNECTSTART) + CASE_LABEL(NETCOMMANDTYPE_DISCONNECTKEEPALIVE) + CASE_LABEL(NETCOMMANDTYPE_DISCONNECTPLAYER) + CASE_LABEL(NETCOMMANDTYPE_PACKETROUTERQUERY) + CASE_LABEL(NETCOMMANDTYPE_PACKETROUTERACK) + CASE_LABEL(NETCOMMANDTYPE_DISCONNECTVOTE) + CASE_LABEL(NETCOMMANDTYPE_DISCONNECTFRAME) + CASE_LABEL(NETCOMMANDTYPE_DISCONNECTSCREENOFF) + CASE_LABEL(NETCOMMANDTYPE_DISCONNECTEND) default: - DEBUG_CRASH(("Unknown NetCommandType in GetNetCommandTypeAsString")); - return "UNKNOWN"; + DEBUG_CRASH(("Unhandled NetCommandType in GetNetCommandTypeAsString")); + return ""; } +#undef CASE_LABEL }