diff options
Diffstat (limited to 'src/messages.hpp')
-rw-r--r-- | src/messages.hpp | 57 |
1 files changed, 52 insertions, 5 deletions
diff --git a/src/messages.hpp b/src/messages.hpp index 22943ab9..0443a6c8 100644 --- a/src/messages.hpp +++ b/src/messages.hpp @@ -1,9 +1,56 @@ #pragma once #include "h-basic.h" +#include "message.hpp" -void message_init(); -s16b message_num(); -cptr message_str(int age); -byte message_color(int age); -void message_add(cptr msg, byte color); +#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 &); + +}; |