The Battle for Wesnoth  1.19.7+dev
Classes | Typedefs | Enumerations | Functions | Variables
help Namespace Reference

Classes

struct  help_manager
 The help implementation caches data parsed from the game_config. More...
 
class  topic_generator
 Generate a topic text on the fly. More...
 
class  text_topic_generator
 
class  topic_text
 The text displayed in a topic. More...
 
struct  topic
 A topic contains a title, an id and some text. More...
 
struct  section
 A section contains topics and sections along with title and ID. More...
 
class  has_id
 To be used as a function object to locate sections and topics with a specified ID. More...
 
class  title_less
 To be used as a function object when sorting topic lists on the title. More...
 
class  section_less
 To be used as a function object when sorting section lists on the title. More...
 
class  string_less
 
struct  parse_error
 Thrown when the help system fails to parse something. More...
 
struct  terrain_movement_info
 
class  terrain_topic_generator
 
class  unit_topic_generator
 

Typedefs

typedef std::list< sectionsection_list
 
typedef std::list< topictopic_list
 
typedef t_translation::ter_list::const_iterator ter_iter
 
typedef std::pair< std::string, std::string > trait_data
 

Enumerations

enum  UNIT_DESCRIPTION_TYPE { FULL_DESCRIPTION , NO_DESCRIPTION , HIDDEN_BUT_SHOW_MACROS }
 

Functions

void show_with_toplevel (const section &toplevel, const std::string &show_topic="")
 Open a help dialog using a specified toplevel. More...
 
void show_unit_description (const unit &u)
 
void show_terrain_description (const terrain_type &t)
 
void show_unit_description (const unit_type &t)
 
std::unique_ptr< help_managerensure_cache_lifecycle ()
 Helper function for any of the show_help functions to control the cache's lifecycle; can also be used by any other caller that wants to ensure the cache is reused over multiple show_help calls. More...
 
void show_help (const std::string &show_topic)
 Open the help browser, show topic with id show_topic. More...
 
void show_unit_help (const std::string &show_topic, bool has_variations, bool hidden)
 Open the help browser, show unit with id unit_id. More...
 
void show_terrain_help (const std::string &show_topic, bool hidden)
 Open the help browser, show terrain with id terrain_id. More...
 
void show_variation_help (const std::string &unit, const std::string &variation, bool hidden)
 Open the help browser, show the variation of the unit matching. More...
 
void init_help ()
 
static bool is_cjk_char (const char32_t ch)
 
bool section_is_referenced (const std::string &section_id, const config &cfg)
 Return true if the section with id section_id is referenced from another section in the config, or the toplevel. More...
 
bool topic_is_referenced (const std::string &topic_id, const config &cfg)
 Return true if the topic with id topic_id is referenced from another section in the config, or the toplevel. More...
 
void parse_config_internal (const config *help_cfg, const config *section_cfg, section &sec, int level=0)
 Recursive function used by parse_config. More...
 
section parse_config (const config *cfg)
 Parse a help config, return the top level section. More...
 
std::vector< topicgenerate_topics (const bool sort_generated, const std::string &generator)
 
void generate_sections (const config *help_cfg, const std::string &generator, section &sec, int level)
 Dispatch generators to their appropriate functions. More...
 
std::string generate_topic_text (const std::string &generator, const config *help_cfg, const section &sec)
 
static std::string time_of_day_bonus_colored (const int time_of_day_bonus)
 
std::vector< topicgenerate_time_of_day_topics (const bool)
 
std::vector< topicgenerate_weapon_special_topics (const bool sort_generated)
 
std::vector< topicgenerate_ability_topics (const bool sort_generated)
 
std::vector< topicgenerate_era_topics (const bool sort_generated, const std::string &era_id)
 
std::vector< topicgenerate_faction_topics (const config &era, const bool sort_generated)
 
std::vector< topicgenerate_trait_topics (const bool sort_generated)
 
std::string make_unit_link (const std::string &type_id)
 return a hyperlink with the unit's name and pointing to the unit page return empty string if this unit is hidden. More...
 
