X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fscreens.c;h=9906b6441289415c54f5fb38c6af82f5bbf2be32;hb=5eb97ccbaffc671f05dd73bf0548c1666414017e;hp=1346c21886fef76e0ca866324d03f14b77affd2f;hpb=014f8db5b98964dddaf817ce5cd8cf7930bc7ae4;p=rocksndiamonds.git diff --git a/src/screens.c b/src/screens.c index 1346c218..9906b644 100644 --- a/src/screens.c +++ b/src/screens.c @@ -1087,7 +1087,7 @@ static boolean visibleTextPos(struct TextPosInfo *pos) static void InitializeMainControls() { - 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 */ @@ -2101,7 +2101,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) { @@ -2213,6 +2213,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)) @@ -2544,7 +2545,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) @@ -5880,6 +5882,7 @@ 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:" }, @@ -6247,6 +6250,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 +6307,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 +6383,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 +6426,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); @@ -6415,7 +6446,7 @@ static void changeSetupValue(int screen_pos, int setup_info_pos_raw, int dx) if (si->value == &setup.network_mode && setup.network_mode && - !options.network) + !network.enabled) Request("Please restart game to enable network games!", REQ_CONFIRM); }