/***************************************************************************** * Eliot * Copyright (C) 2005-2007 Antoine Fraboulet & Olivier Teulière * Authors: Antoine Fraboulet * Olivier Teulière * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *****************************************************************************/ #ifndef TURN_H_ #define TURN_H_ #include #include "pldrack.h" #include "move.h" #include "logging.h" using std::wstring; /** * A Turn is the information about one 'move' done by a player. * It consists of the player who played, the rack, and the actual move. * * This class has no logic, it is merely there to aggregate corresponding * data. */ class Turn { DEFINE_LOGGER(); public: Turn(); Turn(unsigned int iPlayerId, const PlayedRack& iPldRack, const Move& iMove); void setPlayer(unsigned int iPlayerId) { m_playerId = iPlayerId; } void setPlayedRack(const PlayedRack& iPldRack) { m_pldrack = iPldRack; } void setMove(const Move& iMove) { m_move = iMove; } // Setters for warnings, penalties and solos void addWarning(unsigned iNb = 1) { m_warningsNb += iNb; } void addPenaltyPoints(unsigned iPoints) { m_penaltyPoints += iPoints; } void addSoloPoints(unsigned iPoints) { m_soloPoints += iPoints; } unsigned int getPlayer() const { return m_playerId; } const PlayedRack& getPlayedRack() const { return m_pldrack; } const Move& getMove() const { return m_move; } // Getters for warnings, penalties and solos unsigned getWarningsNb() const { return m_warningsNb; } unsigned getPenaltyPoints() const { return m_penaltyPoints; } unsigned getSoloPoints() const { return m_soloPoints; } wstring toString() const; private: unsigned int m_playerId; PlayedRack m_pldrack; Move m_move; int m_warningsNb; int m_penaltyPoints; int m_soloPoints; }; #endif