src/Rope.hh
author ekku
Sat, 06 Dec 2008 21:02:35 +0000
changeset 228 dbc1bb7a98b5
parent 225 22ecb9cb9245
child 231 5085764e1dbb
permissions -rw-r--r--
Rope has forces
225
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
     1
#ifndef ROPE_HH
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
     2
#define ROPE_HH
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
     3
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
     4
// Pre-declarations since rope wants to know the Player
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
     5
// and the Player wants to know the rope.
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
     6
class Rope;
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
     7
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
     8
#include "Player.hh"
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
     9
#include "PhysicsObject.hh"
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
    10
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
    11
enum RopeState { FOLDED, FLYING, FIXED };
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
    12
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
    13
class Rope : public PhysicsObject {
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
    14
private:
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
    15
    Player &pl;
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
    16
    // How long is the rope in its static state
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
    17
    float length;
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
    18
    virtual void onCollision (void);
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
    19
    RopeState rs;
228
dbc1bb7a98b5 Rope has forces
ekku
parents: 225
diff changeset
    20
    
dbc1bb7a98b5 Rope has forces
ekku
parents: 225
diff changeset
    21
protected:
dbc1bb7a98b5 Rope has forces
ekku
parents: 225
diff changeset
    22
    virtual float getPivotForce (PhysicsObject *bob);
dbc1bb7a98b5 Rope has forces
ekku
parents: 225
diff changeset
    23
225
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
    24
public:
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
    25
    Rope(Player &climber);
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
    26
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
    27
    void shoot (void);
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
    28
    void release (void);
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
    29
    RopeState getState (void);
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
    30
    virtual void draw(CL_GraphicContext *gc) const;
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
    31
};
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
    32
22ecb9cb9245 Rope can be drawn.
ekku
parents:
diff changeset
    33
#endif