diff options
author | Stijn Buys <ingar@osirion.org> | 2008-02-13 18:29:55 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2008-02-13 18:29:55 +0000 |
commit | ee891311ccc79bbc7837caac8546aac5b9bdf80f (patch) | |
tree | 4279b0bec63d2152669b19d1f11199c56ae57b7b /src/core/func.cc | |
parent | a65427370dfe27dfa74efb0bddd44d7ffb9552ac (diff) |
camera Overview as spectator only, join works
Diffstat (limited to 'src/core/func.cc')
-rw-r--r-- | src/core/func.cc | 54 |
1 files changed, 49 insertions, 5 deletions
diff --git a/src/core/func.cc b/src/core/func.cc index 9f64906..af811cd 100644 --- a/src/core/func.cc +++ b/src/core/func.cc @@ -16,20 +16,57 @@ namespace func std::map<std::string, Func> registry; +void add(const char * functionname, FuncPtr functionptr, unsigned int flags) +{ + std::map<std::string, Func>::iterator it = registry.find(functionname); + Func f; + if (it == registry.end()) { + // function does not yet exist in the registry + f = new Func_t(); + registry[std::string(functionname)] = f; + } else { + f = (*it).second; + } -void add(const char * functionname, Func functionptr) + f->name = functionname; + f->ptr = (void *)functionptr; + f->flags = flags; +} + +void add(const char * functionname, GameFuncPtr gamefunctionptr, unsigned int flags) { - registry[std::string(functionname)] = functionptr; + std::map<std::string, Func>::iterator it = registry.find(functionname); + Func f; + if (it == registry.end()) { + // function does not yet exist in the registry + f = new Func_t(); + registry[std::string(functionname)] = f; + } else { + f = (*it).second; + } + + f->name = functionname; + f->ptr = (void *)gamefunctionptr; + f->flags = flags & func::Game; } void remove(const char *functionname) { - registry.erase(std::string(functionname)); + std::map<std::string, Func>::iterator it = registry.find(functionname); + if (it != registry.end()) { + delete (*it).second; + registry.erase(std::string(functionname)); + } } void remove(const std::string &functionname) { - registry.erase(functionname); + std::map<std::string, Func>::iterator it = registry.find(functionname); + if (it != registry.end()) { + delete (*it).second; + registry.erase(std::string(functionname)); + } + } Func find(const std::string &functionname) @@ -43,10 +80,17 @@ Func find(const std::string &functionname) void list() { + char typeindicator; + std::map<std::string, Func>::iterator it; for (it = registry.begin(); it != registry.end(); it++) { - con_print << " " << (*it).first << std::endl; + if ((*it).second->flags & func::Game) + typeindicator = 'G'; + else + typeindicator = ' '; + con_print << " " << typeindicator << " " << (*it).first << std::endl; } + con_print << registry.size() << " registered functions" << std::endl; } |