Ticket #3979: t3979_no_you_dont_v1.patch

File t3979_no_you_dont_v1.patch, 14.7 KB (added by elexis, 8 years ago)
  • binaries/data/mods/public/gui/common/functions_utility.js

    function sanitizePlayerName(name, stripU  
    139139        sanitizedName = sanitizedName.replace(/\s/g, "");
    140140    // Limit the length to 20 characters
    141141    return sanitizedName.substr(0,20);
    142142}
    143143
     144function singleplayerName()
     145{
     146    return Engine.ConfigDB_GetValue("user", "playername.singleplayer") || Engine.GetSystemUsername();
     147}
     148
     149function multiplayerName()
     150{
     151    return Engine.ConfigDB_GetValue("user", "playername.multiplayer") || Engine.GetSystemUsername();
     152}
     153
    144154function tryAutoComplete(text, autoCompleteList)
    145155{
    146156    if (!text.length)
    147157        return text;
    148158
  • binaries/data/mods/public/gui/gamesetup/gamesetup.js

    function init(attribs)  
    219219
    220220    g_IsNetworked = attribs.type != "offline";
    221221    g_IsController = attribs.type != "client";
    222222    g_ServerName = attribs.serverName || undefined;
    223223
     224    // Replace empty playername when entering a singleplayermatch for the first time
     225    if (!g_IsNetworked)
     226    {
     227        Engine.ConfigDB_CreateValue("user", "playername.singleplayer", singleplayerName());
     228        Engine.ConfigDB_WriteValueToFile("user", "playername.singleplayer", singleplayerName(), "config/user.cfg");
     229    }
     230
    224231    // Get default player data - remove gaia
    225232    g_DefaultPlayerData = g_Settings.PlayerDefaults;
    226233    g_DefaultPlayerData.shift();
    227234    for (let i in g_DefaultPlayerData)
    228235        g_DefaultPlayerData[i].Civ = "random";
    function selectMap(name)  
    11621169            g_GameAttributes.settings.PlayerData[i].AIDiff = g_DefaultPlayerData[i].AIDiff;
    11631170    }
    11641171
    11651172    // Reset player assignments on map change
    11661173    if (!g_IsNetworked)
    1167         g_PlayerAssignments = { "local": { "name": translate("You"), "player": 1, "civ": "", "team": -1, "ready": 0 } };
     1174        g_PlayerAssignments = { "local": { "name": singleplayerName(), "player": 1, "civ": "", "team": -1, "ready": 0 } };
     1175
    11681176    else
    11691177    {
    11701178        let numPlayers = mapSettings.PlayerData ? mapSettings.PlayerData.length : g_GameAttributes.settings.PlayerData.length;
    11711179
    11721180        for (let guid in g_PlayerAssignments)
  • binaries/data/mods/public/gui/gamesetup/gamesetup_mp.js

    function switchSetupPage(oldpage, newpag  
    192192}
    193193
    194194function startHost(playername, servername)
    195195{
    196196    // Save player name
    197     Engine.ConfigDB_CreateValue("user", "playername", playername);
    198     Engine.ConfigDB_WriteValueToFile("user", "playername", playername, "config/user.cfg");
     197    Engine.ConfigDB_CreateValue("user", "playername.multiplayer", playername);
     198    Engine.ConfigDB_WriteValueToFile("user", "playername.multiplayer", playername, "config/user.cfg");
    199199
    200200    // Disallow identically named games in the multiplayer lobby
    201201    if (Engine.HasXmppClient())
    202202    {
    203203        for (let g of Engine.GetGameList())
    function startJoin(playername, ip)  
    257257    if (Engine.HasXmppClient())
    258258        Engine.LobbySetPlayerPresence("playing");
    259259    else
    260260    {
    261261        // Only save the player name and host address if they're valid and we're not in the lobby
    262         Engine.ConfigDB_CreateValue("user", "playername", playername);
    263         Engine.ConfigDB_WriteValueToFile("user", "playername", playername, "config/user.cfg");
     262        Engine.ConfigDB_CreateValue("user", "playername.multiplayer", playername);
     263        Engine.ConfigDB_WriteValueToFile("user", "playername.multiplayer", playername, "config/user.cfg");
    264264        Engine.ConfigDB_CreateValue("user", "multiplayerserver", ip);
    265265        Engine.ConfigDB_WriteValueToFile("user", "multiplayerserver", ip, "config/user.cfg");
    266266    }
    267267    return true;
    268268}
    269269
    270270function getDefaultGameName()
    271271{
    272272    return sprintf(translate("%(playername)s's game"), {
    273         "playername": Engine.ConfigDB_GetValue("user", "playername")
     273        "playername": multiplayerName()
    274274    });
    275275}
  • binaries/data/mods/public/gui/gamesetup/gamesetup_mp.xml

     
    22
    33<objects>
    44
    55    <script file="gui/common/network.js"/>
    66    <script file="gui/common/functions_global_object.js"/>
     7    <script file="gui/common/functions_utility.js"/>
    78    <script file="gui/gamesetup/gamesetup_mp.js"/>
    89
    910    <!-- Add a translucent black background to fade out the menu page -->
    1011    <object type="image" sprite="ModernFade"/>
    1112
     
    2930                <translatableAttribute id="caption">Player name:</translatableAttribute>
    3031            </object>
    3132
    3233            <object name="joinPlayerName" type="input" size="50%+10 40 100%-20 64" style="ModernInput">
    3334                <action on="Load">
    34                     this.caption = Engine.ConfigDB_GetValue("user", "playername");
     35                    Engine.GetGUIObjectByName("joinPlayerName").caption = multiplayerName();
    3536                </action>
    3637            </object>
    3738
    3839            <object type="text" size="20 80 50% 110" style="ModernLabelText" text_align="right">
    3940                <translatableAttribute id="caption">Server Hostname or IP:</translatableAttribute>
    4041            </object>
    4142
    4243            <object name="joinServer" type="input" size="50%+10 80 100%-20 104" style="ModernInput">
    4344                <action on="Load">
    44                     this.caption = Engine.ConfigDB_GetValue("user", "multiplayerserver")
     45                    this.caption = Engine.ConfigDB_GetValue("user", "multiplayerserver");
    4546                </action>
    4647            </object>
    4748
    4849            <object hotkey="confirm" type="button" size="50%+5 100%-45 100%-18 100%-17" style="ModernButtonRed">
    4950                <translatableAttribute id="caption">Continue</translatableAttribute>
     
    6768                <translatableAttribute id="caption">Player name:</translatableAttribute>
    6869            </object>
    6970
    7071            <object name="hostPlayerName" type="input" size="50%+10 40 100%-20 64" style="ModernInput">
    7172                <action on="Load">
    72                     this.caption = Engine.ConfigDB_GetValue("user", "playername");
     73                    this.caption = multiplayerName();
    7374                </action>
    7475            </object>
    7576            </object>
    7677
    7778            <!-- Host server name is only used on games started through the lobby. -->
  • binaries/data/mods/public/gui/lobby/prelobby.js

    function onTick()  
    177177            break;
    178178        case "connected":
    179179        {
    180180            Engine.PopGuiPage();
    181181            Engine.SwitchGuiPage("page_lobby.xml");
    182             Engine.ConfigDB_CreateValue("user", "playername", sanitizePlayerName(username, true, true));
    183             Engine.ConfigDB_WriteValueToFile("user", "playername", sanitizePlayerName(username, true, true), "config/user.cfg");
     182            Engine.ConfigDB_CreateValue("user", "playername.multiplayer", sanitizePlayerName(username, true, true));
     183            Engine.ConfigDB_WriteValueToFile("user", "playername.multiplayer", sanitizePlayerName(username, true, true), "config/user.cfg");
    184184            Engine.ConfigDB_CreateValue("user", "lobby.login", username);
    185185            Engine.ConfigDB_WriteValueToFile("user", "lobby.login", username, "config/user.cfg");
    186186            // We only store the encrypted password, so make sure to re-encrypt it if changed before saving.
    187187            if (password != g_EncrytedPassword.substring(0, 10))
    188188                g_EncrytedPassword = Engine.EncryptPassword(password, username);
  • binaries/data/mods/public/gui/options/options.json

     
    11{
    22    "generalSetting":
    33    [
    44        {
     5            "type": "string",
     6            "label": "Playername (Single Player)",
     7            "tooltip": "How you want to be addressed in Single Player matches).",
     8            "parameters": { "config": "playername.singleplayer" }
     9        },
     10        {
     11            "type": "string",
     12            "label": "Playername (Multiplayer)",
     13            "tooltip": "How you want to be addressed in Multiplayer matches (except lobby).",
     14            "parameters": { "config": "playername.multiplayer" }
     15        },
     16        {
    517            "type": "boolean",
    618            "label": "Windowed Mode",
    719            "tooltip": "Start 0 A.D. in a window",
    820            "parameters": { "config": "windowed" }
    921        },
  • binaries/data/mods/public/gui/replaymenu/replay_actions.js

    function reallyStartVisualReplay(replayD  
    6262    Engine.SwitchGuiPage("page_loading.xml", {
    6363        "attribs": Engine.GetReplayAttributes(replayDirectory),
    6464        "isNetworked": false,
    6565        "playerAssignments": {
    6666            "local":{
    67                 "name": translate("You"),
     67                "name": singleplayerName(),
    6868                "player": -1
    6969            }
    7070        },
    7171        "savedGUIData": "",
    7272        "isReplay": true,
  • binaries/data/mods/public/gui/session/messages.js

    function colorizePlayernameHelper(userna  
    650650    return '[color="' + playerColor + '"]' + (username || translate("Unknown Player")) + "[/color]";
    651651}
    652652
    653653function formatDefeatMessage(msg)
    654654{
    655     let defeatMsg;
    656     let playername;
    657 
    658     // In singleplayer, the local player is "You". "You has" is incorrect.
    659     if (!g_IsNetworked && msg.player == Engine.GetPlayerID())
    660     {
    661         // Translation: String used to colorize the word "You" of that sentence
    662         playername = colorizePlayernameHelper(translateWithContext("You have been defeated", "You"), msg.player);
    663         if (msg.resign)
    664             defeatMsg = translate("%(You)s have resigned.");
    665         else
    666             defeatMsg = translate("%(You)s have been defeated.");
    667     }
    668     else
    669     {
    670         playername = colorizePlayernameByID(msg.player);
    671         if (msg.resign)
    672             defeatMsg = translate("%(player)s has resigned.");
    673         else
    674             defeatMsg = translate("%(player)s has been defeated.");
    675     }
    676 
    677     return sprintf(defeatMsg, {
    678         "player": playername,
    679         "You": playername
    680     });
     655    return sprintf(
     656        msg.resign ?
     657            translate("%(player)s has resigned.") :
     658            translate("%(player)s has been defeated."),
     659        { "player": colorizePlayernameByID(msg.player) }
     660    );
    681661}
    682662
    683663function formatDiplomacyMessage(msg)
    684664{
    685665    let messageType;
  • binaries/data/mods/public/gui/session/session.js

    var g_CivData = {};  
    7272/**
    7373 * For restoring selection, order and filters when returning to the replay menu
    7474 */
    7575var g_ReplaySelectionData;
    7676
    77 var g_PlayerAssignments = { "local": { "name": translate("You"), "player": 1 } };
     77var g_PlayerAssignments = {
     78    "local": {
     79        "name": singleplayerName(),
     80        "player": 1
     81    }
     82};
    7883
    7984/**
    8085 * Cache dev-mode settings that are frequently or widely used.
    8186 */
    8287var g_DevSettings = {
  • binaries/data/mods/public/gui/session/utility_functions.js

    function getTradingTooltip(gain)  
    8585        gainString += translate("+") + gain.market1Gain;
    8686    if (gain.market2Gain && gain.market2Owner == gain.traderOwner)
    8787        gainString += translate("+") + gain.market2Gain;
    8888
    8989    var tooltip = sprintf(translate("%(gain)s (%(player)s)"), {
    90         gain: gainString,
    91         player: (!g_IsNetworked && gain.traderOwner == playerID) ? translate("You") : simState.players[gain.traderOwner].name
     90        "gain": gainString,
     91        "player": simState.players[gain.traderOwner].name
    9292    });
    9393   
    9494    if (gain.market1Gain && gain.market1Owner != gain.traderOwner)
    9595        tooltip += translateWithContext("Separation mark in an enumeration", ", ") + sprintf(translate("%(gain)s (%(player)s)"), {
    96             gain: gain.market1Gain,
    97             player: (!g_IsNetworked && gain.market1Owner == playerID) ? translate("You") : simState.players[gain.market1Owner].name
     96            "gain": gain.market1Gain,
     97            "player": simState.players[gain.market1Owner].name
    9898        });
    9999    if (gain.market2Gain && gain.market2Owner != gain.traderOwner)
    100100        tooltip += translateWithContext("Separation mark in an enumeration", ", ") + sprintf(translate("%(gain)s (%(player)s)"), {
    101             gain: gain.market2Gain,
    102             player: (!g_IsNetworked && gain.market2Owner == playerID) ? translate("You") : simState.players[gain.market2Owner].name
     101            "gain": gain.market2Gain,
     102            "player": simState.players[gain.market2Owner].name
    103103        });
    104104
    105105    return tooltip;
    106106}
    107107
  • binaries/data/mods/public/gui/summary/summary.js

    function startReplay()  
    138138    Engine.SwitchGuiPage("page_loading.xml", {
    139139        "attribs": Engine.GetReplayAttributes(g_GameData.replayDirectory),
    140140        "isNetworked": false,
    141141        "playerAssignments": {
    142142            "local": {
    143                 "name": translate("You"),
     143                "name": singleplayerName(),
    144144                "player": -1
    145145            }
    146146        },
    147147        "savedGUIData": "",
    148148        "isReplay": true,
  • source/gui/scripting/ScriptFunctions.cpp

    void SetBoundingBoxDebugOverlay(ScriptIn  
    746746void Script_EndGame(ScriptInterface::CxPrivate* UNUSED(pCxPrivate))
    747747{
    748748    EndGame();
    749749}
    750750
     751CStrW GetSystemUsername(ScriptInterface::CxPrivate* UNUSED(pCxPrivate))
     752{
     753    return sys_get_user_name();
     754}
     755
     756
    751757// Cause the game to exit gracefully.
    752758// params:
    753759// returns:
    754760// notes:
    755761// - Exit happens after the current main loop iteration ends
    void GuiScriptingInit(ScriptInterface& s  
    11151121    scriptInterface.RegisterFunction<void, &DumpSimState>("DumpSimState");
    11161122    scriptInterface.RegisterFunction<void, &DumpTerrainMipmap>("DumpTerrainMipmap");
    11171123    scriptInterface.RegisterFunction<void, unsigned int, &EnableTimeWarpRecording>("EnableTimeWarpRecording");
    11181124    scriptInterface.RegisterFunction<void, &RewindTimeWarp>("RewindTimeWarp");
    11191125    scriptInterface.RegisterFunction<void, bool, &SetBoundingBoxDebugOverlay>("SetBoundingBoxDebugOverlay");
     1126    scriptInterface.RegisterFunction<CStrW, &GetSystemUsername>("GetSystemUsername");
    11201127}