-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEnemyCatalog.cpp
More file actions
61 lines (51 loc) · 1.43 KB
/
EnemyCatalog.cpp
File metadata and controls
61 lines (51 loc) · 1.43 KB
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
#include "EnemyCatalog.h"
#include "Enemy.h"
namespace {
constexpr char ZOMBIE_SYMBOL = '@';
constexpr char GHOST_SYMBOL = '&';
void configureZombie(Enemy& enemy) {
enemy.respawnMode = Enemy::RespawnMode::None;
enemy.attackMode = Enemy::AttackMode::Ranged;
enemy.stopRange = 1.45f;
enemy.moveSpeed = 1.08f;
enemy.attackRange = 4.5f;
enemy.maxHp = 18;
enemy.leavesCorpse = true;
enemy.aliveTextureName = "sprite_zombie";
enemy.deadTextureName = "sprite_zombie_dead";
enemy.attackSampleId = "zombie_fire";
enemy.dieSampleId = "zombie_die";
}
void configureGhost(Enemy& enemy) {
enemy.respawnMode = Enemy::RespawnMode::Auto;
enemy.attackMode = Enemy::AttackMode::Touch;
enemy.stopRange = 0.55f;
enemy.moveSpeed = 0.72f;
enemy.attackRange = 0.75f;
enemy.maxHp = 36;
enemy.respawnDelayMs = 1800u;
enemy.aliveTextureName = "sprite_ghost";
enemy.attackSampleId = "ghost_attack";
enemy.dieSampleId = "ghost_die";
}
} // namespace
namespace EnemyCatalog {
bool isMapSymbol(char symbol) {
return symbol == ZOMBIE_SYMBOL || symbol == GHOST_SYMBOL;
}
bool spawnFromMapSymbol(Enemy& enemy, char symbol, float x, float y) {
enemy.clear();
switch (symbol) {
case ZOMBIE_SYMBOL:
configureZombie(enemy);
enemy.spawn(x, y);
return true;
case GHOST_SYMBOL:
configureGhost(enemy);
enemy.spawn(x, y);
return true;
default:
return false;
}
}
} // namespace EnemyCatalog