Changed directory structure (again)
[progcomp2012.git] / judge / manager / movementresult.h
diff --git a/judge/manager/movementresult.h b/judge/manager/movementresult.h
new file mode 100644 (file)
index 0000000..5a2aed6
--- /dev/null
@@ -0,0 +1,34 @@
+/**
+ * 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:
+               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;
+
+               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

UCC git Repository :: git.ucc.asn.au