Changeset 8445 for code/branches/tutoriallevel2/src/modules/notifications
- Timestamp:
- May 10, 2011, 11:37:22 PM (14 years ago)
- Location:
- code/branches/tutoriallevel2/src/modules/notifications
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/tutoriallevel2/src/modules/notifications/Notification.cc
r8374 r8445 48 48 The sender of the Notification. 49 49 */ 50 Notification::Notification(const std::string& message, const std::string& sender )50 Notification::Notification(const std::string& message, const std::string& sender, notificationMessageType::Value type) 51 51 { 52 52 RegisterRootObject(Notification); … … 54 54 this->message_ = message; 55 55 this->sender_ = sender; 56 this->type_ = type; 56 57 } 57 58 -
code/branches/tutoriallevel2/src/modules/notifications/Notification.h
r8374 r8445 40 40 #include <string> 41 41 #include "core/OrxonoxClass.h" 42 #include "interfaces/NotificationListener.h" 42 43 43 44 namespace orxonox … … 48 49 A Notification represents a short message used to inform the player about something that just happened. With the @ref orxonox::NotificationManager "NotificationManager" a Notification can be sent from any part of orxonox and is then displayed by the proper @ref orxonox::NotificationQueue "NotificationQueue(s)" (depending on which senders the specific @ref orxonox::NotificationQueue "NotificationQueues" accepts). 49 50 50 A Notification is just a data structure that is used internally by the Notifications module.51 A Notification is just a data structure that is used internally by the Notifications module. 51 52 52 53 @author … … 58 59 { 59 60 public: 60 Notification(const std::string& message, const std::string& sender );61 Notification(const std::string& message, const std::string& sender, notificationMessageType::Value type); 61 62 virtual ~Notification(); 62 63 … … 75 76 { return this->sender_; } 76 77 78 /** 79 @brief Get the type of the Notification. 80 @return Returns an enum with the type of the Notification. 81 */ 82 inline notificationMessageType::Value getType(void) const 83 { return this->type_; } 84 77 85 private: 78 86 std::string message_; //!< The Notification message. 79 87 std::string sender_; //!< The sender of the notification. 88 notificationMessageType::Value type_; //!< The type of the notification. 80 89 81 90 void initialize(void); //!< Registers the object and sets some default values. -
code/branches/tutoriallevel2/src/modules/notifications/NotificationDispatcher.cc
r8377 r8445 113 113 { 114 114 const std::string message = this->createNotificationMessage(); 115 NotificationListener::sendNotification(message, this->getSender(), notificationMessageMode::message, notificationSendMode::network, clientId); 115 // TODO: Make the type configurable. 116 NotificationListener::sendNotification(message, this->getSender(), notificationMessageType::info, notificationSendMode::network, clientId); 116 117 } 117 118 else if(GameMode::isServer()) -
code/branches/tutoriallevel2/src/modules/notifications/NotificationManager.cc
r8378 r8445 105 105 this->queues_.clear(); 106 106 } 107 108 /** 109 @brief 110 Creates and registers a Notification with the input message from the input sender. 111 This is called by the NotificationListener, whenever a new notification arrives. 112 @param message 113 The message of the new Notification. 114 @param sender 115 The name of the entity (of the collective) that sent the new Notification. 116 @return 117 Returns true if successful. 118 */ 119 bool NotificationManager::registerNotification(const std::string& message, const std::string& sender, notificationMessageType::Value type) 120 { 121 // TODO: Do something with the type. 122 Notification* notification = new Notification(message, sender, type); 123 return this->registerNotification(notification); 124 } 125 126 /** 127 @brief 128 Executes the input command from the input sender. 129 This is called by the NotificationListener, whenever a new command arrives. 130 @param command 131 The command to be executed, 132 @param sender 133 The The name of the entity (of the collective) that sent the command. 134 */ 135 bool NotificationManager::executeCommand(notificationCommand::Value command, const std::string& sender) 136 { 137 if(command == notificationCommand::clear) 138 { 139 this->commandClear(sender); 140 return true; 141 } 142 143 return false; 144 } 145 146 /** 147 @brief 148 The clear command. Clears all NotificationQueues that have its sender as a target. 149 @param sender 150 The sender of the clear command. 151 */ 152 void NotificationManager::commandClear(const std::string& sender) 153 { 154 bool all = (sender == NotificationListener::ALL); 155 // Clear all NotificationQueues that have the input sender as target. 156 for(std::map<const std::string, NotificationQueue*>::iterator it = this->queues_.begin(); it != this->queues_.end(); it++) // Iterate through all NotificationQueues. 157 { 158 const std::set<std::string>& set = it->second->getTargetsSet(); 159 // If either the sender is 'all', the NotificationQueue has as target all or the NotificationQueue has the input sender as a target. 160 if(all || set.find(NotificationListener::ALL) != set.end() || set.find(sender) != set.end()) 161 it->second->tidy(); 162 } 163 } 107 164 108 bool NotificationManager::registerNotification(const std::string& message, const std::string& sender)109 {110 Notification* notification = new Notification(message, sender);111 return this->registerNotification(notification);112 }113 114 165 /** 115 166 @brief … … 132 183 return true; 133 184 134 bool all = false; 135 if(notification->getSender() == NotificationListener::ALL) // If all are the sender, then the Notifications is added to every NotificationQueue. 136 all = true; 185 // If all are the sender, then the Notifications is added to every NotificationQueue. 186 bool all = (notification->getSender() == NotificationListener::ALL); 137 187 138 188 // Insert the Notification in all NotificationQueues that have its sender as target. … … 364 414 365 415 NotificationQueue* infoQueue = new NotificationQueue("info", NotificationListener::ALL, 1, -1); 366 GUIManager::getInstance().getLuaState()->doString("NotificationLayer.changeQueueFont(\"info\", 24, \" FFFFFF00\")");416 GUIManager::getInstance().getLuaState()->doString("NotificationLayer.changeQueueFont(\"info\", 24, \"CCFFFF00\")"); 367 417 GUIManager::getInstance().getLuaState()->doString("NotificationLayer.resizeQueue(\"info\", 0.6, 0, " + multi_cast<std::string>(infoQueue->getMaxSize()) + ")"); 368 418 GUIManager::getInstance().getLuaState()->doString("NotificationLayer.moveQueue(\"info\", 0.2, 0, 0.8, 0)"); -
code/branches/tutoriallevel2/src/modules/notifications/NotificationManager.h
r8374 r8445 67 67 virtual ~NotificationManager(); 68 68 69 virtual void preDestroy(void); // !<Is called before the object is destroyed.69 virtual void preDestroy(void); // Is called before the object is destroyed. 70 70 71 71 /** … … 75 75 static NotificationManager& getInstance() { return Singleton<NotificationManager>::getInstance(); } // tolua_export 76 76 77 virtual bool registerNotification(const std::string& message, const std::string& sender); 77 virtual bool registerNotification(const std::string& message, const std::string& sender, notificationMessageType::Value type); 78 virtual bool executeCommand(notificationCommand::Value command, const std::string& sender); 78 79 79 bool registerNotification(Notification* notification); // !<Registers a Notification within the NotificationManager.80 void unregisterNotification(Notification* notification, NotificationQueue* queue); // !<Unregisters a Notification within the NotificationManager for a given NotificationQueue.80 bool registerNotification(Notification* notification); // Registers a Notification within the NotificationManager. 81 void unregisterNotification(Notification* notification, NotificationQueue* queue); // Unregisters a Notification within the NotificationManager for a given NotificationQueue. 81 82 82 void getNotifications(NotificationQueue* queue, std::multimap<std::time_t, Notification*>* map, const std::time_t & timeFrameStart, const std::time_t & timeFrameEnd); // !<Fetches the Notifications for a specific NotificationQueue in a specified timeframe and stores them in the input map.83 void getNotifications(NotificationQueue* queue, std::multimap<std::time_t, Notification*>* map, const std::time_t & timeFrameStart, const std::time_t & timeFrameEnd); // Fetches the Notifications for a specific NotificationQueue in a specified timeframe and stores them in the input map. 83 84 84 85 /** 85 @brief Fetches the Notifications for a specific NotificationQueue in a timeframe from now-timeDelayto now and stores them in the input map.86 @param listenerThe NotificationQueue the Notifications are fetched for.86 @brief Fetches the Notifications for a specific NotificationQueue in a timeframe from (now-timeDelay) to now and stores them in the input map. 87 @param queue The NotificationQueue the Notifications are fetched for. 87 88 @param map A pointer to a multimap, in which the notifications are stored. The map needs to have been allocated. 88 89 @param timeDelay The timespan. … … 92 93 { this->getNotifications(queue, map, std::time(0)-timeDelay, std::time(0)); } 93 94 94 void getNewestNotifications(NotificationQueue* queue, std::multimap<std::time_t, Notification*>* map, int numberOfNotifications); // !<Fetches the newest Notifications for a specific NotificationQueue and stores them in the input map.95 void getNewestNotifications(NotificationQueue* queue, std::multimap<std::time_t, Notification*>* map, int numberOfNotifications); // Fetches the newest Notifications for a specific NotificationQueue and stores them in the input map. 95 96 96 void enterEditMode(void); // !<Enters the edit mode of the NotificationLayer.97 void enterEditMode(void); // Enters the edit mode of the NotificationLayer. 97 98 98 bool registerQueue(NotificationQueue* queue); // !<Registers a NotificationQueue.99 void unregisterQueue(NotificationQueue* queue); // !<Unregisters a NotificationQueue.99 bool registerQueue(NotificationQueue* queue); // Registers a NotificationQueue. 100 void unregisterQueue(NotificationQueue* queue); // Unregisters a NotificationQueue. 100 101 101 102 // tolua_begin 102 void loadQueues(void); // !<Loads all the NotificationQueues that should exist.103 void createQueue(const std::string& name); // !<Creates a new NotificationQueue.104 orxonox::NotificationQueue* getQueue(const std::string & name); // !<Get the NotificationQueue with the input name.103 void loadQueues(void); // Loads all the NotificationQueues that should exist. 104 void createQueue(const std::string& name); // Creates a new NotificationQueue. 105 orxonox::NotificationQueue* getQueue(const std::string & name); // Get the NotificationQueue with the input name. 105 106 // tolua_end 106 107 … … 113 114 std::map<const std::string, NotificationQueue*> queues_; //!< The list of NotificationQueues created by the NotificationManager. 114 115 115 bool removeNotification(Notification* notification, std::multimap<std::time_t, Notification*>& map); //!< Helper method that removes an input Notification form an input map. 116 bool removeNotification(Notification* notification, std::multimap<std::time_t, Notification*>& map); // Helper method that removes an input Notification form an input map. 117 118 // Commands 119 void commandClear(const std::string& sender); // The clear command. Clears all NotificationQueues that have its sender as a target. 116 120 117 121 }; // tolua_export -
code/branches/tutoriallevel2/src/modules/notifications/NotificationQueue.cc
r8374 r8445 56 56 @param senders 57 57 The senders that are targets of this NotificationQueue, i.e. the names of senders whose Notifications this NotificationQueue displays. 58 The senders need to be sep erated by commas.58 The senders need to be separated by commas. 59 59 @param size 60 60 The size (the maximum number of displayed Notifications) of this NotificationQueue. … … 304 304 Clears the NotificationQueue by removing all NotificationContainers. 305 305 @param noGraphics 306 If this is eset to true the GUI is not informed of the clearing of the NotificationQueue. This is needed only internally.306 If this is set to true the GUI is not informed of the clearing of the NotificationQueue. This is needed only internally. 307 307 */ 308 308 void NotificationQueue::clear(bool noGraphics) … … 369 369 /** 370 370 @brief 371 Produces all targets of the NotificationQueue concat inated as string, with commas (',') as seperators.371 Produces all targets of the NotificationQueue concatenated as string, with commas (',') as separators. 372 372 @return 373 373 Returns the targets as a string. … … 395 395 The targets are the senders whose Notifications are displayed in this queue. 396 396 @param targets 397 Accepts a string of targets, each sep erated by commas (','), spaces are ignored.397 Accepts a string of targets, each separated by commas (','), spaces are ignored. 398 398 */ 399 399 void NotificationQueue::setTargets(const std::string & targets) … … 412 412 } 413 413 } 414 415 void NotificationQueue::tidy(void) 416 { 417 while(this->size_ > 0) 418 this->pop(); 419 } 414 420 415 421 } -
code/branches/tutoriallevel2/src/modules/notifications/NotificationQueue.h
r8374 r8445 77 77 Displays @ref orxonox::Notification "Notifications" from specific senders. 78 78 79 There are quite some parameters that influence the behavio ur of the NotificationQueue:79 There are quite some parameters that influence the behavior of the NotificationQueue: 80 80 - @b name The name of the NotificationQueue. It needs to be unique. 81 81 - @b senders The senders that are targets of this NotificationQueue, i.e. the names of senders whose Notifications this NotificationQueue displays. … … 145 145 // tolua_begin 146 146 void setTargets(const std::string & targets); //!< Set the targets of this NotificationQueue. 147 const std::string& getTargets(void) const; //!< Returns a string consisting of the concat ination of the targets.147 const std::string& getTargets(void) const; //!< Returns a string consisting of the concatenation of the targets. 148 148 // tolua_end 149 150 void tidy(void); 149 151 150 152 private:
Note: See TracChangeset
for help on using the changeset viewer.