src/proto2/GameState.hh
author saiam
Sat, 29 Nov 2008 20:59:50 +0000
changeset 136 3a15a5937f7a
parent 127 241830182118
child 153 73402d5b778e
permissions -rw-r--r--
Moved constants to one header Config.hh, we probably should use somekind of resourcemanager. But do we have time for that? :)
3
5a209a8585c9 proto p2
terom
parents:
diff changeset
     1
#ifndef GAMESTATE_HH
5a209a8585c9 proto p2
terom
parents:
diff changeset
     2
#define GAMESTATE_HH
5a209a8585c9 proto p2
terom
parents:
diff changeset
     3
50
9e1a6506f5a1 some rough-handed code modifications towards a newer, better, working Physics
terom
parents: 42
diff changeset
     4
#include "Physics.hh"
9e1a6506f5a1 some rough-handed code modifications towards a newer, better, working Physics
terom
parents: 42
diff changeset
     5
#include "Input.hh"
136
3a15a5937f7a Moved constants to one header Config.hh, we probably should use somekind of resourcemanager. But do we have time for that? :)
saiam
parents: 127
diff changeset
     6
#include "Config.hh"
4
e28b28b8817c Drawer lis?tty. Pari metodia gamestateen ja dimensioniin.
ekku
parents: 3
diff changeset
     7
5
617813994ab1 move proto/p2 -> src/proto2
terom
parents: 4
diff changeset
     8
#include <list>
22
b70d30e1b0fe all the network code is now there, although it doesn't quite work
terom
parents: 8
diff changeset
     9
#include <stdexcept>
108
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    10
#include <cmath>
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    11
26
5685602aeb9c it works \o/
terom
parents: 25
diff changeset
    12
// forward-declare GameState
5685602aeb9c it works \o/
terom
parents: 25
diff changeset
    13
class GameState;
5685602aeb9c it works \o/
terom
parents: 25
diff changeset
    14
42
eb1a93a38cde lazy commit that breaks everything, should be a branch
terom
parents: 26
diff changeset
    15
class Player : public PhysicsObject {
108
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    16
protected:
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    17
    GameState &state;
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    18
    bool visible;
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    19
    
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    20
public:
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    21
    Player(GameState &state, Vector position, bool visible) : 
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    22
        PhysicsObject((PhysicsWorld &) state, PLAYER_MASS, position, Vector(0, 0)), state(state), visible(visible) {
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    23
            
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    24
        std::vector<Vector> shape(4);
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    25
        shape[0] = Vector(0,-18);
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    26
        shape[1] = Vector(6,-9);
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    27
        shape[2] = Vector(0,0); 
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    28
        shape[3] = Vector(-6,-9);
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    29
        // Initialize the shape of the player (salmiakki shape)
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    30
        setShape(shape);		
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    31
    }
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    32
    
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    33
    void debugInfo ();
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    34
    
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    35
public:
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    36
    virtual void handleMove (PlayerInput_Move input);
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    37
    
3
5a209a8585c9 proto p2
terom
parents:
diff changeset
    38
5a209a8585c9 proto p2
terom
parents:
diff changeset
    39
};
5a209a8585c9 proto p2
terom
parents:
diff changeset
    40
116
0d36aade845e some stuff, don't remember what
nireco
parents: 115
diff changeset
    41
class Shot : public PhysicsObject {
0d36aade845e some stuff, don't remember what
nireco
parents: 115
diff changeset
    42
protected:
0d36aade845e some stuff, don't remember what
nireco
parents: 115
diff changeset
    43
    GameState &state;
0d36aade845e some stuff, don't remember what
nireco
parents: 115
diff changeset
    44
    bool visible;
0d36aade845e some stuff, don't remember what
nireco
parents: 115
diff changeset
    45
    uint32_t birth_tick;
0d36aade845e some stuff, don't remember what
nireco
parents: 115
diff changeset
    46
    uint32_t death_tick;
0d36aade845e some stuff, don't remember what
nireco
parents: 115
diff changeset
    47
public:
0d36aade845e some stuff, don't remember what
nireco
parents: 115
diff changeset
    48
    Shot(GameState &state, Vector position, bool visible) :
0d36aade845e some stuff, don't remember what
nireco
parents: 115
diff changeset
    49
        PhysicsObject((PhysicsWorld &) state, PLAYER_MASS, position, Vector(0, 0)), state(state), visible(visible) {
127
241830182118 added shape to Shot, shouldn't need it, but drawing might need it. Well Shot is not used anywhere at the moment
nireco
parents: 126
diff changeset
    50
        // Looks kind of dumb, for ammunition to have shape
241830182118 added shape to Shot, shouldn't need it, but drawing might need it. Well Shot is not used anywhere at the moment
nireco
parents: 126
diff changeset
    51
        std::vector<Vector> shape(4);
241830182118 added shape to Shot, shouldn't need it, but drawing might need it. Well Shot is not used anywhere at the moment
nireco
parents: 126
diff changeset
    52
        shape[0] = Vector(-1, -1);
241830182118 added shape to Shot, shouldn't need it, but drawing might need it. Well Shot is not used anywhere at the moment
nireco
parents: 126
diff changeset
    53
        shape[1] = Vector(-1, 1);
241830182118 added shape to Shot, shouldn't need it, but drawing might need it. Well Shot is not used anywhere at the moment
nireco
parents: 126
diff changeset
    54
        shape[2] = Vector(1, 1);
241830182118 added shape to Shot, shouldn't need it, but drawing might need it. Well Shot is not used anywhere at the moment
nireco
parents: 126
diff changeset
    55
        shape[3] = Vector(1, -1);
241830182118 added shape to Shot, shouldn't need it, but drawing might need it. Well Shot is not used anywhere at the moment
nireco
parents: 126
diff changeset
    56
        setShape(shape);
116
0d36aade845e some stuff, don't remember what
nireco
parents: 115
diff changeset
    57
    }
0d36aade845e some stuff, don't remember what
nireco
parents: 115
diff changeset
    58
private:
0d36aade845e some stuff, don't remember what
nireco
parents: 115
diff changeset
    59
    virtual void onCollision();
0d36aade845e some stuff, don't remember what
nireco
parents: 115
diff changeset
    60
};
0d36aade845e some stuff, don't remember what
nireco
parents: 115
diff changeset
    61
