summaryrefslogtreecommitdiff
path: root/slope.h
diff options
context:
space:
mode:
authortron <tron@openttd.org>2006-04-23 13:48:16 +0000
committertron <tron@openttd.org>2006-04-23 13:48:16 +0000
commitdd180a1e1883336a1edc3b4d6eac440f06e3685b (patch)
tree3f0769bd955cefba7ab80063e64546c1874e0a62 /slope.h
parentfa213c686ee1d348d1eb167f2423261d8040205e (diff)
downloadopenttd-dd180a1e1883336a1edc3b4d6eac440f06e3685b.tar.xz
(svn r4541) Add a type for slopes and replace many magic numbers by the appropriate enums
Diffstat (limited to 'slope.h')
-rw-r--r--slope.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/slope.h b/slope.h
new file mode 100644
index 000000000..8ed509e2b
--- /dev/null
+++ b/slope.h
@@ -0,0 +1,41 @@
+/* $Id$ */
+
+#ifndef SLOPE_H
+#define SLOPE_H
+
+typedef enum Slope {
+ SLOPE_FLAT = 0x00,
+ SLOPE_W = 0x01,
+ SLOPE_S = 0x02,
+ SLOPE_E = 0x04,
+ SLOPE_N = 0x08,
+ SLOPE_STEEP = 0x10,
+ SLOPE_NW = SLOPE_N | SLOPE_W,
+ SLOPE_SW = SLOPE_S | SLOPE_W,
+ SLOPE_SE = SLOPE_S | SLOPE_E,
+ SLOPE_NE = SLOPE_N | SLOPE_E,
+ SLOPE_EW = SLOPE_E | SLOPE_W,
+ SLOPE_NS = SLOPE_N | SLOPE_S,
+ SLOPE_ELEVATED = SLOPE_N | SLOPE_E | SLOPE_S | SLOPE_W,
+ SLOPE_NWS = SLOPE_N | SLOPE_W | SLOPE_S,
+ SLOPE_WSE = SLOPE_W | SLOPE_S | SLOPE_E,
+ SLOPE_SEN = SLOPE_S | SLOPE_E | SLOPE_N,
+ SLOPE_ENW = SLOPE_E | SLOPE_N | SLOPE_W,
+ SLOPE_STEEP_W = SLOPE_STEEP | SLOPE_NWS,
+ SLOPE_STEEP_S = SLOPE_STEEP | SLOPE_WSE,
+ SLOPE_STEEP_E = SLOPE_STEEP | SLOPE_SEN,
+ SLOPE_STEEP_N = SLOPE_STEEP | SLOPE_ENW
+} Slope;
+
+static inline bool IsSteepSlope(Slope s)
+{
+ return (s & SLOPE_STEEP) != 0;
+}
+
+static inline Slope ComplementSlope(Slope s)
+{
+ assert(!IsSteepSlope(s));
+ return (Slope)(0xF ^ s);
+}
+
+#endif