From: <eva...@us...> - 2007-09-30 12:29:04
|
Update of /cvsroot/planeshift/planeshift/src/common/net In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5550/src/common/net Modified Files: messages.cpp messages.h Log Message: - Added 'Other person' field to the psChatMessage class. This field can be used in cases where both the sender and the receiver name are needed. Currently only the advisor message needs it and any other chat types use a 0 string there. - Fixed bug #2387. Now the advisor message is shown how Arianna originally planned it: Advisee gets "Advisor suggests ...", advisor gets "You advise ..." and other advisors get "<advisorname> advices <playername> ...". Index: messages.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/common/net/messages.cpp,v retrieving revision 1.491 retrieving revision 1.492 diff -C2 -d -r1.491 -r1.492 *** messages.cpp 25 Sep 2007 09:50:33 -0000 1.491 --- messages.cpp 30 Sep 2007 12:28:55 -0000 1.492 *************** *** 429,433 **** PSF_IMPLEMENT_MSG_FACTORY(psChatMessage,MSGTYPE_CHAT); ! psChatMessage::psChatMessage(uint32_t cnum, const char *person, const char *chatMessage, uint8_t type, bool translate) { --- 429,433 ---- PSF_IMPLEMENT_MSG_FACTORY(psChatMessage,MSGTYPE_CHAT); ! psChatMessage::psChatMessage(uint32_t cnum, const char *person, const char * other, const char *chatMessage, uint8_t type, bool translate) { *************** *** 437,444 **** iChatType = type; sPerson = person; sText = chatMessage; this->translate = translate; ! msg = new MsgEntry( strlen(person) + 1 + strlen(chatMessage) + 1 + sizeof(uint8_t)*2 ); msg->SetType(MSGTYPE_CHAT); --- 437,450 ---- iChatType = type; sPerson = person; + sOther = other; sText = chatMessage; this->translate = translate; ! bool includeOther = iChatType == CHAT_ADVISOR; ! size_t sz = strlen(person) + 1 + strlen(chatMessage) + 1 + sizeof(uint8_t)*2; ! if (includeOther) ! sz += strlen(other) + 1; ! ! msg = new MsgEntry(sz); msg->SetType(MSGTYPE_CHAT); *************** *** 449,452 **** --- 455,460 ---- msg->Add(chatMessage); msg->Add(translate); + if (includeOther) + msg->Add(other); // Sets valid flag based on message overrun state *************** *** 460,466 **** --- 468,478 ---- iChatType = message->GetUInt8(); + bool includeOther = iChatType == CHAT_ADVISOR; + sPerson = message->GetStr(); sText = message->GetStr(); translate = message->GetBool(); + if (includeOther && !message->IsEmpty()) + sOther = message->GetStr(); // Sets valid flag based on message overrun state Index: messages.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/common/net/messages.h,v retrieving revision 1.451 retrieving revision 1.452 diff -C2 -d -r1.451 -r1.452 *** messages.h 25 Sep 2007 09:50:33 -0000 1.451 --- messages.h 30 Sep 2007 12:28:55 -0000 1.452 *************** *** 764,771 **** --- 764,783 ---- /// type of message this is uint8_t iChatType; + /** name of person this chat message comes from */ csString sPerson; + + /** + * Name of the other person involved in this chat message (used only with some chat types) + * + * This string is included in the net message only when needed and currently only the CHAT_ADVISOR + * message type uses it. Modify both constructors if you want to use it with other chat message + * types. + */ + csString sOther; + /** the text the message contains */ csString sText; + /** is the text supposed to be translated by psLocalization on target client ? */ bool translate; *************** *** 774,778 **** * out. This would be used for outgoing, new message creation */ ! psChatMessage(uint32_t cnum, const char *person, const char *chatMessage, uint8_t type, bool translate); --- 786,790 ---- * out. This would be used for outgoing, new message creation */ ! psChatMessage(uint32_t cnum, const char *person, const char * other, const char *chatMessage, uint8_t type, bool translate); |