summaryrefslogtreecommitdiff
path: root/src/messages.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/messages.hpp')
-rw-r--r--src/messages.hpp56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/messages.hpp b/src/messages.hpp
new file mode 100644
index 00000000..0443a6c8
--- /dev/null
+++ b/src/messages.hpp
@@ -0,0 +1,56 @@
+#pragma once
+
+#include "h-basic.h"
+#include "message.hpp"
+
+#include <boost/circular_buffer.hpp>
+
+/**
+ * Game message buffer
+ */
+class Messages final {
+
+private:
+ boost::circular_buffer<message> buffer;
+
+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 &);
+
+};