diff options
author | Stijn Buys <ingar@osirion.org> | 2008-11-01 13:33:18 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2008-11-01 13:33:18 +0000 |
commit | 83d6c17799c4d448a67ab5cdad02954282fa5c94 (patch) | |
tree | 2d76abb9bb501491f78e07822ed52e8302fdd247 /src/core/func.cc | |
parent | a6bceed80f1b4315f23656efeceb6fe02cc7641c (diff) |
server-side model loading, initial @dock function
Diffstat (limited to 'src/core/func.cc')
-rw-r--r-- | src/core/func.cc | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/src/core/func.cc b/src/core/func.cc index 81175f8..42c46c8 100644 --- a/src/core/func.cc +++ b/src/core/func.cc @@ -18,12 +18,12 @@ namespace core Func::Registry Func::func_registry; -Func * Func::add(const char *name, FuncPtr functionptr, unsigned int flags) +Func * Func::add(const char *name, FuncPtr functionptr, bool shared) { Func *func = 0; Registry::iterator it = func_registry.find(name); if (it == func_registry.end()) { - func = new Func(name, (void *)functionptr, flags & ~Func::Game); + func = new Func(name, (void *)functionptr, shared ? Shared : 0); func_registry[std::string(name)] = func; //con_debug << "Function '" << name << "' registered." << std::endl; } else { @@ -33,12 +33,27 @@ Func * Func::add(const char *name, FuncPtr functionptr, unsigned int flags) return func; } -Func *Func::add(const char *name, GameFuncPtr gamefunctionptr, unsigned int flags) +Func *Func::add(const char *name, GameFuncPtr gamefunctionptr) { Func *func = 0; Registry::iterator it = func_registry.find(name); if (it == func_registry.end()) { - func = new Func(name, (void *)gamefunctionptr, flags | Func::Game); + func = new Func(name, (void *)gamefunctionptr, Game); + func_registry[func->name()] = func; + //con_debug << "Function '" << name << "' registered." << std::endl; + } else { + con_warn << "Function '" << name << "' already registered!" << std::endl; + func = (*it).second; + } + return func; +} + +Func *Func::add(const char *name, TargetFuncPtr targetfunctionptr) +{ + Func *func = 0; + Registry::iterator it = func_registry.find(name); + if (it == func_registry.end()) { + func = new Func(name, (void *)targetfunctionptr, Game | Target); func_registry[func->name()] = func; //con_debug << "Function '" << name << "' registered." << std::endl; } else { @@ -145,5 +160,15 @@ void Func::exec(Player *player, std::string const &args) gamefunction(player, args); } +void Func::exec(Player *player, Entity *entity) +{ + if (!(flags() & (Game | Target))) + return; + + TargetFuncPtr targetfunction = (TargetFuncPtr) func_ptr; + targetfunction(player, entity); + +} + } // namespace core |