std::vector< std::string > make_unit_links_list (const std::vector< std::string > &type_id_list, bool ordered=false)
 return a list of hyperlinks to unit's pages (ordered or not) More...
 
void generate_races_sections (const config *help_cfg, section &sec, int level)
 
void generate_era_sections (const config *help_cfg, section &sec, int level)
 
void generate_terrain_sections (section &sec, int)
 
void generate_unit_sections (const config *, section &sec, int, const bool, const std::string &race)
 
std::vector< topicgenerate_unit_topics (const bool sort_generated, const std::string &race)
 
UNIT_DESCRIPTION_TYPE description_type (const unit_type &type)
 Return the type of description that should be shown for a unit of the given kind. More...
 
std::string generate_contents_links (const std::string &section_name, config const *help_cfg)
 
std::string generate_contents_links (const section &sec)
 
const topicfind_topic (const section &sec, const std::string &id)
 Search for the topic with the specified identifier in the section and its subsections. More...
 
const sectionfind_section (const section &sec, const std::string &id)
 Search for the section with the specified identifier in the section and its subsections. More...
 
sectionfind_section (section &sec, const std::string &id)
 
std::string remove_first_space (const std::string &text)
 
std::string get_first_word (const std::string &s)
 Return the first word in s, not removing any spaces in the start of it. More...
 
void generate_contents ()
 Generate the help contents from the configurations given to the manager. More...
 
std::string hidden_symbol (bool hidden)
 
bool is_visible_id (const std::string &id)
 
bool is_valid_id (const std::string &id)
 Return true if the id is valid for user defined topics and sections. More...
 
std::shared_ptr< terrain_type_dataload_terrain_types_data ()
 Load the appropriate terrain types data to use. More...
 
static std::string best_str (bool best)
 
static std::string format_mp_entry (const int cost, const int max_cost)
 
static std::string print_behavior_description (const ter_iter &start, const ter_iter &end, const std::shared_ptr< terrain_type_data > &tdata, bool first_level=true, bool begin_best=true)
 
static void print_trait_list (std::stringstream &ss, const std::vector< trait_data > &l)
 

Variables

const game_config_viewgame_cfg = nullptr
 
help::section default_toplevel
 
help::section hidden_sections
 
int last_num_encountered_units = -1
 
int last_num_encountered_terrains = -1
 
boost::tribool last_debug_state = boost::indeterminate
 
std::vector< std::string > empty_string_vector
 
const int max_section_level = 15
 
const int title_size = font::SIZE_LARGE
 
const int title2_size = font::SIZE_PLUS
 
const int box_width = 2
 
const int normal_font_size = font::SIZE_NORMAL
 
const unsigned max_history = 100
 
const std::string topic_img = "help/topic.png"
 
const std::string closed_section_img = "help/closed_section.png"
 
const std::string open_section_img = "help/open_section.png"
 
const std::string default_show_topic = "..introduction"
 
const std::string unknown_unit_topic = ".unknown_unit"
 
const std::string unit_prefix = "unit_"
 
const std::string terrain_prefix = "terrain_"
 
const std::string race_prefix = "race_"
 
const std::string faction_prefix = "faction_"
 
const std::string era_prefix = "era_"
 
const std::string variation_prefix = "variation_"
 
const std::string ability_prefix = "ability_"
 

Typedef Documentation

◆ section_list

typedef std::list<section> help::section_list

Definition at line 144 of file help_impl.hpp.

◆ ter_iter

typedef t_translation::ter_list::const_iterator help::ter_iter

Definition at line 97 of file help_topic_generators.cpp.

◆ topic_list

typedef std::list<topic> help::topic_list

Definition at line 145 of file help_impl.hpp.

◆ trait_data

typedef std::pair<std::string, std::string> help::trait_data

Definition at line 316 of file help_topic_generators.cpp.

Enumeration Type Documentation

◆ UNIT_DESCRIPTION_TYPE

Enumerator
FULL_DESCRIPTION 
NO_DESCRIPTION 

Ignore this unit for documentation purposes.

HIDDEN_BUT_SHOW_MACROS 

Although the unit itself is hidden, traits reachable via this unit are not hidden.

