X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fscreens.c;h=339681299899fea6e6c3b028ff4011fa75a478ab;hb=30eb586d06bc4d1ee7388dced1c20e530292aa93;hp=1346c21886fef76e0ca866324d03f14b77affd2f;hpb=014f8db5b98964dddaf817ce5cd8cf7930bc7ae4;p=rocksndiamonds.git diff --git a/src/screens.c b/src/screens.c index 1346c218..33968129 100644 --- a/src/screens.c +++ b/src/screens.c @@ -221,7 +221,7 @@ static void HandleSetupScreen_Generic(int, int, int, int, int); static void HandleSetupScreen_Input(int, int, int, int, int); static void CustomizeKeyboard(int); static void ConfigureJoystick(int); -static void ConfigureVirtualButtons(); +static void ConfigureVirtualButtons(void); static void execSetupGame(void); static void execSetupGraphics(void); static void execSetupSound(void); @@ -1085,9 +1085,9 @@ static boolean visibleTextPos(struct TextPosInfo *pos) return (pos != NULL && pos->x != -1 && pos->y != -1); } -static void InitializeMainControls() +static void InitializeMainControls(void) { - boolean local_team_mode = (!options.network && setup.team_mode); + boolean local_team_mode = (!network.enabled && setup.team_mode); int i; /* set main control text values to dynamically determined values */ @@ -1361,7 +1361,7 @@ static void AdjustChooseTreeScrollbar(int id, int first_entry, TreeInfo *ti) first_entry); } -static void clearMenuListArea() +static void clearMenuListArea(void) { int scrollbar_xpos = mSX + SC_SCROLLBAR_XPOS + menu.scrollbar_xoffset; @@ -1415,13 +1415,13 @@ static void drawChooseTreeCursor(int ypos, boolean active) drawCursorExt(0, ypos, active, -1); } -void DrawHeadline() +static void DrawHeadline(void) { DrawTextSCentered(MENU_TITLE1_YPOS, FONT_TITLE_1, main_text_title_1); DrawTextSCentered(MENU_TITLE2_YPOS, FONT_TITLE_2, main_text_title_2); } -void DrawTitleScreenImage(int nr, boolean initial) +static void DrawTitleScreenImage(int nr, boolean initial) { int graphic = getTitleScreenGraphic(nr, initial); Bitmap *bitmap = graphic_info[graphic].bitmap; @@ -1465,7 +1465,7 @@ void DrawTitleScreenImage(int nr, boolean initial) redraw_mask = REDRAW_ALL; } -void DrawTitleScreenMessage(int nr, boolean initial) +static void DrawTitleScreenMessage(int nr, boolean initial) { char *filename = getLevelSetTitleMessageFilename(nr, initial); struct TitleMessageInfo *tmi = getTitleMessageInfo(nr, initial); @@ -1516,14 +1516,14 @@ void DrawTitleScreenMessage(int nr, boolean initial) ResetFontStatus(); } -void DrawTitleScreen() +static void DrawTitleScreen(void) { KeyboardAutoRepeatOff(); HandleTitleScreen(0, 0, 0, 0, MB_MENU_INITIALIZE); } -boolean CheckTitleScreen(boolean levelset_has_changed) +static boolean CheckTitleScreen(boolean levelset_has_changed) { static boolean show_title_initial = TRUE; boolean show_titlescreen = FALSE; @@ -1540,7 +1540,7 @@ boolean CheckTitleScreen(boolean levelset_has_changed) return (show_titlescreen && num_title_screens > 0); } -void DrawMainMenu() +void DrawMainMenu(void) { static LevelDirTree *leveldir_last_valid = NULL; boolean levelset_has_changed = FALSE; @@ -1642,6 +1642,7 @@ void DrawMainMenu() DrawCursorAndText_Main(-1, FALSE, FALSE); DrawPreviewLevelInitial(); + DrawNetworkPlayers(); HandleMainMenu(0, 0, 0, 0, MB_MENU_INITIALIZE); @@ -1685,7 +1686,7 @@ void DrawMainMenu() OpenDoor(DOOR_CLOSE_1 | DOOR_OPEN_2); } -static void gotoTopLevelDir() +static void gotoTopLevelDir(void) { /* move upwards until inside (but not above) top level directory */ while (leveldir_current->node_parent && @@ -1886,7 +1887,8 @@ void HandleTitleScreen(int mx, int my, int dx, int dy, int button) } } -void HandleMainMenu_SelectLevel(int step, int direction, int selected_level_nr) +static void HandleMainMenu_SelectLevel(int step, int direction, + int selected_level_nr) { int old_level_nr = level_nr; int new_level_nr; @@ -2073,7 +2075,7 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) SetGameStatus(GAME_MODE_SCORES); - DrawHallOfFame(-1); + DrawHallOfFame(level_nr, -1); } else if (pos == MAIN_CONTROL_EDITOR) { @@ -2101,7 +2103,7 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) } else if (pos == MAIN_CONTROL_GAME) { - StartGameActions(options.network, setup.autorecord, level.random_seed); + StartGameActions(network.enabled, setup.autorecord, level.random_seed); } else if (pos == MAIN_CONTROL_SETUP) { @@ -2136,56 +2138,56 @@ static struct TokenInfo *info_info; static int num_info_info; /* number of info entries shown on screen */ static int max_info_info; /* total number of info entries in list */ -static void execInfoTitleScreen() +static void execInfoTitleScreen(void) { info_mode = INFO_MODE_TITLE; DrawInfoScreen(); } -static void execInfoElements() +static void execInfoElements(void) { info_mode = INFO_MODE_ELEMENTS; DrawInfoScreen(); } -static void execInfoMusic() +static void execInfoMusic(void) { info_mode = INFO_MODE_MUSIC; DrawInfoScreen(); } -static void execInfoCredits() +static void execInfoCredits(void) { info_mode = INFO_MODE_CREDITS; DrawInfoScreen(); } -static void execInfoProgram() +static void execInfoProgram(void) { info_mode = INFO_MODE_PROGRAM; DrawInfoScreen(); } -static void execInfoVersion() +static void execInfoVersion(void) { info_mode = INFO_MODE_VERSION; DrawInfoScreen(); } -static void execInfoLevelSet() +static void execInfoLevelSet(void) { info_mode = INFO_MODE_LEVELSET; DrawInfoScreen(); } -static void execExitInfo() +static void execExitInfo(void) { SetGameStatus(GAME_MODE_MAIN); @@ -2213,6 +2215,7 @@ static int getMenuTextFont(int type) TYPE_YES_NO | TYPE_YES_NO_AUTO | TYPE_STRING | + TYPE_PLAYER | TYPE_ECS_AGA | TYPE_KEYTEXT | TYPE_ENTER_LIST)) @@ -2305,7 +2308,7 @@ static void drawMenuInfoList(int first_entry, int num_page_entries, } } -static void DrawInfoScreen_Main() +static void DrawInfoScreen_Main(void) { int fade_mask = REDRAW_FIELD; int i; @@ -2365,8 +2368,9 @@ static void DrawInfoScreen_Main() static void changeSetupValue(int, int, int); -void HandleMenuScreen(int mx, int my, int dx, int dy, int button, - int mode, int num_page_entries, int max_page_entries) +static void HandleMenuScreen(int mx, int my, int dx, int dy, int button, + int mode, int num_page_entries, + int max_page_entries) { static int num_page_entries_all_last[NUM_SPECIAL_GFX_ARGS][MAX_MENU_MODES]; static int choice_stores[NUM_SPECIAL_GFX_ARGS][MAX_MENU_MODES]; @@ -2544,7 +2548,8 @@ void HandleMenuScreen(int mx, int my, int dx, int dy, int button, if (menu_info[choice].type & menu_navigation_type || menu_info[choice].type & TYPE_BOOLEAN_STYLE || - menu_info[choice].type & TYPE_YES_NO_AUTO) + menu_info[choice].type & TYPE_YES_NO_AUTO || + menu_info[choice].type & TYPE_PLAYER) button = MB_MENU_CHOICE; } else if (dy) @@ -2882,7 +2887,7 @@ void DrawInfoScreen_HelpText(int element, int action, int direction, int ypos) TRUE, FALSE, FALSE); } -void DrawInfoScreen_TitleScreen() +static void DrawInfoScreen_TitleScreen(void) { SetGameStatus(GAME_MODE_TITLE); @@ -2894,7 +2899,7 @@ void HandleInfoScreen_TitleScreen(int button) HandleTitleScreen(0, 0, 0, 0, button); } -void DrawInfoScreen_Elements() +static void DrawInfoScreen_Elements(void) { SetMainBackgroundImageIfDefined(IMG_BACKGROUND_INFO_ELEMENTS); @@ -2987,7 +2992,7 @@ void HandleInfoScreen_Elements(int button) } } -void DrawInfoScreen_Music() +static void DrawInfoScreen_Music(void) { SetMainBackgroundImageIfDefined(IMG_BACKGROUND_INFO_MUSIC); @@ -3093,7 +3098,12 @@ void HandleInfoScreen_Music(int button) } else { - PlayMusic(list->music); + int music = list->music; + + if (music_info[music].loop) + PlayMusicLoop(music); + else + PlayMusic(music); DrawTextSCentered(ystart, font_title, "The Game Background Music:"); } @@ -3393,7 +3403,7 @@ static void DrawInfoScreen_CreditsScreen(int screen_nr) "Press any key or button for next page"); } -void DrawInfoScreen_Credits() +static void DrawInfoScreen_Credits(void) { SetMainBackgroundImageIfDefined(IMG_BACKGROUND_INFO_CREDITS); @@ -3463,7 +3473,7 @@ void HandleInfoScreen_Credits(int button) } } -void DrawInfoScreen_Program() +static void DrawInfoScreen_Program(void) { int font_title = MENU_INFO_FONT_TITLE; int font_head = MENU_INFO_FONT_HEAD; @@ -3548,7 +3558,7 @@ void HandleInfoScreen_Program(int button) } } -void DrawInfoScreen_Version() +static void DrawInfoScreen_Version(void) { int font_title = MENU_INFO_FONT_TITLE; int font_head = MENU_INFO_FONT_HEAD; @@ -3745,7 +3755,7 @@ void HandleInfoScreen_Version(int button) } } -void DrawInfoScreen_LevelSet() +static void DrawInfoScreen_LevelSet(void) { struct TitleMessageInfo *tmi = &readme; char *filename = getLevelSetInfoFilename(); @@ -3807,7 +3817,7 @@ void DrawInfoScreen_LevelSet() FadeIn(REDRAW_FIELD); } -void HandleInfoScreen_LevelSet(int button) +static void HandleInfoScreen_LevelSet(int button) { if (button == MB_MENU_LEAVE) { @@ -3833,7 +3843,7 @@ void HandleInfoScreen_LevelSet(int button) } } -static void DrawInfoScreen() +static void DrawInfoScreen(void) { if (info_mode == INFO_MODE_TITLE) DrawInfoScreen_TitleScreen(); @@ -4422,7 +4432,7 @@ static void HandleChooseTree(int mx, int my, int dx, int dy, int button, } } -void DrawChooseLevelSet() +void DrawChooseLevelSet(void) { FadeMenuSoundsAndMusic(); @@ -4436,7 +4446,7 @@ void HandleChooseLevelSet(int mx, int my, int dx, int dy, int button) HandleChooseTree(mx, my, dx, dy, button, &leveldir_current); } -void DrawChooseLevelNr() +void DrawChooseLevelNr(void) { int i; @@ -4496,7 +4506,7 @@ void HandleChooseLevelNr(int mx, int my, int dx, int dy, int button) HandleChooseTree(mx, my, dx, dy, button, &level_number_current); } -void DrawHallOfFame(int highlight_position) +void DrawHallOfFame(int level_nr, int highlight_position) { int fade_mask = REDRAW_FIELD; @@ -4529,14 +4539,15 @@ void DrawHallOfFame(int highlight_position) OpenDoor(GetDoorState() | DOOR_NO_DELAY | DOOR_FORCE_REDRAW); - HandleHallOfFame(highlight_position, 0, 0, 0, MB_MENU_INITIALIZE); + HandleHallOfFame(level_nr, highlight_position, 0, 0, MB_MENU_INITIALIZE); DrawMaskedBorder(fade_mask); FadeIn(fade_mask); } -static void drawHallOfFameList(int first_entry, int highlight_position) +static void drawHallOfFameList(int level_nr, int first_entry, + int highlight_position) { int i, j; @@ -4579,15 +4590,18 @@ static void drawHallOfFameList(int first_entry, int highlight_position) void HandleHallOfFame(int mx, int my, int dx, int dy, int button) { + static int level_nr = 0; static int first_entry = 0; static int highlight_position = 0; int step = (button == 1 ? 1 : button == 2 ? 5 : 10); if (button == MB_MENU_INITIALIZE) { + level_nr = mx; first_entry = 0; - highlight_position = mx; - drawHallOfFameList(first_entry, highlight_position); + highlight_position = my; + + drawHallOfFameList(level_nr, first_entry, highlight_position); return; } @@ -4603,7 +4617,7 @@ void HandleHallOfFame(int mx, int my, int dx, int dy, int button) if (first_entry < 0) first_entry = 0; - drawHallOfFameList(first_entry, highlight_position); + drawHallOfFameList(level_nr, first_entry, highlight_position); } } else if (dy > 0) @@ -4614,28 +4628,27 @@ void HandleHallOfFame(int mx, int my, int dx, int dy, int button) if (first_entry + NUM_MENU_ENTRIES_ON_SCREEN > MAX_SCORE_ENTRIES) first_entry = MAX(0, MAX_SCORE_ENTRIES - NUM_MENU_ENTRIES_ON_SCREEN); - drawHallOfFameList(first_entry, highlight_position); + drawHallOfFameList(level_nr, first_entry, highlight_position); } } - else if (button == MB_MENU_LEAVE) + else if (button == MB_MENU_LEAVE || button == MB_MENU_CHOICE) { PlaySound(SND_MENU_ITEM_SELECTING); FadeSound(SND_BACKGROUND_SCORES); - SetGameStatus(GAME_MODE_MAIN); - - DrawMainMenu(); - } - else if (button == MB_MENU_CHOICE) - { - PlaySound(SND_MENU_ITEM_SELECTING); - - FadeSound(SND_BACKGROUND_SCORES); - - SetGameStatus(GAME_MODE_MAIN); + if (game_status_last_screen == GAME_MODE_PLAYING && + setup.auto_play_next_level && setup.increment_levels && + !network_playing) + { + StartGameActions(network.enabled, setup.autorecord, level.random_seed); + } + else + { + SetGameStatus(GAME_MODE_MAIN); - DrawMainMenu(); + DrawMainMenu(); + } } if (game_status == GAME_MODE_SCORES) @@ -4669,14 +4682,14 @@ static char *drop_distance_text; static char *transparency_text; static char *grid_size_text[2][2]; -static void execSetupMain() +static void execSetupMain(void) { setup_mode = SETUP_MODE_MAIN; DrawSetupScreen(); } -static void execSetupGame_setGameSpeeds() +static void execSetupGame_setGameSpeeds(void) { if (game_speeds == NULL) { @@ -4726,7 +4739,7 @@ static void execSetupGame_setGameSpeeds() game_speed_text = game_speed_current->name; } -static void execSetupGame_setScrollDelays() +static void execSetupGame_setScrollDelays(void) { if (scroll_delays == NULL) { @@ -4776,7 +4789,7 @@ static void execSetupGame_setScrollDelays() scroll_delay_text = scroll_delay_current->name; } -static void execSetupGame_setSnapshotModes() +static void execSetupGame_setSnapshotModes(void) { if (snapshot_modes == NULL) { @@ -4826,7 +4839,7 @@ static void execSetupGame_setSnapshotModes() snapshot_mode_text = snapshot_mode_current->name; } -static void execSetupGame() +static void execSetupGame(void) { execSetupGame_setGameSpeeds(); execSetupGame_setScrollDelays(); @@ -4837,28 +4850,28 @@ static void execSetupGame() DrawSetupScreen(); } -static void execSetupChooseGameSpeed() +static void execSetupChooseGameSpeed(void) { setup_mode = SETUP_MODE_CHOOSE_GAME_SPEED; DrawSetupScreen(); } -static void execSetupChooseScrollDelay() +static void execSetupChooseScrollDelay(void) { setup_mode = SETUP_MODE_CHOOSE_SCROLL_DELAY; DrawSetupScreen(); } -static void execSetupChooseSnapshotMode() +static void execSetupChooseSnapshotMode(void) { setup_mode = SETUP_MODE_CHOOSE_SNAPSHOT_MODE; DrawSetupScreen(); } -static void execSetupEditor() +static void execSetupEditor(void) { setup_mode = SETUP_MODE_EDITOR; @@ -4950,7 +4963,7 @@ static void execSetupGraphics_setWindowSizes(boolean update_list) window_size_text = window_size_current->name; } -static void execSetupGraphics_setScalingTypes() +static void execSetupGraphics_setScalingTypes(void) { if (scaling_types == NULL) { @@ -5000,7 +5013,7 @@ static void execSetupGraphics_setScalingTypes() scaling_type_text = scaling_type_current->name; } -static void execSetupGraphics_setRenderingModes() +static void execSetupGraphics_setRenderingModes(void) { if (rendering_modes == NULL) { @@ -5051,7 +5064,7 @@ static void execSetupGraphics_setRenderingModes() rendering_mode_text = rendering_mode_current->name; } -static void execSetupGraphics() +static void execSetupGraphics(void) { // update "setup.window_scaling_percent" from list selection // (in this case, window scaling was changed on setup screen) @@ -5082,49 +5095,49 @@ static void execSetupGraphics() #endif } -static void execSetupChooseWindowSize() +static void execSetupChooseWindowSize(void) { setup_mode = SETUP_MODE_CHOOSE_WINDOW_SIZE; DrawSetupScreen(); } -static void execSetupChooseScalingType() +static void execSetupChooseScalingType(void) { setup_mode = SETUP_MODE_CHOOSE_SCALING_TYPE; DrawSetupScreen(); } -static void execSetupChooseRenderingMode() +static void execSetupChooseRenderingMode(void) { setup_mode = SETUP_MODE_CHOOSE_RENDERING; DrawSetupScreen(); } -static void execSetupChooseVolumeSimple() +static void execSetupChooseVolumeSimple(void) { setup_mode = SETUP_MODE_CHOOSE_VOLUME_SIMPLE; DrawSetupScreen(); } -static void execSetupChooseVolumeLoops() +static void execSetupChooseVolumeLoops(void) { setup_mode = SETUP_MODE_CHOOSE_VOLUME_LOOPS; DrawSetupScreen(); } -static void execSetupChooseVolumeMusic() +static void execSetupChooseVolumeMusic(void) { setup_mode = SETUP_MODE_CHOOSE_VOLUME_MUSIC; DrawSetupScreen(); } -static void execSetupSound() +static void execSetupSound(void) { if (volumes_simple == NULL) { @@ -5344,63 +5357,63 @@ static void execSetupSound() DrawSetupScreen(); } -static void execSetupChooseTouchControls() +static void execSetupChooseTouchControls(void) { setup_mode = SETUP_MODE_CHOOSE_TOUCH_CONTROL; DrawSetupScreen(); } -static void execSetupChooseMoveDistance() +static void execSetupChooseMoveDistance(void) { setup_mode = SETUP_MODE_CHOOSE_MOVE_DISTANCE; DrawSetupScreen(); } -static void execSetupChooseDropDistance() +static void execSetupChooseDropDistance(void) { setup_mode = SETUP_MODE_CHOOSE_DROP_DISTANCE; DrawSetupScreen(); } -static void execSetupChooseTransparency() +static void execSetupChooseTransparency(void) { setup_mode = SETUP_MODE_CHOOSE_TRANSPARENCY; DrawSetupScreen(); } -static void execSetupChooseGridXSize_0() +static void execSetupChooseGridXSize_0(void) { setup_mode = SETUP_MODE_CHOOSE_GRID_XSIZE_0; DrawSetupScreen(); } -static void execSetupChooseGridYSize_0() +static void execSetupChooseGridYSize_0(void) { setup_mode = SETUP_MODE_CHOOSE_GRID_YSIZE_0; DrawSetupScreen(); } -static void execSetupChooseGridXSize_1() +static void execSetupChooseGridXSize_1(void) { setup_mode = SETUP_MODE_CHOOSE_GRID_XSIZE_1; DrawSetupScreen(); } -static void execSetupChooseGridYSize_1() +static void execSetupChooseGridYSize_1(void) { setup_mode = SETUP_MODE_CHOOSE_GRID_YSIZE_1; DrawSetupScreen(); } -static void execSetupConfigureVirtualButtons() +static void execSetupConfigureVirtualButtons(void) { setup_mode = SETUP_MODE_CONFIG_VIRT_BUTTONS; @@ -5411,7 +5424,7 @@ static void execSetupConfigureVirtualButtons() DrawSetupScreen(); } -static void execSetupTouch() +static void execSetupTouch(void) { int i, j, k; @@ -5672,7 +5685,7 @@ static void execSetupTouch() DrawSetupScreen(); } -static void execSetupArtwork() +static void execSetupArtwork(void) { #if 0 printf("::: '%s', '%s', '%s'\n", @@ -5698,84 +5711,84 @@ static void execSetupArtwork() DrawSetupScreen(); } -static void execSetupChooseGraphics() +static void execSetupChooseGraphics(void) { setup_mode = SETUP_MODE_CHOOSE_GRAPHICS; DrawSetupScreen(); } -static void execSetupChooseSounds() +static void execSetupChooseSounds(void) { setup_mode = SETUP_MODE_CHOOSE_SOUNDS; DrawSetupScreen(); } -static void execSetupChooseMusic() +static void execSetupChooseMusic(void) { setup_mode = SETUP_MODE_CHOOSE_MUSIC; DrawSetupScreen(); } -static void execSetupInput() +static void execSetupInput(void) { setup_mode = SETUP_MODE_INPUT; DrawSetupScreen(); } -static void execSetupShortcuts() +static void execSetupShortcuts(void) { setup_mode = SETUP_MODE_SHORTCUTS; DrawSetupScreen(); } -static void execSetupShortcuts1() +static void execSetupShortcuts1(void) { setup_mode = SETUP_MODE_SHORTCUTS_1; DrawSetupScreen(); } -static void execSetupShortcuts2() +static void execSetupShortcuts2(void) { setup_mode = SETUP_MODE_SHORTCUTS_2; DrawSetupScreen(); } -static void execSetupShortcuts3() +static void execSetupShortcuts3(void) { setup_mode = SETUP_MODE_SHORTCUTS_3; DrawSetupScreen(); } -static void execSetupShortcuts4() +static void execSetupShortcuts4(void) { setup_mode = SETUP_MODE_SHORTCUTS_4; DrawSetupScreen(); } -static void execSetupShortcuts5() +static void execSetupShortcuts5(void) { setup_mode = SETUP_MODE_SHORTCUTS_5; DrawSetupScreen(); } -static void execExitSetup() +static void execExitSetup(void) { SetGameStatus(GAME_MODE_MAIN); DrawMainMenu(); } -static void execSaveAndExitSetup() +static void execSaveAndExitSetup(void) { SaveSetup(); execExitSetup(); @@ -5850,7 +5863,7 @@ static struct { NULL, NULL } }; -void setHideRelatedSetupEntries() +void setHideRelatedSetupEntries(void) { int i; @@ -5880,11 +5893,14 @@ static struct TokenInfo setup_info_game[] = { { TYPE_SWITCH, &setup.team_mode, "Team-Mode (Multi-Player):" }, { TYPE_SWITCH, &setup.network_mode, "Network Multi-Player Mode:" }, + { TYPE_PLAYER, &setup.network_player_nr,"Preferred Network Player:" }, { TYPE_YES_NO, &setup.input_on_focus, "Only Move Focussed Player:" }, { TYPE_SWITCH, &setup.time_limit, "Time Limit:" }, { TYPE_SWITCH, &setup.handicap, "Handicap:" }, { TYPE_SWITCH, &setup.skip_levels, "Skip Unsolved Levels:" }, { TYPE_SWITCH, &setup.increment_levels,"Increment Solved Levels:" }, + { TYPE_SWITCH, &setup.auto_play_next_level,"Auto-play Next Level:" }, + { TYPE_SWITCH, &setup.skip_scores_after_game,"Skip Scores After Game:" }, { TYPE_SWITCH, &setup.autorecord, "Auto-Record Tapes:" }, { TYPE_ENTER_LIST, execSetupChooseGameSpeed, "Game Speed:" }, { TYPE_STRING, &game_speed_text, "" }, @@ -6191,7 +6207,7 @@ static struct TokenInfo setup_info_shortcuts_5[] = { 0, NULL, NULL } }; -static Key getSetupKey() +static Key getSetupKey(void) { Key key = KSYM_UNDEFINED; boolean got_key_event = FALSE; @@ -6247,6 +6263,8 @@ static int getSetupValueFont(int type, void *value) else if (type & TYPE_YES_NO_AUTO) return (*(int *)value == AUTO ? FONT_OPTION_ON : *(int *)value == FALSE ? FONT_OPTION_OFF : FONT_OPTION_ON); + else if (type & TYPE_PLAYER) + return FONT_VALUE_1; else return FONT_VALUE_1; } @@ -6302,6 +6320,12 @@ static void drawSetupValue(int screen_pos, int setup_info_pos_raw) { xpos = menu_screen_value_xpos - 1; } + else if (type & TYPE_PLAYER) + { + int displayed_player_nr = *(int *)value + 1; + + value_string = getSetupValue(TYPE_INTEGER, (void *)&displayed_player_nr); + } startx = mSX + xpos * 32; starty = mSY + ypos * 32; @@ -6372,6 +6396,15 @@ static void drawSetupValue(int screen_pos, int setup_info_pos_raw) DrawText(startx, starty, value_string, font_nr); + if (type & TYPE_PLAYER) + { + int player_nr = *(int *)value; + int xoff = getFontWidth(font_nr); + + DrawFixedGraphicThruMaskExt(drawto, startx + xoff, starty, + PLAYER_NR_GFX(IMG_PLAYER_1, player_nr), 0); + } + if (font_draw_xoffset_modified) getFontBitmapInfo(font_nr)->draw_xoffset = font_draw_xoffset_old; } @@ -6406,6 +6439,17 @@ static void changeSetupValue(int screen_pos, int setup_info_pos_raw, int dx) if (key != KSYM_UNDEFINED) *(Key *)si->value = key; } + else if (si->type & TYPE_PLAYER) + { + int player_nr = *(int *)si->value; + + if (dx) + player_nr += dx; + else + player_nr = Request("Choose player", REQ_PLAYER) - 1; + + *(int *)si->value = MIN(MAX(0, player_nr), MAX_PLAYERS - 1); + } drawSetupValue(screen_pos, setup_info_pos_raw); @@ -6414,9 +6458,23 @@ static void changeSetupValue(int screen_pos, int setup_info_pos_raw, int dx) ToggleFullscreenOrChangeWindowScalingIfNeeded(); if (si->value == &setup.network_mode && - setup.network_mode && - !options.network) - Request("Please restart game to enable network games!", REQ_CONFIRM); + setup.network_mode != network.enabled) + { + network.enabled = setup.network_mode; + + FadeOut(REDRAW_ALL); + + ClearField(); + + FadeIn(REDRAW_ALL); + + if (network.enabled) + InitNetworkServer(); + else + DisconnectFromNetworkServer(); + + DrawSetupScreen(); + } } static struct TokenInfo *getSetupInfoFinal(struct TokenInfo *setup_info_orig) @@ -6451,7 +6509,7 @@ static struct TokenInfo *getSetupInfoFinal(struct TokenInfo *setup_info_orig) return setup_info_final; } -static void DrawSetupScreen_Generic() +static void DrawSetupScreen_Generic(void) { int fade_mask = REDRAW_FIELD; boolean redraw_all = FALSE; @@ -6587,7 +6645,7 @@ void HandleSetupScreen_Generic(int mx, int my, int dx, int dy, int button) setup_mode, num_setup_info, max_setup_info); } -void DrawSetupScreen_Input() +static void DrawSetupScreen_Input(void) { int i; @@ -6741,7 +6799,7 @@ static void drawPlayerSetupInputInfo(int player_nr, boolean active) static int input_player_nr = 0; -void HandleSetupScreen_Input_Player(int step, int direction) +static void HandleSetupScreen_Input_Player(int step, int direction) { int old_player_nr = input_player_nr; int new_player_nr; @@ -7495,7 +7553,7 @@ void ConfigureJoystick(int player_nr) DrawSetupScreen_Input(); } -boolean ConfigureVirtualButtonsMain() +static boolean ConfigureVirtualButtonsMain(void) { static char *customize_step_text[] = { @@ -7732,7 +7790,7 @@ boolean ConfigureVirtualButtonsMain() return success; } -void ConfigureVirtualButtons() +void ConfigureVirtualButtons(void) { boolean success = ConfigureVirtualButtonsMain(); @@ -7759,7 +7817,7 @@ void ConfigureVirtualButtons() } } -void DrawSetupScreen() +void DrawSetupScreen(void) { if (setup_mode == SETUP_MODE_INPUT) DrawSetupScreen_Input(); @@ -7809,7 +7867,7 @@ void DrawSetupScreen() PlayMenuSoundsAndMusic(); } -void RedrawSetupScreenAfterFullscreenToggle() +void RedrawSetupScreenAfterFullscreenToggle(void) { if (setup_mode == SETUP_MODE_GRAPHICS || setup_mode == SETUP_MODE_CHOOSE_WINDOW_SIZE) @@ -7887,7 +7945,7 @@ void HandleSetupScreen(int mx, int my, int dx, int dy, int button) HandleSetupScreen_Generic(mx, my, dx, dy, button); } -void HandleGameActions() +void HandleGameActions(void) { if (game.restart_game_message != NULL) RequestRestartGame(game.restart_game_message); @@ -8038,7 +8096,7 @@ static struct } }; -static void CreateScreenMenubuttons() +static void CreateScreenMenubuttons(void) { struct GadgetInfo *gi; unsigned int event_mask; @@ -8103,7 +8161,7 @@ static void CreateScreenMenubuttons() } } -static void CreateScreenScrollbuttons() +static void CreateScreenScrollbuttons(void) { struct GadgetInfo *gi; unsigned int event_mask; @@ -8171,7 +8229,7 @@ static void CreateScreenScrollbuttons() } } -static void CreateScreenScrollbars() +static void CreateScreenScrollbars(void) { int i; @@ -8252,7 +8310,7 @@ static void CreateScreenScrollbars() } } -void CreateScreenGadgets() +void CreateScreenGadgets(void) { CreateScreenMenubuttons(); @@ -8260,7 +8318,7 @@ void CreateScreenGadgets() CreateScreenScrollbars(); } -void FreeScreenGadgets() +void FreeScreenGadgets(void) { int i; @@ -8277,7 +8335,7 @@ void MapScreenMenuGadgets(int screen_mask) MapGadget(screen_gadget[menubutton_info[i].gadget_id]); } -void UnmapScreenMenuGadgets(int screen_mask) +static void UnmapScreenMenuGadgets(int screen_mask) { int i; @@ -8395,7 +8453,7 @@ static void HandleScreenGadgets(struct GadgetInfo *gi) } } -void DumpScreenIdentifiers() +void DumpScreenIdentifiers(void) { int i;