X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fscreens.c;h=43198fa8a2d5138fdd78c631588cd19802985b79;hb=843f357b031cd1f30167bd3d3596f372d2289b6f;hp=7771f24ed7fd853ffef061927a2a04f1c01b76ad;hpb=740b7b55a7f4982f08b09daee0152ec9df3240ae;p=rocksndiamonds.git diff --git a/src/screens.c b/src/screens.c index 7771f24e..43198fa8 100644 --- a/src/screens.c +++ b/src/screens.c @@ -5951,6 +5951,40 @@ static void execGadgetNetworkServer(void) ClickOnGadget(gi, MB_LEFTBUTTON); } +static void ToggleNetworkModeIfNeeded(void) +{ + int font_title = FONT_TITLE_1; + int font_foot = FC_BLUE; + int ystart = mSY - SY + 16; + int ybottom = mSY - SY + SYSIZE - 20; + char *text = (setup.network_mode ? "Start Network" : "Stop Network"); + + if (setup.network_mode == network.enabled) + return; + + network.enabled = setup.network_mode; + + FadeOut(REDRAW_ALL); + + ClearField(); + + DrawTextSCentered(ystart, font_title, text); + + FadeIn(REDRAW_ALL); + + if (network.enabled) + InitNetworkServer(); + else + DisconnectFromNetworkServer(); + + DrawTextSCentered(ybottom, font_foot, + "Press any key or button for setup menu"); + + WaitForEventToContinue(); + + DrawSetupScreen(); +} + static struct { void *value; @@ -6621,24 +6655,9 @@ static void changeSetupValue(int screen_pos, int setup_info_pos_raw, int dx) if (si->value == &setup.fullscreen) ToggleFullscreenOrChangeWindowScalingIfNeeded(); - if (si->value == &setup.network_mode && - setup.network_mode != network.enabled) - { - network.enabled = setup.network_mode; - - FadeOut(REDRAW_ALL); - - ClearField(); - - FadeIn(REDRAW_ALL); - - if (network.enabled) - InitNetworkServer(); - else - DisconnectFromNetworkServer(); - - DrawSetupScreen(); - } + // network mode may have changed at this point + if (si->value == &setup.network_mode) + ToggleNetworkModeIfNeeded(); } static struct TokenInfo *getSetupInfoFinal(struct TokenInfo *setup_info_orig)