Roguelike
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
skill.h
Go to the documentation of this file.
1 #ifndef ROGUELIKE_ACTION_SKILL_SKILL_H_
2 #define ROGUELIKE_ACTION_SKILL_SKILL_H_
3 
4 // Inheritance
5 // (none)
6 
7 // External Dependencies
8 #include <list>
9 #include <string>
10 #include <ugdk/portable/tr1.h>
11 #include FROM_TR1(functional)
12 
13 // Internal Dependencies
15 
16 // Forward Declarations
17 #include <ugdk/math.h>
18 #include "game/base.h"
19 
20 namespace game {
21 namespace action {
22 namespace skill {
23 
24 typedef std::list<base::GameThing> GameTargets;
25 
26 struct Efficiency {
27  double efficiency;
28 
29  Efficiency(double efficiency) : efficiency(efficiency) {}
30 
31  operator double() { return efficiency; }
32 };
33 struct SpendInfo {
36 
37  SpendInfo(const time::TimeElapsed& time_elapsed, const Efficiency& efficiency)
38  : time_elapsed(time_elapsed), efficiency(efficiency) {}
39 
40  operator bool() { return time_elapsed; }
41  operator Efficiency() { return efficiency; }
42  operator time::TimeElapsed() { return time_elapsed; }
43 };
44 
45 typedef std::tr1::function<void (base::GameObject*, const GameTargets&, const Efficiency&)>
47 
48 class Skill {
49  public:
50  Skill() {}
51  virtual ~Skill() {}
52 
53  virtual time::TimeElapsed operator()(base::GameObject* caster, const GameTargets& targets) = 0;
54  virtual time::TimeElapsed operator()(base::GameObject* caster, const ugdk::math::Integer2D& target);
57 
58  // Needed for GenericContainer
59  static Skill* LoadFromFile(const std::string&) { return nullptr; }
60 };
61 
62 
63 } // namespace skill
64 } // namespace action
65 } // namespace game
66 
67 #endif /* ROGUELIKE_ACTION_SKILL_SKILL_H_ */
std::tr1::function< void(base::GameObject *, const GameTargets &, const Efficiency &)> GameAction
Definition: skill.h:46
Definition: gameobject.h:53
Efficiency efficiency
Definition: skill.h:35
Definition: skill.h:33
static Skill * LoadFromFile(const std::string &)
Definition: skill.h:59
virtual time::TimeElapsed operator()(base::GameObject *caster, const GameTargets &targets)=0
Definition: skill.h:26
Definition: aim.cc:15
Definition: timeelapsed.h:20
double efficiency
Definition: skill.h:27
SpendInfo(const time::TimeElapsed &time_elapsed, const Efficiency &efficiency)
Definition: skill.h:37
Efficiency(double efficiency)
Definition: skill.h:29
time::TimeElapsed time_elapsed
Definition: skill.h:34
Skill()
Definition: skill.h:50
virtual ~Skill()
Definition: skill.h:51
std::list< base::GameThing > GameTargets
Definition: skill.h:24
Definition: skill.h:48