X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FCharacter.hh;h=d1ec2c313713314bf0c3857002e33387c6a85680;hp=a92992c6e3eca9fc4e6bb22581b8903f80bcdf58;hb=23d8f7a5fbd1eca7f46f2342c20ac5e28ae0128a;hpb=bfa6212d09d8735d8fd5e2638188e4a99f21ada4 diff --git a/src/Character.hh b/src/Character.hh index a92992c..d1ec2c3 100644 --- a/src/Character.hh +++ b/src/Character.hh @@ -31,13 +31,18 @@ #include -#include #include #include #include -#include -#include -#include +#include + +#include "Animation.hh" +#include "Tilemap.hh" + + + +struct Character; +typedef boost::shared_ptr CharacterP; /** @@ -45,10 +50,9 @@ * includes the heroine herself and the bad guys. */ -class Character : public Mf::Entity +struct Character : public Mf::Entity { -public: - + /* struct Derivative { Mf::Vector2 velocity; @@ -88,6 +92,11 @@ public: Mf::Scalar mass; Mf::Scalar inverseMass; + void recalculate() + { + velocity = momentum * inverseMass; + } + void getDerivative(Derivative& derivative, Mf::Scalar t) const { @@ -95,11 +104,9 @@ public: //derivative.force = Mf::Vector2(0.0, 0.0); derivative.velocity = velocity; derivative.force = force; - } - void recalculate() - { - velocity = momentum * inverseMass; + //Mf::Vector2 x = position - Mf::Vector2(500.0, 200.0); + //derivative.force += -15.0 * x - 1.5 * velocity; } void applyDerivative(const Derivative& derivative, Mf::Scalar dt) @@ -109,6 +116,9 @@ public: recalculate(); } + // these two operator overloads all using the state in generic + // interpolator implementations + State operator*(Mf::Scalar scalar) const { State state = *this; @@ -118,7 +128,7 @@ public: return state; } - State operator+(State state) const + State operator+(const State& state) const { State newState = *this; newState.position += state.position; @@ -127,44 +137,32 @@ public: return newState; } }; +*/ + Mf::State2 previous; + Mf::State2 current; - 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; +private: - stlplus::ntree::iterator treeNode; + static const Mf::Scalar z = 96.0; -private: +protected: - void updateContainers(); + Mf::Vector2 userForce; - static const Mf::Scalar z = 96.0; +public: - Mf::Tilemap tilemap_; - Mf::Animation animation_; -}; + Character(const std::string& name); + virtual ~Character() {} -typedef boost::shared_ptr CharacterPtr; + virtual void update(Mf::Scalar t, Mf::Scalar dt); + virtual void draw(Mf::Scalar alpha) const; -inline Character::State operator*(Mf::Scalar scalar, const Character::State& state) -{ - Character::State newState = state; - newState.position *= scalar; - newState.momentum *= scalar; - newState.recalculate(); - return newState; -} + Tilemap tilemap; + Animation animation; +}; #endif // _CHARACTER_HH_