This is a bug workaround - traits are defined by WML macros, and therefore the help system has to use a place where that macro is instanciated to provide the documentation. None of the normal unit types has the "loyal" trait, but there is a hidden unit which does, purely to support the help system.

Definition at line 244 of file help_impl.hpp.

Function Documentation

◆ best_str()

static std::string help::best_str ( bool  best)
static

Definition at line 62 of file help_topic_generators.cpp.

References _(), and markup::span_color().

Referenced by print_behavior_description().

◆ description_type()

UNIT_DESCRIPTION_TYPE help::description_type ( const unit_type type)

Return the type of description that should be shown for a unit of the given kind.

This method is intended to filter out information about units that should not be shown, for example due to not being encountered.

Definition at line 1186 of file help_impl.cpp.

References game_config::debug, prefs::encountered_units(), FULL_DESCRIPTION, prefs::get(), HIDDEN_BUT_SHOW_MACROS, hotkey::is_scope_active(), NO_DESCRIPTION, and hotkey::SCOPE_EDITOR.

Referenced by generate_ability_topics(), generate_races_sections(), generate_trait_topics(), generate_unit_topics(), generate_weapon_special_topics(), make_unit_link(), and help::unit_topic_generator::operator()().

◆ ensure_cache_lifecycle()

std::unique_ptr< help_manager > help::ensure_cache_lifecycle ( )

Helper function for any of the show_help functions to control the cache's lifecycle; can also be used by any other caller that wants to ensure the cache is reused over multiple show_help calls.

Treat the return type as opaque, it can return nullptr on success. Also don't extend the cache lifecycle beyond the lifecycle of the game_config_manager or over a reload of the game config.

Precondition
game_config_manager has been initialised

Definition at line 115 of file help.cpp.

References game_cfg, and game_config_manager::get().

Referenced by show_help(), show_terrain_description(), show_terrain_help(), show_unit_description(), show_unit_help(), and show_variation_help().

◆ find_section() [1/2]

const section * help::find_section ( const section sec,
const std::string &  id 
)

Search for the section with the specified identifier in the section and its subsections.

Return the found section or nullptr if none could be found.

Definition at line 1311 of file help_impl.cpp.

References s, and help::section::sections.

Referenced by find_section(), generate_contents(), and generate_races_sections().

◆ find_section() [2/2]

section * help::find_section ( section sec,
const std::string &  id 
)

Definition at line 1327 of file help_impl.cpp.

References find_section().

◆ find_topic()

const topic * help::find_topic ( const section sec,
const std::string &  id 
)

Search for the topic with the specified identifier in the section and its subsections.

Return the found topic, or nullptr if none could be found.

Definition at line 1295 of file help_impl.cpp.

References s, help::section::sections, t, and help::section::topics.

Referenced by generate_contents(), and gui2::dialogs::help_browser::show_topic().

◆ format_mp_entry()

static std::string help::format_mp_entry ( const int  cost,
const int  max_cost 
)
static

◆ generate_ability_topics()

std::vector< topic > help::generate_ability_topics ( const bool  sort_generated)

◆ generate_contents()

void help::generate_contents ( )

◆ generate_contents_links() [1/2]

std::string help::generate_contents_links ( const section sec)

◆ generate_contents_links() [2/2]

std::string help::generate_contents_links ( const std::string &  section_name,
config const *  help_cfg 
)

◆ generate_era_sections()

void help::generate_era_sections ( const config help_cfg,
section sec,
int  level 
)

◆ generate_era_topics()

std::vector< topic > help::generate_era_topics ( const bool  sort_generated,
const std::string &  era_id 
)

◆ generate_faction_topics()

std::vector< topic > help::generate_faction_topics ( const config era,
const bool  sort_generated 
)

◆ generate_races_sections()

void help::generate_races_sections ( const config help_cfg,
section sec,
int  level 
)

◆ generate_sections()

void help::generate_sections ( const config help_cfg,
const std::string &  generator,
section sec,
int  level 
)

◆ generate_terrain_sections()

void help::generate_terrain_sections ( section sec,
int   
)

