X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FCharacter.hh;h=4140d17249e2b8d822a31c8e8893e09737ef78b4;hp=d1ec2c313713314bf0c3857002e33387c6a85680;hb=ed5fcf5f1357fc42749408f705e9ec55531ff006;hpb=23d8f7a5fbd1eca7f46f2342c20ac5e28ae0128a diff --git a/src/Character.hh b/src/Character.hh index d1ec2c3..4140d17 100644 --- a/src/Character.hh +++ b/src/Character.hh @@ -1,47 +1,32 @@ -/******************************************************************************* - - Copyright (c) 2009, Charles McGarvey - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*******************************************************************************/ +/*] Copyright (c) 2009-2010, Charles McGarvey [************************** +**] All rights reserved. +* +* vi:ts=4 sw=4 tw=75 +* +* Distributable under the terms and conditions of the 2-clause BSD license; +* see the file COPYING for a complete text of the license. +* +**************************************************************************/ #ifndef _CHARACTER_HH_ #define _CHARACTER_HH_ +#include + #include +#include #include -#include #include -#include +#include +#include +#include #include "Animation.hh" -#include "Tilemap.hh" - -struct Character; +class Character; typedef boost::shared_ptr CharacterP; @@ -50,107 +35,8 @@ typedef boost::shared_ptr CharacterP; * includes the heroine herself and the bad guys. */ -struct Character : public Mf::Entity +class Character : public Mf::RigidBody2 { - /* - struct Derivative - { - Mf::Vector2 velocity; - Mf::Vector2 force; - - Derivative operator*(Mf::Scalar dt) const - { - Derivative derivative; - derivative.velocity = dt * velocity; - derivative.force = dt * force; - return derivative; - } - - Derivative operator+(const Derivative& other) const - { - Derivative derivative; - derivative.velocity = velocity + other.velocity; - derivative.force = force + other.force; - return derivative; - } - }; - - struct State - { - // primary - - Mf::Vector2 position; - Mf::Vector2 momentum; - Mf::Vector2 force; - - // secondary - - Mf::Vector2 velocity; - - // constant - - Mf::Scalar mass; - Mf::Scalar inverseMass; - - void recalculate() - { - velocity = momentum * inverseMass; - } - - - void getDerivative(Derivative& derivative, Mf::Scalar t) const - { - //derivative.velocity = Mf::Vector2(0.0, 0.0); - //derivative.force = Mf::Vector2(0.0, 0.0); - derivative.velocity = velocity; - derivative.force = force; - - //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) - { - position += dt * derivative.velocity; - momentum += dt * derivative.force; - recalculate(); - } - - // these two operator overloads all using the state in generic - // interpolator implementations - - State operator*(Mf::Scalar scalar) const - { - State state = *this; - state.position *= scalar; - state.momentum *= scalar; - state.recalculate(); - return state; - } - - State operator+(const State& state) const - { - State newState = *this; - newState.position += state.position; - newState.momentum += state.momentum; - newState.recalculate(); - return newState; - } - }; -*/ - - Mf::State2 previous; - Mf::State2 current; - - -private: - - static const Mf::Scalar z = 96.0; - -protected: - - Mf::Vector2 userForce; - public: Character(const std::string& name); @@ -159,13 +45,16 @@ public: virtual void update(Mf::Scalar t, Mf::Scalar dt); virtual void draw(Mf::Scalar alpha) const; + void addImpulse(Mf::Vector2 impulse); + void addForce(Mf::Vector2 force); + void setPosition(Mf::Vector2 position); - Tilemap tilemap; + //virtual int getOctant(const Mf::Aabb<3>& aabb) const; + + Mf::Texture tilemap; Animation animation; }; #endif // _CHARACTER_HH_ -/** vim: set ts=4 sw=4 tw=80: *************************************************/ -