Ticket #2622: gui_moddability.diff

File gui_moddability.diff, 13.2 KB (added by sanderd17, 10 years ago)
  • binaries/data/mods/public/gui/session/diplomacy_window.xml

     
     1<?xml version="1.0" encoding="utf-8"?>
     2
     3<objects>
     4    <object type="text" style="TitleText" size="50%-96 -16 50%+96 16">
     5        <translatableAttribute id="caption">Diplomacy</translatableAttribute>
     6    </object>
     7
     8    <object name="diplomacyHeader" size="32 32 100%-32 64">
     9        <object name="diplomacyHeaderName" size="0 0 150 100%" type="text" style="chatPanel" ghost="true">
     10            <translatableAttribute id="caption">Name</translatableAttribute>
     11        </object>
     12        <object name="diplomacyHeaderCiv" size="150 0 250 100%" type="text" style="chatPanel" ghost="true">
     13            <translatableAttribute id="caption">Civilization</translatableAttribute>
     14        </object>
     15        <object name="diplomacyHeaderTeam" size="250 0 300 100%" type="text" style="chatPanel" ghost="true">
     16            <translatableAttribute id="caption">Team</translatableAttribute>
     17        </object>
     18        <object name="diplomacyHeaderTheirs" size="300 0 360 100%" type="text" style="chatPanel" ghost="true">
     19            <translatableAttribute id="caption">Theirs</translatableAttribute>
     20        </object>
     21        <object name="diplomacyHeaderAlly" size="100%-180 0 100%-160 100%" type="text" style="chatPanel" tooltip_style="sessionToolTipBold">
     22            <translatableAttribute id="caption">A</translatableAttribute>
     23            <translatableAttribute id="tooltip">Ally</translatableAttribute>
     24        </object>
     25        <object name="diplomacyHeaderNeutral" size="100%-160 0 100%-140 100%" type="text" style="chatPanel" tooltip_style="sessionToolTipBold">
     26            <translatableAttribute id="caption">N</translatableAttribute>
     27            <translatableAttribute id="tooltip">Neutral</translatableAttribute>
     28        </object>
     29        <object name="diplomacyHeaderEnemy" size="100%-140 0 100%-120 100%" type="text" style="chatPanel" tooltip_style="sessionToolTipBold">
     30            <translatableAttribute id="caption">E</translatableAttribute>
     31            <translatableAttribute id="tooltip">Enemy</translatableAttribute>
     32        </object>
     33        <object name="diplomacyHeaderTribute" size="100%-110 0 100% 100%" type="text" style="chatPanel">
     34            <translatableAttribute id="caption">Tribute</translatableAttribute>
     35        </object>
     36    </object>
     37    <object size="32 64 100%-32 384">
     38        <repeat count="16">
     39            <object name="diplomacyPlayer[n]" size="0 0 100% 20" type="image" hidden="false">
     40                <object name="diplomacyPlayerName[n]" size="0 0 150 100%" type="text" style="chatPanel" ghost="true"/>
     41                <object name="diplomacyPlayerCiv[n]" size="150 0 250 100%" type="text" style="chatPanel" ghost="true"/>
     42                <object name="diplomacyPlayerTeam[n]" size="250 0 300 100%" type="text" style="chatPanel" ghost="true"/>
     43                <object name="diplomacyPlayerTheirs[n]" size="300 0 360 100%" type="text" style="chatPanel" ghost="true"/>
     44
     45                <!-- Diplomatic stance - selection -->
     46                <object name="diplomacyPlayerAlly[n]" size="100%-180 0 100%-160 100%" type="button" style="StoneButton" hidden="true"/>
     47                <object name="diplomacyPlayerNeutral[n]" size="100%-160 0 100%-140 100%" type="button" style="StoneButton" hidden="true"/>
     48                <object name="diplomacyPlayerEnemy[n]" size="100%-140 0 100%-120 100%" type="button" style="StoneButton" hidden="true"/>
     49
     50                <!-- Tribute -->
     51                <object name="diplomacyPlayerTributeFood[n]" size="100%-110 0 100%-90 100%" type="button" style="iconButton" tooltip_style="sessionToolTipBold" hidden="true">
     52                    <object name="diplomacyPlayerTributeFoodImage[n]" type="image" size="0 0 100% 100%" sprite="stretched:session/icons/resources/food.png" ghost="true"/>
     53                </object>
     54                <object name="diplomacyPlayerTributeWood[n]" size="100%-90 0 100%-70 100%" type="button" style="iconButton" tooltip_style="sessionToolTipBold" hidden="true">
     55                    <object name="diplomacyPlayerTributeWoodImage[n]" type="image" size="0 0 100% 100%" sprite="stretched:session/icons/resources/wood.png" ghost="true"/>
     56                </object>
     57                <object name="diplomacyPlayerTributeStone[n]" size="100%-70 0 100%-50 100%" type="button" style="iconButton" tooltip_style="sessionToolTipBold" hidden="true">
     58                    <object name="diplomacyPlayerTributeStoneImage[n]" type="image" size="0 0 100% 100%" sprite="stretched:session/icons/resources/stone.png" ghost="true"/>
     59                </object>
     60                <object name="diplomacyPlayerTributeMetal[n]" size="100%-50 0 100%-30 100%" type="button" style="iconButton" tooltip_style="sessionToolTipBold" hidden="true">
     61                    <object name="diplomacyPlayerTributeMetalImage[n]" type="image" size="0 0 100% 100%" sprite="stretched:session/icons/resources/metal.png" ghost="true"/>
     62                </object>
     63            </object>
     64        </repeat>
     65    </object>
     66
     67    <object size="50%-64 100%-50 50%+64 100%-22" type="button" style="StoneButton">
     68        <translatableAttribute id="caption">Close</translatableAttribute>
     69        <action on="Press">closeDiplomacy();</action>
     70    </object>
     71</objects>
  • binaries/data/mods/public/gui/session/session.xml

    Property changes on: binaries/data/mods/public/gui/session/diplomacy_window.xml
    ___________________________________________________________________
    Added: svn:mime-type
    ## -0,0 +1 ##
    +text/xml
    \ No newline at end of property
     
    88<script file="gui/common/music.js"/>
    99<script file="gui/common/timer.js"/>
    1010<script file="gui/common/colorFades.js"/>
    11 <script file="gui/session/session.js"/>
    12 <script file="gui/session/selection.js"/>
    1311<script file="gui/session/placement.js"/>
    14 <script file="gui/session/input.js"/>
    15 <script file="gui/session/menu.js"/>
    16 <script file="gui/session/selection_details.js"/>
    17 <script file="gui/session/unit_commands.js"/>
    18 <script file="gui/session/messages.js"/>
    19 <script file="gui/session/utility_functions.js"/>
     12<script directory="gui/session/"/>
    2013
    2114<object name="sn" hotkey="session.gui.toggle">
    2215    <action on="Tick">
     
    417410        type="image"
    418411        hidden="true"
    419412        sprite="ModernDialog"
    420     >
    421         <object type="text" style="TitleText" size="50%-96 -16 50%+96 16">
    422             <translatableAttribute id="caption">Diplomacy</translatableAttribute>
    423         </object>
     413        include="gui/session/diplomacy_window.xml"
     414    />
    424415
    425         <object name="diplomacyHeader" size="32 32 100%-32 64">
    426             <object name="diplomacyHeaderName" size="0 0 150 100%" type="text" style="chatPanel" ghost="true">
    427                 <translatableAttribute id="caption">Name</translatableAttribute>
    428             </object>
    429             <object name="diplomacyHeaderCiv" size="150 0 250 100%" type="text" style="chatPanel" ghost="true">
    430                 <translatableAttribute id="caption">Civilization</translatableAttribute>
    431             </object>
    432             <object name="diplomacyHeaderTeam" size="250 0 300 100%" type="text" style="chatPanel" ghost="true">
    433                 <translatableAttribute id="caption">Team</translatableAttribute>
    434             </object>
    435             <object name="diplomacyHeaderTheirs" size="300 0 360 100%" type="text" style="chatPanel" ghost="true">
    436                 <translatableAttribute id="caption">Theirs</translatableAttribute>
    437             </object>
    438             <object name="diplomacyHeaderAlly" size="100%-180 0 100%-160 100%" type="text" style="chatPanel" tooltip_style="sessionToolTipBold">
    439                 <translatableAttribute id="caption">A</translatableAttribute>
    440                 <translatableAttribute id="tooltip">Ally</translatableAttribute>
    441             </object>
    442             <object name="diplomacyHeaderNeutral" size="100%-160 0 100%-140 100%" type="text" style="chatPanel" tooltip_style="sessionToolTipBold">
    443                 <translatableAttribute id="caption">N</translatableAttribute>
    444                 <translatableAttribute id="tooltip">Neutral</translatableAttribute>
    445             </object>
    446             <object name="diplomacyHeaderEnemy" size="100%-140 0 100%-120 100%" type="text" style="chatPanel" tooltip_style="sessionToolTipBold">
    447                 <translatableAttribute id="caption">E</translatableAttribute>
    448                 <translatableAttribute id="tooltip">Enemy</translatableAttribute>
    449             </object>
    450             <object name="diplomacyHeaderTribute" size="100%-110 0 100% 100%" type="text" style="chatPanel">
    451                 <translatableAttribute id="caption">Tribute</translatableAttribute>
    452             </object>
    453         </object>
    454 
    455         <object size="32 64 100%-32 384">
    456             <repeat count="16">
    457                 <object name="diplomacyPlayer[n]" size="0 0 100% 20" type="image" hidden="false">
    458                     <object name="diplomacyPlayerName[n]" size="0 0 150 100%" type="text" style="chatPanel" ghost="true"/>
    459                     <object name="diplomacyPlayerCiv[n]" size="150 0 250 100%" type="text" style="chatPanel" ghost="true"/>
    460                     <object name="diplomacyPlayerTeam[n]" size="250 0 300 100%" type="text" style="chatPanel" ghost="true"/>
    461                     <object name="diplomacyPlayerTheirs[n]" size="300 0 360 100%" type="text" style="chatPanel" ghost="true"/>
    462 
    463                     <!-- Diplomatic stance - selection -->
    464                     <object name="diplomacyPlayerAlly[n]" size="100%-180 0 100%-160 100%" type="button" style="StoneButton" hidden="true"/>
    465                     <object name="diplomacyPlayerNeutral[n]" size="100%-160 0 100%-140 100%" type="button" style="StoneButton" hidden="true"/>
    466                     <object name="diplomacyPlayerEnemy[n]" size="100%-140 0 100%-120 100%" type="button" style="StoneButton" hidden="true"/>
    467 
    468                     <!-- Tribute -->
    469                     <object name="diplomacyPlayerTributeFood[n]" size="100%-110 0 100%-90 100%" type="button" style="iconButton" tooltip_style="sessionToolTipBold" hidden="true">
    470                         <object name="diplomacyPlayerTributeFoodImage[n]" type="image" size="0 0 100% 100%" sprite="stretched:session/icons/resources/food.png" ghost="true"/>
    471                     </object>
    472                     <object name="diplomacyPlayerTributeWood[n]" size="100%-90 0 100%-70 100%" type="button" style="iconButton" tooltip_style="sessionToolTipBold" hidden="true">
    473                         <object name="diplomacyPlayerTributeWoodImage[n]" type="image" size="0 0 100% 100%" sprite="stretched:session/icons/resources/wood.png" ghost="true"/>
    474                     </object>
    475                     <object name="diplomacyPlayerTributeStone[n]" size="100%-70 0 100%-50 100%" type="button" style="iconButton" tooltip_style="sessionToolTipBold" hidden="true">
    476                         <object name="diplomacyPlayerTributeStoneImage[n]" type="image" size="0 0 100% 100%" sprite="stretched:session/icons/resources/stone.png" ghost="true"/>
    477                     </object>
    478                     <object name="diplomacyPlayerTributeMetal[n]" size="100%-50 0 100%-30 100%" type="button" style="iconButton" tooltip_style="sessionToolTipBold" hidden="true">
    479                         <object name="diplomacyPlayerTributeMetalImage[n]" type="image" size="0 0 100% 100%" sprite="stretched:session/icons/resources/metal.png" ghost="true"/>
    480                     </object>
    481                 </object>
    482             </repeat>
    483         </object>
    484 
    485         <object size="50%-64 100%-50 50%+64 100%-22" type="button" style="StoneButton">
    486             <translatableAttribute id="caption">Close</translatableAttribute>
    487             <action on="Press">closeDiplomacy();</action>
    488         </object>
    489     </object>
    490 
    491416    <!-- ================================  ================================ -->
    492417    <!-- Trade Window -->
    493418    <!-- ================================  ================================ -->
  • source/gui/CGUI.cpp

     
    11101110    ATTR(file);
    11111111    ATTR(id);
    11121112    ATTR(context);
     1113    ATTR(include);
    11131114
    11141115    //
    11151116    //  Read Style and set defaults
     
    11401141
    11411142    bool NameSet = false;
    11421143    bool ManuallySetZ = false; // if z has been manually set, this turn true
     1144    bool ExternalChildren = false;
    11431145
     1146    CStrW inclusionPath;
    11441147    CStr hotkeyTag;
    11451148
    11461149    // Now we can iterate all attributes and store
     
    11701173            continue;
    11711174        }
    11721175
     1176        if (attr.Name == attr_include)
     1177        {
     1178            ExternalChildren = true;
     1179            inclusionPath = attr.Value.FromUTF8();
     1180            continue;
     1181        }
     1182
    11731183        // Wire up the hotkey tag, if it has one
    11741184        if (attr.Name == attr_hotkey)
    11751185            hotkeyTag = attr.Value;
     
    12111221    //  Read Children
    12121222    //
    12131223
    1214     // Iterate children
    12151224    XMBElementList children = Element.GetChildNodes();
     1225    CXeromyces XeroChildren;
     1226    if (ExternalChildren)
     1227    {
     1228        Paths.insert(inclusionPath);
    12161229
     1230        if (XeroChildren.Load(g_VFS, inclusionPath) == PSRETURN_OK)
     1231        {
     1232            XMBElement node = XeroChildren.GetRoot();
     1233
     1234            CStr root_name (XeroChildren.GetElementString(node.GetNodeName()));
     1235
     1236            if (root_name == "objects")
     1237                children = node.GetChildNodes();
     1238            else
     1239                LOGERROR(L"GUI: Error reading included XML: %ls, root element must have the name 'objects'.", inclusionPath.c_str());
     1240        }
     1241        else
     1242            LOGERROR(L"GUI: Error reading included XML: %ls", inclusionPath.c_str());
     1243
     1244        // set pFile to the new CXeromyces file, as it's only used to handle the children from now on
     1245        pFile = &XeroChildren;
     1246    }
     1247
     1248    // Iterate children
    12171249    for (i=0; i<children.Count; ++i)
    12181250    {
    12191251        // Get node
     
    14331465        }
    14341466    }
    14351467
     1468    CStrW directory (Element.GetAttributes().GetNamedItem( pFile->GetAttributeID("directory") ).FromUTF8());
     1469    if (!directory.empty())
     1470    {
     1471        VfsPaths pathnames;
     1472        vfs::GetPathnames(g_VFS, directory, L"*.js", pathnames);
     1473        for (VfsPaths::iterator it = pathnames.begin(); it != pathnames.end(); ++it)
     1474        {
     1475            Paths.insert(*it);
     1476            try
     1477            {
     1478                m_ScriptInterface->LoadGlobalScriptFile(*it);
     1479            }
     1480            catch (PSERROR_Scripting& e)
     1481            {
     1482                LOGERROR(L"GUI: Error executing script %ls: %hs", directory.c_str(), e.what());
     1483            }
     1484        }
     1485    }
     1486
    14361487    // Execute inline scripts
    14371488    try
    14381489    {