Skip to content

Commit faee6a5

Browse files
committed
Replicated in Generals.
1 parent e5e8823 commit faee6a5

File tree

1 file changed

+16
-54
lines changed

1 file changed

+16
-54
lines changed

Generals/Code/GameEngine/Source/GameLogic/System/GameLogicDispatch.cpp

Lines changed: 16 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -347,8 +347,11 @@ void GameLogic::logicMessageDispatcher( GameMessage *msg, void *userData )
347347
#endif
348348

349349
Player *msgPlayer = ThePlayerList->getNthPlayer( msg->getPlayerIndex() );
350-
DEBUG_ASSERTCRASH( msgPlayer, ("logicMessageDispatcher: Processing message from unknown player (player index '%d')",
351-
msg->getPlayerIndex()) );
350+
if (msgPlayer == nullptr)
351+
{
352+
DEBUG_CRASH(("logicMessageDispatcher: Processing message from unknown player (player index '%d')", msg->getPlayerIndex()));
353+
return;
354+
}
352355

353356
AIGroupPtr currentlySelectedGroup = nullptr;
354357

@@ -404,7 +407,7 @@ void GameLogic::logicMessageDispatcher( GameMessage *msg, void *userData )
404407
if (commandName.isNotEmpty() /*&& msg->getType() != GameMessage::MSG_FRAME_TICK*/)
405408
{
406409
DEBUG_LOG(("Frame %d: GameLogic::logicMessageDispatcher() saw a %s from player %d (%ls)", getFrame(), commandName.str(),
407-
msg->getPlayerIndex(), msgPlayer->getPlayerDisplayName().str()));
410+
msgPlayer->getPlayerIndex(), msgPlayer->getPlayerDisplayName().str()));
408411
}
409412
#endif
410413
#endif // DEBUG_LOGGING
@@ -1634,13 +1637,6 @@ void GameLogic::logicMessageDispatcher( GameMessage *msg, void *userData )
16341637
case GameMessage::MSG_CREATE_SELECTED_GROUP:
16351638
{
16361639
Bool createNewGroup = msg->getArgument( 0 )->boolean;
1637-
Player *player = ThePlayerList->getNthPlayer(msg->getPlayerIndex());
1638-
1639-
if (player == nullptr) {
1640-
DEBUG_CRASH(("GameLogicDispatch - MSG_CREATE_SELECTED_GROUP had an invalid player number"));
1641-
break;
1642-
}
1643-
16441640
Bool firstObject = TRUE;
16451641

16461642
for (Int i = 1; i < msg->getArgumentCount(); ++i) {
@@ -1649,7 +1645,7 @@ void GameLogic::logicMessageDispatcher( GameMessage *msg, void *userData )
16491645
continue;
16501646
}
16511647

1652-
selectObject(obj, createNewGroup && firstObject, player->getPlayerMask());
1648+
selectObject(obj, createNewGroup && firstObject, msgPlayer->getPlayerMask());
16531649
firstObject = FALSE;
16541650
}
16551651

