Console logging supports cCompositeChat as its parameters.
This commit is contained in:
parent
55d0db1606
commit
8126d9e66e
@ -76,6 +76,15 @@ function Initialize(Plugin)
|
|||||||
|
|
||||||
TestBlockAreasString()
|
TestBlockAreasString()
|
||||||
|
|
||||||
|
--[[
|
||||||
|
-- Test cCompositeChat usage in console-logging:
|
||||||
|
LOGINFO(cCompositeChat("This is a simple message with some @2 color formatting @4 and http://links.to .")
|
||||||
|
:AddSuggestCommandPart("(Suggested command)", "cmd")
|
||||||
|
:AddRunCommandPart("(Run command)", "cmd")
|
||||||
|
:SetMessageType(mtInfo)
|
||||||
|
)
|
||||||
|
--]]
|
||||||
|
|
||||||
return true
|
return true
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -115,10 +115,35 @@ static int tolua_StringSplitAndTrim(lua_State * tolua_S)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int tolua_LOG(lua_State* tolua_S)
|
/** Retrieves the log message from the first param on the Lua stack.
|
||||||
|
Can take either a string or a cCompositeChat.
|
||||||
|
*/
|
||||||
|
static AString GetLogMessage(lua_State * tolua_S)
|
||||||
{
|
{
|
||||||
const char* str = tolua_tocppstring(tolua_S,1,0);
|
tolua_Error err;
|
||||||
cMCLogger::GetInstance()->LogSimple( str, 0 );
|
if (tolua_isusertype(tolua_S, 1, "cCompositeChat", false, &err))
|
||||||
|
{
|
||||||
|
return ((cCompositeChat *)tolua_tousertype(tolua_S, 1, NULL))->ExtractText();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
size_t len = 0;
|
||||||
|
const char * str = lua_tolstring(tolua_S, 1, &len);
|
||||||
|
if (str != NULL)
|
||||||
|
{
|
||||||
|
return AString(str, len);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static int tolua_LOG(lua_State * tolua_S)
|
||||||
|
{
|
||||||
|
cMCLogger::GetInstance()->LogSimple(GetLogMessage(tolua_S).c_str(), 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -126,10 +151,9 @@ static int tolua_LOG(lua_State* tolua_S)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int tolua_LOGINFO(lua_State* tolua_S)
|
static int tolua_LOGINFO(lua_State * tolua_S)
|
||||||
{
|
{
|
||||||
const char* str = tolua_tocppstring(tolua_S,1,0);
|
cMCLogger::GetInstance()->LogSimple(GetLogMessage(tolua_S).c_str(), 1);
|
||||||
cMCLogger::GetInstance()->LogSimple( str, 1 );
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -137,10 +161,9 @@ static int tolua_LOGINFO(lua_State* tolua_S)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int tolua_LOGWARN(lua_State* tolua_S)
|
static int tolua_LOGWARN(lua_State * tolua_S)
|
||||||
{
|
{
|
||||||
const char* str = tolua_tocppstring(tolua_S,1,0);
|
cMCLogger::GetInstance()->LogSimple(GetLogMessage(tolua_S).c_str(), 2);
|
||||||
cMCLogger::GetInstance()->LogSimple( str, 2 );
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -148,10 +171,9 @@ static int tolua_LOGWARN(lua_State* tolua_S)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int tolua_LOGERROR(lua_State* tolua_S)
|
static int tolua_LOGERROR(lua_State * tolua_S)
|
||||||
{
|
{
|
||||||
const char* str = tolua_tocppstring(tolua_S,1,0);
|
cMCLogger::GetInstance()->LogSimple(GetLogMessage(tolua_S).c_str(), 3);
|
||||||
cMCLogger::GetInstance()->LogSimple( str, 3 );
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -314,6 +314,35 @@ void cCompositeChat::UnderlineUrls(void)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
AString cCompositeChat::ExtractText(void) const
|
||||||
|
{
|
||||||
|
AString Msg;
|
||||||
|
for (cParts::const_iterator itr = m_Parts.begin(), end = m_Parts.end(); itr != end; ++itr)
|
||||||
|
{
|
||||||
|
switch ((*itr)->m_PartType)
|
||||||
|
{
|
||||||
|
case ptText:
|
||||||
|
case ptClientTranslated:
|
||||||
|
case ptRunCommand:
|
||||||
|
case ptSuggestCommand:
|
||||||
|
{
|
||||||
|
Msg.append((*itr)->m_Text);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ptUrl:
|
||||||
|
{
|
||||||
|
Msg.append(((cUrlPart *)(*itr))->m_Url);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} // switch (PartType)
|
||||||
|
} // for itr - m_Parts[]
|
||||||
|
return Msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cCompositeChat::AddStyle(AString & a_Style, const AString & a_AddStyle)
|
void cCompositeChat::AddStyle(AString & a_Style, const AString & a_AddStyle)
|
||||||
{
|
{
|
||||||
if (a_AddStyle.empty())
|
if (a_AddStyle.empty())
|
||||||
|
@ -164,6 +164,11 @@ public:
|
|||||||
/** Returns the message type set previously by SetMessageType(). */
|
/** Returns the message type set previously by SetMessageType(). */
|
||||||
eMessageType GetMessageType(void) const { return m_MessageType; }
|
eMessageType GetMessageType(void) const { return m_MessageType; }
|
||||||
|
|
||||||
|
/** Returns the text from the parts that comprises the human-readable data.
|
||||||
|
Used for older protocols that don't support composite chat
|
||||||
|
and for console-logging. */
|
||||||
|
AString ExtractText(void) const;
|
||||||
|
|
||||||
// tolua_end
|
// tolua_end
|
||||||
|
|
||||||
const cParts & GetParts(void) const { return m_Parts; }
|
const cParts & GetParts(void) const { return m_Parts; }
|
||||||
|
@ -239,32 +239,11 @@ void cProtocol125::SendChat(const AString & a_Message)
|
|||||||
void cProtocol125::SendChat(const cCompositeChat & a_Message)
|
void cProtocol125::SendChat(const cCompositeChat & a_Message)
|
||||||
{
|
{
|
||||||
// This version doesn't support composite messages, just extract each part's text and use it:
|
// This version doesn't support composite messages, just extract each part's text and use it:
|
||||||
AString Msg;
|
|
||||||
const cCompositeChat::cParts & Parts = a_Message.GetParts();
|
|
||||||
for (cCompositeChat::cParts::const_iterator itr = Parts.begin(), end = Parts.end(); itr != end; ++itr)
|
|
||||||
{
|
|
||||||
switch ((*itr)->m_PartType)
|
|
||||||
{
|
|
||||||
case cCompositeChat::ptText:
|
|
||||||
case cCompositeChat::ptClientTranslated:
|
|
||||||
case cCompositeChat::ptRunCommand:
|
|
||||||
case cCompositeChat::ptSuggestCommand:
|
|
||||||
{
|
|
||||||
Msg.append((*itr)->m_Text);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case cCompositeChat::ptUrl:
|
|
||||||
{
|
|
||||||
Msg.append(((cCompositeChat::cUrlPart *)(*itr))->m_Url);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} // switch (PartType)
|
|
||||||
} // for itr - Parts[]
|
|
||||||
|
|
||||||
// Send the message:
|
// Send the message:
|
||||||
cCSLock Lock(m_CSPacket);
|
cCSLock Lock(m_CSPacket);
|
||||||
WriteByte (PACKET_CHAT);
|
WriteByte (PACKET_CHAT);
|
||||||
WriteString(Msg);
|
WriteString(a_Message.ExtractText());
|
||||||
Flush();
|
Flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user