summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/mapdef.h
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/mapdef.h')
-rw-r--r--crawl-ref/source/mapdef.h15
1 files changed, 12 insertions, 3 deletions
diff --git a/crawl-ref/source/mapdef.h b/crawl-ref/source/mapdef.h
index 52ce7ecf3d..25f3b7ef5a 100644
--- a/crawl-ref/source/mapdef.h
+++ b/crawl-ref/source/mapdef.h
@@ -45,9 +45,6 @@ class map_lines
public:
map_lines();
- // NULL-terminated list of map lines.
- map_lines(int nlines, ...);
-
void add_line(const std::string &s);
void set_orientation(const std::string &s);
@@ -60,6 +57,7 @@ public:
bool solid_borders(map_section_type border);
void resolve(const std::string &fillins);
+ void resolve_shuffles(const std::vector<std::string> &shuffles);
// Make all lines the same length.
void normalise(char fillc = 'x');
@@ -74,8 +72,16 @@ public:
const std::vector<std::string> &get_lines() const;
private:
+ typedef FixedVector<short, 128> symbol_frequency_t;
+
+ void resolve_shuffle(const symbol_frequency_t &,
+ const std::string &shuffle);
void resolve(std::string &s, const std::string &fill);
void check_borders();
+ void calc_symbol_frequencies(symbol_frequency_t &f);
+ std::string remove_unreferenced(const symbol_frequency_t &freq,
+ std::string s);
+ std::string shuffle(std::string s);
private:
std::vector<std::string> lines;
@@ -211,6 +217,7 @@ public:
item_list items;
std::string random_symbols;
+ std::vector<std::string> shuffles;
public:
void init();
@@ -221,6 +228,8 @@ public:
void resolve();
void fixup();
+ void add_shuffle(const std::string &s);
+
bool can_dock(map_section_type) const;
coord_def dock_pos(map_section_type) const;
coord_def float_dock();