Ticket #4055: l10nManual.diff

File l10nManual.diff, 41.4 KB (added by sanderd17, 8 years ago)
  • binaries/data/mods/public/gui/common/functions_utility.js

     
    4141    return files;
    4242}
    4343
     44// Run through a "Content" list and parse elements for formatting and translation
     45function parseTextHelper(list)
     46{
     47    let result = "";
     48
     49    for (let object of list)
     50    {
     51        if (object.LangName)
     52            result += "[font=\"sans-bold-stroke-14\"]" + escapeText(object.LangName) + "\n";
     53
     54        if (object.Title)
     55            result += "[font=\"sans-bold-stroke-14\"]" + escapeText(translate(object.Title)) + "\n";
     56
     57        if (object.Subtitle)
     58            result += "[font=\"sans-bold-14\"]" + escapeText(translate(object.Subtitle)) + "\n";
     59
     60        if (object.itemText)
     61            result +=  "[font=\"sans-bold-14\"]" + translate("• ");
     62        if (object.namedItem)
     63            result += "[font=\"sans-14\"]" + sprintf("%(namedItem)s —  ", { "namedItem": escapeText(translate(object.namedItem)) });
     64        if (object.itemText)
     65            result += "[font=\"sans-14\"]" + escapeText(translate(object.itemText)) + "\n";
     66
     67        if (object.hotkey)
     68            result += "[font=\"sans-14\"]" + sprintf("%(hotkey)s: ", { "hotkey": escapeText(translateWithContext("hotkey", object.hotkey)) });
     69
     70        if (object.text)
     71            result += "[font=\"sans-14\"]" +  escapeText(translate(object.text)) + "\n";
     72
     73        if (object.newline)
     74            result += "\n";
     75
     76        if (object.List)
     77        {
     78            for (let element of object.List)
     79            {
     80                if (element.nick && element.name)
     81                    result += "[font=\"sans-14\"]" + escapeText(sprintf(translate("%(nick)s - %(name)s"), { "nick": element.nick, "name": element.name })) + "\n";
     82                else if (element.nick)
     83                    result += "[font=\"sans-14\"]" +  escapeText(element.nick) + "\n";
     84                else if (element.name)
     85                    result += "[font=\"sans-14\"]" +  escapeText(element.name) + "\n";
     86            }
     87            result += "\n";
     88        }
     89
     90        if (object.Content)
     91            result += "\n" + parseTextHelper(object.Content) + "\n";
     92    }
     93
     94    return result;
     95}
     96
    4497// A sorting function for arrays of objects with 'name' properties, ignoring case
    4598function sortNameIgnoreCase(x, y)
    4699{
  • binaries/data/mods/public/gui/credits/credits.js

     
    1515            continue;
    1616        }
    1717        g_ButtonNames[name] = json.Title || name;
    18         g_PanelTexts[name] = parseHelper(json.Content);
     18        g_PanelTexts[name] = parseTextHelper(json.Content);
    1919    }
    2020
    2121    placeButtons();
     
    4545    }
    4646}
    4747
    48 // Run through a "Content" list and parse elements for formatting and translation
    49 function parseHelper(list)
    50 {
    51     let result = "";
    52 
    53     for (let object of list)
    54     {
    55         if (object.LangName)
    56             result += "[font=\"sans-bold-stroke-14\"]" + object.LangName + "\n";
    57 
    58         if (object.Title)
    59             result += "[font=\"sans-bold-stroke-14\"]" + translate(object.Title) + "\n";
    60 
    61         if (object.Subtitle)
    62             result += "[font=\"sans-bold-14\"]" + translate(object.Subtitle) + "\n";
    63 
    64         if (object.List)
    65         {
    66             for (let element of object.List)
    67             {
    68                 if (element.nick && element.name)
    69                     result += "[font=\"sans-14\"]" + sprintf(translate("%(nick)s - %(name)s"), { "nick": element.nick, "name": element.name }) + "\n";
    70                 else if (element.nick)
    71                     result += "[font=\"sans-14\"]" + element.nick + "\n";
    72                 else if (element.name)
    73                     result += "[font=\"sans-14\"]" + element.name + "\n";
    74             }
    75             result += "\n";
    76         }
    77 
    78         if (object.Content)
    79             result += "\n" + parseHelper(object.Content) + "\n";
    80     }
    81 
    82     return result;
    83 }
    84 
    8548function selectPanel(i)
    8649{
    8750    if (g_ActivePanel != -1)
  • binaries/data/mods/public/gui/credits/credits.xml

     
    88
    99<objects>
    1010    <script file="gui/common/functions_global_object.js"/>
     11    <script file="gui/common/functions_utility.js"/>
    1112    <script directory="gui/credits/"/>
    1213
    1314    <!-- Add a translucent black background to fade out the menu page -->
  • binaries/data/mods/public/gui/lobby/Terms_of_Service.json

     
     1{
     2    "Title": "0 A.D. Empires Ascendant Multiplayer Lobby Terms of Service",
     3    "Content": [
     4        { "text": "Definitions:" },
     5        { "itemText": "The \"service\" is the 0 A.D. Empires Ascendant Multiplayer Lobby provided by Wildfire Games (WFG)." },
     6        { "itemText": "\"You\" are the user of the service." },
     7        { "itemText": "\"We\" are the collective of all Wildfire Games (WFG) team members." },
     8        { "itemText": "\"Rating\" refers to the process of analyzing various user statistics for the purpose of generating a single comprehensive score." },
     9        { "itemText": "\"Moderate\" refers to the process of enforcing usage policies." },
     10        { "newline": true },
     11        { "item": "By using the service you agree to:" },
     12        { "item": "1. Follow all usage policies." },
     13        { "item": "2. Allow user identifiable statistics to be gathered for the purposes of rating, user profiles, and community statistics." },
     14        { "item": "We also reserve the right to:" },
     15        { "item": "1. Moderate the service." },
     16        { "item": "2. Appoint others to moderate the service." },
     17        { "item": "3. Discontinue or interrupt service at any time with or without prior announcement." },
     18        { "item": "4. Change the service at any time with or without announcement." },
     19        { "item": "5. Delete any and all service data at any time with or without announcement." },
     20        { "item": "6. Collect any or all user identifiable statistics at any time without consent for:" },
     21        { "item": "a. Private analysis by Wildfire Games (WFG) team members and their affiliates." },
     22        { "item": "b. Anonymized public release by Wildfire Games (WFG) team members." },
     23        { "item": "7. Change this document in any way; at any time; on the condition that the user of the service is given adequate notice of the change (the definition of adequate notice will be determined at the time by a panel of Wildfire Games (WFG) team members)." }
     24    ]
     25}
  • binaries/data/mods/public/gui/lobby/Terms_of_Service.txt

     
    1 0 A.D. Empires Ascendant Multiplayer Lobby Terms of Service
    2 Definitions:
    3  * The "service" is the 0 A.D. Empires Ascendant Multiplayer Lobby provided by Wildfire Games (WFG).
    4  * "You" are the user of the service.
    5  * "We" are the collective of all Wildfire Games (WFG) team members.
    6  * "Rating" refers to the process of analyzing various user statistics for the purpose of generating a single comprehensive score.
    7  * "Moderate" refers to the process of enforcing usage policies.
    8 By using the service you agree to:
    9  1. Follow all usage policies.
    10  2. Allow user identifiable statistics to be gathered for the purposes of rating, user profiles, and community statistics.
    11 We also reserve the right to:
    12  1. Moderate the service.
    13  2. Appoint others to moderate the service.
    14  3. Discontinue or interrupt service at any time with or without prior announcement.
    15  4. Change the service at any time with or without announcement.
    16  5. Delete any and all service data at any time with or without announcement.
    17  6. Collect any or all user identifiable statistics at any time without consent for:
    18   a. Private analysis by Wildfire Games (WFG) team members and their affiliates.
    19   b. Anonymized public release by Wildfire Games (WFG) team members.
    20  7. Change this document in any way; at any time; on the condition that the user of the service is given adequate notice of the change (the definition of adequate notice will be determined at the time by a panel of Wildfire Games (WFG) team members).
  • binaries/data/mods/public/gui/lobby/Terms_of_Use.json

     
     1{
     2    "Title": "0 A.D. Empires Ascendant Multiplayer Lobby Terms of Use",
     3    "Content": [
     4        { "text": "Definitions:" },
     5        { "itemText": "The \"service\" is the 0 A.D. Empires Ascendant Multiplayer Lobby provided by Wildfire Games (WFG)." },
     6        { "itemText": "\"You\" are the user of the service." },
     7        { "itemText": "\"Impersonate\" refers to the action in which you attempt to exploit another's identity for your own purposes." },
     8        { "itemText": "\"Spam\" refers to irrelevant or inappropriate messages sent to a large number of recipients." },
     9        { "itemText": "\"Rating\" refers to the per-user comprehensive score." },
     10        { "itemText": "\"Ranked games\" refers to games in which rating changing statistics are tracked." },
     11        { "text": "You agree to:" },
     12        { "text": "1. Only create one account per unique user on the service unless authorized by a Wildfire Games (WFG) team member." },
     13        { "text": "2. Not post profane statements, rude humor, pornographic content, or discriminatory comments on the service." },
     14        { "text": "3. Not purposefully demean the worth of others using the service." },
     15        { "text": "4. Not use the service to promote specific goods, services, or products." },
     16        { "text": "5. Not impersonate other users of the service." },
     17        { "text": "6. Not spam the service." },
     18        { "text": "7. Not attempt to artificially adjust any user of the service's rating or any of the statistics which impact it. (Examples of this are, but are not limited to: cheating in ranked games, reverse engineering the service, and taking advantage of other users of the service.)" },
     19        { "text": "8. Allow yourself to be removed from the service if at any time a moderator determines your behavior is not consistent with these rules." },
     20        { "text": "We also reserve the right to:" },
     21        { "text": "1. Change this document in any way; at any time; on the condition that the user of the service is given adequate notice of the change (the definition of adequate notice will be determined at the time by a panel of Wildfire Games (WFG) team members)." }
     22    ]
     23}
  • binaries/data/mods/public/gui/lobby/Terms_of_Use.txt

     
    1 0 A.D. Empires Ascendant Multiplayer Lobby Terms of Use
    2 Definitions:
    3  * The "service" is the 0 A.D. Empires Ascendant Multiplayer Lobby provided by Wildfire Games (WFG).
    4  * "You" are the user of the service.
    5  * "Impersonate" refers to the action in which you attempt to exploit another's identity for your own purposes.
    6  * "Spam" refers to irrelevant or inappropriate messages sent to a large number of recipients.
    7  * "Rating" refers to the per-user comprehensive score.
    8  * "Ranked games" refers to games in which rating changing statistics are tracked.
    9 You agree to:
    10  1. Only create one account per unique user on the service unless authorized by a Wildfire Games (WFG) team member.
    11  2. Not post profane statements, rude humor, pornographic content, or discriminatory comments on the service.
    12  3. Not purposefully demean the worth of others using the service.
    13  4. Not use the service to promote specific goods, services, or products.
    14  5. Not impersonate other users of the service.
    15  6. Not spam the service.
    16  7. Not attempt to artificially adjust any user of the service's rating or any of the statistics which impact it. (Examples of this are, but are not limited to: cheating in ranked games, reverse engineering the service, and taking advantage of other users of the service.)
    17  8. Allow yourself to be removed from the service if at any time a moderator determines your behavior is not consistent with these rules.
    18 We also reserve the right to:
    19  1. Change this document in any way; at any time; on the condition that the user of the service is given adequate notice of the change (the definition of adequate notice will be determined at the time by a panel of Wildfire Games (WFG) team members).
  • binaries/data/mods/public/gui/manual/intro.txt

     
    1 [font="sans-bold-18"]0 A.D. in-game manual
    2 [font="sans-14"]
    3 Thank you for installing 0 A.D.! This page will give a brief overview of the features available in this incomplete, under-development, alpha version of the game.
    4 
    5 [font="sans-bold-16"]Graphics settings
    6 [font="sans-14"]You can switch between fullscreen and windowed mode by pressing Alt + Enter. In windowed mode, you can resize the window. If the game runs too slowly, you can change some settings in the configuration file: look for binaries/data/config/default.cfg in the location where the game is installed, which gives instructions for editing, and try disabling the "fancywater" and "shadows" options.
    7 
    8 [font="sans-bold-16"]Playing the game
    9 [font="sans-14"]The controls and gameplay should be familiar to players of traditional RTS games. There are currently a lot of missing features and poorly-balanced stats – you will probably have to wait until a beta release for it to work well.
    10 
    11 Basic controls:
    12 • Left-click to select units.
    13 • Left-click-and-drag to select groups of units.
    14 • Right-click to order units to the target.
    15 • Arrow keys or WASD keys to move the camera.
    16 • Ctrl + arrow keys, or shift + mouse wheel, to rotate the camera.
    17 • Mouse wheel, or "+" and "-" keys, to zoom.
    18 
    19 [font="sans-bold-16"]Modes
    20 [font="sans-14"]The main menu gives access to two game modes:
    21 
    22 • [font="sans-bold-14"]Single-player[font="sans-14"] — play a sandbox game or against one or more AI opponents. The AI/AIs are under development and may not always be up to date on the new features, but you can test playing the game against an actual opponent if you aren't able to play with a human.
    23 
    24 • [font="sans-bold-14"]Multiplayer[font="sans-14"] — play against human opponents over the internet.
    25 
    26 To set up a multiplayer game, one player must select the "Host game" option. The game uses UDP port 20595, so the host must configure their NAT/firewall/etc to allow this. Other players can then select "Join game" and enter the host's IP address.
    27 
    28 [font="sans-bold-16"]Game setup
    29 [font="sans-14"]In a multiplayer game, only the host can alter the game setup options.
    30 
    31 First, select what type of map you want to play:
    32 • [font="sans-bold-14"]Random map[font="sans-14"] — A map created automatically from a script
    33 • [font="sans-bold-14"]Scenario map[font="sans-14"] — A map created by map designers and with fixed civilisations
    34 • [font="sans-bold-14"]Skirmish map[font="sans-14"] — A map created by map designers but where the civilisations can be chosen
    35 
    36 Then the maps can be futher filtered. The default maps are generally playable maps. Naval maps are maps where not all opponents can be reached over land and demo maps are maps used for testing purposes (generally not useful to play on). The "All Maps" filter shows all maps together in one list.
    37 
    38 Finally change the settings. For random maps this includes the number of players, the size of a map, etc. For scenarios you can only select who controls which player (decides where you start on the map etc). The options are either a human player, an AI or no player at all (the opponent will just be idle).
    39 
    40 When you are ready to start, click the "Start game" button.
    41 
    42 [font="sans-bold-16"]Hotkeys:
    43 [font="sans-bold-14"]Global
    44 [font="sans-14"]Alt + F4: Close the game, without confirmation
    45 Alt + Enter: Toggle between fullscreen and windowed
    46 ~ or F9: Show/hide console
    47 Alt + F: Show/hide frame counter (FPS)
    48 F11: Enable/disable real-time profiler (toggles through the displays of information)
    49 Shift + F11: Save current profiler data to "logs/profile.txt"
    50 F2: Take screenshot (in .png format, location is displayed in the top left of the GUI after the file has been saved, and can also be seen in the console/logs if you miss it there)
    51 Shift + F2: Take huge screenshot (6400px*4800px, in .bmp format, location is displayed in the top left of the GUI after the file has been saved, and can also be seen in the console/logs if you miss it there)
    52 
    53 [font="sans-bold-14"]In Game
    54 [font="sans-14"]Double Left Click \[on unit]: Select all of your units of the same kind on the screen (even if they're different ranks)
    55 Triple Left Click \[on unit]: Select all of your units of the same kind and the same rank on the screen
    56 Alt + Double Left Click \[on unit]: Select all your units of the same kind on the entire map (even if they have different ranks)
    57 Alt + Triple Left Click \[on unit]: Select all your units of the same kind and rank on the entire map
    58 Shift + F5: Quicksave
    59 Shift + F8: Quickload
    60 F10: Open/close menu
    61 F12: Show/hide time elapsed counter
    62 ESC: Close all dialogs (chat, menu) or clear selected units
    63 Enter/return: Open/send chat
    64 T: Send team chat
    65 Pause: Pause/resume the game
    66 Delete: Delete currently selected units/buildings
    67 Shift + Delete: Delete currently selected units/buildings without confirmation
    68 ,: Select idle fighters
    69 .: Select idle workers (including citizen soldiers)
    70 H: Stop (halt) the currently selected units.
    71 Ctrl + 1 (and so on up to Ctrl + 0): Create control group 1 (to 0) from the selected units/buildings
    72 1 (and so on up to 0): Select the units/buildings in control group 1 (to 0)
    73 Shift + 1 (to 0): Add control group 1 (to 0) to the selected units/buildings
    74 Ctrl + F5 (and so on up to F8): Mark the current camera position, for jumping back to later.
    75 F5, F6, F7, and F8: Move the camera to a marked position. Jump back to the last location if the camera is already over the marked position.
    76 Z, X, C, V, B, N, M: With training buildings selected. Add the 1st, 2nd, ... unit shown to the training queue for all the selected buildings.
    77 PageUp with units selected: highlights the units/buildings guarded by the selection.
    78 PageDown with units/buildings selected: highlights the units guarding the selection.
    79 Tab: See all status bars (which would also show the building progress)
    80 
    81 [font="sans-bold-14"]Modify mouse action
    82 [font="sans-14"]Ctrl + Right Click on building: Garrison
    83 Shift + Right Click: Queue the move/build/gather/etc order
    84 Shift + Left click when training unit/s: Add units in batches of five
    85 Shift + Left Click or Left Drag over unit on map: Add unit to selection
    86 Ctrl + Left Click or Left Drag over unit on map: Remove unit from selection
    87 Alt + Left Drag over units on map: Only select military units
    88 I + Left Drag over units on map: Only select idle units
    89 Ctrl + Left Click on unit/group icon with multiple units selected: Deselect
    90 Right Click with a building/buildings selected: sets a rally point for units created/ungarrisoned from that building.
    91 Ctrl + Right Click with units selected:
    92     - If the cursor is over an allied structure: Garrison
    93     - If the cursor is over a non-allied unit or building: Attack (instead of capture or gather)
    94     - Otherwise: Attack move (by default all enemy units and structures along the way are targeted, use Ctrl + Q + Right Click to target only units).
    95 
    96 [font="sans-bold-14"]Overlays
    97 [font="sans-14"]Alt + G: Hide/show the GUI
    98 Alt + D: Show/hide developer overlay (with developer options)
    99 Alt + W: Toggle wireframe mode (press once to get wireframes overlaid over the textured models, twice to get just the wireframes colored by the textures, thrice to get back to normal textured mode)
    100 Alt + S: Toggle unit silhouettes (might give a small performance boost)
    101 Alt + Z: Toggle sky
    102 
    103 [font="sans-bold-14"]Camera manipulation
    104 [font="sans-14"]W or \[up]: Pan screen up
    105 S or \[down]: Pan screen down
    106 A or \[left]: Pan screen left
    107 D or \[right]: Pan screen right
    108 Ctrl + W or \[up]: Rotate camera to look upward
    109 Ctrl + S or \[down]: Rotate camera to look downward
    110 Ctrl + A or \[left]: Rotate camera clockwise around terrain
    111 Ctrl + D or \[right]: Rotate camera anticlockwise around terrain
    112 Q: Rotate camera clockwise around terrain
    113 E: Rotate camera anticlockwise around terrain
    114 Shift + Mouse Wheel Rotate Up: Rotate camera clockwise around terrain
    115 Shift + Mouse Wheel Rotate Down: Rotate camera anticlockwise around terrain
    116 F: Follow the selected unit (move the camera to stop the camera from following the unit/s)
    117 R: Reset camera zoom/orientation
    118 +: Zoom in (keep pressed for continuous zoom)
    119 -: Zoom out (keep pressed for continuous zoom)
    120 Alt + W: Toggle through wireframe modes
    121 Middle Mouse Button or / (Forward Slash): Keep pressed and move the mouse to pan
    122 
    123 [font="sans-bold-14"]During Building Placement
    124 [font="sans-14"]\[: Rotate building 15 degrees counter-clockwise
    125 ]: Rotate building 15 degrees clockwise
    126 Left Drag: Rotate building using mouse (foundation will be placed on mouse release)
    127 
    128 [font="sans-bold-14"]When loading a saved game
    129 [font="sans-14"]Delete: delete the selected saved game asking confirmation
    130 Shift: do not ask confirmation when deleting a saved game
  • binaries/data/mods/public/gui/manual/manual.js

    Property changes on: binaries/data/mods/public/gui/manual/intro.txt
    ___________________________________________________________________
    Deleted: svn:eol-style
    ## -1 +0,0 ##
    -native
    \ No newline at end of property
     
    22
    33function init(data)
    44{
    5     Engine.GetGUIObjectByName("mainText").caption = Engine.TranslateLines(Engine.ReadFile("gui/" + data.page + ".txt"));
     5    let json = Engine.ReadJSONFile("gui/" + data.page + ".json");
     6    if (!json || !json.Content)
     7    {
     8        error("Could not load page" + data.page + "!");
     9        return;
     10    }
     11    let text = ""
     12    if (json.Title)
     13        text += "[font=\"sans-bold-18\"]" + escapeText(translate(json.Title)) + "\n";
     14
     15    text += parseTextHelper(json.Content);
     16
     17    Engine.GetGUIObjectByName("mainText").caption = text;
     18
    619    if (data.callback)
    720        hasCallback = true;
    821    if (data.title)
  • binaries/data/mods/public/gui/manual/manual.json

     
     1{
     2    "Title": "0 A.D. in-game manual",
     3    "Content": [
     4        { "newline": true },
     5        { "text": "Thank you for installing 0 A.D.! This page will give a brief overview of the features available in this incomplete, under-development, alpha version of the game." },
     6        { "newline": true },
     7        {
     8            "Title": "Graphics settings",
     9            "Content": [
     10                { "text": "You can switch between fullscreen and windowed mode by pressing Alt + Enter. In windowed mode, you can resize the window. If the game runs too slowly, you can change some settings in the configuration file: look for binaries/data/config/default.cfg in the location where the game is installed, which gives instructions for editing, and try disabling the \"fancywater\" and \"shadows\" options." }
     11            ]
     12        },
     13        {
     14            "Title": "Playing the game",
     15            "Content": [
     16                { "text": "The controls and gameplay should be familiar to players of traditional RTS games. There are currently a lot of missing features and poorly-balanced stats – you will probably have to wait until a beta release for it to work well." },
     17                "p",
     18                { "newline": true },
     19                { "text": "Basic controls:" },
     20                { "itemText": "Left-click to select units." },
     21                { "itemText": "Left-click-and-drag to select groups of units." },
     22                { "itemText": "Right-click to order units to the target." },
     23                { "itemText": "Arrow keys or WASD keys to move the camera." },
     24                { "itemText": "Ctrl + arrow keys, or shift + mouse wheel, to rotate the camera." },
     25                { "itemText": "Mouse wheel, or \"+\" and \"-\" keys, to zoom." }
     26            ]
     27        },
     28        {
     29            "Title": "Modes",
     30            "Content": [
     31                { "text": "The main menu gives access to two game modes:" },
     32                {
     33                    "namedItem": "Single-player",
     34                    "itemText": "play a sandbox game or against one or more AI opponents. The AI/AIs are under development and may not always be up to date on the new features, but you can test playing the game against an actual opponent if you aren't able to play with a human."
     35                },
     36                {
     37                    "namedItem": "Multiplayer",
     38                    "itemText": "play against human opponents over the internet."
     39                },
     40                { "newline": true },
     41                { "text": "To set up a multiplayer game, one player must select the \"Host game\" option. The game uses UDP port 20595, so the host must configure their NAT/firewall/etc to allow this. Other players can then select \"Join game\" and enter the host's IP address." }
     42            ]
     43        },
     44        {
     45            "Title": "Game setup",
     46            "Content": [
     47                { "text": "In a multiplayer game, only the host can alter the game setup options." },
     48                { "newline": true },
     49                { "text": "First, select what type of map you want to play:" },
     50                {
     51                    "namedItem": "Random",
     52                    "itemText": "A map created automatically from a script"
     53                },
     54                {
     55                    "namedItem": "Scenario map",
     56                    "itemText": "A map created by map designers and with fixed civilisations"
     57                },
     58                {
     59                    "namedItem": "Skirmish map",
     60                    "itemText": "A map created by map designers but where the civilisations can be chosen"
     61                },
     62                { "newline": true },
     63                { "text": "Then the maps can be futher filtered. The default maps are generally playable maps. Naval maps are maps where not all opponents can be reached over land and demo maps are maps used for testing purposes (generally not useful to play on). The \"All Maps\" filter shows all maps together in one list." },
     64                { "text": "Finally change the settings. For random maps this includes the number of players, the size of a map, etc. For scenarios you can only select who controls which player (decides where you start on the map etc). The options are either a human player, an AI or no player at all (the opponent will just be idle)." },
     65                { "text": "When you are ready to start, click the \"Start game\" button."}
     66            ]
     67        },
     68        {
     69            "Title": "Hotkeys",
     70            "Content": [
     71                {
     72                    "Subtitle": "Global",
     73                    "Content": [
     74                        { "hotkey": "Alt + F4", "text": "Close the game, without confirmation" },
     75                        { "hotkey": "Alt + Enter", "text": "Toggle between fullscreen and windowed" },
     76                        { "hotkey": "~ or F9", "text": "Show/hide console" },
     77                        { "hotkey": "Alt + F", "text": "Show/hide frame counter (FPS)" },
     78                        { "hotkey": "F11", "text": "Enable/disable real-time profiler (toggles through the displays of information)" },
     79                        { "hotkey": "Shift + F11", "text": "Save current profiler data to \"logs/profile.txt\"" },
     80                        { "hotkey": "F2", "text": "Take screenshot (in .png format, location is displayed in the top left of the GUI after the file has been saved, and can also be seen in the console/logs if you miss it there)" },
     81                        { "hotkey": "Shift + F2", "text": "Take huge screenshot (6400px*4800px, in .bmp format, location is displayed in the top left of the GUI after the file has been saved, and can also be seen in the console/logs if you miss it there)" }
     82                    ]
     83                },
     84                {
     85                    "Subtitle": "In Game",
     86                    "Content": [
     87                        { "hotkey": "Double Left Click [on unit]", "text": "Select all of your units of the same kind on the screen (even if they're different ranks)" },
     88                        { "hotkey": "Triple Left Click [on unit]", "text": "Select all of your units of the same kind and the same rank on the screen" },
     89                        { "hotkey": "Alt + Double Left Click [on unit]", "text": "Select all your units of the same kind on the entire map (even if they have different ranks)" },
     90                        { "hotkey": "Alt + Triple Left Click [on unit]", "text": "Select all your units of the same kind and rank on the entire map" },
     91                        { "hotkey": "Shift + F5", "text": "Quicksave" },
     92                        { "hotkey": "Shift + F8", "text": "Quickload" },
     93                        { "hotkey": "F10", "text": "Open/close menu" },
     94                        { "hotkey": "F12", "text": "Show/hide time elapsed counter" },
     95                        { "hotkey": "ESC", "text": "Close all dialogs (chat, menu) or clear selected units" },
     96                        { "hotkey": "Enter/return", "text": "Open/send chat" },
     97                        { "hotkey": "T", "text": "Send team chat" },
     98                        { "hotkey": "Pause", "text": "Pause/resume the game" },
     99                        { "hotkey": "Delete", "text": "Delete currently selected units/buildings" },
     100                        { "hotkey": "Shift + Delete", "text": "Delete currently selected units/buildings without confirmation" },
     101                        { "hotkey": ",", "text": "Select idle fighters" },
     102                        { "hotkey": ".", "text": "Select idle workers (including citizen soldiers)" },
     103                        { "hotkey": "H", "text": "Stop (halt) the currently selected units." },
     104                        { "hotkey": "Ctrl + 1 (and so on up to Ctrl + 0)", "text": "Create control group 1 (to 0) from the selected units/buildings" },
     105                        { "hotkey": "1 (and so on up to 0)", "text": "Select the units/buildings in control group 1 (to 0)" },
     106                        { "hotkey": "Shift + 1 (to 0)", "text": "Add control group 1 (to 0) to the selected units/buildings" },
     107                        { "hotkey": "Ctrl + F5 (and so on up to F8)", "text": "Mark the current camera position, for jumping back to later." },
     108                        { "hotkey": "F5, F6, F7, and F8", "text": "Move the camera to a marked position. Jump back to the last location if the camera is already over the marked position." },
     109                        { "hotkey": "Z, X, C, V, B, N, M", "text": "With training buildings selected. Add the 1st, 2nd, ... unit shown to the training queue for all the selected buildings." },
     110                        { "hotkey": "PageUp with units selected", "text": "highlights the units/buildings guarded by the selection." },
     111                        { "hotkey": "PageDown with units/buildings selected", "text": "highlights the units guarding the selection." },
     112                        { "hotkey": "Tab", "text": "See all status bars (which would also show the building progress)" }
     113                    ]
     114                },
     115                {
     116                    "Subtitle": "Modify mouse action",
     117                    "Content": [
     118                        { "hotkey": "Ctrl + Right Click on building", "text": "Garrison" },
     119                        { "hotkey": "Shift + Right Click", "text": "Queue the move/build/gather/etc order" },
     120                        { "hotkey": "Shift + Left click when training unit/s", "text": "Add units in batches of five" },
     121                        { "hotkey": "Shift + Left Click or Left Drag over unit on map", "text": "Add unit to selection" },
     122                        { "hotkey": "Ctrl + Left Click or Left Drag over unit on map", "text": "Remove unit from selection" },
     123                        { "hotkey": "Alt + Left Drag over units on map", "text": "Only select military units" },
     124                        { "hotkey": "I + Left Drag over units on map", "text": "Only select idle units" },
     125                        { "hotkey": "Ctrl + Left Click on unit/group icon with multiple units selected", "text": "Deselect" },
     126                        { "hotkey": "Right Click with a building/buildings selected", "text": "sets a rally point for units created/ungarrisoned from that building." },
     127                        {
     128                            "hotkey": "Ctrl + Right Click with units selected",
     129                            "Content": [
     130                                { "text": "- If the cursor is over an allied structure: Garrison" },
     131                                { "text": "- If the cursor is over a non-allied unit or building: Attack (instead of capture or gather)" },
     132                                { "text": "- Otherwise: Attack move (by default all enemy units and structures along the way are targeted, use Ctrl + Q + Right Click to target only units)." }
     133                            ]
     134                        }
     135                    ]
     136                },
     137                {
     138                    "Subtitle": "Overlays",
     139                    "Content": [
     140                        { "hotkey": "Alt + G", "text": "Hide/show the GUI" },
     141                        { "hotkey": "Alt + D", "text": "Show/hide developer overlay (with developer options)" },
     142                        { "hotkey": "Alt + W", "text": "Toggle wireframe mode (press once to get wireframes overlaid over the textured models, twice to get just the wireframes colored by the textures, thrice to get back to normal textured mode)" },
     143                        { "hotkey": "Alt + S", "text": "Toggle unit silhouettes (might give a small performance boost)" },
     144                        { "hotkey": "Alt + Z", "text": "Toggle sky" }
     145                    ]
     146                },
     147                {
     148                    "Subtitle": "Camera manipulation",
     149                    "Content": [
     150                        { "hotkey": "W or [up]", "text": "Pan screen up" },
     151                        { "hotkey": "S or [down]", "text": "Pan screen down" },
     152                        { "hotkey": "A or [left]", "text": "Pan screen left" },
     153                        { "hotkey": "D or [right]", "text": "Pan screen right" },
     154                        { "hotkey": "Ctrl + W or [up]", "text": "Rotate camera to look upward" },
     155                        { "hotkey": "Ctrl + S or [down]", "text": "Rotate camera to look downward" },
     156                        { "hotkey": "Ctrl + A or [left]", "text": "Rotate camera clockwise around terrain" },
     157                        { "hotkey": "Ctrl + D or [right]", "text": "Rotate camera anticlockwise around terrain" },
     158                        { "hotkey": "Q", "text": "Rotate camera clockwise around terrain" },
     159                        { "hotkey": "E", "text": "Rotate camera anticlockwise around terrain" },
     160                        { "hotkey": "Shift + Mouse Wheel Rotate Up", "text": "Rotate camera clockwise around terrain" },
     161                        { "hotkey": "Shift + Mouse Wheel Rotate Down", "text": "Rotate camera anticlockwise around terrain" },
     162                        { "hotkey": "F", "text": "Follow the selected unit (move the camera to stop the camera from following the unit/s)" },
     163                        { "hotkey": "R", "text": "Reset camera zoom/orientation" },
     164                        { "hotkey": "+", "text": "Zoom in (keep pressed for continuous zoom)" },
     165                        { "hotkey": "-", "text": "Zoom out (keep pressed for continuous zoom)" },
     166                        { "hotkey": "Alt + W", "text": "Toggle through wireframe modes" },
     167                        { "hotkey": "Middle Mouse Button or / (Forward Slash)", "text": "Keep pressed and move the mouse to pan" }
     168                    ]
     169                },
     170                {
     171                    "Subtitle": "During Building Placement",
     172                    "Content": [
     173                        { "hotkey": "[", "text": "Rotate building 15 degrees counter-clockwise" },
     174                        { "hotkey": "]", "text": "Rotate building 15 degrees clockwise" },
     175                        { "hotkey": "Left Drag", "text": "Rotate building using mouse (foundation will be placed on mouse release)"}
     176                    ]
     177                },
     178                {
     179                    "Subtitle": "When loading a saved game",
     180                    "Content": [
     181                        { "hotkey": "Delete", "text": "delete the selected saved game asking confirmation" },
     182                        { "hotkey": "Shift", "text": "do not ask confirmation when deleting a saved game" }
     183                    ]
     184                }
     185            ]
     186        }
     187    ]
     188}
     189
     190
     191
     192
     193
     194
  • binaries/data/mods/public/gui/manual/manual.xml

     
    22
    33<objects>
    44    <script file="gui/common/functions_global_object.js"/>
     5    <script file="gui/common/functions_utility.js"/>
    56    <script file="gui/manual/manual.js"/>
    67
    78    <!-- Add a translucent black background to fade out the menu page -->
  • binaries/data/mods/public/gui/manual/userreport.json

     
     1{
     2    "Content": [
     3        { "text": "As a free, open source game, we don't have the resources to test on a wide range of systems, but we want to provide the best quality experience to as many players as possible. When you enable automatic feedback, we'll receive data to help us understand the hardware we should focus on supporting, and to identify performance problems we should fix." },
     4        { "newline": true },
     5        { "text": "The following data will be sent to our server:" },
     6        { "itemText": "A random user ID (stored in %APPDATA%\0ad\config\user.cfg on Windows, ~/.config/0ad/config/user.cfg on Unix), to let us detect repeated reports from the same user." },
     7        { "itemText": "Game version number and basic build settings (optimisation mode, CPU architecture, timestamp, compiler version)." },
     8        { "itemText": "Hardware details: OS version, graphics driver version, OpenGL capabilities, screen size, CPU details, RAM size." },
     9        { "itemText": "Performance details: a snapshot of timing data a few seconds after you start a match or change graphics settings." },
     10        { "newline": true },
     11        { "text": "The data will only be a few kilobytes each time you run the game, so bandwidth usage is minimal." },
     12        { "newline": true },
     13        { "text": "We will store the submitted data on our server, and may publish statistics or non-user-identifiable details to help other game developers with similar questions. We will store the IP address that submitted the data, to help detect abuse of the service, but will not publish it. The published data can be seen at http://feedback.wildfiregames.com/" }
     14    ]
     15}
  • binaries/data/mods/public/gui/manual/userreport.txt

     
    1 As a free, open source game, we don't have the resources to test on a wide range of systems, but we want to provide the best quality experience to as many players as possible. When you enable automatic feedback, we'll receive data to help us understand the hardware we should focus on supporting, and to identify performance problems we should fix.
    2 
    3 The following data will be sent to our server:
    4 
    5 • A random user ID (stored in %APPDATA%\0ad\config\user.cfg on Windows, ~/.config/0ad/config/user.cfg on Unix), to let us detect repeated reports from the same user.
    6 • Game version number and basic build settings (optimisation mode, CPU architecture, timestamp, compiler version).
    7 • Hardware details: OS version, graphics driver version, OpenGL capabilities, screen size, CPU details, RAM size.
    8 • Performance details: a snapshot of timing data a few seconds after you start a match or change graphics settings.
    9 
    10 The data will only be a few kilobytes each time you run the game, so bandwidth usage is minimal.
    11 
    12 We will store the submitted data on our server, and may publish statistics or non-user-identifiable details to help other game developers with similar questions. We will store the IP address that submitted the data, to help detect abuse of the service, but will not publish it. The published data can be seen at http://feedback.wildfiregames.com/
  • binaries/data/mods/public/gui/pregame/mainmenu.xml

    Property changes on: binaries/data/mods/public/gui/manual/userreport.txt
    ___________________________________________________________________
    Deleted: svn:eol-style
    ## -1 +0,0 ##
    -native
    \ No newline at end of property
     
    151151                    <action on="Press">
    152152                        closeMenu();
    153153                        <![CDATA[
    154                             Engine.PushGuiPage("page_manual.xml", {"page":"manual/intro", "title":getManual(), "url":"http://trac.wildfiregames.com/wiki/0adManual"});
     154                            Engine.PushGuiPage("page_manual.xml", {"page":"manual/manual", "title":getManual(), "url":"http://trac.wildfiregames.com/wiki/0adManual"});
    155155                        ]]>
    156156                    </action>
    157157                </object>
  • binaries/data/mods/public/gui/session/menu.js

     
    748748    pauseGame();
    749749
    750750    Engine.PushGuiPage("page_manual.xml", {
    751         "page": "manual/intro",
     751        "page": "manual/manual",
    752752        "title": translate("Manual"),
    753753        "url": "http://trac.wildfiregames.com/wiki/0adManual",
    754754        "callback": "resumeGame"
  • binaries/data/mods/public/l10n/messages.json

     
    161161                    }
    162162                }
    163163            },
    164             {
    165                 "extractor": "txt",
     164            {
     165                "extractor": "json",
    166166                "filemasks": [
    167                     "gui/lobby/Terms_of_Service.txt",
    168                     "gui/lobby/Terms_of_Use.txt"
     167                    "gui/lobby/**.json"
    169168                ],
    170169                "options": {
     170                    "keywords": [
     171                        "Title",
     172                        "Subtitle",
     173                        "text",
     174                        "itemText",
     175                        "namedItem",
     176                        "hotkey": {
     177                            "tagAsContext": true
     178                        }
     179                    ]
    171180                }
    172181            }
    173182        ]
     
    213222                    }
    214223                }
    215224            },
    216             {
    217                 "extractor": "txt",
     225            {
     226                "extractor": "json",
    218227                "filemasks": [
    219                     "gui/manual/intro.txt",
    220                     "gui/manual/userreport.txt"
     228                    "gui/manual/**.json"
    221229                ],
    222230                "options": {
     231                    "keywords": [
     232                        "Title",
     233                        "Subtitle",
     234                        "text",
     235                        "itemText",
     236                        "namedItem",
     237                        "hotkey": {
     238                            "tagAsContext": true
     239                        }
     240                    ]
    223241                }
    224242            }
    225243        ]