The Battle for Wesnoth  1.15.0-dev
terrain.hpp
Go to the documentation of this file.
1 /*
2  Copyright (C) 2003 - 2018 by David White <dave@whitevine.net>
3  Part of the Battle for Wesnoth Project https://www.wesnoth.org/
4 
5  This program is free software; you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation; either version 2 of the License, or
8  (at your option) any later version.
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY.
11 
12  See the COPYING file for more details.
13 */
14 
15 #pragma once
16 
17 #include "config.hpp"
18 #include "terrain/translation.hpp"
19 #include "utils/math.hpp"
20 
22 {
23 public:
24 
25  terrain_type();
26  terrain_type(const config& cfg);
27  terrain_type(const terrain_type& base, const terrain_type& overlay);
28 
29  const std::string& icon_image() const { return icon_image_; }
30  const std::string& minimap_image() const { return minimap_image_; }
31  const std::string& minimap_image_overlay() const { return minimap_image_overlay_; }
32  const std::string& editor_image() const { return editor_image_; }
33  const t_string& name() const { return name_; }
34  const t_string& editor_name() const { return editor_name_.empty() ? description() : editor_name_; }
35  const t_string& description() const { return description_.empty() ? name_ : description_; }
36  const t_string& help_topic_text() const { return help_topic_text_; }
37  const std::string& id() const { return id_; }
38 
39  bool hide_help() const { return hide_help_; }
40  bool hide_in_editor() const { return hide_in_editor_; }
41  bool hide_if_impassable() const { return hide_if_impassable_; }
42 
43  //the character representing this terrain
45 
46  //the underlying type of the terrain
47  const t_translation::ter_list& mvt_type() const { return mvt_type_; }
48  const t_translation::ter_list& def_type() const { return def_type_; }
50  const t_translation::ter_list& union_type() const { return union_type_; }
51 
52  bool is_nonnull() const { return (number_ != t_translation::NONE_TERRAIN) &&
54  /// Returns the light (lawful) bonus for this terrain when the time of day
55  /// gives a @a base bonus.
56  int light_bonus(int base) const
57  {
59  }
60 
61  int unit_height_adjust() const { return height_adjust_; }
62  double unit_submerge() const { return submerge_; }
63 
64  int gives_healing() const { return heals_; }
65  bool is_village() const { return village_; }
66  bool is_castle() const { return castle_; }
67  bool is_keep() const { return keep_; }
68 
69  //these descriptions are shown for the terrain in the mouse over
70  //depending on the owner or the village
71  const t_string& income_description() const { return income_description_; }
75 
76  const std::string& editor_group() const { return editor_group_; }
77  void set_editor_group(const std::string& str) { editor_group_ = str; }
78 
79  bool is_overlay() const { return overlay_; }
80  bool is_combined() const { return combined_; }
81 
84 
85  bool operator==(const terrain_type& other) const;
86 private:
87 
88  /** The image used as symbol icon */
89  std::string icon_image_;
90 
91  /** The image used in the minimap */
92  std::string minimap_image_;
94 
95  /**
96  * The image used in the editor palette if not defined in WML it will be
97  * initialized with the value of minimap_image_
98  */
99  std::string editor_image_;
100  std::string id_;
105 
106  //the 'number' is the number that represents this
107  //terrain type. The 'type' is a list of the 'underlying types'
108  //of the terrain. This may simply be the same as the number.
109  //This is the internal number used, WML still uses character strings.
115 
118 
119  double submerge_;
121 
125  int heals_;
126 
131 
132  std::string editor_group_;
133 
135 
139 };
140 
142  t_translation::ter_list& terrain_list,
143  std::map<t_translation::terrain_code, terrain_type>& letter_to_terrain);
144 
bool height_adjust_set_
Definition: terrain.hpp:117
std::string minimap_image_overlay_
Definition: terrain.hpp:93
const t_translation::ter_list & mvt_type() const
Definition: terrain.hpp:47
bool is_castle() const
Definition: terrain.hpp:66
t_translation::terrain_code editor_default_base_
Definition: terrain.hpp:137
const terrain_code NONE_TERRAIN
Definition: translation.hpp:59
const t_string & description() const
Definition: terrain.hpp:35
t_translation::ter_list mvt_type_
Definition: terrain.hpp:111
bool is_overlay() const
Definition: terrain.hpp:79
t_translation::ter_list def_type_
Definition: terrain.hpp:113
t_string name_
Definition: terrain.hpp:101
std::string id_
Definition: terrain.hpp:100
bool hide_in_editor_
Definition: terrain.hpp:138
double unit_submerge() const
Definition: terrain.hpp:62
t_string income_description_
Definition: terrain.hpp:127
std::string editor_image_
The image used in the editor palette if not defined in WML it will be initialized with the value of m...
Definition: terrain.hpp:99
bool operator==(const terrain_type &other) const
Definition: terrain.cpp:292
bool combined_
Definition: terrain.hpp:136
bool hide_help_
Definition: terrain.hpp:138
A terrain string which is converted to a terrain is a string with 1 or 2 layers the layers are separa...
Definition: translation.hpp:50
const t_string & income_description() const
Definition: terrain.hpp:71
const std::string & editor_image() const
Definition: terrain.hpp:32
Definitions for the interface to Wesnoth Markup Language (WML).
t_string description_
Definition: terrain.hpp:103
bool hide_help() const
Definition: terrain.hpp:39
t_string income_description_own_
Definition: terrain.hpp:130
std::string editor_group_
Definition: terrain.hpp:132
bool is_nonnull() const
Definition: terrain.hpp:52
const terrain_code VOID_TERRAIN
bool is_village() const
Definition: terrain.hpp:65
int light_bonus(int base) const
Returns the light (lawful) bonus for this terrain when the time of day gives a base bonus...
Definition: terrain.hpp:56
const t_string & editor_name() const
Definition: terrain.hpp:34
t_translation::terrain_code default_base() const
Definition: terrain.hpp:82
bool is_combined() const
Definition: terrain.hpp:80
t_string income_description_ally_
Definition: terrain.hpp:128
int unit_height_adjust() const
Definition: terrain.hpp:61
bool hide_if_impassable() const
Definition: terrain.hpp:41
void create_terrain_maps(const config::const_child_itors &cfgs, t_translation::ter_list &terrain_list, std::map< t_translation::terrain_code, terrain_type > &letter_to_terrain)
Definition: terrain.cpp:316
bool submerge_set_
Definition: terrain.hpp:120
const t_translation::ter_list & vision_type() const
Definition: terrain.hpp:49
General math utility functions.
int gives_healing() const
Definition: terrain.hpp:64
int max_light_
Definition: terrain.hpp:123
double submerge_
Definition: terrain.hpp:119
int height_adjust_
Definition: terrain.hpp:116
bool is_keep() const
Definition: terrain.hpp:67
boost::iterator_range< const_child_iterator > const_child_itors
Definition: config.hpp:238
t_translation::terrain_code number_
Definition: terrain.hpp:110
t_translation::ter_list union_type_
Definition: terrain.hpp:114
t_translation::ter_list vision_type_
Definition: terrain.hpp:112
t_translation::terrain_code terrain_with_default_base() const
Definition: terrain.cpp:285
t_translation::terrain_code number() const
Definition: terrain.hpp:44
const t_string & income_description_own() const
Definition: terrain.hpp:74
const t_string & income_description_enemy() const
Definition: terrain.hpp:73
bool hide_if_impassable_
Definition: terrain.hpp:138
const t_translation::ter_list & union_type() const
Definition: terrain.hpp:50
const std::string & minimap_image() const
Definition: terrain.hpp:30
std::string minimap_image_
The image used in the minimap.
Definition: terrain.hpp:92
bool castle_
Definition: terrain.hpp:134
bool hide_in_editor() const
Definition: terrain.hpp:40
bool village_
Definition: terrain.hpp:134
const t_string & name() const
Definition: terrain.hpp:33
t_string income_description_enemy_
Definition: terrain.hpp:129
int light_modification_
Definition: terrain.hpp:122
void set_editor_group(const std::string &str)
Definition: terrain.hpp:77
bool empty() const
Definition: tstring.hpp:182
bool overlay_
Definition: terrain.hpp:136
int min_light_
Definition: terrain.hpp:124
const t_translation::ter_list & def_type() const
Definition: terrain.hpp:48
const std::string & id() const
Definition: terrain.hpp:37
std::vector< terrain_code > ter_list
Definition: translation.hpp:78
const t_string & income_description_ally() const
Definition: terrain.hpp:72
int bounded_add(int base, int increment, int max_sum, int min_sum=0)
Returns base + increment, but will not increase base above max_sum, nor decrease it below min_sum...
Definition: math.hpp:46
t_string help_topic_text_
Definition: terrain.hpp:104
std::string icon_image_
The image used as symbol icon.
Definition: terrain.hpp:89
A config object defines a single node in a WML file, with access to child nodes.
Definition: config.hpp:92
const std::string & minimap_image_overlay() const
Definition: terrain.hpp:31
void merge_alias_lists(t_translation::ter_list &first, const t_translation::ter_list &second)
Definition: terrain.cpp:367
const t_string & help_topic_text() const
Definition: terrain.hpp:36
const std::string & editor_group() const
Definition: terrain.hpp:76
const std::string & icon_image() const
Definition: terrain.hpp:29
t_string editor_name_
Definition: terrain.hpp:102