3
5a209a8585c9 proto p2
terom
parents:
diff changeset
    62
class LocalPlayer : public Player {
108
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    63
protected:
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    64
    LocalPlayer (GameState &state, Vector pos, bool visible) : Player(state, pos, visible) { }
3
5a209a8585c9 proto p2
terom
parents:
diff changeset
    65
};
5a209a8585c9 proto p2
terom
parents:
diff changeset
    66
5a209a8585c9 proto p2
terom
parents:
diff changeset
    67
class RemotePlayer : public Player {
108
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    68
protected:
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    69
    RemotePlayer (GameState &state, Vector pos, bool visible) : Player(state, pos, visible) { }
6
faa4e777cc6e fiddle with cmake, fix some compile errors
terom
parents: 5
diff changeset
    70
};
faa4e777cc6e fiddle with cmake, fix some compile errors
terom
parents: 5
diff changeset
    71
42
eb1a93a38cde lazy commit that breaks everything, should be a branch
terom
parents: 26
diff changeset
    72
class GameState : public PhysicsWorld {
108
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    73
public:
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    74
    std::list<Player*> player_list;
8
2de58a6d0395 fix to mostly compile
terom
parents: 6
diff changeset
    75
108
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    76
    // only one local player is supported
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    77
    LocalPlayer *local_player;
22
b70d30e1b0fe all the network code is now there, although it doesn't quite work
terom
parents: 8
diff changeset
    78
108
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    79
    GameState (void) : PhysicsWorld(Vector(0, MAP_GRAVITY), Vector(MAP_WIDTH, MAP_HEIGHT)), local_player(NULL) {
22
b70d30e1b0fe all the network code is now there, although it doesn't quite work
terom
parents: 8
diff changeset
    80
108
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    81
    }
42
eb1a93a38cde lazy commit that breaks everything, should be a branch
terom
parents: 26
diff changeset
    82
       
108
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    83
    /*
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    84
     * This will return NULL if we don't have a local player - yet
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    85
     */
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    86
    LocalPlayer *getLocalPlayer (void) {
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    87
        return local_player;
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    88
    }
24
b81cb670e6b2 the great :retab
terom
parents: 22
diff changeset
    89
        
108
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    90
    void newLocalPlayer (LocalPlayer *player) {
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    91
        if (local_player)
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    92
            throw std::logic_error("newLocalPlayer called even though we already have a local player");
24
b81cb670e6b2 the great :retab
terom
parents: 22
diff changeset
    93
108
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    94
        player_list.push_back(player);
24
b81cb670e6b2 the great :retab
terom
parents: 22
diff changeset
    95
108
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    96
        local_player = player;
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    97
    }
24
b81cb670e6b2 the great :retab
terom
parents: 22
diff changeset
    98
108
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
    99
    void newRemotePlayer (RemotePlayer *player) {
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
   100
        player_list.push_back(player);
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
   101
    }
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
   102
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
   103
    void removePlayer (Player *player) {
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
   104
        player_list.remove(player);
1b93045a5b0a T?ht?in lis?tty, tosin se piirret??n tosi rumasti.
saiam
parents: 96
diff changeset
   105
    }
6
faa4e777cc6e fiddle with cmake, fix some compile errors
terom
parents: 5
diff changeset
   106
};
faa4e777cc6e fiddle with cmake, fix some compile errors
terom
parents: 5
diff changeset
   107
3
5a209a8585c9 proto p2
terom
parents:
diff changeset
   108
#endif