Skip to content

Commit d700dc1

Browse files
committed
Replicate in Generals
1 parent 7f805b9 commit d700dc1

File tree

1 file changed

+33
-45
lines changed
  • Generals/Code/GameEngine/Source/GameClient/MessageStream

1 file changed

+33
-45
lines changed

Generals/Code/GameEngine/Source/GameClient/MessageStream/MetaEvent.cpp

Lines changed: 33 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -506,77 +506,62 @@ GameMessageDisposition MetaEventTranslator::translateGameMessage(const GameMessa
506506

507507
if (t > GameMessage::MSG_RAW_MOUSE_BEGIN && t < GameMessage::MSG_RAW_MOUSE_END )
508508
{
509-
Int index = 0;
509+
Int index = 3;
510510
switch (t)
511511
{
512512
case GameMessage::MSG_RAW_MOUSE_LEFT_BUTTON_DOWN:
513+
--index;
514+
FALLTHROUGH;
513515
case GameMessage::MSG_RAW_MOUSE_MIDDLE_BUTTON_DOWN:
516+
--index;
517+
FALLTHROUGH;
514518
case GameMessage::MSG_RAW_MOUSE_RIGHT_BUTTON_DOWN:
515519
{
516-
// Fill out which the current mouse down position
517-
if (t == GameMessage::MSG_RAW_MOUSE_MIDDLE_BUTTON_DOWN)
518-
index = 1;
519-
else if (t == GameMessage::MSG_RAW_MOUSE_RIGHT_BUTTON_DOWN)
520-
index = 2;
521-
// else index == 0
520+
--index;
522521
m_mouseDownPosition[index] = msg->getArgument(0)->pixel;
523522
m_nextUpShouldCreateDoubleClick[index] = FALSE;
524-
525523
break;
526524
}
527525

528526
case GameMessage::MSG_RAW_MOUSE_LEFT_DOUBLE_CLICK:
527+
--index;
528+
FALLTHROUGH;
529529
case GameMessage::MSG_RAW_MOUSE_MIDDLE_DOUBLE_CLICK:
530+
--index;
531+
FALLTHROUGH;
530532
case GameMessage::MSG_RAW_MOUSE_RIGHT_DOUBLE_CLICK:
531533
{
532-
if (t == GameMessage::MSG_RAW_MOUSE_MIDDLE_DOUBLE_CLICK)
533-
index = 1;
534-
else if (t == GameMessage::MSG_RAW_MOUSE_RIGHT_DOUBLE_CLICK)
535-
index = 2;
536-
// else index == 0
537-
534+
--index;
538535
m_nextUpShouldCreateDoubleClick[index] = TRUE;
539536
break;
540537
}
541538

542539
case GameMessage::MSG_RAW_MOUSE_LEFT_BUTTON_UP:
540+
--index;
541+
FALLTHROUGH;
543542
case GameMessage::MSG_RAW_MOUSE_MIDDLE_BUTTON_UP:
543+
--index;
544+
FALLTHROUGH;
544545
case GameMessage::MSG_RAW_MOUSE_RIGHT_BUTTON_UP:
545546
{
546-
ICoord2D location = msg->getArgument(0)->pixel;
547-
548-
// Fill out which the current mouse down position
549-
if (t == GameMessage::MSG_RAW_MOUSE_MIDDLE_BUTTON_UP)
550-
index = 1;
551-
else if (t == GameMessage::MSG_RAW_MOUSE_RIGHT_BUTTON_UP)
552-
index = 2;
553-
// else index == 0
547+
--index;
554548

555-
GameMessage *newMessage = NULL;
556-
if (t == GameMessage::MSG_RAW_MOUSE_LEFT_BUTTON_UP)
549+
constexpr const GameMessage::Type SingleClickMessages[3] =
557550
{
558-
if (m_nextUpShouldCreateDoubleClick[index])
559-
newMessage = TheMessageStream->insertMessage(GameMessage::MSG_MOUSE_LEFT_DOUBLE_CLICK, const_cast<GameMessage*>(msg));
560-
else
561-
newMessage = TheMessageStream->insertMessage(GameMessage::MSG_MOUSE_LEFT_CLICK, const_cast<GameMessage*>(msg));
562-
m_nextUpShouldCreateDoubleClick[index] = FALSE;
563-
}
564-
else if (t == GameMessage::MSG_RAW_MOUSE_MIDDLE_BUTTON_UP)
551+
GameMessage::MSG_MOUSE_LEFT_CLICK,
552+
GameMessage::MSG_MOUSE_MIDDLE_CLICK,
553+
GameMessage::MSG_MOUSE_RIGHT_CLICK,
554+
};
555+
constexpr const GameMessage::Type DoubleClickMessages[3] =
565556
{
566-
if (m_nextUpShouldCreateDoubleClick[index])
567-
newMessage = TheMessageStream->insertMessage(GameMessage::MSG_MOUSE_MIDDLE_DOUBLE_CLICK, const_cast<GameMessage*>(msg));
568-
else
569-
newMessage = TheMessageStream->insertMessage(GameMessage::MSG_MOUSE_MIDDLE_CLICK, const_cast<GameMessage*>(msg));
570-
m_nextUpShouldCreateDoubleClick[index] = FALSE;
571-
}
572-
else if (t == GameMessage::MSG_RAW_MOUSE_RIGHT_BUTTON_UP)
573-
{
574-
if (m_nextUpShouldCreateDoubleClick[index])
575-
newMessage = TheMessageStream->insertMessage(GameMessage::MSG_MOUSE_RIGHT_DOUBLE_CLICK, const_cast<GameMessage*>(msg));
576-
else
577-
newMessage = TheMessageStream->insertMessage(GameMessage::MSG_MOUSE_RIGHT_CLICK, const_cast<GameMessage*>(msg));
578-
m_nextUpShouldCreateDoubleClick[index] = FALSE;
579-
}
557+
GameMessage::MSG_MOUSE_LEFT_DOUBLE_CLICK,
558+
GameMessage::MSG_MOUSE_MIDDLE_DOUBLE_CLICK,
559+
GameMessage::MSG_MOUSE_RIGHT_DOUBLE_CLICK,
560+
};
561+
562+
const ICoord2D location = msg->getArgument(0)->pixel;
563+
const GameMessage::Type messageType = m_nextUpShouldCreateDoubleClick[index] ? DoubleClickMessages[index] : SingleClickMessages[index];
564+
GameMessage *newMessage = TheMessageStream->insertMessage(messageType, const_cast<GameMessage*>(msg));
580565

581566
IRegion2D pixelRegion;
582567
buildRegion( &m_mouseDownPosition[index], &location, &pixelRegion );
@@ -591,6 +576,9 @@ GameMessageDisposition MetaEventTranslator::translateGameMessage(const GameMessa
591576

592577
// append the modifier keys to the message.
593578
newMessage->appendIntegerArgument( msg->getArgument(1)->integer );
579+
580+
// append the time to the message.
581+
//newMessage->appendIntegerArgument( msg->getArgument(2)->integer );
594582
break;
595583
}
596584

0 commit comments

Comments
 (0)