Ticket #2640: 2640_1.patch

File 2640_1.patch, 9.4 KB (added by Matt Doerksen, 9 years ago)

Move game setup chat functionality into its own file. Part one of aggregating and simplifying chat functionality.

  • binaries/data/mods/public/gui/gamesetup/gamesetup.js

    From 5fcd48ec23a92c74530c7e0aaa25d40d9624b650 Mon Sep 17 00:00:00 2001
    From: matt <matthewdoerksen@hotmail.com>
    Date: Thu, 18 Jun 2015 20:30:37 -0700
    Subject: [PATCH 1/2] Move game setup chat functionality into separate file.
    
    ---
     .../data/mods/public/gui/gamesetup/gamesetup.js    | 79 ++--------------------
     .../data/mods/public/gui/gamesetup/gamesetup.xml   |  1 +
     2 files changed, 6 insertions(+), 74 deletions(-)
    
    diff --git a/binaries/data/mods/public/gui/gamesetup/gamesetup.js b/binaries/data/mods/public/gui/gamesetup/gamesetup.js
    index 856b79d..960393a 100644
    a b function handleNetMessage(message)  
    451451                // If we have extra player slots and we are the controller, give the player an ID.
    452452                if (g_IsController && message.hosts[host].player === -1 && g_AssignedCount < g_GameAttributes.settings.PlayerData.length)
    453453                    Engine.AssignNetworkPlayer(g_AssignedCount + 1, host);
    454                 addChatMessage({ "type": "connect", "username": message.hosts[host].name });
     454                addChatMessageGameSetup({ "type": "connect", "username": message.hosts[host].name });
    455455                newPlayer = host;
    456456            }
    457457        }
    function handleNetMessage(message)  
    460460        {
    461461            if (!message.hosts[host])
    462462            {
    463                 addChatMessage({ "type": "disconnect", "guid": host });
     463                addChatMessageGameSetup({ "type": "disconnect", "guid": host });
    464464                if (g_PlayerAssignments[host].player != -1)
    465465                    resetReady = true; // Observers shouldn't reset ready.
    466466            }
    function handleNetMessage(message)  
    494494        break;
    495495
    496496    case "chat":
    497         addChatMessage({ "type": "message", "guid": message.guid, "text": message.text });
     497        addChatMessageGameSetup({ "type": "message", "guid": message.guid, "text": message.text });
    498498        break;
    499499
    500500    // Singular client to host message
    501501    case "ready":
    502502        g_ReadyChanged -= 1;
    503503        if (g_ReadyChanged < 1 && g_PlayerAssignments[message.guid].player != -1)
    504             addChatMessage({ "type": "ready", "guid": message.guid, "ready": +message.status == 1 });
     504            addChatMessageGameSetup({ "type": "ready", "guid": message.guid, "ready": +message.status == 1 });
    505505        if (!g_IsController)
    506506            break;
    507507        g_PlayerAssignments[message.guid].status = +message.status == 1;
    function submitChatInput()  
    16881688    }
    16891689}
    16901690
    1691 function addChatMessage(msg)
    1692 {
    1693     var username = "";
    1694     if (msg.username)
    1695         username = escapeText(msg.username);
    1696     else if (msg.guid && g_PlayerAssignments[msg.guid])
    1697         username = escapeText(g_PlayerAssignments[msg.guid].name);
    1698 
    1699     var message = "";
    1700     if ("text" in msg && msg.text)
    1701         message = escapeText(msg.text);
    1702 
    1703     // TODO: Maybe host should have distinct font/color?
    1704     var color = "white";
    1705 
    1706     if (msg.guid && g_PlayerAssignments[msg.guid] && g_PlayerAssignments[msg.guid].player != -1)
    1707     {
    1708         // Valid player who has been assigned - get player color
    1709         var player = g_PlayerAssignments[msg.guid].player - 1;
    1710         var mapName = g_GameAttributes.map;
    1711         var mapData = loadMapData(mapName);
    1712         var mapSettings = (mapData && mapData.settings ? mapData.settings : {});
    1713         var pData = mapSettings.PlayerData ? mapSettings.PlayerData[player] : {};
    1714         var pDefs = g_DefaultPlayerData ? g_DefaultPlayerData[player] : {};
    1715 
    1716         color = rgbToGuiColor(getSetting(pData, pDefs, "Color"));
    1717     }
    1718 
    1719     var formatted;
    1720     switch (msg.type)
    1721     {
    1722     case "connect":
    1723         var formattedUsername = '[color="'+ color +'"]' + username + '[/color]';
    1724         formatted = '[font="sans-bold-13"] ' + sprintf(translate("== %(message)s"), { message: sprintf(translate("%(username)s has joined"), { username: formattedUsername }) }) + '[/font]';
    1725         break;
    1726 
    1727     case "disconnect":
    1728         var formattedUsername = '[color="'+ color +'"]' + username + '[/color]';
    1729         formatted = '[font="sans-bold-13"] ' + sprintf(translate("== %(message)s"), { message: sprintf(translate("%(username)s has left"), { username: formattedUsername }) }) + '[/font]';
    1730         break;
    1731 
    1732     case "message":
    1733         var formattedUsername = '[color="'+ color +'"]' + username + '[/color]';
    1734         var formattedUsernamePrefix = '[font="sans-bold-13"]' + sprintf(translate("<%(username)s>"), { username: formattedUsername }) + '[/font]'
    1735         formatted = sprintf(translate("%(username)s %(message)s"), { username: formattedUsernamePrefix, message: message });
    1736         break;
    1737 
    1738     case "ready":
    1739         var formattedUsername = '[font="sans-bold-13"][color="'+ color +'"]' + username + '[/color][/font]'
    1740         if (msg.ready)
    1741             formatted = ' ' + sprintf(translate("* %(username)s is ready!"), { username: formattedUsername });
    1742         else
    1743             formatted = ' ' + sprintf(translate("* %(username)s is not ready."), { username: formattedUsername });
    1744         break;
    1745 
    1746     case "settings":
    1747         formatted = '[font="sans-bold-13"] ' + sprintf(translate("== %(message)s"), { message: translate('Game settings have been changed') }) + '[/font]';
    1748         break;
    1749 
    1750     default:
    1751         error(sprintf("Invalid chat message '%(message)s'", { message: uneval(msg) }));
    1752         return;
    1753     }
    1754 
    1755     g_ChatMessages.push(formatted);
    1756 
    1757     Engine.GetGUIObjectByName("chatText").caption = g_ChatMessages.join("\n");
    1758 }
    1759 
    17601691function toggleMoreOptions()
    17611692{
    17621693    Engine.GetGUIObjectByName("moreOptionsFade").hidden = !Engine.GetGUIObjectByName("moreOptionsFade").hidden;
    function resetReadyData()  
    18351766        return;
    18361767
    18371768    if (g_ReadyChanged < 1)
    1838         addChatMessage({ "type": "settings"});
     1769        addChatMessageGameSetup({ "type": "settings"});
    18391770    else if (g_ReadyChanged == 2 && !g_ReadyInit)
    18401771        return; // duplicate calls on init
    18411772    else
  • binaries/data/mods/public/gui/gamesetup/gamesetup.xml

    diff --git a/binaries/data/mods/public/gui/gamesetup/gamesetup.xml b/binaries/data/mods/public/gui/gamesetup/gamesetup.xml
    index 4788977..d575793 100644
    a b  
    33<objects>
    44
    55    <script file="gui/common/network.js"/>
     6    <script file="gui/common/functions_chat.js"/>
    67    <script file="gui/common/functions_civinfo.js"/>
    78    <script file="gui/common/functions_global_object.js"/>
    89    <script file="gui/common/functions_utility.js"/>
  • new file inaries/data/mods/public/gui/common/functions_chat.js

    -- 
    2.1.4
    
    
    From 7ef3487c25d51e8256f781ee116a9d778a180de0 Mon Sep 17 00:00:00 2001
    From: matt <matthewdoerksen@hotmail.com>
    Date: Thu, 18 Jun 2015 20:30:46 -0700
    Subject: [PATCH 2/2] Add functions_chat.js file to begin aggregating all chat
     functionality.
    
    ---
     .../data/mods/public/gui/common/functions_chat.js  | 68 ++++++++++++++++++++++
     1 file changed, 68 insertions(+)
     create mode 100644 binaries/data/mods/public/gui/common/functions_chat.js
    
    diff --git a/binaries/data/mods/public/gui/common/functions_chat.js b/binaries/data/mods/public/gui/common/functions_chat.js
    new file mode 100644
    index 0000000..9e51ae5
    - +  
     1function addChatMessageGameSetup(msg)
     2{
     3    var username = "";
     4    if (msg.username)
     5        username = escapeText(msg.username);
     6    else if (msg.guid && g_PlayerAssignments[msg.guid])
     7        username = escapeText(g_PlayerAssignments[msg.guid].name);
     8
     9    var message = "";
     10    if ("text" in msg && msg.text)
     11        message = escapeText(msg.text);
     12
     13    // TODO: Maybe host should have distinct font/color?
     14    var color = "white";
     15
     16    if (msg.guid && g_PlayerAssignments[msg.guid] && g_PlayerAssignments[msg.guid].player != -1)
     17    {
     18        // Valid player who has been assigned - get player color
     19        var player = g_PlayerAssignments[msg.guid].player - 1;
     20        var mapName = g_GameAttributes.map;
     21        var mapData = loadMapData(mapName);
     22        var mapSettings = (mapData && mapData.settings ? mapData.settings : {});
     23        var pData = mapSettings.PlayerData ? mapSettings.PlayerData[player] : {};
     24        var pDefs = g_DefaultPlayerData ? g_DefaultPlayerData[player] : {};
     25
     26        color = rgbToGuiColor(getSetting(pData, pDefs, "Color"));
     27    }
     28
     29    var formatted;
     30    switch (msg.type)
     31    {
     32    case "connect":
     33        var formattedUsername = '[color="'+ color +'"]' + username + '[/color]';
     34        formatted = '[font="sans-bold-13"] ' + sprintf(translate("== %(message)s"), { message: sprintf(translate("%(username)s has joined"), { username: formattedUsername }) }) + '[/font]';
     35        break;
     36
     37    case "disconnect":
     38        var formattedUsername = '[color="'+ color +'"]' + username + '[/color]';
     39        formatted = '[font="sans-bold-13"] ' + sprintf(translate("== %(message)s"), { message: sprintf(translate("%(username)s has left"), { username: formattedUsername }) }) + '[/font]';
     40        break;
     41
     42    case "message":
     43        var formattedUsername = '[color="'+ color +'"]' + username + '[/color]';
     44        var formattedUsernamePrefix = '[font="sans-bold-13"]' + sprintf(translate("<%(username)s>"), { username: formattedUsername }) + '[/font]'
     45        formatted = sprintf(translate("%(username)s %(message)s"), { username: formattedUsernamePrefix, message: message });
     46        break;
     47
     48    case "ready":
     49        var formattedUsername = '[font="sans-bold-13"][color="'+ color +'"]' + username + '[/color][/font]'
     50        if (msg.ready)
     51            formatted = ' ' + sprintf(translate("* %(username)s is ready!"), { username: formattedUsername });
     52        else
     53            formatted = ' ' + sprintf(translate("* %(username)s is not ready."), { username: formattedUsername });
     54        break;
     55
     56    case "settings":
     57        formatted = '[font="sans-bold-13"] ' + sprintf(translate("== %(message)s"), { message: translate('Game settings have been changed') }) + '[/font]';
     58        break;
     59
     60    default:
     61        error(sprintf("Invalid chat message '%(message)s'", { message: uneval(msg) }));
     62        return;
     63    }
     64
     65    g_ChatMessages.push(formatted);
     66
     67    Engine.GetGUIObjectByName("chatText").caption = g_ChatMessages.join("\n");
     68}