Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/output/src/orxonox/chat/ChatHistory.h @ 8854

Last change on this file since 8854 was 8829, checked in by landauf, 13 years ago

enhanced chat system. chat related code is now separated into network-side code (located in Host, Client, Server) and client-side code (located in ChatManager).
note that there are now two chat related listeners: NetworkChatListener, which is used to send chat from the network to ChatManager, and ChatListener, which is used to send online and offline chat from ChatManager to the actual chat interfaces (ChatOverlay, ChatInputHandler, …).
the "chat" console command now supports a second argument which is the clientID of the receiver. this allows private messages (or gameplay messages directed to only one specific player).

  • Property svn:eol-style set to native
File size: 3.5 KB
Line 
1/*
2 *   ORXONOX - the hottest 3D action shooter ever to exist
3 *                    > www.orxonox.net <
4 *
5 *
6 *   License notice:
7 *
8 *   This program is free software; you can redistribute it and/or
9 *   modify it under the terms of the GNU General Public License
10 *   as published by the Free Software Foundation; either version 2
11 *   of the License, or (at your option) any later version.
12 *
13 *   This program is distributed in the hope that it will be useful,
14 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
15 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 *   GNU General Public License for more details.
17 *
18 *   You should have received a copy of the GNU General Public License
19 *   along with this program; if not, write to the Free Software
20 *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
21 *
22 *   Author:
23 *      Sandro 'smerkli' Merkli
24 *   Co-authors:
25 *      ...
26 *
27 */
28
29#include <deque>
30#include <string>
31#include <fstream>
32#include <iostream>
33#include <cassert>
34
35/* define this if you're unit testing */
36//#define CHATTEST
37
38#ifndef CHATTEST
39#include "OrxonoxPrereqs.h"
40
41#include "util/Singleton.h"
42#include "core/BaseObject.h"
43#include "core/PathConfig.h"
44#include "chat/ChatListener.h"
45#include "infos/PlayerInfo.h"
46#include "PlayerManager.h"
47#endif
48
49#ifndef _ChatHistory_H__
50#define _ChatHistory_H__
51
52
53/* Class to implement chat history */
54#ifndef CHATTEST
55namespace orxonox
56{
57#endif
58
59  /* constructor */
60#ifndef CHATTEST
61  class _OrxonoxExport ChatHistory : public ChatListener,
62    public Singleton<ChatHistory>
63
64#else
65  class ChatHistory
66#endif
67  {
68    public:
69      /* constructors, destructors */
70#ifndef CHATTEST
71      ChatHistory();
72      friend class Singleton<ChatHistory>;
73#else
74      ChatHistory();
75#endif
76      virtual ~ChatHistory();
77
78
79    //protected:
80      /** what to do with incoming chat
81       *
82       * \param message The incoming message
83       * \param senderID Identification number of the sender
84       */
85      virtual void incomingChat(const std::string& message, const std::string& name);
86
87      /** Synchronize logfile onto the hard drive
88       *
89       * \return 0 for success, other for error
90       */
91      int syncLog();
92
93      /** debug-print: output the whole history to stdout */
94      void debug_printhist();
95
96    private:
97      /* FIELDS */
98      /** Vector to store the history in */
99      std::deque<std::string> hist_buffer;
100
101      /** Maximum number of lines stored in this history */
102      unsigned int hist_maxlines;
103
104      /** is logging enabled? */
105      bool hist_log_enabled;
106
107      /** path of logfile on the file system */
108      std::string hist_logfile_path;
109
110      /** Output file stream for logfile */
111      std::ofstream hist_logfile;
112
113#ifndef CHATTEST
114      static ChatHistory* singletonPtr_s;
115#endif
116
117
118
119      /* METHODS */
120      /** Append line to chat history
121       *
122       * \param toadd The line to add to the history
123       * \return 0 for success, other for error TODO: Throw exception
124       */
125      int chat_hist_addline( const std::string& toadd );
126
127      /** Append line to logfile
128       *
129       * \param toadd The line to add to the logfile
130       * \return 0 for success, other for error TODO: Throw exception
131       */
132      int chat_hist_logline( const std::string& toadd );
133
134      /** open logfile to log to
135       *
136       * \return 0 for success,s other for error
137       */
138      int chat_hist_openlog();
139
140
141      /** close logfile */
142      void chat_hist_closelog();
143  };
144
145#ifndef CHATTEST
146}
147#endif
148
149#endif /* _ChatHistory_H__ */
Note: See TracBrowser for help on using the repository browser.