@@ -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