summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/spl-pick.h
diff options
context:
space:
mode:
authorPete Hurst <pete@streamuniverse.tv>2013-06-24 00:42:11 +0100
committerPete Hurst <pete@streamuniverse.tv>2013-06-24 00:42:11 +0100
commit1cc1d03c18bf89cdb604b02b4031775c5a0ed763 (patch)
tree1987a3f3194bcaba1d28563dab593b3a5b4f5d88 /crawl-ref/source/spl-pick.h
parent57d3b8a80fd46a46853ee536c04474c6fd3564f7 (diff)
downloadcrawl-ref-1cc1d03c18bf89cdb604b02b4031775c5a0ed763.tar.gz
crawl-ref-1cc1d03c18bf89cdb604b02b4031775c5a0ed763.zip
Add missing spell_picker files
Diffstat (limited to 'crawl-ref/source/spl-pick.h')
-rw-r--r--crawl-ref/source/spl-pick.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/crawl-ref/source/spl-pick.h b/crawl-ref/source/spl-pick.h
new file mode 100644
index 0000000000..c9dbc03fdb
--- /dev/null
+++ b/crawl-ref/source/spl-pick.h
@@ -0,0 +1,31 @@
+/**
+ * @file
+ * @brief Functions for picking from lists of spells.
+**/
+
+#ifndef SPL_PICK_H
+#define SPL_PICK_H
+
+#include "externs.h"
+#include "random-pick.h"
+
+#define spell_entry random_pick_entry<spell_type>
+typedef bool (*spell_pick_vetoer)(spell_type);
+
+// Subclass a spell picker using the random_picker template
+class spell_picker : public random_picker<spell_type, NUM_SPELLS>
+{
+public:
+ spell_picker(spell_pick_vetoer _veto = nullptr) : veto_func(_veto) { };
+
+ spell_type pick_with_veto(const spell_entry *weights, int level,
+ spell_type none,
+ spell_pick_vetoer veto_func = nullptr);
+
+ virtual bool veto(spell_type spell);
+
+protected:
+ spell_pick_vetoer veto_func;
+};
+
+#endif