Ticket #4141: better_gamesetup_descriptions_v1.patch

File better_gamesetup_descriptions_v1.patch, 9.9 KB (added by elexis, 8 years ago)
  • binaries/data/mods/public/simulation/data/settings/victory_conditions/conquest.json

     
    11{
    22    "TranslatedKeys": ["Title", "Description"],
    33    "Data":
    44    {
    55        "Title": "Conquest",
    6         "Description": "Defeat all opponents",
     6        "Description": "Defeat all opponents to win.",
    77        "Scripts":
    88        [
    99            "scripts/TriggerHelper.js",
    1010            "scripts/ConquestCommon.js",
    1111            "scripts/Conquest.js"
  • binaries/data/mods/public/simulation/data/settings/victory_conditions/conquest_structures.json

     
    11{
    22    "TranslatedKeys": ["Title", "Description"],
    33    "Data":
    44    {
    55        "Title": "Conquest Structures",
    6         "Description": "Destroy all structures of enemies",
     6        "Description": "Destroy all enemy structures to win.",
    77        "Scripts":
    88        [
    99            "scripts/TriggerHelper.js",
    1010            "scripts/ConquestCommon.js",
    1111            "scripts/ConquestStructures.js"
  • binaries/data/mods/public/simulation/data/settings/victory_conditions/conquest_units.json

     
    11{
    22    "TranslatedKeys": ["Title", "Description"],
    33    "Data":
    44    {
    55        "Title": "Conquest Units",
    6         "Description": "Kill all enemy units",
     6        "Description": "Kill all enemy units to win.",
    77        "Scripts":
    88        [
    99            "scripts/TriggerHelper.js",
    1010            "scripts/ConquestCommon.js",
    1111            "scripts/ConquestUnits.js"
  • binaries/data/mods/public/simulation/data/settings/victory_conditions/regicide.json

     
    11{
    22    "TranslatedKeys": ["Title", "Description"],
    33    "Data":
    44    {
    55        "Title": "Regicide",
    6         "Description": "Defeat opponents by killing their hero",
     6        "Description": "Defeat opponents by killing their hero.",
    77        "Scripts":
    88        [
    99            "scripts/TriggerHelper.js",
    1010            "scripts/ConquestCommon.js",
    1111            "scripts/Conquest.js",
  • binaries/data/mods/public/simulation/data/settings/victory_conditions/wonder.json

     
    11{
    22    "TranslatedKeys": ["Title", "Description"],
    33    "Data":
    44    {
    55        "Title": "Wonder",
    6         "Description": "Build and protect a wonder to win",
     6        "Description": "Be the first to build or capture a wonder and keep it for a certain time to win the game.",
    77        "Scripts":
    88        [
    99            "scripts/TriggerHelper.js",
    1010            "scripts/ConquestCommon.js",
    1111            "scripts/Conquest.js",
  • binaries/data/mods/public/gui/common/settings.js

    function loadVictoryConditions()  
    224224    // TODO: We might support enabling victory conditions separately sometime.
    225225    // Until then, we supplement the endless gametype here.
    226226    victoryConditions.push({
    227227        "Name": "endless",
    228228        "Title": translate("None"),
    229         "Description": translate("Endless Game"),
     229        "Description": translate("Endless game."),
    230230        "Scripts": []
    231231    });
    232232
    233233    return victoryConditions;
    234234}
  • binaries/data/mods/public/gui/gamesetup/gamesetup.js

    const g_UnassignedPlayerColor = "170 170  
    134134const g_ReadyColor = "green";
    135135
    136136/**
    137137 * Highlights the victory condition in the game-description.
    138138 */
    139 const g_VictoryColor = "orange";
     139const g_DescriptionHighlight = "orange";
    140140
    141141/**
    142142 * Placeholder item for the map-dropdownlist.
    143143 */
    144144const g_RandomMap = '[color="' + g_ColorRandom + '"]' + translateWithContext("map selection", "Random") + "[/color]";
    function updateGUIObjects()  
    14541454        pColorPickerHeading.hidden = !canChangeColors;
    14551455        if (canChangeColors)
    14561456            pColorPicker.selected = g_PlayerColors.findIndex(col => sameColor(col, color));
    14571457    }
    14581458
    1459     updateMapDescription();
     1459    updateGameDescription();
    14601460    resizeMoreOptionsWindow();
    14611461
    14621462    g_IsInGuiUpdate = false;
    14631463
    14641464    // Game attributes include AI settings, so update the player list
    function updateGUIObjects()  
    14731473        openAIConfig(g_LastViewedAIPlayer);
    14741474    }
    14751475}
    14761476
    14771477/**
    1478  * Sets an additional map label, map preview image and mapsettings description.
     1478 * Sets an additional map label, map preview image and describes the chosen gamesettings more closely.
    14791479 */
    1480 function updateMapDescription()
     1480function updateGameDescription()
    14811481{
    14821482    setMapPreviewImage("mapPreview", getMapPreview(g_GameAttributes.map));
    14831483
    14841484    Engine.GetGUIObjectByName("mapInfoName").caption =
    14851485        translateMapTitle(getMapDisplayName(g_GameAttributes.map));
    14861486
    1487     let numPlayers = sprintf(
    1488         translatePlural(
    1489             "%(number)s player. ",
    1490             "%(number)s players. ",
    1491             g_GameAttributes.settings.PlayerData.length
    1492         ),
    1493         { "number": g_GameAttributes.settings.PlayerData.length }
    1494     );
    1495 
    1496     let mapDescription =
    1497         g_GameAttributes.map == "random" ?
    1498             translate("Randomly selects a map from the list") :
    1499         g_GameAttributes.settings.Description ?
    1500             translate(g_GameAttributes.settings.Description) :
    1501             translate("Sorry, no description available.");
    1502 
     1487    let victoryTitle = "";
    15031488    let victoryIdx = g_VictoryConditions.Name.indexOf(g_GameAttributes.settings.GameType || g_VictoryConditions.Default);
    1504     let victoryTitle;
    1505 
    1506     if (victoryIdx == -1)
    1507         victoryTitle = translateWithContext("victory condition", "Unknown");
    1508     else
     1489    if (victoryIdx != -1)
    15091490    {
     1491        let title = g_VictoryConditions.Title[victoryIdx];
    15101492        if (g_VictoryConditions.Name[victoryIdx] == "wonder")
    1511             victoryTitle = sprintf(
     1493            title = sprintf(
    15121494                translatePluralWithContext(
    15131495                    "victory condition",
    15141496                    "Wonder (%(min)s minute)",
    15151497                    "Wonder (%(min)s minutes)",
    15161498                    g_GameAttributes.settings.WonderDuration
    15171499                ),
    15181500                { "min": g_GameAttributes.settings.WonderDuration }
    15191501            );
    1520         else
    1521             victoryTitle = g_VictoryConditions.Title[victoryIdx];
    15221502
    1523         if (victoryIdx != g_VictoryConditions.Default)
    1524             victoryTitle = "[color=\"" + g_VictoryColor + "\"]" + victoryTitle + "[/color]";
    1525     }
     1503        victoryTitle = sprintf(translate("%(VictoryCondition)s: %(Description)s"), {
     1504            "VictoryCondition": "[color=\"" + g_DescriptionHighlight + "\"]" + title + "[/color]",
     1505            "Description": g_VictoryConditions.Description[victoryIdx]
     1506        }) + "\n";
     1507    }
     1508
     1509    let is1v1 = g_GameAttributes.settings.PlayerData.length == 2;
     1510    let isRated = g_GameAttributes.settings.RatingEnabled && is1v1;
     1511    let ratedGameTitle = !isRated ? "" :
     1512        sprintf(translate("%(RatedGame)s: %(Description)s"), {
     1513            "RatedGame":
     1514                "[color=\"" + g_DescriptionHighlight + "\"]" +
     1515                    translate("Rated game") +
     1516                "[/color]",
     1517            "Description": translate("When the winner of this match was determined, the lobby score will adapt.")
     1518        }) + "\n";
     1519
     1520    let lockedTeamsTitle = isRated ? "" :
     1521        sprintf(translate("%(LockedTeams)s: %(Description)s"), {
     1522            "LockedTeams":
     1523                "[color=\"" + g_DescriptionHighlight + "\"]" +
     1524                (g_GameAttributes.settings.LockTeams ?
     1525                    translate("Locked Teams") :
     1526                    translate("Diplomacy")) +
     1527                "[/color]",
     1528            "Description":
     1529                g_GameAttributes.settings.LockTeams ?
     1530                    translate("Players can't change the initial teams.") :
     1531                    translate("Players can setup alliances and declare war on allies.")
     1532        }) + "\n";
     1533
     1534    let lastManStandingTitle = is1v1 ? "" :
     1535        sprintf(translate("%(LastManStanding)s: %(Description)s"), {
     1536            "LastManStanding":
     1537                "[color=\"" + g_DescriptionHighlight + "\"]" +
     1538                (g_GameAttributes.settings.LastManStanding ?
     1539                    translate("Last Man Standing") :
     1540                    translate("Allied Victory")) +
     1541                "[/color]",
     1542            "Description":
     1543                g_GameAttributes.settings.LastManStanding ?
     1544                    translateWithContext("lastManStanding", "Only one player can win the game.") + " " +
     1545                    translateWithContext("lastManStanding", "If the remaining players are allies, the game continues until only one remains.") :
     1546                    translateWithContext("allied victory", "If one player wins, his allies win too.") + " " +
     1547                    translateWithContext("allied victory", "If one group of allies remains, they win.")
     1548        }) + "\n";
     1549
     1550    let mapDescription = sprintf(translate("%(Map)s: %(Description)s"), {
     1551            "Map":
     1552                "[color=\"" + g_DescriptionHighlight + "\"]" +
     1553                translate("Map") +
     1554                "[/color]",
     1555            "Description":
     1556                g_GameAttributes.map == "random" ?
     1557                    translate("Randomly selects a map from the list") :
     1558                g_GameAttributes.settings.Description ?
     1559                    translate(g_GameAttributes.settings.Description) :
     1560                    translate("Sorry, no description available."),
     1561    });
    15261562
    15271563    Engine.GetGUIObjectByName("mapInfoDescription").caption =
    1528         numPlayers +
    1529         translate("Victory Condition:") + " " + victoryTitle + ".\n\n" +
     1564        victoryTitle +
     1565        ratedGameTitle +
     1566        lockedTeamsTitle +
     1567        lastManStandingTitle +
    15301568        mapDescription;
    15311569}
    15321570
    15331571/**
    15341572 * Broadcast the changed settings to all clients and the lobbybot.