summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/delay.h
diff options
context:
space:
mode:
authorzelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573>2007-09-15 23:33:50 +0000
committerzelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573>2007-09-15 23:33:50 +0000
commitfa763ba1bc7285247a5b1438d59633383a80cf6c (patch)
treef4b632fea66f43dc6c1415fdaa4feead0b6ff90d /crawl-ref/source/delay.h
parent4d88632cb99d368956dec86732f7d275ffb941e8 (diff)
downloadcrawl-ref-fa763ba1bc7285247a5b1438d59633383a80cf6c.tar.gz
crawl-ref-fa763ba1bc7285247a5b1438d59633383a80cf6c.zip
Split off portions of externs.h and enum.h into other files. The
crawl_environment, player and monsters classes have been left in externs.h, which necessitates that all of the enums references by those classes stay in enums.h, since you can't forward declare an enum. However, it's a start. Also, portions of misc.{cc,h} have been split off into traps.{cc,h}, place.{cc,h} and terrain.{cc,h} git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2095 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/delay.h')
-rw-r--r--crawl-ref/source/delay.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/crawl-ref/source/delay.h b/crawl-ref/source/delay.h
index c45d5a0b2b..81e14807f0 100644
--- a/crawl-ref/source/delay.h
+++ b/crawl-ref/source/delay.h
@@ -14,6 +14,62 @@
#include "enum.h"
+struct monsters;
+struct ait_hp_loss;
+
+enum activity_interrupt_payload_type
+{
+ AIP_NONE,
+ AIP_INT,
+ AIP_STRING,
+ AIP_MONSTER,
+ AIP_HP_LOSS
+};
+
+struct activity_interrupt_data
+{
+ activity_interrupt_payload_type apt;
+ const void *data;
+ std::string context;
+
+ activity_interrupt_data()
+ : apt(AIP_NONE), data(NULL), context()
+ {
+ }
+ activity_interrupt_data(const int *i)
+ : apt(AIP_INT), data(i), context()
+ {
+ }
+ activity_interrupt_data(const char *s)
+ : apt(AIP_STRING), data(s), context()
+ {
+ }
+ activity_interrupt_data(const std::string &s)
+ : apt(AIP_STRING), data(s.c_str()), context()
+ {
+ }
+ activity_interrupt_data(const monsters *m, const std::string &ctx = "")
+ : apt(AIP_MONSTER), data(m), context(ctx)
+ {
+ }
+ activity_interrupt_data(const ait_hp_loss *ahl)
+ : apt(AIP_HP_LOSS), data(ahl), context()
+ {
+ }
+ activity_interrupt_data(const activity_interrupt_data &a)
+ : apt(a.apt), data(a.data), context(a.context)
+ {
+ }
+};
+
+struct ait_hp_loss
+{
+ int hp;
+ int hurt_type; // KILLED_BY_POISON, etc.
+
+ ait_hp_loss(int _hp, int _ht) : hp(_hp), hurt_type(_ht) { }
+};
+
void start_delay( delay_type type, int turns, int parm1 = 0, int parm2 = 0 );
void stop_delay( void );
bool you_are_delayed( void );