From 693e66a1261407a604bf612073837bfde765872f Mon Sep 17 00:00:00 2001 From: Delta Date: Mon, 7 Feb 2022 17:05:55 +0500 Subject: [PATCH 1/3] Add an option to display absolute overmap coordinate --- src/options.cpp | 9 +++++++++ src/overmap_ui.cpp | 44 ++++++++++++++++++++++++++++++++------------ 2 files changed, 41 insertions(+), 12 deletions(-) diff --git a/src/options.cpp b/src/options.cpp index e764f8689d54..e44e5c302dee 100644 --- a/src/options.cpp +++ b/src/options.cpp @@ -1478,6 +1478,15 @@ void options_manager::add_options_interface() { { "metric", translate_marker( "Metric" ) }, { "imperial", translate_marker( "Imperial" ) } }, "imperial" ); + add( + "OVERMAP_COORDINATE_FORMAT", + "interface", + translate_marker( "Overmap coordinates format" ), + translate_marker( "Are overmap coordinates displayed using relative format like 1'158, 2'56 or absolute format like 338, 416?" ), + { { "relative", translate_marker( "Relative" ) }, { "absolute", translate_marker( "Absolute" ) } }, + "absolute" + ); + add( "24_HOUR", "interface", translate_marker( "Time format" ), translate_marker( "12h: AM/PM, e.g. 7:31 AM - Military: 24h Military, e.g. 0731 - 24h: Normal 24h, e.g. 7:31" ), //~ 12h time, e.g. 11:59pm diff --git a/src/overmap_ui.cpp b/src/overmap_ui.cpp index 67f564367832..37896e87d16b 100644 --- a/src/overmap_ui.cpp +++ b/src/overmap_ui.cpp @@ -670,9 +670,6 @@ static tripoint_abs_omt show_notes_manager( const tripoint_abs_omt &origin ) entry_to_select = i; } const std::string direction_str = direction_name_short( direction_from( p_player, note.p ) ); - point_abs_om abs_om; - tripoint_om_omt rel_omt; - std::tie( abs_om, rel_omt ) = project_remain( note.p ); const std::string location_desc = overmap_buffer.get_description_at( project_to( note.p ) ); @@ -704,12 +701,29 @@ static tripoint_abs_omt show_notes_manager( const tripoint_abs_omt &origin ) } } + std::string coord_string; + + if( get_option( "OVERMAP_COORDINATE_FORMAT" ) == "relative" ) { + point_abs_om abs_om; + tripoint_om_omt rel_omt; + std::tie( abs_om, rel_omt ) = project_remain( note.p ); + + coord_string = string_format( + _( "LEVEL %i, %d'%d, %d'%d: %s (Distance: %d %s) %s" ), + rel_omt.z(), abs_om.x(), rel_omt.x(), abs_om.y(), rel_omt.y(), location_desc, note.dist_from_pl, + trim_whitespaces( direction_str ), is_dangerous ? _( "DANGEROUS AREA!" ) : "" ); + } else { + point_abs_omt abs_omt = note.p.xy(); + + coord_string = string_format( + _( "LEVEL %i, %d, %d: %s (Distance: %d %s) %s" ), + note.p.z(), abs_omt.x(), abs_omt.y(), location_desc, note.dist_from_pl, + trim_whitespaces( direction_str ), is_dangerous ? _( "DANGEROUS AREA!" ) : "" ); + } + nmenu.addentry_desc( string_format( "[%s] %s", colorize( note.symbol, note.col ), note.text ), - string_format( - _( "LEVEL %i, %d'%d, %d'%d: %s (Distance: %d %s) %s" ), - rel_omt.z(), abs_om.x(), rel_omt.x(), abs_om.y(), rel_omt.y(), location_desc, note.dist_from_pl, - trim_whitespaces( direction_str ), is_dangerous ? _( "DANGEROUS AREA!" ) : "" ) ); + coord_string ); nmenu.entries[i].ctxt = string_format( "%s% 4d %s", dr_short, note.dist_from_pl, direction_str ); @@ -1423,11 +1437,17 @@ static void draw_om_sidebar( } point_abs_omt abs_omt = center.xy(); - point_abs_om om; - point_om_omt omt; - std::tie( om, omt ) = project_remain( abs_omt ); - mvwprintz( wbar, point( 1, getmaxy( wbar ) - 1 ), c_red, - _( "LEVEL %i, %d'%d, %d'%d" ), center.z(), om.x(), omt.x(), om.y(), omt.y() ); + + if( get_option( "OVERMAP_COORDINATE_FORMAT" ) == "relative" ) { + point_abs_om om; + point_om_omt omt; + std::tie( om, omt ) = project_remain( abs_omt ); + mvwprintz( wbar, point( 1, getmaxy( wbar ) - 1 ), c_red, + _( "LEVEL %i, %d'%d, %d'%d" ), center.z(), om.x(), omt.x(), om.y(), omt.y() ); + } else { + mvwprintz( wbar, point( 1, getmaxy( wbar ) - 1 ), c_red, + _( "LEVEL %i, %d, %d" ), center.z(), abs_omt.x(), abs_omt.y() ); + } wnoutrefresh( wbar ); } From 4877fb1d6a983fabaf4e4e82e65a8f762a2898b4 Mon Sep 17 00:00:00 2001 From: Delta Date: Mon, 7 Feb 2022 18:36:44 +0500 Subject: [PATCH 2/3] Abstract away the copypaste into a function --- src/overmap_ui.cpp | 52 ++++++++++++++++++---------------------------- 1 file changed, 20 insertions(+), 32 deletions(-) diff --git a/src/overmap_ui.cpp b/src/overmap_ui.cpp index 37896e87d16b..ad426155f4de 100644 --- a/src/overmap_ui.cpp +++ b/src/overmap_ui.cpp @@ -182,6 +182,19 @@ struct grids_draw_data { std::unordered_map, char>> list_inactive; }; +static std::string fmt_omt_coords( const tripoint_abs_omt &coord ) +{ + if( get_option( "OVERMAP_COORDINATE_FORMAT" ) == "relative" ) { + point_abs_om abs_coord; + tripoint_om_omt rel_coord; + std::tie( abs_coord, rel_coord ) = project_remain( coord ); + + return string_format( "%d'%d, %d'%d", abs_coord.x(), rel_coord.x(), abs_coord.y(), rel_coord.y() ); + } else { + return string_format( "%d, %d", coord.x(), coord.y() ); + } +} + static void create_note( const tripoint_abs_omt &curs ); // {note symbol, note color, offset to text} @@ -701,29 +714,13 @@ static tripoint_abs_omt show_notes_manager( const tripoint_abs_omt &origin ) } } - std::string coord_string; - - if( get_option( "OVERMAP_COORDINATE_FORMAT" ) == "relative" ) { - point_abs_om abs_om; - tripoint_om_omt rel_omt; - std::tie( abs_om, rel_omt ) = project_remain( note.p ); - - coord_string = string_format( - _( "LEVEL %i, %d'%d, %d'%d: %s (Distance: %d %s) %s" ), - rel_omt.z(), abs_om.x(), rel_omt.x(), abs_om.y(), rel_omt.y(), location_desc, note.dist_from_pl, - trim_whitespaces( direction_str ), is_dangerous ? _( "DANGEROUS AREA!" ) : "" ); - } else { - point_abs_omt abs_omt = note.p.xy(); - - coord_string = string_format( - _( "LEVEL %i, %d, %d: %s (Distance: %d %s) %s" ), - note.p.z(), abs_omt.x(), abs_omt.y(), location_desc, note.dist_from_pl, - trim_whitespaces( direction_str ), is_dangerous ? _( "DANGEROUS AREA!" ) : "" ); - } - nmenu.addentry_desc( string_format( "[%s] %s", colorize( note.symbol, note.col ), note.text ), - coord_string ); + string_format( + _( "LEVEL %i, %s: %s (Distance: %d %s) %s" ), + note.p.z(), + fmt_omt_coords( note.p ), location_desc, note.dist_from_pl, + trim_whitespaces( direction_str ), is_dangerous ? _( "DANGEROUS AREA!" ) : "" ) ); nmenu.entries[i].ctxt = string_format( "%s% 4d %s", dr_short, note.dist_from_pl, direction_str ); @@ -1436,18 +1433,9 @@ static void draw_om_sidebar( print_hint( "QUIT" ); } - point_abs_omt abs_omt = center.xy(); + mvwprintz( wbar, point( 1, getmaxy( wbar ) - 1 ), c_red, _( "LEVEL %i, %s" ), center.z(), + fmt_omt_coords( center ) ); - if( get_option( "OVERMAP_COORDINATE_FORMAT" ) == "relative" ) { - point_abs_om om; - point_om_omt omt; - std::tie( om, omt ) = project_remain( abs_omt ); - mvwprintz( wbar, point( 1, getmaxy( wbar ) - 1 ), c_red, - _( "LEVEL %i, %d'%d, %d'%d" ), center.z(), om.x(), omt.x(), om.y(), omt.y() ); - } else { - mvwprintz( wbar, point( 1, getmaxy( wbar ) - 1 ), c_red, - _( "LEVEL %i, %d, %d" ), center.z(), abs_omt.x(), abs_omt.y() ); - } wnoutrefresh( wbar ); } From f58c4b43117ddb2ab94497a2478c5405a02a139f Mon Sep 17 00:00:00 2001 From: Delta Date: Wed, 16 Feb 2022 12:46:17 +0500 Subject: [PATCH 3/3] Rename relative coordinate system into subdivided as per Coolthulhu's suggestion. --- src/options.cpp | 4 ++-- src/overmap_ui.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/options.cpp b/src/options.cpp index e44e5c302dee..59d913eafda2 100644 --- a/src/options.cpp +++ b/src/options.cpp @@ -1482,8 +1482,8 @@ void options_manager::add_options_interface() "OVERMAP_COORDINATE_FORMAT", "interface", translate_marker( "Overmap coordinates format" ), - translate_marker( "Are overmap coordinates displayed using relative format like 1'158, 2'56 or absolute format like 338, 416?" ), - { { "relative", translate_marker( "Relative" ) }, { "absolute", translate_marker( "Absolute" ) } }, + translate_marker( "Are overmap coordinates displayed using absolute format like 338, 416 or subdivided into two components like 1'158, 2'56?" ), + { { "subdivided", translate_marker( "Subdivided" ) }, { "absolute", translate_marker( "Absolute" ) } }, "absolute" ); diff --git a/src/overmap_ui.cpp b/src/overmap_ui.cpp index ad426155f4de..67c4d35ce84b 100644 --- a/src/overmap_ui.cpp +++ b/src/overmap_ui.cpp @@ -184,7 +184,7 @@ struct grids_draw_data { static std::string fmt_omt_coords( const tripoint_abs_omt &coord ) { - if( get_option( "OVERMAP_COORDINATE_FORMAT" ) == "relative" ) { + if( get_option( "OVERMAP_COORDINATE_FORMAT" ) == "subdivided" ) { point_abs_om abs_coord; tripoint_om_omt rel_coord; std::tie( abs_coord, rel_coord ) = project_remain( coord );