movementresult.h 1.1 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
 * Contains declaration for MovementResult class
 */
#ifndef MOVERESULT_H
#define MOVERESULT_H

class Board;
class Piece;

/**
 * Class used to indicate the result of a move in stratego
 */
class MovementResult
{
	public:
16
		typedef enum {OK, DIES, KILLS, BOTH_DIE, NO_BOARD, INVALID_POSITION, NO_SELECTION, NOT_YOUR_UNIT, IMMOBILE_UNIT, INVALID_DIRECTION, POSITION_FULL, VICTORY, SURRENDER, BAD_RESPONSE, NO_MOVE, COLOUR_ERROR, ERROR, DRAW_DEFAULT, DRAW, BAD_SETUP} Type;
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

		MovementResult(const Type & result = OK, const Piece::Type & newAttackerRank = Piece::NOTHING, const Piece::Type & newDefenderRank = Piece::NOTHING)
			: type(result), attackerRank(newAttackerRank), defenderRank(newDefenderRank) {}
		MovementResult(const MovementResult & cpy) : type(cpy.type), attackerRank(cpy.attackerRank), defenderRank(cpy.defenderRank) {}
		virtual ~MovementResult() {}
		

		bool operator==(const Type & equType) const {return type == equType;}
		bool operator!=(const Type & equType) const {return type != equType;}

		Type type;
		Piece::Type attackerRank;
		Piece::Type defenderRank;
};

#endif //MOVERESULT_H

//EOF