◆ generate_time_of_day_topics()

std::vector< topic > help::generate_time_of_day_topics ( const bool  )

◆ generate_topic_text()

std::string help::generate_topic_text ( const std::string &  generator,
const config help_cfg,
const section sec 
)

Definition at line 356 of file help_impl.cpp.

References generate_contents_links(), randomness::generator, and utils::split().

Referenced by parse_config_internal().

◆ generate_topics()

std::vector< topic > help::generate_topics ( const bool  sort_generated,
const std::string &  generator 
)

◆ generate_trait_topics()

std::vector< topic > help::generate_trait_topics ( const bool  sort_generated)

◆ generate_unit_sections()

void help::generate_unit_sections ( const config ,
section sec,
int  ,
const bool  ,
const std::string &  race 
)

◆ generate_unit_topics()

std::vector< topic > help::generate_unit_topics ( const bool  sort_generated,
const std::string &  race 
)

◆ generate_weapon_special_topics()

std::vector< topic > help::generate_weapon_special_topics ( const bool  sort_generated)

◆ get_first_word()

std::string help::get_first_word ( const std::string &  s)

Return the first word in s, not removing any spaces in the start of it.

Definition at line 1340 of file help_impl.cpp.

References ucs4::iterator_base< string_type, update_implementation >::end(), is_cjk_char(), and s.

◆ hidden_symbol()

std::string help::hidden_symbol ( bool  hidden)

◆ init_help()

void help::init_help ( )

◆ is_cjk_char()

static bool help::is_cjk_char ( const char32_t  ch)
static

You can check these range at http://unicode.org/charts/ see the "East Asian Scripts" part. Notice that not all characters in that part is still in use today, so don't list them all here. Below are characters that I guess may be used in wesnoth translations.

Definition at line 92 of file help_impl.cpp.

Referenced by get_first_word().

◆ is_valid_id()

bool help::is_valid_id ( const std::string &  id)

Return true if the id is valid for user defined topics and sections.

Some IDs are special, such as toplevel and may not be be defined in the config.

Definition at line 1440 of file help_impl.cpp.

References translation::compare(), hidden_symbol(), and unit_prefix.

Referenced by parse_config_internal().

◆ is_visible_id()

bool help::is_visible_id ( const std::string &  id)

Definition at line 1431 of file help_impl.cpp.

Referenced by generate_contents_links().

◆ load_terrain_types_data()

std::shared_ptr< terrain_type_data > help::load_terrain_types_data ( )

◆ make_unit_link()

std::string help::make_unit_link ( const std::string &  type_id)

return a hyperlink with the unit's name and pointing to the unit page return empty string if this unit is hidden.

If not yet discovered add the (?) suffix

Definition at line 801 of file help_impl.cpp.

References description_type(), unit_type_data::find(), FULL_DESCRIPTION, unit_type::HELP_INDEXED, markup::make_link(), PLAIN_LOG, unit_prefix, unit_types, and unknown_unit_topic.

Referenced by make_unit_links_list().

◆ make_unit_links_list()

std::vector< std::string > help::make_unit_links_list ( const std::vector< std::string > &  type_id_list,
bool  ordered 
)

return a list of hyperlinks to unit's pages (ordered or not)

Definition at line 827 of file help_impl.cpp.

References make_unit_link().

Referenced by generate_faction_topics().

◆ parse_config()

section help::parse_config ( const config cfg)

Parse a help config, return the top level section.

Return an empty section if cfg is nullptr.

Definition at line 298 of file help_impl.cpp.

References config::optional_child(), and parse_config_internal().

Referenced by generate_contents().

◆ parse_config_internal()

void help::parse_config_internal ( const config help_cfg,
const config section_cfg,
section sec,
int  level 
)

◆ print_behavior_description()

static std::string help::print_behavior_description ( const ter_iter start,
const ter_iter end,
const std::shared_ptr< terrain_type_data > &  tdata,
bool  first_level = true,
bool  begin_best = true 
)
static

◆ print_trait_list()

static void help::print_trait_list ( std::stringstream &  ss,
const std::vector< trait_data > &  l 
)
static

