forked from miki151/keeperrl
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcreature_action.cpp
More file actions
39 lines (30 loc) · 817 Bytes
/
creature_action.cpp
File metadata and controls
39 lines (30 loc) · 817 Bytes
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
#include "stdafx.h"
#include "creature_action.h"
CreatureAction::CreatureAction(WConstCreature c, ActionFun f) : action(f), performer(c) {
}
CreatureAction::CreatureAction(const string& msg)
: action(nullptr), failedMessage(msg) {
}
void CreatureAction::perform(WCreature c) {
CHECK(c == performer);
CHECK(action);
action(c);
}
CreatureAction CreatureAction::prepend(ActionFun f) {
CHECK(action);
ActionFun tmp = action;
action = [=] (WCreature c) { f(c); tmp(c); };
return *this;
}
CreatureAction CreatureAction::append(ActionFun f) {
CHECK(action);
ActionFun tmp = action;
action = [=] (WCreature c) { tmp(c); f(c); };
return *this;
}
string CreatureAction::getFailedReason() const {
return failedMessage;
}
CreatureAction::operator bool() const {
return action != nullptr;
}