1
0
forked from 0ad/0ad

Adds attacking player's name to attack notification messages.

Cleans up some duplicate username/color code in messages.js

This was SVN commit r13962.
This commit is contained in:
historic_bruno 2013-10-06 22:07:55 +00:00
parent 7d92b3459b
commit 35fa527814
2 changed files with 23 additions and 16 deletions

View File

@ -101,7 +101,8 @@ function handleNotifications()
{
addChatMessage({
"type": "attack",
"player": notification.player
"player": notification.player,
"attacker": notification.attacker
});
}
}
@ -138,6 +139,17 @@ function displayNotifications()
getGUIObjectByName("notificationText").caption = messages.join("\n");
}
// Returns [username, playercolor] for the given player
function getUsernameAndColor(player)
{
// This case is hit for AIs, whose names don't exist in playerAssignments.
var color = g_Players[player].color;
return [
escapeText(g_Players[player].name),
color.r + " " + color.g + " " + color.b,
];
}
// Messages
function handleNetMessage(message)
{
@ -322,14 +334,11 @@ function addChatMessage(msg, playerAssignments)
}
else if (msg.type == "defeat" && msg.player)
{
// This case is hit for AIs, whose names don't exist in playerAssignments.
playerColor = g_Players[msg.player].color.r + " " + g_Players[msg.player].color.g + " " + g_Players[msg.player].color.b;
username = escapeText(g_Players[msg.player].name);
} else if (msg.type == "message")
[username, playerColor] = getUsernameAndColor(msg.player);
}
else if (msg.type == "message")
{
// This case is hit for AIs, whose names don't exist in playerAssignments.
playerColor = g_Players[msg.player].color.r + " " + g_Players[msg.player].color.g + " " + g_Players[msg.player].color.b;
username = escapeText(g_Players[msg.player].name);
[username, playerColor] = getUsernameAndColor(msg.player);
parseChatCommands(msg, playerAssignments);
}
else
@ -359,14 +368,12 @@ function addChatMessage(msg, playerAssignments)
var status = (msg.status == "ally" ? "allied" : (msg.status == "enemy" ? "at war" : "neutral"));
if (msg.player == Engine.GetPlayerID())
{
username= escapeText(g_Players[msg.player1].name);
playerColor = g_Players[msg.player1].color.r + " " + g_Players[msg.player1].color.g + " " + g_Players[msg.player1].color.b;
[username, playerColor] = getUsernameAndColor(msg.player1);
formatted = "You are now "+status+" with [color=\"" + playerColor + "\"]"+username + "[/color].";
}
else if (msg.player1 == Engine.GetPlayerID())
{
username= escapeText(g_Players[msg.player].name);
playerColor = g_Players[msg.player].color.r + " " + g_Players[msg.player].color.g + " " + g_Players[msg.player].color.b;
[username, playerColor] = getUsernameAndColor(msg.player);
formatted = "[color=\"" + playerColor + "\"]" + username + "[/color] is now " + status + " with you."
}
else // No need for other players to know of this.
@ -376,8 +383,7 @@ function addChatMessage(msg, playerAssignments)
if (msg.player != Engine.GetPlayerID())
return;
username = escapeText(g_Players[msg.player1].name);
playerColor = g_Players[msg.player1].color.r + " " + g_Players[msg.player1].color.g + " " + g_Players[msg.player1].color.b;
[username, playerColor] = getUsernameAndColor(msg.player1);
// Format the amounts to proper English: 200 food, 100 wood, and 300 metal; 100 food; 400 wood and 200 stone
var amounts = Object.keys(msg.amounts)
@ -396,7 +402,8 @@ function addChatMessage(msg, playerAssignments)
if (msg.player != Engine.GetPlayerID())
return;
formatted = "You are under attack.";
[username, playerColor] = getUsernameAndColor(msg.attacker);
formatted = "You have been attacked by [color=\"" + playerColor + "\"]" + username + "[/color]!";
break;
case "message":
// May have been hidden by the 'team' command.

View File

@ -78,7 +78,7 @@ AttackDetection.prototype.AttackAlert = function(target, attacker)
this.AddSuppression(event);
Engine.PostMessage(this.entity, MT_AttackDetected, { "player": cmpPlayer.GetPlayerID(), "event": event });
var cmpGuiInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
cmpGuiInterface.PushNotification({"type": "attack", "player": cmpPlayer.GetPlayerID()});
cmpGuiInterface.PushNotification({"type": "attack", "player": cmpPlayer.GetPlayerID(), "attacker": cmpAttackerOwnership.GetOwner() });
PlaySound("attacked", target);
};