src/PhysicsWorld.hh
author saiam
Thu, 04 Dec 2008 21:10:41 +0000
changeset 199 f5c86420facd
parent 197 d9ac888de778
child 201 135616467a0a
permissions -rw-r--r--
Jeejee, hirvee hinaus ohi toistaseks.
197
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
     1
#ifndef PHYSICS_WORLD_HH
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
     2
#define PHYSICS_WORLD_HH
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
     3
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
     4
#include <ClanLib/display.h>
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
     5
#include <ClanLib/core.h>
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
     6
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
     7
#include <algorithm>
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
     8
#include <functional>
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
     9
#include <cmath>
199
f5c86420facd Jeejee, hirvee hinaus ohi toistaseks.
saiam
parents: 197
diff changeset
    10
f5c86420facd Jeejee, hirvee hinaus ohi toistaseks.
saiam
parents: 197
diff changeset
    11
197
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    12
#include "Terrain.hh"          
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    13
class PhysicsWorld;
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    14
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    15
#include "PhysicsObject.hh"
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    16
#include "Vector.hh"
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    17
#include "Config.hh"
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    18
#include "Projectile.hh"
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    19
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    20
/**
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    21
* PhysicsWorld class. PhysicsWorld contains PhysicsObjects that are
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    22
* simulated in the PhysicsWorld.
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    23
*/
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    24
class PhysicsWorld : public Terrain {
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    25
    friend class PhysicsObject;
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    26
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    27
private:
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    28
    CL_Timer tick_timer;
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    29
    uint32_t tick_counter;
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    30
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    31
    //    Terrain terrain;
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    32
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    33
protected:
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    34
    std::list<PhysicsObject*> players;
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    35
    std::list<Shot*> projectiles;
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    36
//    std::vector<PhysicsObject*> objects;
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    37
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    38
    // Contains connections between signals and slots
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    39
    CL_SlotContainer slots;
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    40
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    41
    // TODO: Should these be somewhere else?
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    42
    Vector dimensions;
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    43
    Vector gravity;
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    44
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    45
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    46
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    47
public:
199
f5c86420facd Jeejee, hirvee hinaus ohi toistaseks.
saiam
parents: 197
diff changeset
    48
f5c86420facd Jeejee, hirvee hinaus ohi toistaseks.
saiam
parents: 197
diff changeset
    49
    PhysicsWorld(Vector gravity, Vector dimensions);
f5c86420facd Jeejee, hirvee hinaus ohi toistaseks.
saiam
parents: 197
diff changeset
    50
197
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    51
    // TODO: Replace addObject with these?
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    52
    //void addPlayerObject(PlayerObject *object);
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    53
    //void addProjectileObject(ProjectileObject *object);
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    54
    
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    55
    /**
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    56
     * Add object to the PhysicsWorld.
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    57
     *
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    58
     * @param object Pointer to the PhysicsObject to add.
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    59
     */
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    60
    void addPlayerObject(PhysicsObject *object);
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    61
    
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    62
    void addProjectile(Shot *projectile);
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    63
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    64
    /**
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    65
     * Advance one time step in physics simulation.
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    66
     */
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    67
    void tick();
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    68
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    69
    /**
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    70
     * Get current tick in physics simulation.
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    71
     *
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    72
     * @return tick Current simulation tick.
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    73
     */
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    74
    uint32_t getTick();
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    75
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    76
    virtual void draw(CL_GraphicContext *gc);
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    77
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    78
    // TODO This should probably be protected or in GameStat or in GameStatee
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    79
};
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    80
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    81
#endif