Created
April 15, 2016 20:56
-
-
Save apathyboy/4db34d7142bf06222661718742d168b9 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| void ObjectController::_handleSpatialChatInternal(uint64 targetId,Message* message,ObjectControllerCmdProperties* cmdProperties) | |
| { | |
| // FIXME: for now assume only players send chat | |
| PlayerObject* playerObject = dynamic_cast<PlayerObject*>(mObject); | |
| BString chatData; | |
| message->getStringUnicode16(chatData); | |
| chatData.convert(BSTRType_ANSI); | |
| int8* data = chatData.getRawData(); | |
| uint16 len = chatData.getLength(); | |
| char chatElement[5][32]; | |
| uint8 element = 0; | |
| uint8 elementIndex = 0; | |
| uint16 byteCount = 0; | |
| while(element < 5) | |
| { | |
| if(*data == ' ') | |
| { | |
| chatElement[element][elementIndex] = 0; | |
| byteCount++; | |
| element++; | |
| data++; | |
| elementIndex = 0; | |
| continue; | |
| } | |
| chatElement[element][elementIndex] = *data; | |
| elementIndex++; | |
| byteCount++; | |
| data++; | |
| } | |
| BString chatMessage(data); | |
| // need to truncate or we may get in trouble | |
| if(len - byteCount > 256) | |
| { | |
| chatMessage.setLength(256); | |
| chatMessage.getRawData()[256] = 0; | |
| } | |
| else | |
| { | |
| chatMessage.setLength(len - byteCount); | |
| chatMessage.getRawData()[len - byteCount] = 0; | |
| } | |
| chatMessage.convert(BSTRType_Unicode16); | |
| // Convert the chat elements to logical types before passing them on. | |
| uint64_t chat_target_id; | |
| try { | |
| chat_target_id = boost::lexical_cast<uint64>(chatElement[0]); | |
| } catch(boost::bad_lexical_cast &) { | |
| chat_target_id = 0; | |
| } | |
| SocialChatType chat_type_id = static_cast<SocialChatType>(atoi(chatElement[1])); | |
| MoodType mood_id = static_cast<MoodType>(atoi(chatElement[2])); | |
| if (!gWorldConfig->isInstance()) | |
| { | |
| gMessageLib->SendSpatialChat(playerObject, chatMessage.getUnicode16(), NULL, chat_target_id, 0x32, chat_type_id, mood_id); | |
| } | |
| else | |
| { | |
| gMessageLib->SendSpatialChat(playerObject, chatMessage.getUnicode16(), playerObject, chat_target_id, 0x32, chat_type_id, mood_id); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment