Skip to content

Commit

Permalink
final polish and fixes for V0.7
Browse files Browse the repository at this point in the history
  • Loading branch information
velnias75 committed Dec 26, 2014
1 parent 980e6e2 commit 42eb2ab
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 17 deletions.
34 changes: 18 additions & 16 deletions src/engine/engine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -168,26 +168,27 @@ bool Engine::distributeCards() throw(Common::Exception::SocketException) {

if(m_state == NOCARDS || m_state == ACCEPT_PLAYERS) {

PLAYERS::const_iterator pi(m_players.begin());
const PLAYERS::const_iterator &pe(m_players.end());

for(; pi != pe; ++pi) {
std::vector<std::vector<Common::ICard *> > cards(m_players.size());

Player::IPlayer *p = *pi;

std::vector<Common::ICard *> cards;
cards.reserve(5);
for(std::size_t i = 0; i < m_ruleset->initialCardCount(); ++i) {

for(std::size_t i = 0; i < 5; ++i) {
if(m_talon->empty()) return false;
if(m_talon->empty()) return false;

cards.push_back(m_talon->top());
for(PLAYERS::size_type j = 0; j < m_players.size(); ++j) {
cards[j].push_back(m_talon->top());
m_talon->pop();
}
}

p->receiveCardSet(cards);
m_eventHandler.cardsDistributed(p, cards);
PLAYERS::const_iterator pi(m_players.begin());
const PLAYERS::const_iterator &pe(m_players.end());

for(std::size_t k = 0; pi != pe; ++pi, ++k) {

Player::IPlayer *p = *pi;

p->receiveCardSet(cards[k]);
m_eventHandler.cardsDistributed(p, cards[k]);
}

m_turn = 1;
Expand Down Expand Up @@ -277,9 +278,8 @@ bool Engine::nextTurn() {
const bool csuspend = m_ruleset->hasToSuspend();
const Common::ICard::SUIT js = m_ruleset->getJackSuit();

assert(uc->getRank() != Common::ICard::JACK ||
(uc->getRank() == Common::ICard::JACK && (m_jackMode || m_initialJack) &&
js != Common::ICard::SUIT_ILLEGAL));
assert(uc->getRank() != Common::ICard::JACK || (uc->getRank() == Common::ICard::JACK &&
((m_jackMode || m_initialJack) && js != Common::ICard::SUIT_ILLEGAL)));

Common::ICard *pc = !csuspend ? player->requestCard(uc, (m_jackMode || m_initialJack)
? &js : 0L) : 0L;
Expand Down Expand Up @@ -369,6 +369,8 @@ bool Engine::nextTurn() {
std::advance(f, m_nxtPlayer);
const PLAYERS::iterator nxt = m_players.erase(f);

m_ruleset->setCurPlayers(m_players.size());

m_nxtPlayer = nxt != m_players.end() ? std::distance(m_players.begin(), nxt)
: 0;

Expand Down
1 change: 1 addition & 0 deletions src/engine/iruleset.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ class IRuleSet {
virtual std::size_t takeCards(const Common::ICard *playedCard) const = 0;;
virtual void hasTakenCards() = 0;

virtual std::size_t initialCardCount() const = 0;
virtual bool suspendIfNoMatchingCard() const = 0;
virtual bool takeIfLost() const = 0;

Expand Down
6 changes: 5 additions & 1 deletion src/engine/stdruleset.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ bool StdRuleSet::checkCard(const NetMauMau::Player::IPlayer *player,
if(accepted && playedCard->getRank() == NetMauMau::Common::ICard::SEVEN) {
m_takeCardCount += 2;
} else if(accepted && playedCard->getRank() == NetMauMau::Common::ICard::JACK &&
(player->getCardCount() > 1 && m_curPlayers >= 2)) {
(m_curPlayers > 2 || player->getCardCount() > 1)) {
m_jackSuit = player->getJackChoice(uncoveredCard ? uncoveredCard : playedCard, playedCard);
m_jackMode = true;
}
Expand Down Expand Up @@ -117,6 +117,10 @@ void StdRuleSet::hasTakenCards() {
m_takeCardCount = 0;
}

std::size_t StdRuleSet::initialCardCount() const {
return 5;
}

bool StdRuleSet::suspendIfNoMatchingCard() const {
return false;
}
Expand Down
1 change: 1 addition & 0 deletions src/engine/stdruleset.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ class StdRuleSet : public IRuleSet {
virtual bool hasToSuspend() const _PURE;
virtual void hasSuspended();

virtual std::size_t initialCardCount() const _CONST;
virtual bool suspendIfNoMatchingCard() const _CONST;
virtual bool takeIfLost() const _CONST;

Expand Down

0 comments on commit 42eb2ab

Please sign in to comment.