B08021 scroll_amount wincap option

> - I'd like to see another option added: scroll_amount. In
>   combination with scroll_margin, this would control the amount
>   of squares the screen is scrolled when the scroll_margin is
>   reached (currently, this amount is 1, but if I recall
>   correctly, it used to be more). For example, if both were 5,
>   when you came within 5 spaces of the left screen border, the
>   screen would shift 5 spaces to the right).
This commit is contained in:
nethack.allison
2002-08-23 01:03:59 +00:00
parent 36978c60fd
commit 2ce6152d63
10 changed files with 48 additions and 15 deletions

View File

@@ -5,7 +5,7 @@
.ds vr "NetHack 3.4 .ds vr "NetHack 3.4
.ds f0 "\*(vr .ds f0 "\*(vr
.ds f1 .ds f1
.ds f2 "July 27, 2002 .ds f2 "August 22, 2002
.mt .mt
A Guide to the Mazes of Menace A Guide to the Mazes of Menace
(Guidebook for NetHack) (Guidebook for NetHack)
@@ -2147,7 +2147,10 @@ For example, in the protected mode MSDOS version, control whether tiles
get pre-loaded into RAM at the start of the game. Doing so get pre-loaded into RAM at the start of the game. Doing so
enhances performance of the tile graphics, but uses more memory. (default on). enhances performance of the tile graphics, but uses more memory. (default on).
Cannot be set with the `O' command. Cannot be set with the `O' command.
.lp scroll_margin .lp scroll_amount
NetHack should scroll the display by this number of cells
when the hero reaches the scroll_margin.
.lp scroll_margin
NetHack should scroll the display when the hero or cursor NetHack should scroll the display when the hero or cursor
is this number of cells away from the edge of the window. is this number of cells away from the edge of the window.
.lp splash_screen .lp splash_screen

View File

@@ -27,7 +27,7 @@
\begin{document} \begin{document}
% %
% input file: guidebook.mn % input file: guidebook.mn
% $Revision: 1.50 $ $Date: 2002/08/12 01:39:55 $ % $Revision: 1.51 $ $Date: 2002/08/22 04:18:41 $
% %
%.ds h0 " %.ds h0 "
%.ds h1 %.ds h2 \% %.ds h1 %.ds h2 \%
@@ -2643,6 +2643,10 @@ get pre-loaded into RAM at the start of the game. Doing so
enhances performance of the tile graphics, but uses more memory. (default on). enhances performance of the tile graphics, but uses more memory. (default on).
Cannot be set with the `{\tt O}' command. Cannot be set with the `{\tt O}' command.
%.lp %.lp
\item[\ib{scroll\_amount}]
NetHack should scroll the display by this number of cells
when the hero reaches the scroll\_margin.
%.lp
\item[\ib{scroll\_margin}] \item[\ib{scroll\_margin}]
NetHack should scroll the display when the hero or cursor NetHack should scroll the display when the hero or cursor
is this number of cells away from the edge of the window. is this number of cells away from the edge of the window.

View File

@@ -276,6 +276,7 @@ showrace option
travel option travel option
cmdassist option to provide additional error feedback for some commands cmdassist option to provide additional error feedback for some commands
mouse_support wincap option mouse_support wincap option
scroll_amount wincap option to adjust how many cells to scroll at scroll_margin
debug mode: #panic routine to test panic() and panic save file generation debug mode: #panic routine to test panic() and panic save file generation
a new PANICLOG optional file to log the reason for panic and impossible messages a new PANICLOG optional file to log the reason for panic and impossible messages
added validate_prefix_locations() for early directory prefix validation added validate_prefix_locations() for early directory prefix validation

View File

@@ -482,11 +482,11 @@ to support:
| font_size_status | WC_FONTSIZ_STATUS | wc_fontsiz_status |int | | font_size_status | WC_FONTSIZ_STATUS | wc_fontsiz_status |int |
| font_size_text | WC_FONTSIZ_TEXT | wc_fontsiz_text |int | | font_size_text | WC_FONTSIZ_TEXT | wc_fontsiz_text |int |
| hilite_pet | WC_HILITE_PET | wc_hilite_pet |boolean | | hilite_pet | WC_HILITE_PET | wc_hilite_pet |boolean |
| large_font | WC_LARGE_FONT | wc_large_font |boolean |
| map_mode | WC_MAP_MODE | wc_map_mode |int | | map_mode | WC_MAP_MODE | wc_map_mode |int |
| player_selection | WC_PLAYER_SELECTION| wc_player_selection|int | | player_selection | WC_PLAYER_SELECTION| wc_player_selection|int |
| popup_dialog | WC_POPUP_DIALOG | wc_popup_dialog |boolean | | popup_dialog | WC_POPUP_DIALOG | wc_popup_dialog |boolean |
| preload_tiles | WC_PRELOAD_TILES | wc_preload_tiles |boolean | | preload_tiles | WC_PRELOAD_TILES | wc_preload_tiles |boolean |
| scroll_amount | WC_SCROLL_AMOUNT | wc_scroll_amount |int |
| scroll_margin | WC_SCROLL_MARGIN | wc_scroll_margin |int | | scroll_margin | WC_SCROLL_MARGIN | wc_scroll_margin |int |
| splash_screen | WC_SPLASH_SCREEN | wc_splash_screen |boolean | | splash_screen | WC_SPLASH_SCREEN | wc_splash_screen |boolean |
| tiled_map | WC_TILED_MAP | wc_tiled_map |boolean | | tiled_map | WC_TILED_MAP | wc_tiled_map |boolean |
@@ -523,12 +523,12 @@ font_size_text -- port should use this size font for text windows.
font_status -- port should use a font by this name for status window. font_status -- port should use a font by this name for status window.
font_text -- port should use a font by this name for text windows. font_text -- port should use a font by this name for text windows.
hilite_pet -- port should mark pets in some special way on the map. hilite_pet -- port should mark pets in some special way on the map.
large_font -- port should use a large font.
map_mode -- port should display the map in the manner specified. map_mode -- port should display the map in the manner specified.
player_selection player_selection
-- dialog or prompts for choosing character. -- dialog or prompts for choosing character.
popup_dialog -- port should pop up dialog boxes for input. popup_dialog -- port should pop up dialog boxes for input.
preload_tiles -- port should preload tiles into memory. preload_tiles -- port should preload tiles into memory.
scroll_amount -- scroll this amount when scroll_margin is reached.
scroll_margin -- port should scroll the display when the hero or cursor scroll_margin -- port should scroll the display when the hero or cursor
is this number of cells away from the edge of the window. is this number of cells away from the edge of the window.
splash_screen -- port should/should not display an opening splashscreen. splash_screen -- port should/should not display an opening splashscreen.

View File

@@ -1,4 +1,4 @@
/* SCCS Id: @(#)flag.h 3.4 2002/07/27 */ /* SCCS Id: @(#)flag.h 3.4 2002/08/22 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */ /* NetHack may be freely redistributed. See license for details. */
@@ -241,6 +241,7 @@ struct instance_flags {
int wc_fontsiz_status; /* font size for the status window */ int wc_fontsiz_status; /* font size for the status window */
int wc_fontsiz_menu; /* font size for the menu window */ int wc_fontsiz_menu; /* font size for the menu window */
int wc_fontsiz_text; /* font size for text windows */ int wc_fontsiz_text; /* font size for text windows */
int wc_scroll_amount; /* scroll this amount at scroll_margin */
int wc_scroll_margin; /* scroll map when this far from int wc_scroll_margin; /* scroll map when this far from
the edge */ the edge */
int wc_map_mode; /* specify map viewing options, mostly int wc_map_mode; /* specify map viewing options, mostly
@@ -249,12 +250,11 @@ struct instance_flags {
boolean wc_splash_screen; /* display an opening splash screen or not */ boolean wc_splash_screen; /* display an opening splash screen or not */
boolean wc_popup_dialog; /* put queries in pop up dialogs instead of boolean wc_popup_dialog; /* put queries in pop up dialogs instead of
in the message window */ in the message window */
boolean wc_large_font; /* draw in larger fonts (say, 12pt instead
of 9pt) */
boolean wc_eight_bit_input; /* allow eight bit input */ boolean wc_eight_bit_input; /* allow eight bit input */
boolean wc_mouse_support; /* allow mouse support */ boolean wc_mouse_support; /* allow mouse support */
boolean cmdassist; /* provide detailed assistance for some commands */ boolean cmdassist; /* provide detailed assistance for some commands */
boolean obsolete; /* obsolete options can point at this, it isn't used */
/* Items which belong in flags, but are here to allow save compatibility */ /* Items which belong in flags, but are here to allow save compatibility */
boolean lootabc; /* use "a/b/c" rather than "o/i/b" when looting */ boolean lootabc; /* use "a/b/c" rather than "o/i/b" when looting */
boolean showrace; /* show hero glyph by race rather than by role */ boolean showrace; /* show hero glyph by race rather than by role */
@@ -274,7 +274,7 @@ struct instance_flags {
#define hilite_pet wc_hilite_pet #define hilite_pet wc_hilite_pet
#define use_inverse wc_inverse #define use_inverse wc_inverse
#ifdef MAC_GRAPHICS_ENV #ifdef MAC_GRAPHICS_ENV
#define large_font wc_large_font #define large_font obsolete
#endif #endif
#ifdef MAC #ifdef MAC
#define popup_dialog wc_popup_dialog #define popup_dialog wc_popup_dialog

View File

@@ -157,9 +157,9 @@ extern NEARDATA struct window_procs windowprocs;
#define WC_FONTSIZ_MENU 0x100000L /* 21 supports specification of mnu win font */ #define WC_FONTSIZ_MENU 0x100000L /* 21 supports specification of mnu win font */
#define WC_FONTSIZ_TEXT 0x200000L /* 22 supports specification of txt win font */ #define WC_FONTSIZ_TEXT 0x200000L /* 22 supports specification of txt win font */
#define WC_SCROLL_MARGIN 0x400000L /* 23 supports setting scroll margin for map */ #define WC_SCROLL_MARGIN 0x400000L /* 23 supports setting scroll margin for map */
#define WC_SPLASH_SCREEN 0x800000L /* 24 supports setting scroll margin for map */ #define WC_SPLASH_SCREEN 0x800000L /* 24 supports display of splash screen */
#define WC_POPUP_DIALOG 0x1000000L /* 25 supports queries in pop dialogs */ #define WC_POPUP_DIALOG 0x1000000L /* 25 supports queries in pop dialogs */
#define WC_LARGE_FONT 0x2000000L /* 26 Port supports large font */ #define WC_SCROLL_AMOUNT 0x2000000L /* 26 scroll this amount at scroll margin */
#define WC_EIGHT_BIT_IN 0x4000000L /* 27 8-bit character input */ #define WC_EIGHT_BIT_IN 0x4000000L /* 27 8-bit character input */
#define WC_PERM_INVENT 0x8000000L /* 28 8-bit character input */ #define WC_PERM_INVENT 0x8000000L /* 28 8-bit character input */
#define WC_MAP_MODE 0x10000000L /* 29 map_mode option */ #define WC_MAP_MODE 0x10000000L /* 29 map_mode option */

View File

@@ -110,7 +110,7 @@ static struct Bool_Opt
#else #else
{"ignintr", (boolean *)0, FALSE, SET_IN_FILE}, {"ignintr", (boolean *)0, FALSE, SET_IN_FILE},
#endif #endif
{"large_font", &iflags.wc_large_font, FALSE, SET_IN_FILE}, /*WC*/ {"large_font", &iflags.obsolete, FALSE, SET_IN_FILE}, /* OBSOLETE */
{"legacy", &flags.legacy, TRUE, DISP_IN_GAME}, {"legacy", &flags.legacy, TRUE, DISP_IN_GAME},
{"lit_corridor", &flags.lit_corridor, FALSE, SET_IN_GAME}, {"lit_corridor", &flags.lit_corridor, FALSE, SET_IN_GAME},
{"lootabc", &iflags.lootabc, FALSE, SET_IN_GAME}, {"lootabc", &iflags.lootabc, FALSE, SET_IN_GAME},
@@ -294,6 +294,8 @@ static struct Comp_Opt
sizeof "teleport", SET_IN_GAME }, sizeof "teleport", SET_IN_GAME },
{ "scores", "the parts of the score list you wish to see", { "scores", "the parts of the score list you wish to see",
32, SET_IN_GAME }, 32, SET_IN_GAME },
{ "scroll_amount", "scroll the map this amount when scroll_margin is reached",
20, DISP_IN_GAME }, /*WC*/
{ "scroll_margin", "scroll map when this far from the edge", 20, DISP_IN_GAME }, /*WC*/ { "scroll_margin", "scroll map when this far from the edge", 20, DISP_IN_GAME }, /*WC*/
#ifdef MSDOS #ifdef MSDOS
{ "soundcard", "type of sound card to use", 20, SET_IN_FILE }, { "soundcard", "type of sound card to use", 20, SET_IN_FILE },
@@ -1866,6 +1868,16 @@ goodfruit:
} else if (negated) bad_negation(fullname, TRUE); } else if (negated) bad_negation(fullname, TRUE);
return; return;
} }
/* WINCAP
* scroll_amount:nn */
fullname = "scroll_amount";
if (match_optname(opts, fullname, sizeof("scroll_amount")-1, TRUE)) {
op = string_for_opt(opts, negated);
if ((negated && !op) || (!negated && op)) {
iflags.wc_scroll_amount = negated ? 1 : atoi(op);
} else if (negated) bad_negation(fullname, TRUE);
return;
}
/* WINCAP /* WINCAP
* scroll_margin:nn */ * scroll_margin:nn */
fullname = "scroll_margin"; fullname = "scroll_margin";
@@ -2759,6 +2771,10 @@ char *buf;
Sprintf(buf, "%d top/%d around%s", flags.end_top, Sprintf(buf, "%d top/%d around%s", flags.end_top,
flags.end_around, flags.end_own ? "/own" : ""); flags.end_around, flags.end_own ? "/own" : "");
} }
else if (!strcmp(optname, "scroll_amount")) {
if (iflags.wc_scroll_amount) Sprintf(buf, "%d",iflags.wc_scroll_amount);
else Strcpy(buf, defopt);
}
else if (!strcmp(optname, "scroll_margin")) { else if (!strcmp(optname, "scroll_margin")) {
if (iflags.wc_scroll_margin) Sprintf(buf, "%d",iflags.wc_scroll_margin); if (iflags.wc_scroll_margin) Sprintf(buf, "%d",iflags.wc_scroll_margin);
else Strcpy(buf, defopt); else Strcpy(buf, defopt);
@@ -3145,7 +3161,6 @@ struct wc_Opt wc_options[] = {
{"color", WC_COLOR}, {"color", WC_COLOR},
{"eight_bit_tty", WC_EIGHT_BIT_IN}, {"eight_bit_tty", WC_EIGHT_BIT_IN},
{"hilite_pet", WC_HILITE_PET}, {"hilite_pet", WC_HILITE_PET},
{"large_font", WC_LARGE_FONT}, /* now obsolete */
{"popup_dialog", WC_POPUP_DIALOG}, {"popup_dialog", WC_POPUP_DIALOG},
{"player_selection", WC_PLAYER_SELECTION}, {"player_selection", WC_PLAYER_SELECTION},
{"preload_tiles", WC_PRELOAD_TILES}, {"preload_tiles", WC_PRELOAD_TILES},
@@ -3170,6 +3185,7 @@ struct wc_Opt wc_options[] = {
{"font_status", WC_FONT_STATUS}, {"font_status", WC_FONT_STATUS},
{"font_text", WC_FONT_TEXT}, {"font_text", WC_FONT_TEXT},
{"map_mode", WC_MAP_MODE}, {"map_mode", WC_MAP_MODE},
{"scroll_amount", WC_SCROLL_AMOUNT},
{"scroll_margin", WC_SCROLL_MARGIN}, {"scroll_margin", WC_SCROLL_MARGIN},
{"splash_screen", WC_SPLASH_SCREEN}, {"splash_screen", WC_SPLASH_SCREEN},
{"vary_msgcount",WC_VARY_MSGCOUNT}, {"vary_msgcount",WC_VARY_MSGCOUNT},

View File

@@ -420,6 +420,7 @@ void onMSNHCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
( msg_data->y<(data->yPos+mcam) || ( msg_data->y<(data->yPos+mcam) ||
msg_data->y>(data->yPos+data->yPageSize-mcam) ); msg_data->y>(data->yPos+data->yPageSize-mcam) );
mcam += iflags.wc_scroll_amount;
/* get page size and center horizontally on x-position */ /* get page size and center horizontally on x-position */
if( scroll_x ) { if( scroll_x ) {
if( data->xPageSize<=2*mcam ) { if( data->xPageSize<=2*mcam ) {

View File

@@ -16,5 +16,6 @@ int mswin_map_mode(HWND hWnd, int mode);
#define ROGUE_LEVEL_MAP_MODE MAP_MODE_ASCII12x16 #define ROGUE_LEVEL_MAP_MODE MAP_MODE_ASCII12x16
#define DEF_CLIPAROUND_MARGIN 5 #define DEF_CLIPAROUND_MARGIN 5
#define DEF_CLIPAROUND_AMOUNT 1
#endif /* MSWINMapWindow_h */ #endif /* MSWINMapWindow_h */

View File

@@ -65,7 +65,7 @@ COLORREF message_fg_color = RGB(0xFF, 0xFF, 0xFF);
struct window_procs mswin_procs = { struct window_procs mswin_procs = {
"MSWIN", "MSWIN",
WC_COLOR|WC_HILITE_PET|WC_ALIGN_MESSAGE|WC_ALIGN_STATUS| WC_COLOR|WC_HILITE_PET|WC_ALIGN_MESSAGE|WC_ALIGN_STATUS|
WC_INVERSE|WC_SCROLL_MARGIN|WC_MAP_MODE| WC_INVERSE|WC_SCROLL_AMOUNT|WC_SCROLL_MARGIN|WC_MAP_MODE|
WC_FONT_MESSAGE|WC_FONT_STATUS|WC_FONT_MENU|WC_FONT_TEXT| WC_FONT_MESSAGE|WC_FONT_STATUS|WC_FONT_MENU|WC_FONT_TEXT|
WC_FONTSIZ_MESSAGE|WC_FONTSIZ_STATUS|WC_FONTSIZ_MENU|WC_FONTSIZ_TEXT| WC_FONTSIZ_MESSAGE|WC_FONTSIZ_STATUS|WC_FONTSIZ_MENU|WC_FONTSIZ_TEXT|
WC_TILE_WIDTH|WC_TILE_HEIGHT|WC_TILE_FILE|WC_VARY_MSGCOUNT| WC_TILE_WIDTH|WC_TILE_HEIGHT|WC_TILE_FILE|WC_VARY_MSGCOUNT|
@@ -187,6 +187,7 @@ void mswin_init_nhwindows(int* argc, char** argv)
if( iflags.wc_align_message==0 ) iflags.wc_align_message = ALIGN_TOP; if( iflags.wc_align_message==0 ) iflags.wc_align_message = ALIGN_TOP;
if( iflags.wc_align_status==0 ) iflags.wc_align_status = ALIGN_BOTTOM; if( iflags.wc_align_status==0 ) iflags.wc_align_status = ALIGN_BOTTOM;
if( iflags.wc_scroll_margin==0 ) iflags.wc_scroll_margin = DEF_CLIPAROUND_MARGIN; if( iflags.wc_scroll_margin==0 ) iflags.wc_scroll_margin = DEF_CLIPAROUND_MARGIN;
if( iflags.wc_scroll_amount==0 ) iflags.wc_scroll_amount = DEF_CLIPAROUND_AMOUNT;
if( iflags.wc_tile_width==0 ) iflags.wc_tile_width = TILE_X; if( iflags.wc_tile_width==0 ) iflags.wc_tile_width = TILE_X;
if( iflags.wc_tile_height==0 ) iflags.wc_tile_height = TILE_Y; if( iflags.wc_tile_height==0 ) iflags.wc_tile_height = TILE_Y;
@@ -216,7 +217,8 @@ void mswin_init_nhwindows(int* argc, char** argv)
WC_HILITE_PET | WC_HILITE_PET |
WC_ALIGN_MESSAGE | WC_ALIGN_MESSAGE |
WC_ALIGN_STATUS | WC_ALIGN_STATUS |
WC_SCROLL_MARGIN | WC_SCROLL_AMOUNT |
WC_SCROLL_MARGIN |
WC_MAP_MODE | WC_MAP_MODE |
WC_FONT_MESSAGE | WC_FONT_MESSAGE |
WC_FONT_STATUS | WC_FONT_STATUS |
@@ -1828,6 +1830,11 @@ void mswin_preference_update(const char *pref)
return; return;
} }
if( stricmp( pref, "scroll_amount")==0 ) {
mswin_cliparound(u.ux, u.uy);
return;
}
if( stricmp( pref, "scroll_margin")==0 ) { if( stricmp( pref, "scroll_margin")==0 ) {
mswin_cliparound(u.ux, u.uy); mswin_cliparound(u.ux, u.uy);
return; return;