From a95028547981614e06ea7a6d22b853b85418cea3 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Wed, 15 Apr 2009 17:08:51 +0000 Subject: added info registry, list_info added network info transfer added info based buy menu and related game changes --- src/core/info.h | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 src/core/info.h (limited to 'src/core/info.h') diff --git a/src/core/info.h b/src/core/info.h new file mode 100644 index 0000000..cc480bf --- /dev/null +++ b/src/core/info.h @@ -0,0 +1,108 @@ +/* + core/info.h + This file is part of the Osirion project and is distributed under + the terms of the GNU General Public License version 2 +*/ + +#ifndef __INCLUDED_CORE_INFO_H__ +#define __INCLUDED_CORE_INFO_H__ + +#include +#include +#include +#include + +#include "model/model.h" + +namespace core +{ + +/** + * an information record + */ +class Info +{ +public: + /// create a new labeled information record + Info(const std::string & label); + /// delete the information record + ~Info(); + + typedef std::deque Text; + + inline const std::string & label() const { return info_label; } + + inline const std::string & name() const { return info_name; } + + inline const std::string & modelname() const { return info_modelname; } + + inline const unsigned long ×tamp() const { return info_timestamp; } + + inline Text & text() { return info_text; } + + void set_name(const std::string & name); + + void set_name(const char *name); + + void set_modelname(const std::string & modelname); + + void set_modelname(const char *modelname); + + /// set the timestamp + void set_timestamp(const unsigned long timestamp); + + /// clear the timestamp + void clear_timestamp(); + + /// add a line of info text + void add_text(const char *text); + + /// add a line of info text + void add_text(const std::string & text); + + /// clear the info text + void clear_text(); + + /// print info to sys::con_out + void print() const; + + /// serialize a server-to-client update on a stream + void serialize_server_update(std::ostream & os) const; + + /// receive a server-to-client update from a stream + void receive_server_update(std::istream &is); + +/* ---- static info registry --------------------------------------- */ + + typedef std::map Registry; + + /// add an item to the info regsitry + static void add(Info *info); + + /// search the info registry for a labeled item + static Info *find(const char * label); + + /// search the info registry for a labeled item + static Info *find(const std::string & label); + + /// clear the info registry + static void clear(); + + /// list the info registry + static void list(); + +private: + std::string info_label; + std::string info_name; + std::string info_modelname; + Text info_text; + + long info_credits; + static Registry registry; + + unsigned long info_timestamp; +}; + +} +#endif // __INCLUDED_CORE_INFO_H__ + -- cgit v1.2.3