Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
CreatureAIFactory.h
Go to the documentation of this file.
1
/*
2
* This file is part of Project SkyFire https://www.projectskyfire.org.
3
* See LICENSE.md file for Copyright information
4
*/
5
6
#ifndef SKYFIRE_CREATUREAIFACTORY_H
7
#define SKYFIRE_CREATUREAIFACTORY_H
8
9
//#include "Policies/Singleton.h"
10
#include "
FactoryHolder.h
"
11
#include "
GameObjectAI.h
"
12
#include "
ObjectRegistry.h
"
13
14
struct
SelectableAI
:
public
FactoryHolder
<CreatureAI>,
public
Permissible
<Creature>
15
{
16
SelectableAI
(
const
char
*
id
) :
FactoryHolder
<
CreatureAI
>(id) { }
17
};
18
19
template
<
class
REAL_AI>
20
struct
CreatureAIFactory
:
public
SelectableAI
21
{
22
CreatureAIFactory
(
const
char
* name) :
SelectableAI
(name) { }
23
24
CreatureAI
*
Create
(
void
*)
const
;
25
26
int
Permit
(
const
Creature
* c)
const
{
return
REAL_AI::Permissible(c); }
27
};
28
29
template
<
class
REAL_AI>
30
inline
CreatureAI
*
31
CreatureAIFactory<REAL_AI>::Create
(
void
* data)
const
32
{
33
Creature
* creature =
reinterpret_cast<
Creature
*
>
(data);
34
return
(
new
REAL_AI(creature));
35
}
36
37
typedef
FactoryHolder<CreatureAI>
CreatureAICreator
;
38
typedef
FactoryHolder<CreatureAI>::FactoryHolderRegistry
CreatureAIRegistry
;
39
typedef
FactoryHolder<CreatureAI>::FactoryHolderRepository
CreatureAIRepository
;
40
41
//GO
42
struct
SelectableGameObjectAI
:
public
FactoryHolder
<GameObjectAI>,
public
Permissible
<GameObject>
43
{
44
SelectableGameObjectAI
(
const
char
*
id
) :
FactoryHolder
<
GameObjectAI
>(id) { }
45
};
46
47
template
<
class
REAL_GO_AI>
48
struct
GameObjectAIFactory
:
public
SelectableGameObjectAI
49
{
50
GameObjectAIFactory
(
const
char
* name) :
SelectableGameObjectAI
(name) { }
51
52
GameObjectAI
*
Create
(
void
*)
const
;
53
54
int
Permit
(
const
GameObject
* g)
const
{
return
REAL_GO_AI::Permissible(g); }
55
};
56
57
template
<
class
REAL_GO_AI>
58
inline
GameObjectAI
*
59
GameObjectAIFactory<REAL_GO_AI>::Create
(
void
* data)
const
60
{
61
GameObject
* go =
reinterpret_cast<
GameObject
*
>
(data);
62
return
(
new
REAL_GO_AI(go));
63
}
64
65
typedef
FactoryHolder<GameObjectAI>
GameObjectAICreator
;
66
typedef
FactoryHolder<GameObjectAI>::FactoryHolderRegistry
GameObjectAIRegistry
;
67
typedef
FactoryHolder<GameObjectAI>::FactoryHolderRepository
GameObjectAIRepository
;
68
#endif
CreatureAICreator
FactoryHolder< CreatureAI > CreatureAICreator
Definition
CreatureAIFactory.h:37
GameObjectAICreator
FactoryHolder< GameObjectAI > GameObjectAICreator
Definition
CreatureAIFactory.h:65
CreatureAIRegistry
FactoryHolder< CreatureAI >::FactoryHolderRegistry CreatureAIRegistry
Definition
CreatureAIFactory.h:38
GameObjectAIRegistry
FactoryHolder< GameObjectAI >::FactoryHolderRegistry GameObjectAIRegistry
Definition
CreatureAIFactory.h:66
CreatureAIRepository
FactoryHolder< CreatureAI >::FactoryHolderRepository CreatureAIRepository
Definition
CreatureAIFactory.h:39
GameObjectAIRepository
FactoryHolder< GameObjectAI >::FactoryHolderRepository GameObjectAIRepository
Definition
CreatureAIFactory.h:67
FactoryHolder.h
GameObjectAI.h
ObjectRegistry.h
CreatureAI
Definition
CreatureAI.h:54
Creature
Definition
Creature.h:427
FactoryHolder
Definition
FactoryHolder.h:18
FactoryHolder< CreatureAI >::FactoryHolder
FactoryHolder(std::string k)
Definition
FactoryHolder.h:24
FactoryHolder::FactoryHolderRepository
Skyfire::Singleton< FactoryHolderRegistry, Skyfire::NullMutex > FactoryHolderRepository
Definition
FactoryHolder.h:22
FactoryHolder::FactoryHolderRegistry
ObjectRegistry< FactoryHolder< T, Key >, Key > FactoryHolderRegistry
Definition
FactoryHolder.h:20
GameObjectAI
Definition
GameObjectAI.h:16
GameObject
Definition
GameObject.h:629
Permissible
Definition
FactoryHolder.h:43
CreatureAIFactory::Create
CreatureAI * Create(void *) const
Abstract Factory create method.
Definition
CreatureAIFactory.h:31
CreatureAIFactory::Permit
int Permit(const Creature *c) const
Definition
CreatureAIFactory.h:26
CreatureAIFactory::CreatureAIFactory
CreatureAIFactory(const char *name)
Definition
CreatureAIFactory.h:22
GameObjectAIFactory::GameObjectAIFactory
GameObjectAIFactory(const char *name)
Definition
CreatureAIFactory.h:50
GameObjectAIFactory::Permit
int Permit(const GameObject *g) const
Definition
CreatureAIFactory.h:54
GameObjectAIFactory::Create
GameObjectAI * Create(void *) const
Abstract Factory create method.
Definition
CreatureAIFactory.h:59
SelectableAI::SelectableAI
SelectableAI(const char *id)
Definition
CreatureAIFactory.h:16
SelectableGameObjectAI::SelectableGameObjectAI
SelectableGameObjectAI(const char *id)
Definition
CreatureAIFactory.h:44
src
server
game
AI
CreatureAIFactory.h
Generated on
for Project SkyFire Core by
1.17.0