Add "classic_hud" option. Defaults to false. Removes hp bar, monster list. Added some macros to reduce copy/paste in initfile.cc. Renamed mlist_allow_inline to mlist_allow_alternate_layout so the sense is more accurate.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@4092 c06c8d41-db1a-0410-9941-cceddc491573
IXW2IM5ITYDCXDB3ORDDVAR5XUSPVQ3BWLP3Q6TRXNTIKGMZTHXAC
ZKN272TWRE5GNCJHO6VE7KARVLEIPE6P27TELZKLVIILMCW54MUQC
CWPA3Q5BG7KTTY6GX7CCS26PWC4UHJ47PUCMJX5BOJIP3FSTP2BQC
NY5JJY33IHF5EKTLPDFVYTN3PFNKV4A3MAH5MRQ3AWH53L2HFIQQC
HC2I3WK2Y2CHHLDCM4Q4OQQUH634FX42ULNJ2OXKRYKISKXRRFJAC
Q263OF72GJOH2VQHGCF5IYZ5UHKV5DNX3J3WTCEONPN3WGGNZOUQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
PUZ35HA537R2HZPB7SZ5KLHDOR2DXNQG7CM2UQ7LIHF55GR7LN5QC
QJR4HINDRTZC7FMV6V27HBPBSLCAKBGPSMH34WPVNPRPKWXVVEOAC
3VWSZUGYL36SO5AOZRASGK3VHFCFZUGGCGRT3R7BZB36IZPN7OSQC
4UQBOVCMAMNCCF6PPX222H6JJO7MPYOKKC2NBKMVYIT5R5FOACNAC
EOMCPVNQLX3IMLC46EAO67DPBH5KEG2FQTPBLGU62HIRWA3UQ7XQC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC
UKYGZDI6PYZPXDACCQGVPHANUP5ADCSNROOZIE7LYIZQWSNFHJZAC
O6ZMFKDI3XO2SWPNEYHIPYFDWJR4TVDP5BAATK6LVCVETQID6E7AC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
SIKFXNXSAMU6IYRGDG6SWP3LOX6SEE7PDFA7RVQAGG2SLWQ72D2QC
43BZJ22AMZ4562BBF325ABM5W7GLUT3MDUOHAQ5QJPPQFGTBISKAC
LCCFD6BLLDJO3PVPKKJ7YJ4PQUHLUKQBWRCYRH26UVMOTYZPJQRQC
O2GH2BHUL4XXIIJSMKNV2NIC4KQACE6HLMUL4KEUDFNFEAGMZSZAC
BFYHDL4EHSPKKC6EPKDRPESHYAA2WFKC6RXQIRRTSSTF3Z2QPVCAC
K2MLPJIAXXZRWEWZCNSGICCBNIU2WAAPT7SPIMOH7FLLTOB4QFRAC
AMBBZGB4EP4MA2ILKQSAY4O2XQAIH673JHCDQ6N4MBGL2MAZGXNAC
AXQJOPTECRU3ECV3ICDUR6SGBIOIZT5HIOSJ77MRLF5ECGOITMDQC
72CQFK27NR37P2WQ32U4PEXXKMRIO7JEMJN2ZCPNVPZMT7UPFJJAC
WYMN37VYSETF56RTTJ45VMB2YS4OUUKRL2JNWJSUKNLBFGGGECNQC
GSPHLNMEIUY5KSOV2LPKQLGJVBPGHXZENIXSJELA6ZBT74F5ZGRQC
WL5WZXFJ6TONUQRSHUY4GQ5USU47ILWNN5X2JDQZO4CRJJZSRQIAC
4GFCF6N3MZSCHUB77Z3SQYJ3FYR5N3VBW2CGWANLJ74O5FEQH3CQC
GSQ72ULBSL6WBJZUB3GJKAPQDXZIQV7B2TDBA5OP2WVGHVJMCQFQC
6OPWKN5LKYBZQLD25BGC4T3P5KXCJM6KNLOEQCPMLKYPY3UATKEQC
ASFH3NFXSJ6AWVLIBJNTIC35HCOSHY42YQG2ELGPEYAULZUIRRRQC
6BO27PEAAOYJEOL5F5RWDMSLU7WUYSKC4LCANVIDMRZRMZWCEYUAC
45QV77UI6QFW4234P365LD3FGJYRVWTT5455DPB324NG2NFQMKTQC
74LQ7JXVLAFSHLI7LCBKFX47CNTYSKGUQSXNX5FCIUIGCC2JTR3QC
CAHE52HL2ZGRJPBYZ3DS4BVKUD2XC7N3SG25TGG7JGHGJDST4P3QC
TV3ZC6WOZKSQQJQN26JIVKCHK6UK7WMDBYZDUYRWEAZ4JB4YVNAAC
TR4NPGNO5QNNRJNVMNSUEO5QLT37HCXXDOBKXCB5XWXRQNAJ5SHAC
IIN7AVA6JYRBXH6ZYRR7BY7TV6PW7ANAQ2A3PD55FKBKKQFEEF2AC
3D6NWJ44UYHLZMD3BOQIWXJUEGITAVCHK6Z2WWDQONVQC4HSBRXQC
UPJVSMMMHGRDUIJG4MZX6IBLQ4ODBF5Z3PF3RHDYTSAEOCVDZM5AC
D77K7ISUWRLGNSQGYH5P2KEJZCNYQHDZC5AMLSKTXVBIRNG6F5KQC
VNIAJEGE3PYE6F6EAMCQDWMAS52EQTKJUPAFXK7ARCITZ326WTTQC
TJISAZK5RWKXIIC5UTQNY4KT3UX3ASGBUQQNWZ7ZDULPRYFRZXQQC
547JREUJXTZNYVGHNNAET5F5O5JYYGNTDQB6ABZNT7YX5EY64OHAC
3YK4G4IQBXW63HPGU5WRTV6L2FCMKAK4DOTCHFK2FNSB5B3Y3PVQC
F2ZJ55CL3T66DFM34BQWCJNHIT4XJFCGTWTA5KESV6NHWFLTGUYAC
SKV6JBDAWUWTFECFSQARSNA3DDPUFCR7N3T7D5J35NYTEDMXLP3QC
5RK245FAGZFCDDYG4AZAXSC7JPVIJG4DSAVAKHWWVBUNGICHYNJQC
JM6GKZ6VMX6FNVOZIDXIV22HGX7YESMIFZFE6EEQVCMFJIEA3FNAC
EAQJ2VSSFA3MKDR7ELP7M5VHTHGN2DCBPPZHXRAXDRKKAX2R6SHQC
STQDS62PD6PCLYBAB7LPYTG47WMBJP3FIJL55UHC3XFDPGERC3UQC
DGB7DKTR6OEQEMOOF3MAHDT4PAPKZ54Y33MWYVD7XIOESPFAXHQQC
V6REAY6RCAG2QQ4BO54GHYOVTNCYHTLERJCIZJPSANXFBINZOTXAC
RVST2QHYJ757ZHK4AUJ5NGPDZ44AD6RVFVXYPKQIBJXZBDNUCHXQC
EHSY6DVGUMI6C67WKET3GDJVLWJWGYBYQONNDK5JVT7BCTHBEZVAC
if (mlistsz.y < Options.mlist_min_height)
_increment(mlistsz.y, leftover_rightcol_y(), Options.mlist_min_height);
_increment(msgsz.y, leftover_y(), MSG_MAX_HEIGHT);
_increment(mlistsz.y, leftover_rightcol_y(), INT_MAX);
if (Options.classic_hud)
{
mlistsz.y = 0;
_increment(msgsz.y, leftover_y(), MSG_MAX_HEIGHT);
}
else
{
if (mlistsz.y < Options.mlist_min_height)
_increment(mlistsz.y, leftover_rightcol_y(), Options.mlist_min_height);
_increment(msgsz.y, leftover_y(), MSG_MAX_HEIGHT);
_increment(mlistsz.y, leftover_rightcol_y(), INT_MAX);
}
#define BOOL_OPTION_NAMED(_opt_str, _opt_var) \
if (key == _opt_str) do { \
this->_opt_var = _read_bool(field, this->_opt_var); \
} while (false)
#define BOOL_OPTION(_opt) BOOL_OPTION_NAMED(#_opt, _opt)
#define COLOUR_OPTION_NAMED(_opt_str, _opt_var) \
if (key == _opt_str) do { \
const int col = str_to_colour( field ); \
if (col != -1) { \
this->_opt_var = col; \
} else { \
/*fprintf( stderr, "Bad %s -- %s\n", key, field.c_str() );*/ \
crawl_state.add_startup_error( \
make_stringf("Bad %s -- %s\n", \
key.c_str(), field.c_str())); \
} \
} while (false)
#define COLOUR_OPTION(_opt) COLOUR_OPTION_NAMED(#_opt, _opt)
#define CURSES_OPTION_NAMED(_opt_str, _opt_var) \
if (key == _opt_str) do { \
this->_opt_var = curses_attribute(field); \
} while (false)
#define CURSES_OPTION(_opt) CURSES_OPTION_NAMED(#_opt, _opt)
else if (key == "use_old_selection_order")
{
// use old order of species/classes on selection screen?
use_old_selection_order = _read_bool( field, use_old_selection_order );
}
else if (key == "default_autopickup")
{
// should autopickup default to on or off?
autopickup_on = _read_bool( field, autopickup_on );
}
else if (key == "default_autoprayer")
{
// should autoprayer default to on or off?
autoprayer_on = _read_bool( field, autoprayer_on );
}
else if (key == "show_inventory_weights")
{
// should weights be shown on inventory items?
show_inventory_weights = _read_bool( field, show_inventory_weights );
}
else if (key == "suppress_startup_errors")
{
suppress_startup_errors = _read_bool( field, suppress_startup_errors );
}
else if (key == "clean_map")
{
// removes monsters/clouds from map
clean_map = _read_bool( field, clean_map );
}
else if (key == "colour_map" || key == "color_map")
{
// colour-codes play-screen map
colour_map = _read_bool( field, colour_map );
}
else BOOL_OPTION(use_old_selection_order);
else BOOL_OPTION_NAMED("default_autopickup", autopickup_on);
else BOOL_OPTION_NAMED("default_autoprayer", autoprayer_on);
else BOOL_OPTION(show_inventory_weights);
else BOOL_OPTION(suppress_startup_errors);
else BOOL_OPTION(clean_map);
else BOOL_OPTION(colour_map);
else BOOL_OPTION_NAMED("color_map", colour_map); // common misspelling :)
}
else if (key == "easy_quit_item_lists"
|| key == "easy_quit_item_prompts")
{
// allow aborting of item lists with space
easy_quit_item_prompts = _read_bool( field,
easy_quit_item_prompts );
}
else if (key == "easy_open")
{
// automatic door opening with movement
easy_open = _read_bool( field, easy_open );
}
else if (key == "easy_armor"
|| key == "easy_armour"
|| key == "easy_unequip")
{
// automatic removal of armour when dropping
easy_unequip = _read_bool( field, easy_unequip );
}
else if (key == "easy_butcher")
{
// automatic knife switching
easy_butcher = _read_bool( field, easy_butcher );
}
else if (key == "always_confirm_butcher")
{
always_confirm_butcher = _read_bool( field, always_confirm_butcher );
else if (key == "list_rotten")
{
list_rotten = _read_bool( field, list_rotten );
}
else BOOL_OPTION(easy_quit_item_prompts);
else BOOL_OPTION_NAMED("easy_quit_item_lists", easy_quit_item_prompts);
else BOOL_OPTION(easy_open);
else BOOL_OPTION(easy_unequip);
else BOOL_OPTION_NAMED("easy_armour", easy_unequip);
else BOOL_OPTION_NAMED("easy_armor", easy_unequip);
else BOOL_OPTION(easy_butcher);
else BOOL_OPTION(always_confirm_butcher);
else BOOL_OPTION(list_rotten);
}
else if (key == "background")
{
// change background colour
// Experimental! This may look really bad!
const int col = str_to_colour( field );
if (col != -1)
background = col;
else
fprintf( stderr, "Bad colour -- %s\n", field.c_str() );
else if (key == "detected_item_colour")
{
const int col = str_to_colour( field );
if (col != -1)
detected_item_colour = col;
else
fprintf( stderr, "Bad detected_item_colour -- %s\n",
field.c_str());
}
else if (key == "detected_monster_colour")
{
const int col = str_to_colour( field );
if (col != -1)
detected_monster_colour = col;
else
fprintf( stderr, "Bad detected_monster_colour -- %s\n",
field.c_str());
}
else COLOUR_OPTION(background);
else COLOUR_OPTION(detected_item_colour);
else COLOUR_OPTION(detected_monster_colour);
else if (key == "friend_brand")
{
// Use curses attributes to mark friend
// Some may look bad on some terminals.
// As a suggestion, try "rxvt -rv -fn 10x20" under Un*xes
friend_brand = curses_attribute(field);
}
else if (key == "neutral_brand")
{
neutral_brand = curses_attribute(field);
}
else if (key == "stab_brand")
{
stab_brand = curses_attribute(field);
}
else if (key == "may_stab_brand")
{
may_stab_brand = curses_attribute(field);
}
else if (key == "stair_item_brand")
{
feature_item_brand = curses_attribute(field);
}
else if (key == "trap_item_brand")
{
trap_item_brand = curses_attribute(field);
}
else if (key == "no_dark_brand")
{
// This is useful for terms where dark grey does
// not have standout modes (since it's black on black).
// This option will use light-grey instead in these cases.
no_dark_brand = _read_bool( field, no_dark_brand );
}
else if (key == "heap_brand")
{
// See friend_brand option upstairs. no_dark_brand applies
// here as well.
heap_brand = curses_attribute(field);
}
else if (key == "status_caption_colour")
{
const int col = str_to_colour( field );
if (col != -1)
status_caption_colour = col;
else
crawl_state.add_startup_error(
make_stringf("Bad status_caption_colour -- %s\n", field.c_str()));
}
else CURSES_OPTION(friend_brand);
else CURSES_OPTION(neutral_brand);
else CURSES_OPTION(stab_brand);
else CURSES_OPTION(may_stab_brand);
else CURSES_OPTION_NAMED("stair_item_brand", feature_item_brand);
else CURSES_OPTION(trap_item_brand);
// This is useful for terms where dark grey does
// not have standout modes (since it's black on black).
// This option will use light-grey instead in these cases.
else BOOL_OPTION(no_dark_brand);
// no_dark_brand applies here as well.
else CURSES_OPTION(heap_brand);
else COLOUR_OPTION(status_caption_colour);
}
else if (key == "random_pick")
{
// randomly generate character
random_pick = _read_bool( field, random_pick );
}
else if (key == "remember_name")
{
remember_name = _read_bool( field, remember_name );
else if (key == "show_turns")
{
show_turns = _read_bool( field, show_turns );
}
else if (key == "show_beam")
{
show_beam = _read_bool( field, show_beam );
}
else BOOL_OPTION(show_turns);
else BOOL_OPTION(show_beam);
else if (key == "auto_list")
{
auto_list = _read_bool( field, auto_list );
}
else BOOL_OPTION(auto_list);
else if (key == "mlist_force_inline")
{
mlist_force_inline = _read_bool(field, mlist_force_inline);
}
else if (key == "view_lock_x")
{
view_lock_x = _read_bool(field, view_lock_x);
}
else if (key == "view_lock_y")
{
view_lock_y = _read_bool(field, view_lock_y);
}
else BOOL_OPTION(mlist_allow_alternate_layout);
else BOOL_OPTION(classic_hud);
else BOOL_OPTION(view_lock_x);
else BOOL_OPTION(view_lock_y);
else if (key == "center_on_scroll")
{
center_on_scroll = _read_bool(field, center_on_scroll);
}
else if (key == "symmetric_scroll")
{
symmetric_scroll = _read_bool(field, symmetric_scroll);
}
else BOOL_OPTION(center_on_scroll);
else BOOL_OPTION(symmetric_scroll);
}
else if (key == "note_skill_max")
{
note_skill_max = _read_bool( field, note_skill_max );
}
else if (key == "note_all_spells")
{
note_all_spells = _read_bool( field, note_all_spells );
}
else if (key == "delay_message_clear")
{
delay_message_clear = _read_bool( field, delay_message_clear );
else if (key == "pickup_thrown")
{
pickup_thrown = _read_bool(field, pickup_thrown);
}
else if (key == "pickup_dropped")
{
pickup_dropped = _read_bool(field, pickup_dropped);
}
else BOOL_OPTION(pickup_thrown);
else BOOL_OPTION(pickup_dropped);
else if (key == "use_fake_cursor")
{
use_fake_cursor = _read_bool(field, use_fake_cursor);
}
else if (key == "macro_meta_entry")
{
macro_meta_entry = _read_bool(field, macro_meta_entry);
}
else BOOL_OPTION(use_fake_cursor);
else BOOL_OPTION(macro_meta_entry);
else if (key == "classic_item_colours")
{
classic_item_colours = _read_bool(field, classic_item_colours);
}
else if (key == "item_colour" || key == "item_color")
{
item_colour = _read_bool(field, item_colour);
}
else if (key == "easy_exit_menu")
{
easy_exit_menu = _read_bool(field, easy_exit_menu);
}
else if (key == "dos_use_background_intensity")
{
dos_use_background_intensity =
_read_bool(field, dos_use_background_intensity);
}
else BOOL_OPTION(classic_item_colours);
else BOOL_OPTION(item_colour);
else BOOL_OPTION_NAMED("item_color", item_colour);
else BOOL_OPTION(easy_exit_menu);
else BOOL_OPTION(dos_use_background_intensity);
}
else if (key == "explore_greedy")
{
explore_greedy = _read_bool(field, explore_greedy);
}
else if (key == "explore_improved")
{
explore_improved = _read_bool(field, explore_improved);
}
else if (key == "trap_prompt")
{
trap_prompt = _read_bool(field, trap_prompt);
else if (key == "menu_colour_prefix_class" ||
key == "menu_color_prefix_class")
{
menu_colour_prefix_class = _read_bool(field, menu_colour_prefix_class);
}
else if (key == "menu_colour_prefix_id" ||
key == "menu_color_prefix_id")
{
menu_colour_prefix_id = _read_bool(field, menu_colour_prefix_id);
}
else BOOL_OPTION(menu_colour_prefix_class);
else BOOL_OPTION_NAMED("menu_color_prefix_class", menu_colour_prefix_class);
else BOOL_OPTION(menu_colour_prefix_id);
else BOOL_OPTION_NAMED("menu_color_prefix_id", menu_colour_prefix_id);
else if (key == "level_map_title")
{
level_map_title = _read_bool(field, level_map_title);
}
else if (key == "target_zero_exp")
{
target_zero_exp = _read_bool(field, target_zero_exp);
}
else if (key == "target_oos")
{
target_oos = _read_bool(field, target_oos);
}
else if (key == "target_los_first")
{
target_los_first = _read_bool(field, target_los_first);
}
else BOOL_OPTION(level_map_title);
else BOOL_OPTION(target_zero_exp);
else BOOL_OPTION(target_oos);
else BOOL_OPTION(target_los_first);
}
else if (key == "tile_title_screen")
{
tile_title_screen = _read_bool(field, tile_title_screen);
else if (key == "use_dos_char")
{
use_dos_char = _read_bool( field, use_dos_char );
}
else BOOL_OPTION(use_dos_char);
mlist_force_inline = false
By default, if the terminal size is large enough, the monster
list will be placed to the left of the view. If this option is
set to true, the monster list will only appear between the
status hud and the message pane.
mlist_allow_alternate_layout = false
If the terminal size is large enough, allow the monster list
to be placed to the left of the view. By default, the monster
list will only appear beween the HUD and the message pane.
classic_hud = false
Remove the Health and Magic bars and the monster list, for a
more 0.3-like HUD display.