aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClyne Sullivan <tullivan99@gmail.com>2016-05-11 07:49:18 -0400
committerClyne Sullivan <tullivan99@gmail.com>2016-05-11 07:49:18 -0400
commitdffd910115fb0b36310bb7b32ad0650727d58216 (patch)
tree8356bde5ceedf93e24a1078dd8112028a7f76ce6
parenta9abee3d7b57a094358ffbb460799d70fed7ef8b (diff)
clamp bug fix
-rw-r--r--include/bmpimage.hpp34
-rw-r--r--include/common.hpp2
-rw-r--r--include/ui.hpp34
-rw-r--r--src/world.cpp2
4 files changed, 37 insertions, 35 deletions
diff --git a/include/bmpimage.hpp b/include/bmpimage.hpp
new file mode 100644
index 0000000..69b78ac
--- /dev/null
+++ b/include/bmpimage.hpp
@@ -0,0 +1,34 @@
+#ifndef BMP_IMAGE_HPP
+#define BMP_IMAGE_HPP
+
+#include <cstdint>
+
+/**
+ * Defines the layout of a bitmap (.bmp) file's header.
+ */
+typedef struct {
+ uint16_t bfType;
+ uint32_t bfSize;
+ uint16_t bfReserved1;
+ uint16_t bfReserved2;
+ uint32_t bfOffBits;
+} __attribute__((packed)) BITMAPFILEHEADER;
+
+/**
+ * Defines the layout of a bitmap's info header.
+ */
+typedef struct {
+ uint32_t biSize;
+ int32_t biWidth;
+ int32_t biHeight;
+ uint16_t biPlanes;
+ uint16_t biBitCount;
+ uint32_t biCompression;
+ uint32_t biSizeImage;
+ int32_t biXPelsPerMeter;
+ int32_t biYPelsPerMeter;
+ uint32_t biClrUsed;
+ uint32_t biClrImportant;
+} __attribute__((packed)) BITMAPINFOHEADER;
+
+#endif // BMP_IMAGE_HPP
diff --git a/include/common.hpp b/include/common.hpp
index 73b4928..e082a87 100644
--- a/include/common.hpp
+++ b/include/common.hpp
@@ -240,7 +240,7 @@ void UserError(std::string reason);
namespace std {
template<class T>
constexpr const T& clamp(const T& v, const T& lo, const T& hi) {
- return (v > hi) ? ((v > lo) ? v : lo) : hi;
+ return (v > hi) ? hi : ((v > lo) ? v : lo);
}
}
diff --git a/include/ui.hpp b/include/ui.hpp
index 67406f4..099bebf 100644
--- a/include/ui.hpp
+++ b/include/ui.hpp
@@ -32,40 +32,8 @@
#include <ft2build.h>
#include FT_FREETYPE_H
-/* ----------------------------------------------------------------------------
-** Structures section
-** --------------------------------------------------------------------------*/
-
#ifndef __WIN32__
-
-/**
- * Defines the layout of a bitmap (.bmp) file's header.
- */
-typedef struct {
- uint16_t bfType;
- uint32_t bfSize;
- uint16_t bfReserved1;
- uint16_t bfReserved2;
- uint32_t bfOffBits;
-} __attribute__((packed)) BITMAPFILEHEADER;
-
-/**
- * Defines the layout of a bitmap's info header.
- */
-typedef struct {
- uint32_t biSize;
- int32_t biWidth;
- int32_t biHeight;
- uint16_t biPlanes;
- uint16_t biBitCount;
- uint32_t biCompression;
- uint32_t biSizeImage;
- int32_t biXPelsPerMeter;
- int32_t biYPelsPerMeter;
- uint32_t biClrUsed;
- uint32_t biClrImportant;
-} __attribute__((packed)) BITMAPINFOHEADER;
-
+# include <bmpimage.hpp>
#endif // __WIN32__
/* ----------------------------------------------------------------------------
diff --git a/src/world.cpp b/src/world.cpp
index 8c3d2f8..4fe2743 100644
--- a/src/world.cpp
+++ b/src/world.cpp
@@ -747,7 +747,7 @@ singleDetect(Entity *e)
e->handleHits();
// calculate the line that this entity is currently standing on
- l = std::clamp(static_cast<int>((e->loc.x + e->width / 2 - worldStart) / game::HLINE), 0, static_cast<int>(lineCount - 1));
+ l = (e->loc.x + e->width / 2 - worldStart) / game::HLINE;
// if the entity is under the world/line, pop it back to the surface
if (e->loc.y < worldData[l].groundHeight) {