forked from miki151/keeperrl
-
Notifications
You must be signed in to change notification settings - Fork 0
/
creature_factory.h
62 lines (52 loc) · 1.96 KB
/
creature_factory.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#ifndef _CREATURE_FACTORY
#define _CREATURE_FACTORY
#include <map>
#include <string>
#include <functional>
#include "util.h"
#include "creature_attributes.h"
#include "tribe.h"
#include "view_object.h"
#include "item_factory.h"
#include "monster_ai.h"
class Creature;
class ItemFactory;
class CreatureFactory {
public:
static PCreature fromId(CreatureId, Tribe*, MonsterAIFactory = MonsterAIFactory::monster());
static vector<PCreature> getFlock(int size, CreatureId, Creature* leader);
static CreatureFactory humanVillage();
static CreatureFactory humanVillagePeaceful();
static CreatureFactory elvenVillage();
static CreatureFactory elvenVillagePeaceful();
static CreatureFactory forrest();
static CreatureFactory crypt();
static CreatureFactory hellLevel();
static CreatureFactory dwarfTown(int num);
static CreatureFactory collectiveStart();
static CreatureFactory collectiveUndead();
static CreatureFactory collectiveEnemies();
static CreatureFactory collectiveFinalAttack();
static CreatureFactory collectiveElfEnemies();
static CreatureFactory collectiveElfFinalAttack();
static CreatureFactory collectiveSurpriseEnemies();
static CreatureFactory goblinTown(int num);
static CreatureFactory level(int num);
static CreatureFactory bottomLevel();
static CreatureFactory singleType(Tribe*, CreatureId);
static CreatureFactory pyramid(int level);
PCreature random(MonsterAIFactory = MonsterAIFactory::monster());
static PCreature getShopkeeper(Location* shopArea, Tribe*);
static PCreature getRollingBoulder(Vec2 direction);
static PCreature getGuardingBoulder(Tribe* tribe);
static PCreature addInventory(PCreature c, const vector<ItemId>& items);
static void init();
private:
CreatureFactory(Tribe* tribe, const vector<CreatureId>& creatures, const vector<double>& weights,
const vector<CreatureId>& unique);
Tribe* tribe;
vector<CreatureId> creatures;
vector<double> weights;
vector<CreatureId> unique;
};
#endif