summaryrefslogtreecommitdiff
path: root/src/map_type.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/map_type.h')
-rw-r--r--src/map_type.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/map_type.h b/src/map_type.h
new file mode 100644
index 000000000..7098ad762
--- /dev/null
+++ b/src/map_type.h
@@ -0,0 +1,65 @@
+/* $Id$ */
+
+/** @file map_type.h Types related to maps. */
+
+#ifndef MAP_TYPE_H
+#define MAP_TYPE_H
+
+/**
+ * Data that is stored per tile. Also used TileExtended for this.
+ * Look at docs/landscape.html for the exact meaning of the members.
+ */
+struct Tile {
+ byte type_height; ///< The type (bits 4..7) and height of the northern corner
+ byte m1; ///< Primarily used for ownership information
+ uint16 m2; ///< Primarily used for indices to towns, industries and stations
+ byte m3; ///< General purpose
+ byte m4; ///< General purpose
+ byte m5; ///< General purpose
+ byte m6; ///< Primarily used for bridges and rainforest/desert
+};
+
+/**
+ * Data that is stored per tile. Also used Tile for this.
+ * Look at docs/landscape.html for the exact meaning of the members.
+ */
+struct TileExtended {
+ byte m7; ///< Primarily used for newgrf support
+};
+
+/**
+ * An offset value between to tiles.
+ *
+ * This value is used fro the difference between
+ * to tiles. It can be added to a tileindex to get
+ * the resulting tileindex of the start tile applied
+ * with this saved difference.
+ *
+ * @see TileDiffXY(int, int)
+ */
+typedef int32 TileIndexDiff;
+
+/**
+ * A pair-construct of a TileIndexDiff.
+ *
+ * This can be used to save the difference between to
+ * tiles as a pair of x and y value.
+ */
+struct TileIndexDiffC {
+ int16 x; ///< The x value of the coordinate
+ int16 y; ///< The y value of the coordinate
+};
+
+/**
+ * Approximation of the length of a straight track, relative to a diagonal
+ * track (ie the size of a tile side).
+ *
+ * #defined instead of const so it can
+ * stay integer. (no runtime float operations) Is this needed?
+ * Watch out! There are _no_ brackets around here, to prevent intermediate
+ * rounding! Be careful when using this!
+ * This value should be sqrt(2)/2 ~ 0.7071
+ */
+#define STRAIGHT_TRACK_LENGTH 7071/10000
+
+#endif /* MAP_TYPE_H */