X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FCharacter.hh;h=b72e8c87e58910d6296218b2eff58696e8ac2ab1;hp=a92992c6e3eca9fc4e6bb22581b8903f80bcdf58;hb=fdfba4553433b9b2804c2772c7645211b828c2ea;hpb=5fa5f117f28922a7e539a432367960c1a61f837d diff --git a/src/Character.hh b/src/Character.hh index a92992c..b72e8c8 100644 --- a/src/Character.hh +++ b/src/Character.hh @@ -40,15 +40,17 @@ #include +struct Character; +typedef boost::shared_ptr CharacterP; + + /** * Parent class of animate objects with "personalities." This basically * includes the heroine herself and the bad guys. */ -class Character : public Mf::Entity +struct Character : public Mf::Entity { -public: - struct Derivative { Mf::Vector2 velocity; @@ -128,33 +130,38 @@ public: } }; - - Character(const std::string& name); - virtual ~Character(); - - void update(Mf::Scalar t, Mf::Scalar dt); - void handleEvent(const Mf::Event& event); - void draw(Mf::Scalar alpha) const; - - Mf::Tilemap& getTilemap(); - Mf::Animation& getAnimation(); - State previous; State current; stlplus::ntree::iterator treeNode; -private: - void updateContainers(); +private: static const Mf::Scalar z = 96.0; Mf::Tilemap tilemap_; Mf::Animation animation_; -}; -typedef boost::shared_ptr CharacterPtr; + void updateContainers(); + +public: + + inline static CharacterP alloc(const std::string& name) + { + return CharacterP(new Character(name)); + } + + Character(const std::string& name); + virtual ~Character(); + + void update(Mf::Scalar t, Mf::Scalar dt); + void handleEvent(const Mf::Event& event); + void draw(Mf::Scalar alpha) const; + + Mf::Tilemap& getTilemap(); + Mf::Animation& getAnimation(); +}; inline Character::State operator*(Mf::Scalar scalar, const Character::State& state)