Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-11-01 13:33:18 +0000
committerStijn Buys <ingar@osirion.org>2008-11-01 13:33:18 +0000
commit83d6c17799c4d448a67ab5cdad02954282fa5c94 (patch)
tree2d76abb9bb501491f78e07822ed52e8302fdd247 /src/core/func.cc
parenta6bceed80f1b4315f23656efeceb6fe02cc7641c (diff)
server-side model loading, initial @dock function
Diffstat (limited to 'src/core/func.cc')
-rw-r--r--src/core/func.cc33
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