llviewerchat.cpp
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:5k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file llviewerchat.cpp
  3.  * @brief Builds menus out of items.
  4.  *
  5.  * $LicenseInfo:firstyear=2002&license=viewergpl$
  6.  * 
  7.  * Copyright (c) 2002-2010, Linden Research, Inc.
  8.  * 
  9.  * Second Life Viewer Source Code
  10.  * The source code in this file ("Source Code") is provided by Linden Lab
  11.  * to you under the terms of the GNU General Public License, version 2.0
  12.  * ("GPL"), unless you have obtained a separate licensing agreement
  13.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  14.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  15.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  16.  * 
  17.  * There are special exceptions to the terms and conditions of the GPL as
  18.  * it is applied to this Source Code. View the full text of the exception
  19.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  20.  * online at
  21.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  22.  * 
  23.  * By copying, modifying or distributing this software, you acknowledge
  24.  * that you have read and understood your obligations described above,
  25.  * and agree to abide by those obligations.
  26.  * 
  27.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  28.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  29.  * COMPLETENESS OR PERFORMANCE.
  30.  * $/LicenseInfo$
  31.  */
  32. #include "llviewerprecompiledheaders.h"
  33. #include "llviewerchat.h" 
  34. // newview includes
  35. #include "llagent.h"  // gAgent
  36. #include "lluicolortable.h"
  37. #include "llviewercontrol.h" // gSavedSettings
  38. // LLViewerChat
  39. //static 
  40. void LLViewerChat::getChatColor(const LLChat& chat, LLColor4& r_color)
  41. {
  42. if(chat.mMuted)
  43. {
  44. r_color= LLUIColorTable::instance().getColor("LtGray");
  45. }
  46. else
  47. {
  48. switch(chat.mSourceType)
  49. {
  50. case CHAT_SOURCE_SYSTEM:
  51. r_color = LLUIColorTable::instance().getColor("SystemChatColor"); 
  52. break;
  53. case CHAT_SOURCE_AGENT:
  54. if (chat.mFromID.isNull())
  55. {
  56. r_color = LLUIColorTable::instance().getColor("SystemChatColor");
  57. }
  58. else
  59. {
  60. if(gAgentID == chat.mFromID)
  61. {
  62. r_color = LLUIColorTable::instance().getColor("UserChatColor");
  63. }
  64. else
  65. {
  66. r_color = LLUIColorTable::instance().getColor("AgentChatColor");
  67. }
  68. }
  69. break;
  70. case CHAT_SOURCE_OBJECT:
  71. if (chat.mChatType == CHAT_TYPE_DEBUG_MSG)
  72. {
  73. r_color = LLUIColorTable::instance().getColor("ScriptErrorColor");
  74. }
  75. else if ( chat.mChatType == CHAT_TYPE_OWNER )
  76. {
  77. r_color = LLUIColorTable::instance().getColor("llOwnerSayChatColor");
  78. }
  79. else
  80. {
  81. r_color = LLUIColorTable::instance().getColor("ObjectChatColor");
  82. }
  83. break;
  84. default:
  85. r_color.setToWhite();
  86. }
  87. if (!chat.mPosAgent.isExactlyZero())
  88. {
  89. LLVector3 pos_agent = gAgent.getPositionAgent();
  90. F32 distance = dist_vec(pos_agent, chat.mPosAgent);
  91. if (distance > gAgent.getNearChatRadius())
  92. {
  93. // diminish far-off chat
  94. r_color.mV[VALPHA] = 0.8f;
  95. }
  96. }
  97. }
  98. }
  99. //static 
  100. void LLViewerChat::getChatColor(const LLChat& chat, std::string& r_color_name, F32& r_color_alpha)
  101. {
  102. if(chat.mMuted)
  103. {
  104. r_color_name = "LtGray";
  105. }
  106. else
  107. {
  108. switch(chat.mSourceType)
  109. {
  110. case CHAT_SOURCE_SYSTEM:
  111. r_color_name = "SystemChatColor";
  112. break;
  113. case CHAT_SOURCE_AGENT:
  114. if (chat.mFromID.isNull())
  115. {
  116. r_color_name = "SystemChatColor";
  117. }
  118. else
  119. {
  120. if(gAgentID == chat.mFromID)
  121. {
  122. r_color_name = "UserChatColor";
  123. }
  124. else
  125. {
  126. r_color_name = "AgentChatColor";
  127. }
  128. }
  129. break;
  130. case CHAT_SOURCE_OBJECT:
  131. if (chat.mChatType == CHAT_TYPE_DEBUG_MSG)
  132. {
  133. r_color_name = "ScriptErrorColor";
  134. }
  135. else if ( chat.mChatType == CHAT_TYPE_OWNER )
  136. {
  137. r_color_name = "llOwnerSayChatColor";
  138. }
  139. else
  140. {
  141. r_color_name = "ObjectChatColor";
  142. }
  143. break;
  144. default:
  145. r_color_name = "White";
  146. }
  147. if (!chat.mPosAgent.isExactlyZero())
  148. {
  149. LLVector3 pos_agent = gAgent.getPositionAgent();
  150. F32 distance = dist_vec(pos_agent, chat.mPosAgent);
  151. if (distance > gAgent.getNearChatRadius())
  152. {
  153. // diminish far-off chat
  154. r_color_alpha = 0.8f; 
  155. }
  156. else
  157. {
  158. r_color_alpha = 1.0f;
  159. }
  160. }
  161. }
  162. }
  163. //static 
  164. LLFontGL* LLViewerChat::getChatFont()
  165. {
  166. S32 font_size = gSavedSettings.getS32("ChatFontSize");
  167. LLFontGL* fontp = NULL;
  168. switch(font_size)
  169. {
  170. case 0:
  171. fontp = LLFontGL::getFontSansSerifSmall();
  172. break;
  173. default:
  174. case 1:
  175. fontp = LLFontGL::getFontSansSerif();
  176. break;
  177. case 2:
  178. fontp = LLFontGL::getFontSansSerifBig();
  179. break;
  180. }
  181. return fontp;
  182. }
  183. //static
  184. S32 LLViewerChat::getChatFontSize()
  185. {
  186. return gSavedSettings.getS32("ChatFontSize");
  187. }
  188. //static
  189. void LLViewerChat::formatChatMsg(const LLChat& chat, std::string& formated_msg)
  190. {
  191. std::string tmpmsg = chat.mText;
  192. if(chat.mChatStyle == CHAT_STYLE_IRC)
  193. {
  194. formated_msg = chat.mFromName + tmpmsg.substr(3);
  195. }
  196. else 
  197. {
  198. formated_msg = tmpmsg;
  199. }
  200. }