Fixed speech bubbles, server sends the ID of a speaking character instead of the name

This commit is contained in:
Regalis
2017-01-10 18:40:12 +02:00
parent 81c3641d97
commit df59f0d089
4 changed files with 41 additions and 15 deletions
+10 -9
View File
@@ -1688,11 +1688,19 @@ namespace Barotrauma
Vector2 closestItemPos = closestItem != null ? closestItem.DrawPosition : Vector2.Zero; Vector2 closestItemPos = closestItem != null ? closestItem.DrawPosition : Vector2.Zero;
closestItemPos.Y = -closestItemPos.Y; closestItemPos.Y = -closestItemPos.Y;
GUI.DrawLine(spriteBatch, closestItemPos - new Vector2(0, 5), closestItemPos + new Vector2(0, 5), Color.Lime, 0, 10); GUI.DrawLine(spriteBatch, closestItemPos - new Vector2(0, 5), closestItemPos + new Vector2(0, 5), Color.Lime, 0, 10);
Vector2 pos = DrawPosition;
pos.Y = -pos.Y;
if (speechBubbleTimer > 0.0f)
{
GUI.SpeechBubbleIcon.Draw(spriteBatch, pos - Vector2.UnitY * 100.0f,
speechBubbleColor * Math.Min(speechBubbleTimer, 1.0f), 0.0f,
Math.Min((float)speechBubbleTimer, 1.0f));
}
if (this == controlled) return; if (this == controlled) return;
Vector2 pos = DrawPosition;
pos.Y = -pos.Y;
if (info != null) if (info != null)
{ {
@@ -1720,13 +1728,6 @@ namespace Barotrauma
GUI.DrawProgressBar(spriteBatch, healthBarPos, new Vector2(100.0f, 15.0f), health / maxHealth, Color.Lerp(Color.Red, Color.Green, health / maxHealth) * 0.8f); GUI.DrawProgressBar(spriteBatch, healthBarPos, new Vector2(100.0f, 15.0f), health / maxHealth, Color.Lerp(Color.Red, Color.Green, health / maxHealth) * 0.8f);
} }
if (speechBubbleTimer > 0.0f)
{
GUI.SpeechBubbleIcon.Draw(spriteBatch, pos - Vector2.UnitY * 100.0f,
speechBubbleColor * Math.Min(speechBubbleTimer, 1.0f), 0.0f,
Math.Min((float)speechBubbleTimer, 1.0f));
}
} }
/// <summary> /// <summary>
+29 -4
View File
@@ -146,19 +146,44 @@ namespace Barotrauma.Networking
msg.Write((byte)ServerNetObject.CHAT_MESSAGE); msg.Write((byte)ServerNetObject.CHAT_MESSAGE);
msg.Write(NetStateID); msg.Write(NetStateID);
msg.Write((byte)Type); msg.Write((byte)Type);
msg.Write(SenderName);
msg.Write(Text); msg.Write(Text);
msg.Write(Sender != null);
if (Sender != null)
{
msg.Write(Sender.ID);
}
else
{
msg.Write(SenderName);
}
} }
static public void ClientRead(NetIncomingMessage msg) static public void ClientRead(NetIncomingMessage msg)
{ {
UInt32 ID = msg.ReadUInt32(); UInt32 ID = msg.ReadUInt32();
ChatMessageType type = (ChatMessageType)msg.ReadByte(); ChatMessageType type = (ChatMessageType)msg.ReadByte();
string senderName = msg.ReadString();
string txt = msg.ReadString(); string txt = msg.ReadString();
string senderName = "";
Character senderCharacter = null;
bool hasSenderCharacter = msg.ReadBoolean();
if (hasSenderCharacter)
{
senderCharacter = Entity.FindEntityByID(msg.ReadUInt16()) as Character;
if (senderCharacter != null)
{
senderName = senderCharacter.Name;
}
}
else
{
senderName = msg.ReadString();
}
if (ID > LastID) if (ID > LastID)
{ {
GameMain.Client.AddChatMessage(txt, type, senderName); GameMain.Client.AddChatMessage(txt, type, senderName, senderCharacter);
LastID = ID; LastID = ID;
} }
} }
+1 -1
View File
@@ -1337,7 +1337,7 @@ namespace Barotrauma.Networking
if (!string.IsNullOrWhiteSpace(myReceivedMessage)) if (!string.IsNullOrWhiteSpace(myReceivedMessage))
{ {
AddChatMessage(myReceivedMessage, (ChatMessageType)type, senderName); AddChatMessage(myReceivedMessage, (ChatMessageType)type, senderName, senderCharacter);
} }
} }
@@ -222,7 +222,7 @@ namespace Barotrauma.Networking
if (message.Sender != null) if (message.Sender != null)
{ {
message.Sender.ShowSpeechBubble(2.0f, ChatMessage.MessageColor[(int)ChatMessageType.Default]); message.Sender.ShowSpeechBubble(2.0f, ChatMessage.MessageColor[(int)message.Type]);
} }
GameMain.NetLobbyScreen.NewChatMessage(message); GameMain.NetLobbyScreen.NewChatMessage(message);