Author: boucman
Date: Sat Apr 5 22:08:57 2008
New Revision: 25599
URL: http://svn.gna.org/viewcvs/wesnoth?rev=25599&view=rev
Log:
allow events to have multiple names patch #1043 by segfault
Modified:
trunk/changelog
trunk/src/game_events.cpp
Modified: trunk/changelog
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/changelog?rev=25599&r1=25598&r2=25599&view=diff
==============================================================================
--- trunk/changelog (original)
+++ trunk/changelog Sat Apr 5 22:08:57 2008
@@ -81,6 +81,7 @@
on recall events
* Add support for overlay terrains (terrains which can be placed above any
base terrain)
+ * Add multiple types for events
* miscellaneous and bug fixes:
* Changed logging to have less overhead when it is turned off (patch #1038)
* Fixed error message for broken add-on campaigns (bug #11078)
Modified: trunk/src/game_events.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/game_events.cpp?rev=25599&r1=25598&r2=25599&view=diff
==============================================================================
--- trunk/src/game_events.cpp (original)
+++ trunk/src/game_events.cpp Sat Apr 5 22:08:57 2008
@@ -356,7 +356,7 @@
{
public:
event_handler(const config& cfg) :
- name_(cfg["name"]),
+ names_(utils::split(cfg["name"])),
first_time_only_(utils::string_bool(cfg["first_time_only"],true)),
disabled_(false),rebuild_screen_(false),
cfg_(&cfg)
@@ -370,7 +370,7 @@
cfg = cfg_.get_config();
}
- const std::string& name() const { return name_; }
+ const std::vector< std::string >& names() const { return names_; }
bool first_time_only() const { return first_time_only_; }
@@ -415,7 +415,7 @@
private:
void handle_event_command(const queued_event& event_info, const
std::string& cmd, const vconfig cfg, bool& mutated, bool& skip_messages);
- std::string name_;
+ std::vector< std::string > names_;
bool first_time_only_;
bool disabled_;
bool rebuild_screen_;
@@ -2743,8 +2743,13 @@
// Commit any spawned events-within-events
while(new_handlers.size() > 0) {
event_handler& new_handler = new_handlers.back();
-
events_map.insert(std::pair<std::string,event_handler>(new_handler.name(),new_handler));
- LOG_NG << "spawning new handler for event " <<
new_handler.name() << "\n";
+ std::vector<std::string> names = new_handler.names();
+ std::vector<std::string>::iterator iter,end;
+ for (iter = names.begin(),end = names.end();
+ iter != end; ++iter) {
+
events_map.insert(std::pair<std::string,event_handler>(*iter,new_handler));
+ LOG_NG << "spawning new handler for event " << *iter << "\n";
+ }
//new_handler.cfg_->debug(lg::info(lg::engine));
new_handlers.pop_back();
}
@@ -2762,8 +2767,12 @@
mref->command["name"] = mref->name;
mref->command["first_time_only"] = "no";
event_handler new_handler(mref->command);
-
events_map.insert(std::pair<std::string,event_handler>(
- new_handler.name(), new_handler));
+ std::vector<std::string> names =
new_handler.names();
+ std::vector<std::string>::iterator iter,end;
+ for (iter = names.begin(),end = names.end();
+ iter != end; ++iter) {
+
events_map.insert(std::pair<std::string,event_handler>(*iter, new_handler));
+ }
}
} else if(mref->command.empty()) {
mref->command["name"] = mref->name;
@@ -2969,8 +2978,12 @@
for(config::child_list::const_iterator i = events_list.begin();
i != events_list.end(); ++i) {
event_handler new_handler(**i);
- events_map.insert(std::pair<std::string,event_handler>(
- new_handler.name(), new_handler));
+ std::vector<std::string> names = new_handler.names();
+ std::vector<std::string>::iterator iter,end;
+ for (iter = names.begin(),end = names.end();
+ iter != end; ++iter) {
+ events_map.insert(std::pair<std::string,event_handler>(*iter,
new_handler));
+ }
}
std::vector<std::string> unit_ids = utils::split(cfg["unit_wml_ids"]);
for(std::vector<std::string>::const_iterator id_it = unit_ids.begin();
id_it != unit_ids.end(); ++id_it) {
@@ -2999,8 +3012,12 @@
while(itor != state_of_game->wml_menu_items.end()) {
if(!itor->second->command.empty()) {
event_handler new_handler(itor->second->command);
- events_map.insert(std::pair<std::string,event_handler>(
- new_handler.name(), new_handler));
+ std::vector<std::string> names = new_handler.names();
+ std::vector<std::string>::iterator iter,end;
+ for (iter = names.begin(),end = names.end();
+ iter != end; ++iter) {
+
events_map.insert(std::pair<std::string,event_handler>(*iter, new_handler));
+ }
}
++itor;
++wmi_count;
@@ -3084,7 +3101,12 @@
for(config::child_list::const_iterator new_ev = cfgs.begin();
new_ev != cfgs.end(); ++ new_ev) {
unit_wml_configs.push_back(new config(**new_ev));
event_handler new_handler(*unit_wml_configs.back());
-
events_map.insert(std::pair<std::string,event_handler>(new_handler.name(),
new_handler));
+ std::vector<std::string> names = new_handler.names();
+ std::vector<std::string>::iterator iter,end;
+ for (iter = names.begin(),end = names.end();
+ iter != end; ++iter) {
+
events_map.insert(std::pair<std::string,event_handler>(*iter, new_handler));
+ }
}
}
}
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits