Ticket #2373: resignation_v7.patch

File resignation_v7.patch, 7.9 KB (added by Michael, 10 years ago)

Now without timer because fixed problem with messages are not send when game ends.

  • binaries/data/mods/public/gui/common/functions_global_object.js

     
    2222{
    2323    if (btnCode !== undefined && g_messageBoxBtnFunctions[btnCode])
    2424    {
    25         if (g_messageBoxCallbackArgs[btnCode])
    26             g_messageBoxBtnFunctions[btnCode](g_messageBoxCallbackArgs[btnCode]);
     25        // cache the vales to make it possible to call a messageBox from a callback function.
     26        var callbackFunction = g_messageBoxBtnFunctions[btnCode];
     27        var callbackArgs = g_messageBoxCallbackArgs[btnCode]
     28        g_messageBoxBtnFunctions  = [];
     29        g_messageBoxCallbackArgs = [];
     30
     31        if (callbackArgs !== undefined)
     32            callbackFunction(callbackArgs);
    2733        else
    28             g_messageBoxBtnFunctions[btnCode]();
     34            callbackFunction();
     35           
     36        return;
    2937    }
    30 
    3138    g_messageBoxBtnFunctions  = [];
    3239    g_messageBoxCallbackArgs = [];
    3340}
  • binaries/data/mods/public/gui/session/menu.js

     
    148148    pauseGame();
    149149    var btCaptions = ["Yes", "No"];
    150150    var btCode = [leaveGame, resumeGame];
     151    if (g_IsNetworked && !g_GameEnded)
     152        btCode = [g_IsController ? abortNetworkGameQuestion : networkReturnQuestion, resumeGame];
    151153    messageBox(400, 200, "Are you sure you want to quit?", "Confirmation", 0, btCaptions, btCode);
    152154}
    153155
     156function networkReturnQuestion()
     157{
     158    var btCaptions = ["I resign", "I will return"];
     159    var btCode = [leaveGame, leaveGame];
     160    var btArgs = [false, true];
     161    messageBox(400, 200, "You are about to exit the game. Do you want to resign or will you return soon?", "Confirmation", 0, btCaptions, btCode, btArgs);
     162}
    154163
     164function abortNetworkGameQuestion()
     165{
     166    var btCaptions = ["Exit the game", "Resume"];
     167    var btCode = [leaveGame, resumeGame];
     168    messageBox(400, 215, "Because you are the host the game will aborted if you leave.\n\nAre you sure you want to do that?", "Confirmation", 0, btCaptions, btCode);
     169}
     170
    155171function openDeleteDialog(selection)
    156172{
    157173    closeMenu();
  • binaries/data/mods/public/gui/session/session.js

     
    234234    Engine.SubmitUserReport("profile", 3, JSON.stringify(data));
    235235}
    236236
    237 function resignGame()
     237/**
     238 * let's a player resign
     239 * leaveGameAfterResign: if true, game is quit, after resign
     240 */
     241function resignGame(leaveGameAfterResign)
    238242{
    239243    var simState = GetSimState();
    240244
     
    249253    });
    250254
    251255    global.music.setState(global.music.states.DEFEAT);
    252     resumeGame();
     256   
     257    // resume to the game, if the resign button was used
     258    if (!leaveGameAfterResign)
     259        resumeGame();
    253260}
    254261
    255 function leaveGame()
     262/**
     263 * leaves the game
     264 * willRejoin: can be set to true, in case of network game, if the player just has to reboot or restart the game
     265 */
     266function leaveGame(willRejoin)
    256267{
    257268    var extendedSimState = Engine.GuiInterfaceCall("GetExtendedSimulationState");
    258269    var playerState = extendedSimState.players[Engine.GetPlayerID()];
     
    274285    else // "active"
    275286    {
    276287        gameResult = "You have abandoned the game.";
    277 
    278         // Tell other players that we have given up and been defeated
    279         Engine.PostNetworkCommand({
    280             "type": "defeat-player",
    281             "playerId": Engine.GetPlayerID()
    282         });
    283 
    284288        global.music.setState(global.music.states.DEFEAT);
     289       
     290        // resign, if player click on "No, I resign"
     291        if (!willRejoin)
     292        {
     293            gameResult = "You have been defeated...";
     294            resignGame(true);
     295        }
    285296    }
    286297
    287298    stopAmbient();
  • binaries/data/mods/public/gui/session/session.xml

     
    776776        z="40"
    777777    >
    778778        <object size="4 36 100%-4 50%+20">
     779       
     780            <!-- Manual button -->
     781            <object type="button"
     782                name="manualButton"
     783                style="StoneButtonFancy"
     784                size="0 0 100% 28"
     785                tooltip_style="sessionToolTip"
     786            >
     787                Manual
     788                <action on="Press">openManual();</action>
     789            </object>
     790           
     791            <!-- Chat button -->
     792            <object type="button"
     793                name="chatButton"
     794                style="StoneButtonFancy"
     795                size="0 32 100% 60"
     796                tooltip_style="sessionToolTip"
     797            >
     798                Chat
     799                <action on="Press">chatMenuButton();</action>
     800            </object>
    779801
    780         <!-- Settings button -->
    781         <object type="button"
    782             name="settingsButton"
    783             style="StoneButtonFancy"
    784             size="0 0 100% 28"
    785             tooltip_style="sessionToolTip"
    786         >
    787             Settings
    788             <action on="Press">settingsMenuButton();</action>
    789         </object>
     802            <!-- Save game button -->
     803            <object type="button"
     804                name="saveGameButton"
     805                style="StoneButtonFancy"
     806                size="0 64 100% 92"
     807                tooltip_style="sessionToolTip"
     808            >
     809                Save
     810                <action on="Press">
     811                openSave();
     812                </action>
     813            </object>
     814           
     815            <!-- Settings button -->
     816            <object type="button"
     817                name="settingsButton"
     818                style="StoneButtonFancy"
     819                size="0 96 100% 124"
     820                tooltip_style="sessionToolTip"
     821            >
     822                Settings
     823                <action on="Press">settingsMenuButton();</action>
     824            </object>
    790825
    791 
    792         <!-- Save game button -->
    793         <object type="button"
    794             name="saveGameButton"
    795             style="StoneButtonFancy"
    796             size="0 32 100% 60"
    797             tooltip_style="sessionToolTip"
    798         >
    799             Save
    800             <action on="Press">
    801             openSave();
    802             </action>
     826            <!-- Pause / Resume Button -->
     827            <object type="button"
     828                name="pauseButton"
     829                style="StoneButtonFancy"
     830                size="0 128 100% 156"
     831                tooltip_style="sessionToolTip"
     832            >
     833                <object name="pauseButtonText" type="text" style="CenteredButtonText" ghost="true">Pause</object>
     834                <action on="Press">togglePause();</action>
     835            </object>
     836           
     837            <!-- Resign button -->
     838            <object type="button"
     839                name="menuResignButton"
     840                style="StoneButtonFancy"
     841                size="0 160 100% 188"
     842                tooltip_style="sessionToolTip"
     843            >
     844                Resign
     845                <action on="Press">resignMenuButton();</action>
     846            </object>
     847           
     848            <!-- Exit button -->
     849            <object type="button"
     850                name="menuExitButton"
     851                style="StoneButtonFancy"
     852                size="0 192 100% 220"
     853                tooltip_style="sessionToolTip"
     854            >
     855                Exit
     856                <action on="Press">exitMenuButton();</action>
     857            </object>
    803858        </object>
    804 
    805         <!-- Chat button -->
    806         <object type="button"
    807             name="chatButton"
    808             style="StoneButtonFancy"
    809             size="0 64 100% 92"
    810             tooltip_style="sessionToolTip"
    811         >
    812             Chat
    813             <action on="Press">chatMenuButton();</action>
    814         </object>
    815 
    816         <!-- Resign button -->
    817         <object type="button"
    818             name="menuResignButton"
    819             style="StoneButtonFancy"
    820             size="0 96 100% 124"
    821             tooltip_style="sessionToolTip"
    822         >
    823             Resign
    824             <action on="Press">resignMenuButton();</action>
    825         </object>
    826 
    827         <!-- Exit button -->
    828         <object type="button"
    829             name="menuExitButton"
    830             style="StoneButtonFancy"
    831             size="0 128 100% 156"
    832             tooltip_style="sessionToolTip"
    833         >
    834             Exit
    835             <action on="Press">exitMenuButton();</action>
    836         </object>
    837 
    838         <!-- Pause / Resume Button -->
    839         <object type="button"
    840             name="pauseButton"
    841             style="StoneButtonFancy"
    842             size="0 160 100% 188"
    843             tooltip_style="sessionToolTip"
    844         >
    845             <object name="pauseButtonText" type="text" style="CenteredButtonText" ghost="true">Pause</object>
    846             <action on="Press">togglePause();</action>
    847         </object>
    848 
    849         <!-- Manual button -->
    850         <object type="button"
    851             name="manualButton"
    852             style="StoneButtonFancy"
    853             size="0 192 100% 220"
    854             tooltip_style="sessionToolTip"
    855         >
    856             Manual
    857             <action on="Press">openManual();</action>
    858         </object>
    859         </object>
    860859    </object>
    861860
    862861    <!-- In-progress research -->