Ticket #3409: t3409_v9.patch

File t3409_v9.patch, 2.8 KB (added by Sergey Kushnirenko, 8 years ago)
  • trunk/binaries/data/mods/public/gui/common/functions_utility.js

     
    5656}
    5757
    5858/**
     59 * This function is used that highlith player names in wide text
     60 */
     61function colorizePlayernamesInWideText(message,players,colorFunction)
     62{
     63    var colorizedNames = [];
     64    var names = [];
     65    var ret = "";
     66
     67    for (let id in players)
     68    {
     69        let player = players[id];
     70        if (player.player > -1)
     71        {
     72            colorizedNames.push(colorFunction(id,""));
     73            names.push(player.name);
     74        }
     75        else
     76        {
     77            colorizedNames.push(player.name);
     78            names.push(player.name);
     79        }
     80    }
     81
     82    var tmpBuffer = "";
     83    var fixedMessage = "";
     84    for (let charIndex in message)
     85    {
     86        tmpBuffer += message[charIndex];
     87
     88        for (let nameIndex in names)
     89        {
     90            var beginCharIndex = tmpBuffer.indexOf(names[nameIndex]);
     91            if (beginCharIndex != -1)
     92            {
     93                var leftPartBuffer = tmpBuffer.substr(0, beginCharIndex);
     94                fixedMessage += escapeText(leftPartBuffer) + colorizedNames[nameIndex];
     95                tmpBuffer = "";
     96            }
     97        }
     98  }
     99
     100    if (tmpBuffer.length != 0)
     101        fixedMessage += escapeText(tmpBuffer);
     102
     103    return fixedMessage;
     104}
     105
     106/**
    59107 * Escape tag start and escape characters, so users cannot use special formatting.
    60108 * Also limit string length to 256 characters (not counting escape characters).
    61109 */
  • trunk/binaries/data/mods/public/gui/gamesetup/gamesetup.js

     
    4646    "banned": (msg, user) => systemMessage(sprintf(translate("%(username)s has been banned"), { "username": user })),
    4747    "chat": (msg, user) => sprintf(translate("%(username)s %(message)s"), {
    4848        "username": senderFont(sprintf(translate("<%(username)s>"), { "username": user })),
    49         "message": escapeText(msg.text || "")
     49        "message": colorizePlayernamesInWideText(msg.text || "", g_PlayerAssignments,colorizePlayernameByGUID)
    5050    }),
    5151    "ready": (msg, user) => sprintf(translate("* %(username)s is ready!"), {
    5252        "username": user
  • trunk/binaries/data/mods/public/gui/session/messages.js

     
    645668        }
    646669    }
    647670    else
    648         msg.text = escapeText(msg.text);
     671        msg.text = colorizePlayernamesInWideText(msg.text, g_PlayerAssignments,colorizePlayernameByGUID);
    649672
    650673    // GUID for players, playerID for AIs
    651674    let coloredUsername = msg.guid != -1 ? colorizePlayernameByGUID(msg.guid) : colorizePlayernameByID(msg.player);