diff options
author | Bardur Arantsson <bardur@scientician.net> | 2017-06-13 18:24:42 +0200 |
---|---|---|
committer | Bardur Arantsson <bardur@scientician.net> | 2017-06-13 18:24:42 +0200 |
commit | 554ff9a63d5d9bc64f668a00b6baa9b91dc41306 (patch) | |
tree | 6d25a4f53042a4f4154d07fa77921c0ba13b68bd /src/messages.hpp | |
parent | 0595b2fa946619d29624505f8edc0f9c00146e61 (diff) |
Move "messages" to Game struct
Diffstat (limited to 'src/messages.hpp')
-rw-r--r-- | src/messages.hpp | 64 |
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 &); + +}; |