Ticket #3956: t3956_chataddressee_rough_sketch_v1.patch

File t3956_chataddressee_rough_sketch_v1.patch, 1.6 KB (added by elexis, 8 years ago)

The code should look something like that, it's just a broken rough sketch. Can be finished by anyone.

  • binaries/data/mods/public/gui/session/messages.js

    function handlePlayerAssignmentsMessage(  
    497497    }
    498498}
    499499
    500500function updateChatAddressees()
    501501{
     502    // Remember previously selected item
     503    let chatAddressee = Engine.GetGUIObjectByName("chatAddressee");
     504    let selectedName = chatAddressee.list_data[chatAddressee.selected] || "";
     505    selectedName = selectedName.substr(0, 4) == "/msg" && selected.substr(5);
     506
    502507    let addressees = [
    503508        {
    504509            "label": translateWithContext("chat addressee", "Everyone"),
    505510            "cmd": ""
    506511        }
    function updateChatAddressees()  
    541546            "cmd": "/msg " + g_PlayerAssignments[guid].name,
    542547            "label": colorBox + g_PlayerAssignments[guid].name
    543548        });
    544549    }
    545550
    546     let chatAddressee = Engine.GetGUIObjectByName("chatAddressee");
     551    if (selectedName && Object.keys(g_PlayerAssignments).every(guid => g_PlayerAssignments[guid].name != selectedName)
     552        addressees.push({
     553            "cmd": "/msg " + selectedName,
     554            "label": sprintf(translate("\\[OFFLINE] %(player)s"), { "player": selectedName })
     555        });
     556
     557    let oldChatAddressee = chatAddressee.list_data[chatAddressee.selected];
    547558    chatAddressee.list = addressees.map(adressee => adressee.label);
    548559    chatAddressee.list_data = addressees.map(adressee => adressee.cmd);
    549     chatAddressee.selected = 0;
     560    chatAddressee.selected = selectedIndex || Math.max(0, chatAddressee.list_data.indexOf(oldChatAddressee));
    550561}
    551562
    552563/**
    553564 * Send text as chat. Don't look for commands.
    554565 *