equal
deleted
inserted
replaced
26 |
26 |
27 protected: |
27 protected: |
28 /** |
28 /** |
29 * This registers your AI to the main system so we know about you. |
29 * This registers your AI to the main system so we know about you. |
30 */ |
30 */ |
31 void RegisterFactory(AIFactoryBase *instance, const char *name) |
31 void RegisterFactory(const char *name) |
32 { |
32 { |
33 std::pair<Factories::iterator, bool> P = GetFactories().insert(Factories::value_type(name, instance)); |
33 std::pair<Factories::iterator, bool> P = GetFactories().insert(Factories::value_type(name, this)); |
34 assert(P.second); |
34 assert(P.second); |
35 instance->name = name; |
35 this->name = name; |
36 } |
36 } |
37 |
37 |
38 public: |
38 public: |
39 virtual ~AIFactoryBase() { GetFactories().erase(this->name); } |
39 virtual ~AIFactoryBase() { GetFactories().erase(this->name); } |
40 |
40 |
116 * Example: class FYourClass: public AIFactory<FYourClass> { } |
116 * Example: class FYourClass: public AIFactory<FYourClass> { } |
117 */ |
117 */ |
118 template <class T> |
118 template <class T> |
119 class AIFactory: public AIFactoryBase { |
119 class AIFactory: public AIFactoryBase { |
120 public: |
120 public: |
121 AIFactory() { this->RegisterFactory(this, ((T *)this)->GetName()); } |
121 AIFactory() { this->RegisterFactory(((T *)this)->GetName()); } |
122 }; |
122 }; |
123 |
123 |
124 #endif /* AI_FACTORY_HPP */ |
124 #endif /* AI_FACTORY_HPP */ |