Line data Source code
1 : /*
2 : Minetest
3 : Copyright (C) 2010-2013 celeron55, Perttu Ahola <celeron55@gmail.com>
4 :
5 : This program is free software; you can redistribute it and/or modify
6 : it under the terms of the GNU Lesser General Public License as published by
7 : the Free Software Foundation; either version 2.1 of the License, or
8 : (at your option) any later version.
9 :
10 : This program is distributed in the hope that it will be useful,
11 : but WITHOUT ANY WARRANTY; without even the implied warranty of
12 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 : GNU Lesser General Public License for more details.
14 :
15 : You should have received a copy of the GNU Lesser General Public License along
16 : with this program; if not, write to the Free Software Foundation, Inc.,
17 : 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 : */
19 :
20 : #include "clientobject.h"
21 : #include "debug.h"
22 : #include "porting.h"
23 : #include "constants.h"
24 :
25 : /*
26 : ClientActiveObject
27 : */
28 :
29 47 : ClientActiveObject::ClientActiveObject(u16 id, IGameDef *gamedef,
30 : ClientEnvironment *env):
31 : ActiveObject(id),
32 : m_gamedef(gamedef),
33 47 : m_env(env)
34 : {
35 47 : }
36 :
37 94 : ClientActiveObject::~ClientActiveObject()
38 : {
39 47 : removeFromScene(true);
40 47 : }
41 :
42 44 : ClientActiveObject* ClientActiveObject::create(ActiveObjectType type,
43 : IGameDef *gamedef, ClientEnvironment *env)
44 : {
45 : // Find factory function
46 44 : std::map<u16, Factory>::iterator n;
47 44 : n = m_types.find(type);
48 44 : if(n == m_types.end()) {
49 : // If factory is not found, just return.
50 0 : dstream<<"WARNING: ClientActiveObject: No factory for type="
51 0 : <<(int)type<<std::endl;
52 0 : return NULL;
53 : }
54 :
55 44 : Factory f = n->second;
56 44 : ClientActiveObject *object = (*f)(gamedef, env);
57 44 : return object;
58 : }
59 :
60 3 : void ClientActiveObject::registerType(u16 type, Factory f)
61 : {
62 3 : std::map<u16, Factory>::iterator n;
63 3 : n = m_types.find(type);
64 3 : if(n != m_types.end())
65 0 : return;
66 3 : m_types[type] = f;
67 3 : }
68 :
69 :
|