Definition at line 319 of file help_topic_generators.cpp.

References i, and markup::make_link().

Referenced by help::unit_topic_generator::operator()().

◆ remove_first_space()

std::string help::remove_first_space ( const std::string &  text)

Definition at line 1332 of file help_impl.cpp.

◆ section_is_referenced()

bool help::section_is_referenced ( const std::string &  section_id,
const config cfg 
)

Return true if the section with id section_id is referenced from another section in the config, or the toplevel.

Definition at line 147 of file help_impl.cpp.

References config::child_range(), utils::find(), config::optional_child(), and utils::quoted_split().

Referenced by generate_contents().

◆ show_help()

void help::show_help ( const std::string &  show_topic)

Open the help browser, show topic with id show_topic.

Open the help browser.

If show_topic is the empty string, the default topic will be shown.

The help browser will have the topic with id show_topic open if it is not the empty string. The default topic will be shown if show_topic is the empty string.

Precondition
game_config_manager has been initialised, or the instance of help_manager has been created with an alternative config.

Definition at line 140 of file help.cpp.

References default_toplevel, ensure_cache_lifecycle(), and show_with_toplevel().

Referenced by tooltips::click(), hotkey::command_executor::do_execute_command(), gui2::dialogs::addon_connect::help_button_callback(), gui2::dialogs::title_screen::init_callbacks(), gui2::dialogs::addon_manager::show_help(), gui2::dialogs::unit_advance::show_help(), gui2::dialogs::unit_recall::show_help(), gui2::dialogs::unit_recruit::show_help(), events::menu_handler::show_help(), editor::editor_controller::show_help(), lua_gui2::show_help(), gui2::dialogs::mp_lobby::show_help_callback(), gui2::dialogs::game_version::show_license(), and editor::editor_controller::unit_description().

◆ show_terrain_description()

void help::show_terrain_description ( const terrain_type t)

◆ show_terrain_help()

void help::show_terrain_help ( const std::string &  show_topic,
bool  hidden 
)

Open the help browser, show terrain with id terrain_id.

wrapper to add terrain prefix and hiding symbol

If show_topic is the empty string, the default topic will be shown.

Definition at line 163 of file help.cpp.

References default_toplevel, ensure_cache_lifecycle(), hidden_symbol(), show_with_toplevel(), and terrain_prefix.

Referenced by show_terrain_description().

◆ show_unit_description() [1/2]

void help::show_unit_description ( const unit u)

◆ show_unit_description() [2/2]

void help::show_unit_description ( const unit_type t)

◆ show_unit_help()

void help::show_unit_help ( const std::string &  show_topic,
bool  has_variations,
bool  hidden 
)

Open the help browser, show unit with id unit_id.

wrapper to add unit prefix and hiding symbol

If show_topic is the empty string, the default topic will be shown.

Definition at line 151 of file help.cpp.

References default_toplevel, ensure_cache_lifecycle(), hidden_symbol(), show_with_toplevel(), and unit_prefix.

Referenced by show_unit_description(), and editor::editor_controller::unit_description().

◆ show_variation_help()

void help::show_variation_help ( const std::string &  unit,
const std::string &  variation,
bool  hidden 
)

Open the help browser, show the variation of the unit matching.

wrapper to add variation prefix and hiding symbol

Definition at line 172 of file help.cpp.

References default_toplevel, ensure_cache_lifecycle(), hidden_symbol(), show_with_toplevel(), and variation_prefix.

Referenced by show_unit_description().

◆ show_with_toplevel()

void help::show_with_toplevel ( const section toplevel_sec,
const std::string &  show_topic = "" 
)

Open a help dialog using a specified toplevel.

Open a help dialog using a toplevel other than the default.

This would allow for complete customization of the contents, although not in a very easy way. It's used as the internal implementation of the other help* functions.

Precondition
The help_manager must already exist; this is different to the functions declared in help.hpp, which is why this one's declaration is in the .cpp file. Because this takes a section as an argument, it wouldn't make sense for it to call ensure_cache_lifecycle() internally - if the help_manager doesn't already exist, that would likely destroy the referenced object at the point that this function exited.