@@ -1660,21 +1656,14 @@ void GameLogic::logicMessageDispatcher( GameMessage *msg, void *userData )
16601656
//---------------------------------------------------------------------------------------------
16611657
case GameMessage::MSG_REMOVE_FROM_SELECTED_GROUP:
16621658
{
1663-
Player *player = ThePlayerList->getNthPlayer(msg->getPlayerIndex());
1664-
1665-
if (player == nullptr) {
1666-
DEBUG_CRASH(("GameLogicDispatch - MSG_CREATE_SELECTED_GROUP had an invalid player number"));
1667-
break;
1668-
}
1669-
16701659
for (Int i = 0; i < msg->getArgumentCount(); ++i) {
16711660
ObjectID objID = msg->getArgument(i)->objectID;
16721661
Object *objToRemove = findObjectByID(objID);
16731662
if (!objToRemove) {
16741663
continue;
16751664
}
16761665

1677-
deselectObject(objToRemove, player->getPlayerMask());
1666+
deselectObject(objToRemove, msgPlayer->getPlayerMask());
16781667
}
16791668

16801669
break;
@@ -1684,11 +1673,7 @@ void GameLogic::logicMessageDispatcher( GameMessage *msg, void *userData )
16841673
//---------------------------------------------------------------------------------------------
16851674
case GameMessage::MSG_DESTROY_SELECTED_GROUP:
16861675
{
1687-
Player *player = ThePlayerList->getNthPlayer(msg->getPlayerIndex());
1688-
if (player != nullptr)
1689-
{
1690-
player->setCurrentlySelectedAIGroup(nullptr);
1691-
}
1676+
msgPlayer->setCurrentlySelectedAIGroup(nullptr);
16921677

16931678
break;
16941679

@@ -1902,7 +1887,7 @@ void GameLogic::logicMessageDispatcher( GameMessage *msg, void *userData )
19021887
Int i=0;
19031888
for (; i<ThePlayerList->getPlayerCount(); ++i)
19041889
{
1905-
if (i != msg->getPlayerIndex())
1890+
if (i != msgPlayer->getPlayerIndex())
19061891
{
19071892
Player *otherPlayer = ThePlayerList->getNthPlayer(i);
19081893
if (msgPlayer->getRelationship(otherPlayer->getDefaultTeam()) == ALLIES &&
@@ -1984,13 +1969,9 @@ void GameLogic::logicMessageDispatcher( GameMessage *msg, void *userData )
19841969
case GameMessage::MSG_CREATE_TEAM8:
19851970
case GameMessage::MSG_CREATE_TEAM9:
19861971
{
1987-
Int playerIndex = msg->getPlayerIndex();
1988-
Player *player = ThePlayerList->getNthPlayer(playerIndex);
1989-
DEBUG_ASSERTCRASH(player != nullptr, ("Could not find player for create team message"));
1990-
19911972
// TheSuperHackers @tweak Stubbjax 17/08/2025 The local player processes this message in CommandXlat for immediate assignment.
1992-
if (player && !player->isLocalPlayer())
1993-
player->processCreateTeamGameMessage(msg->getType() - GameMessage::MSG_CREATE_TEAM0, msg);
1973+
if (!msgPlayer->isLocalPlayer())
1974+
msgPlayer->processCreateTeamGameMessage(msg->getType() - GameMessage::MSG_CREATE_TEAM0, msg);
19941975

19951976
break;
19961977
}
@@ -2006,16 +1987,7 @@ void GameLogic::logicMessageDispatcher( GameMessage *msg, void *userData )
20061987
case GameMessage::MSG_SELECT_TEAM8:
20071988
case GameMessage::MSG_SELECT_TEAM9:
20081989
{
2009-
Int playerIndex = msg->getPlayerIndex();
2010-
Player *player = ThePlayerList->getNthPlayer(playerIndex);
2011-
DEBUG_ASSERTCRASH(player != nullptr, ("Could not find player for select team message"));
2012-
2013-
if (player == nullptr)
2014-
{
2015-
break;
2016-
}
2017-
2018-
player->processSelectTeamGameMessage(msg->getType() - GameMessage::MSG_SELECT_TEAM0, msg);
1990+
msgPlayer->processSelectTeamGameMessage(msg->getType() - GameMessage::MSG_SELECT_TEAM0, msg);
20191991
break;
20201992
}
20211993

@@ -2030,16 +2002,7 @@ void GameLogic::logicMessageDispatcher( GameMessage *msg, void *userData )
20302002
case GameMessage::MSG_ADD_TEAM8:
20312003
case GameMessage::MSG_ADD_TEAM9:
20322004
{
2033-
Int playerIndex = msg->getPlayerIndex();
2034-
Player *player = ThePlayerList->getNthPlayer(playerIndex);
2035-
DEBUG_ASSERTCRASH(player != nullptr, ("Could not find player for add team message"));
2036-
2037-
if (player == nullptr)
2038-
{
2039-
break;
2040-
}
2041-
2042-
player->processAddTeamGameMessage(msg->getType() - GameMessage::MSG_ADD_TEAM0, msg);
2005+
msgPlayer->processAddTeamGameMessage(msg->getType() - GameMessage::MSG_ADD_TEAM0, msg);
20432006
break;
20442007
}
20452008

@@ -2075,11 +2038,10 @@ void GameLogic::logicMessageDispatcher( GameMessage *msg, void *userData )
20752038
#endif
20762039
}
20772040

2078-
//UnsignedInt oldCRC = m_cachedCRCs[msg->getPlayerIndex()];
20792041
UnsignedInt newCRC = msg->getArgument(0)->integer;
20802042
//DEBUG_LOG(("Received CRC of %8.8X from %ls on frame %d", newCRC,
20812043
//msgPlayer->getPlayerDisplayName().str(), m_frame));
2082-
m_cachedCRCs[msg->getPlayerIndex()] = newCRC; // to mask problem: = (oldCRC < newCRC)?newCRC:oldCRC;
2044+
m_cachedCRCs[msgPlayer->getPlayerIndex()] = newCRC;
20832045
}
20842046
else if (TheRecorder && TheRecorder->isPlaybackMode())
20852047
{
@@ -2099,7 +2061,7 @@ void GameLogic::logicMessageDispatcher( GameMessage *msg, void *userData )
20992061
ScienceType science = (ScienceType)msg->getArgument( 0 )->integer;
21002062

21012063
// sanity
2102-
if( science == SCIENCE_INVALID || msgPlayer == nullptr )
2064+
if( science == SCIENCE_INVALID )
21032065
break;
21042066

21052067
msgPlayer->attemptToPurchaseScience(science);

0 commit comments

Comments
 (0)