summaryrefslogtreecommitdiff
path: root/src/messages.hpp
diff options
context:
space:
mode:
authorBardur Arantsson <bardur@scientician.net>2017-06-13 18:24:42 +0200
committerBardur Arantsson <bardur@scientician.net>2017-06-13 18:24:42 +0200
commit554ff9a63d5d9bc64f668a00b6baa9b91dc41306 (patch)
tree6d25a4f53042a4f4154d07fa77921c0ba13b68bd /src/messages.hpp
parent0595b2fa946619d29624505f8edc0f9c00146e61 (diff)
Move "messages" to Game struct
Diffstat (limited to 'src/messages.hpp')
-rw-r--r--src/messages.hpp64
1 files changed, 46 insertions, 18 deletions
diff --git a/src/messages.hpp b/src/messages.hpp
index 99edd0e2..4c6fb2d3 100644
--- a/src/messages.hpp
+++ b/src/messages.hpp
@@ -3,26 +3,54 @@
#include "h-basic.h"
#include "message.hpp"
-/**
- * Get the current number of messages.
- */
-s16b message_num();
+#include <boost/circular_buffer.hpp>
/**
- * Get message of given age. Age must be
- * in the half-open interval [0, message_num).
- *
- * The reference is only valid as long as
- * no messages are added.
+ * Game message buffer
*/
-message const &message_at(int age);
+struct messages final {
-/**
- * Add a message.
- */
-void message_add(cptr msg, byte color);
+private:
+ boost::circular_buffer<message> buffer;
-/**
- * Add a message.
- */
-void message_add(message const &);
+public:
+
+ /**
+ * Create message buffer with space for given
+ * number of messages.
+ */
+ explicit messages(std::size_t n)
+ : buffer(n)
+ {
+ }
+
+ /**
+ * Get the current number of messages.
+ */
+ s16b size() const;
+
+ /**
+ * Get message of given age. Age must be
+ * in the half-open interval [0, message_num).
+ *
+ * The reference is only valid as long as
+ * no messages are added.
+ */
+ message const &at(int age) const;
+
+ /**
+ * Add a message.
+ */
+ void add(cptr msg, byte color);
+
+ /**
+ * Add a message.
+ */
+ void add(std::string const &msg, byte color);
+
+ /**
+ * Add a message.
+ */
+ void add(message const &);
+
+};