proto/p2/GameState.hh
author terom
Mon, 03 Nov 2008 21:36:17 +0000
changeset 3 5a209a8585c9
child 4 e28b28b8817c
permissions -rw-r--r--
proto p2
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
5a209a8585c9 proto p2
terom
parents:
diff changeset
     4
class GameState {
5a209a8585c9 proto p2
terom
parents:
diff changeset
     5
	public:
5a209a8585c9 proto p2
terom
parents:
diff changeset
     6
		Dimension map_dimensions;
5a209a8585c9 proto p2
terom
parents:
diff changeset
     7
		std::list<Player> player_list;
5a209a8585c9 proto p2
terom
parents:
diff changeset
     8
5a209a8585c9 proto p2
terom
parents:
diff changeset
     9
		LocalPlayer &getLocalPlayer (void) {
5a209a8585c9 proto p2
terom
parents:
diff changeset
    10
			// XXX: jotain
5a209a8585c9 proto p2
terom
parents:
diff changeset
    11
		}
5a209a8585c9 proto p2
terom
parents:
diff changeset
    12
};
5a209a8585c9 proto p2
terom
parents:
diff changeset
    13
5a209a8585c9 proto p2
terom
parents:
diff changeset
    14
enum PlayerType {
5a209a8585c9 proto p2
terom
parents:
diff changeset
    15
	PLAYER_LOCAL = 0x01;
5a209a8585c9 proto p2
terom
parents:
diff changeset
    16
	PLAYER_REMOTE = 0x02;
5a209a8585c9 proto p2
terom
parents:
diff changeset
    17
};
5a209a8585c9 proto p2
terom
parents:
diff changeset
    18
5a209a8585c9 proto p2
terom
parents:
diff changeset
    19
class Player {
5a209a8585c9 proto p2
terom
parents:
diff changeset
    20
	private:
5a209a8585c9 proto p2
terom
parents:
diff changeset
    21
		Coordinate position;
5a209a8585c9 proto p2
terom
parents:
diff changeset
    22
5a209a8585c9 proto p2
terom
parents:
diff changeset
    23
	public:
5a209a8585c9 proto p2
terom
parents:
diff changeset
    24
		PlayerType type;
5a209a8585c9 proto p2
terom
parents:
diff changeset
    25
		Dimensions dimensions;
5a209a8585c9 proto p2
terom
parents:
diff changeset
    26
5a209a8585c9 proto p2
terom
parents:
diff changeset
    27
		Coordinate getPosition (void) {
5a209a8585c9 proto p2
terom
parents:
diff changeset
    28
			return this->position;
5a209a8585c9 proto p2
terom
parents:
diff changeset
    29
		}
5a209a8585c9 proto p2
terom
parents:
diff changeset
    30
};
5a209a8585c9 proto p2
terom
parents:
diff changeset
    31
5a209a8585c9 proto p2
terom
parents:
diff changeset
    32
class LocalPlayer : public Player {
5a209a8585c9 proto p2
terom
parents:
diff changeset
    33
	public:
5a209a8585c9 proto p2
terom
parents:
diff changeset
    34
		void doMovement (PositionDelta d) {
5a209a8585c9 proto p2
terom
parents:
diff changeset
    35
			this->position += d;
5a209a8585c9 proto p2
terom
parents:
diff changeset
    36
5a209a8585c9 proto p2
terom
parents:
diff changeset
    37
			// XXX: notify server
5a209a8585c9 proto p2
terom
parents:
diff changeset
    38
		}
5a209a8585c9 proto p2
terom
parents:
diff changeset
    39
};
5a209a8585c9 proto p2
terom
parents:
diff changeset
    40
5a209a8585c9 proto p2
terom
parents:
diff changeset
    41
class RemotePlayer : public Player {
5a209a8585c9 proto p2
terom
parents:
diff changeset
    42
	public:
5a209a8585c9 proto p2
terom
parents:
diff changeset
    43
		void updatePosition (Position p) {
5a209a8585c9 proto p2
terom
parents:
diff changeset
    44
			this->position = p;
5a209a8585c9 proto p2
terom
parents:
diff changeset
    45
		}
5a209a8585c9 proto p2
terom
parents:
diff changeset
    46
}
5a209a8585c9 proto p2
terom
parents:
diff changeset
    47
5a209a8585c9 proto p2
terom
parents:
diff changeset
    48
#endif