This allows for complete customization of the contents, although not in a very easy way.

Definition at line 203 of file help.cpp.

Referenced by show_help(), show_terrain_help(), show_unit_help(), and show_variation_help().

◆ time_of_day_bonus_colored()

static std::string help::time_of_day_bonus_colored ( const int  time_of_day_bonus)
static

Definition at line 390 of file help_impl.cpp.

References markup::span_color().

Referenced by generate_time_of_day_topics().

◆ topic_is_referenced()

bool help::topic_is_referenced ( const std::string &  topic_id,
const config cfg 
)

Return true if the topic with id topic_id is referenced from another section in the config, or the toplevel.

Definition at line 171 of file help_impl.cpp.

References config::child_range(), utils::find(), config::optional_child(), and utils::quoted_split().

Referenced by generate_contents().

Variable Documentation

◆ ability_prefix

const std::string help::ability_prefix = "ability_"

◆ box_width

const int help::box_width = 2

Definition at line 75 of file help_impl.cpp.

◆ closed_section_img

const std::string help::closed_section_img = "help/closed_section.png"

Definition at line 79 of file help_impl.cpp.

◆ default_show_topic

const std::string help::default_show_topic = "..introduction"

Definition at line 82 of file help_impl.cpp.

◆ default_toplevel

help::section help::default_toplevel

◆ empty_string_vector

std::vector< std::string > help::empty_string_vector

Definition at line 71 of file help_impl.cpp.

◆ era_prefix

const std::string help::era_prefix = "era_"

Definition at line 88 of file help_impl.cpp.

Referenced by generate_era_sections(), and generate_era_topics().

◆ faction_prefix

const std::string help::faction_prefix = "faction_"

Definition at line 87 of file help_impl.cpp.

Referenced by generate_faction_topics().

◆ game_cfg

const game_config_view * help::game_cfg = nullptr

◆ hidden_sections

help::section help::hidden_sections

Definition at line 65 of file help_impl.cpp.

Referenced by generate_contents(), and help::help_manager::~help_manager().

◆ last_debug_state

boost::tribool help::last_debug_state = boost::indeterminate

Definition at line 69 of file help_impl.cpp.

Referenced by init_help().

◆ last_num_encountered_terrains

int help::last_num_encountered_terrains = -1

Definition at line 68 of file help_impl.cpp.

Referenced by init_help(), and help::help_manager::~help_manager().

◆ last_num_encountered_units

int help::last_num_encountered_units = -1

Definition at line 67 of file help_impl.cpp.

Referenced by init_help(), and help::help_manager::~help_manager().

◆ max_history

const unsigned help::max_history = 100

Definition at line 77 of file help_impl.cpp.

◆ max_section_level

const int help::max_section_level = 15

Definition at line 72 of file help_impl.cpp.

Referenced by parse_config_internal().

◆ normal_font_size

const int help::normal_font_size = font::SIZE_NORMAL

Definition at line 76 of file help_impl.cpp.

◆ open_section_img

const std::string help::open_section_img = "help/open_section.png"

Definition at line 80 of file help_impl.cpp.

◆ race_prefix

const std::string help::race_prefix = "race_"

Definition at line 86 of file help_impl.cpp.

Referenced by generate_faction_topics(), and generate_races_sections().

◆ terrain_prefix

const std::string help::terrain_prefix = "terrain_"

◆ title2_size

const int help::title2_size = font::SIZE_PLUS

Definition at line 74 of file help_impl.cpp.

◆ title_size

const int help::title_size = font::SIZE_LARGE

Definition at line 73 of file help_impl.cpp.

◆ topic_img

const std::string help::topic_img = "help/topic.png"

Definition at line 78 of file help_impl.cpp.

◆ unit_prefix

const std::string help::unit_prefix = "unit_"

◆ unknown_unit_topic

const std::string help::unknown_unit_topic = ".unknown_unit"

Definition at line 83 of file help_impl.cpp.

Referenced by make_unit_link(), and help::unit_topic_generator::operator()().

◆ variation_prefix

const std::string help::variation_prefix = "variation_"